[
  {
    "path": ".github/workflows/ci.yml",
    "content": "name: CI\n\n# Controls when the workflow will run\non:\n  push:\n    branches: [main]\n    paths:\n      - \"version\" # on version updates\n      - \"Package.swift\"\n      - \"Package.resolved\"\n      - \"Tests/**\"\n      - .github/workflows/ci.yml\n      - \"scripts/**\"\n  pull_request:\n    branches: [main]\n  schedule:\n    - cron: '0 */12 * * *' # Every 12 hours\n\n  # Allows you to run this workflow manually from the Actions tab\n  workflow_dispatch:\n\nconcurrency:\n  group: ci-${{ github.event.pull_request.number || github.ref }}\n  cancel-in-progress: true\n\nenv:\n  TDLIB_REPO: https://github.com/tdlib/td\n  DEVELOPER_DIR: /Applications/Xcode_16.4.app/Contents/Developer\n\npermissions:\n  contents: write\n\njobs:\n  update:\n    runs-on: macos-15\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n\n      - name: Update package\n        run: ./scripts/update.py\n        env:\n          GH_TOKEN: ${{ github.token }}\n      \n      - run: rm -rf .git\n  \n      - name: Upload Workspace\n        uses: actions/upload-artifact@v4\n        with:\n          name: TDLibKit-${{ github.sha }}\n          path: .\n          if-no-files-found: error\n\n  test:\n    runs-on: macos-15\n    needs: [update]\n    strategy:\n      matrix:\n        include:\n          - platform: \"macOS\"\n          - platform: \"iOS-simulator\"\n            os_list: \"18.5\"\n            device_name: \"iPhone 16\"\n          - platform: \"tvOS-simulator\"\n            os_list: \"18.5\"\n            device_name: \"Apple TV 4K (3rd generation) (at 1080p)\"\n          # Became much slower on CI with macos-14 images, while working fine locally\n          # we will only build them\n          - platform: \"watchOS-simulator\"\n            os_list: \"11.5\"\n            device_name: \"Apple Watch Series 10 (46mm)\"\n            action: \"build\"\n          - platform: \"visionOS-simulator\"\n            os_list: \"2.3\"\n            device_name: \"Apple Vision Pro\"\n            action: \"build\"\n    steps:\n      - name: Download Workspace\n        uses: actions/download-artifact@v4\n        with:\n          name: TDLibKit-${{ github.sha }}\n          path: .\n\n      - name: Tests (${{ matrix.platform }})\n        run: |\n          chmod +x ./scripts/test.sh \n          ./scripts/test.sh ${{ matrix.platform }} \"${{ matrix.os_list }}\" \"${{ matrix.device_name }}\" \"${{ matrix.action }}\" || ./scripts/test.sh ${{ matrix.platform }} \"${{ matrix.os_list }}\" \"${{ matrix.device_name }}\" \"${{ matrix.action }}\" \n  \n  release:\n    if: ${{ github.ref == 'refs/heads/main' }}\n    runs-on: macos-15\n    needs: [test]\n    steps:\n      - name: Setup Git\n        uses: actions/checkout@v4\n\n      - name: Download Workspace\n        uses: actions/download-artifact@v4\n        with:\n          name: TDLibKit-${{ github.sha }}\n          path: .\n\n      - name: Commit Files\n        run: |\n          git config user.name github-actions\n          git config user.email github-actions@github.com\n          git add . || true\n\n          export COMMIT_VERSION=$(python3 <<EOF\n          import json\n          import os\n          with open(\"versions.json\") as f:\n              versions = json.load(f)\n          print(f\"{versions[\"package\"]}-tdlib-{versions['tdlib_version']}-{versions['tdlib_commit']}\", end=\"\")\n          EOF\n          )\n\n          git commit -m \"[no ci] Version ${COMMIT_VERSION}\" || true\n\n      - name: Push update\n        run: git push origin main || true\n\n      - name: Release\n        run: |\n          chmod +x ./scripts/*\n          ./scripts/release.py\n        env:\n          GH_TOKEN: ${{ github.token }}\n"
  },
  {
    "path": ".gitignore",
    "content": ".DS_Store\n/.build\n/Packages\n/*.xcodeproj\nxcuserdata/\nDerivedData/\n.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata\n*.tl\nTests/Apps/Apps.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved\n__pycache__/"
  },
  {
    "path": ".swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": ".swiftpm/xcode/xcshareddata/xcschemes/TDLibKit.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1420\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"TDLibKit\"\n               BuildableName = \"TDLibKit\"\n               BlueprintName = \"TDLibKit\"\n               ReferencedContainer = \"container:\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"TDLibKitTests\"\n               BuildableName = \"TDLibKitTests\"\n               BlueprintName = \"TDLibKitTests\"\n               ReferencedContainer = \"container:\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"TDLibKit\"\n            BuildableName = \"TDLibKit\"\n            BlueprintName = \"TDLibKit\"\n            ReferencedContainer = \"container:\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2021 Sergey Akentev (@Kylmakalle)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
  },
  {
    "path": "Package.resolved",
    "content": "{\n  \"object\": {\n    \"pins\": [\n      {\n        \"package\": \"TDLibFramework\",\n        \"repositoryURL\": \"https://github.com/Swiftgram/TDLibFramework\",\n        \"state\": {\n          \"branch\": null,\n          \"revision\": \"c89cc7e3edef521a84ec46691d2a7f65de09d3ff\",\n          \"version\": \"1.8.64-7a7081bf\"\n        }\n      }\n    ]\n  },\n  \"version\": 1\n}\n"
  },
  {
    "path": "Package.swift",
    "content": "// swift-tools-version:5.3\n// The swift-tools-version declares the minimum version of Swift required to build this package.\n// DO NOT EDIT! Generated automatically. See scripts/swift_package_generator.py\n\nimport PackageDescription\n\n\n\nlet package = Package(\n    name: \"TDLibKit\",\n    platforms: [\n        // Following versions of https://github.com/Swiftgram/TDLibFramework/blob/main/Package.swift\n        .iOS(.v12),\n        .macOS(.v10_15),\n        .watchOS(.v4),\n        .tvOS(.v12)\n    ],\n    products: [\n        .library(\n            name: \"TDLibKit\",\n            targets: [\"TDLibKit\"]),\n    ],\n    dependencies: [\n        .package(url: \"https://github.com/Swiftgram/TDLibFramework\", .exact(\"1.8.64-7a7081bf\")),\n    ],\n    targets: [\n        .target(\n            name: \"TDLibKit\",\n            dependencies: [\"TDLibFramework\"]\n        ),\n        .testTarget(\n            name: \"TDLibKitTests\",\n            dependencies: [\"TDLibKit\"]\n        ),\n    ]\n)\n\n"
  },
  {
    "path": "README.md",
    "content": "# TDLibKit\n\n[![CI](https://github.com/Swiftgram/TDLibKit/actions/workflows/ci.yml/badge.svg)](https://github.com/Swiftgram/TDLibKit/actions/workflows/ci.yml)\n\nTDLibKit is a native Swift wrapper for [TDLib](https://github.com/tdlib/td) with support for iOS, macOS, watchOS, tvOS and visionOS.\n\nPowered by pre-built multi-platform [TDLibFramework](https://github.com/Swiftgram/TDLibFramework) implementation\nof [TDLib](https://github.com/tdlib/td) and generated sources with [tl2swift](scripts/tl2swift)\n\n## Installation\n\n### Xcode\n\n1. Install Latest Xcode\n2. Add `https://github.com/Swiftgram/TDLibKit` as SPM dependency in `Project > Swift Packages`. This could take a while\n   cause it downloads ~300mb zip file with binary\n   from [TDLibFramework dependency](https://github.com/Swiftgram/TDLibFramework)\n3. Add `TDLibKit` as your target dependency.\n4. Code!\n\n### Cocoapods\n\nIntegration requires similar\nto [TDLibFramework Cocoapods & Flutter guide](https://github.com/Swiftgram/TDLibFramework/blob/main/docs/COCOAPODS-and-FLUTTER.md)\nadaptation.\n\n## Usage\n\nLibrary provides multiple API interfaces based on different approaches\n\n- [Async/Await](https://docs.swift.org/swift-book/documentation/the-swift-programming-language/concurrency/) syntax & do/catch. Available for iOS\n  13.0+, macOS 10.15+, watchOS 6.0+, tvOS 13.0+, visionOS\n- Completion handlers & closures\n\n### Create client Manager\n\n```swift\nimport TDLibKit\nlet manager = TDLibClientManager()\n```\n\nMake sure to create only one `TDLibClientManager`, since `td_receive` can be only called from a single thread.\n\nManager automatically polls for new updates, we will handle them per-client below.\n\n### Create Client & Handle updates\n\n```swift\nlet client = manager.createClient(updateHandler: { /* data: Data, client: TDLibCLient */\n    do {\n        let update = try $1.decoder.decode(Update.self, from: $0)\n        switch update {\n            case .updateNewMessage(let newMsg):\n                switch newMsg.message.content {\n                    case .messageText(let text):\n                        print(\"Text Message: \\(text.text.text)\")\n                    default:\n                        break\n                }\n            case .updateMessageEdited:\n                break\n                \n            // ... etc\n\n            default:\n                print(\"Unhandled Update \\(update)\")\n                break\n        }\n    } catch {\n        print(\"Error in update handler \\(error.localizedDescription)\")\n    }\n})\n```\n\n### Synchronious requests\n\nOnly for methods\nwith \"[Can be called synchronously](https://github.com/tdlib/td/blob/73d8fb4b3584633b0ffde97a20bbff6602e7a5c4/td/generate/scheme/td_api.tl#L4294)\"\nin docs\n\n```swift\nlet query = SetLogVerbosityLevel(newVerbosityLevel: 5)\ndo {\n    let result = try client.execute(query: DTO(query))\n    if let resultDict = result {\n        print(\"Response: \\(resultDict)\")\n    } else {\n        print(\"Empty result\")\n    }\n} catch {\n    print(\"Error in SetLogVerbosityLevel request \\(error.localizedDescription)\")\n}\n```\n\n### Async requests\n\n#### Async/Await\n\n```swift\ndo {\n    let chatHistory = try await client.getChatHistory(\n        chatId: chatId,\n        fromMessageId: 0,\n        limit: 50,\n        offset: 0,\n        onlyLocal: false // Request remote messages from server\n    )\n\n    for message in chatHistory.messages {\n    switch message.content {\n        case .messageText(let text):\n            print(text.text.text)\n            \n        case .messageAnimation:\n            print(\"<Animation>\")\n            \n        case .messagePhoto(let photo):\n            print(\"<Photo>\\n\\(photo.caption.text)\")\n            \n        case .messageSticker(let sticker):\n            print(sticker.sticker.emoji)\n            \n        case .messageVideo(let video):\n            print(\"<Video>\\n\\(video.caption.text)\")\n            \n            // ...\n            \n        default:\n            print(\"Unknown message content \\(message.content)\")\n        }\n    }\n} catch {\n    print(\"Error in getChatHistory \\(error)\")\n}\n```\n\n#### Completion Handlers\n\n```swift\ntry? client.getChatHistory(\n    chatId: chatId,\n    fromMessageId: 0,\n    limit: 50,\n    offset: 0,\n    onlyLocal: false, // Request remote messages from server\n    completion: { result in\n        // Handle Errors\n        if case .failure(let error) = result {\n            print(\"Error in getChatHistory request \\(error.localizedDescription)\")\n        } else if let messages = try? result.get().messages {\n            // Handle messages\n            for message in messages {\n                switch message.content {\n                case .messageText(let text):\n                    print(text.text.text)\n                    \n                case .messageAnimation:\n                    print(\"<Animation>\")\n                    \n                case .messagePhoto(let photo):\n                    print(\"<Photo>\\n\\(photo.caption.text)\")\n                    \n                case .messageSticker(let sticker):\n                    print(sticker.sticker.emoji)\n                    \n                case .messageVideo(let video):\n                    print(\"<Video>\\n\\(video.caption.text)\")\n                    \n                    // ...\n                    \n                default:\n                    print(\"Unknown message content \\(message.content)\")\n                }\n            }\n        }\n    }\n)\n```\n\n### Logging\n\nYou can pass additional parameter with `Logger` type to log \"send, receive, execute\" and custom entries.\n\n```swift\nimport TDLibKit\npublic final class StdOutLogger: TDLibLogger {\n    \n    let queue: DispatchQueue\n    \n    public init() {\n        queue = DispatchQueue(label: \"Logger\", qos: .userInitiated)\n    }\n    \n    public func log(_ message: String, type: LoggerMessageType?) {\n        queue.async {\n            var fisrtLine = \"---------------------------\"\n            if let type = type {\n                fisrtLine = \">> \\(type.description): ---------------\"\n            }\n            print(\"\"\"\n                \\(fisrtLine)\n                \\(message)\n                ---------------------------\n                \"\"\")\n        }\n    }\n}\n\n\nlet manager = TDLibClientManager(logger: StdOutLogger())\n```\n\n### Close client\n\nTo ensure data integrity, you must properly close all the clients on app termination, either with\n    \n```swift\nlet client = manager.createClient()\ntry? client.close(completion: { _ in })\n```\n\nor use a blocking function\n\n```swift\nmanager.closeClients()\n```\n\n## Build\n\nYou can find more about build process in [Github Actions](.github/workflows/ci.yml) file.\n\n## Credits\n\n- Anton Glezman for [Build Guide](https://github.com/modestman/tdlib-swift)\n  , [TL Scheme parser](https://github.com/modestman/tl2swift) and basic implementation\n- Leo Mehlig for [TDLib-iOS](https://github.com/leoMehlig/TDLib-iOS) and contributions to run TDLib on Swift\n- Telegram Team for [TDLib](https://github.com/tdlib/td)\n\n## License\n\n[MIT](LICENSE)\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/API/TDLibApi.swift",
    "content": "//\n//  TDLibApi.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Must be subclassed with `send` and `execute` TDLib functions implementation\npublic class TDLibApi {\n\n    public let encoder = JSONEncoder()\n    public let decoder = JSONDecoder()\n\n    public init() {\n        self.encoder.keyEncodingStrategy = .convertToSnakeCase\n        self.decoder.keyDecodingStrategy = .convertFromSnakeCase\n    }\n\n\n    /// Sends request to the TDLib client.\n    public func send(query: TdQuery, completion: ((Data) -> Void)? = nil) throws {\n        fatalError(\"send() not implemented\")\n    }\n\n    /// Synchronously executes TDLib request.\n    public func execute(query: TdQuery) throws -> [String:Any]? {\n        fatalError(\"execute() not implemented\")\n    }\n\n\n    /// Returns the current authorization state. This is an offline method. For informational purposes only. Use updateAuthorizationState instead to maintain the current authorization state. Can be called before initialization\n    /// - Returns: The current authorization state\n    public final func getAuthorizationState(completion: @escaping (Result<AuthorizationState, Swift.Error>) -> Void) throws {\n        let query = GetAuthorizationState()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the current authorization state. This is an offline method. For informational purposes only. Use updateAuthorizationState instead to maintain the current authorization state. Can be called before initialization\n    /// - Returns: The current authorization state\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getAuthorizationState() async throws -> AuthorizationState {\n        let query = GetAuthorizationState()\n        return try await self.run(query: query)\n    }\n\n    /// Sets the parameters for TDLib initialization. Works only when the current authorization state is authorizationStateWaitTdlibParameters\n    /// - Parameter apiHash: Application identifier hash for Telegram API access, which can be obtained at https://my.telegram.org\n    /// - Parameter apiId: Application identifier for Telegram API access, which can be obtained at https://my.telegram.org\n    /// - Parameter applicationVersion: Application version; must be non-empty\n    /// - Parameter databaseDirectory: The path to the directory for the persistent database; if empty, the current working directory will be used\n    /// - Parameter databaseEncryptionKey: Encryption key for the database. If the encryption key is invalid, then an error with code 401 will be returned\n    /// - Parameter deviceModel: Model of the device the application is being run on; must be non-empty\n    /// - Parameter filesDirectory: The path to the directory for storing files; if empty, database_directory will be used\n    /// - Parameter systemLanguageCode: IETF language tag of the user's operating system language; must be non-empty\n    /// - Parameter systemVersion: Version of the operating system the application is being run on. If empty, the version is automatically detected by TDLib\n    /// - Parameter useChatInfoDatabase: Pass true to keep cache of users, basic groups, supergroups, channels and secret chats between restarts. Implies use_file_database\n    /// - Parameter useFileDatabase: Pass true to keep information about downloaded and uploaded files between application restarts\n    /// - Parameter useMessageDatabase: Pass true to keep cache of chats and messages between restarts. Implies use_chat_info_database\n    /// - Parameter useSecretChats: Pass true to enable support for secret chats\n    /// - Parameter useTestDc: Pass true to use Telegram test environment instead of the production environment\n    public final func setTdlibParameters(\n        apiHash: String?,\n        apiId: Int?,\n        applicationVersion: String?,\n        databaseDirectory: String?,\n        databaseEncryptionKey: Data?,\n        deviceModel: String?,\n        filesDirectory: String?,\n        systemLanguageCode: String?,\n        systemVersion: String?,\n        useChatInfoDatabase: Bool?,\n        useFileDatabase: Bool?,\n        useMessageDatabase: Bool?,\n        useSecretChats: Bool?,\n        useTestDc: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetTdlibParameters(\n            apiHash: apiHash,\n            apiId: apiId,\n            applicationVersion: applicationVersion,\n            databaseDirectory: databaseDirectory,\n            databaseEncryptionKey: databaseEncryptionKey,\n            deviceModel: deviceModel,\n            filesDirectory: filesDirectory,\n            systemLanguageCode: systemLanguageCode,\n            systemVersion: systemVersion,\n            useChatInfoDatabase: useChatInfoDatabase,\n            useFileDatabase: useFileDatabase,\n            useMessageDatabase: useMessageDatabase,\n            useSecretChats: useSecretChats,\n            useTestDc: useTestDc\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets the parameters for TDLib initialization. Works only when the current authorization state is authorizationStateWaitTdlibParameters\n    /// - Parameter apiHash: Application identifier hash for Telegram API access, which can be obtained at https://my.telegram.org\n    /// - Parameter apiId: Application identifier for Telegram API access, which can be obtained at https://my.telegram.org\n    /// - Parameter applicationVersion: Application version; must be non-empty\n    /// - Parameter databaseDirectory: The path to the directory for the persistent database; if empty, the current working directory will be used\n    /// - Parameter databaseEncryptionKey: Encryption key for the database. If the encryption key is invalid, then an error with code 401 will be returned\n    /// - Parameter deviceModel: Model of the device the application is being run on; must be non-empty\n    /// - Parameter filesDirectory: The path to the directory for storing files; if empty, database_directory will be used\n    /// - Parameter systemLanguageCode: IETF language tag of the user's operating system language; must be non-empty\n    /// - Parameter systemVersion: Version of the operating system the application is being run on. If empty, the version is automatically detected by TDLib\n    /// - Parameter useChatInfoDatabase: Pass true to keep cache of users, basic groups, supergroups, channels and secret chats between restarts. Implies use_file_database\n    /// - Parameter useFileDatabase: Pass true to keep information about downloaded and uploaded files between application restarts\n    /// - Parameter useMessageDatabase: Pass true to keep cache of chats and messages between restarts. Implies use_chat_info_database\n    /// - Parameter useSecretChats: Pass true to enable support for secret chats\n    /// - Parameter useTestDc: Pass true to use Telegram test environment instead of the production environment\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setTdlibParameters(\n        apiHash: String?,\n        apiId: Int?,\n        applicationVersion: String?,\n        databaseDirectory: String?,\n        databaseEncryptionKey: Data?,\n        deviceModel: String?,\n        filesDirectory: String?,\n        systemLanguageCode: String?,\n        systemVersion: String?,\n        useChatInfoDatabase: Bool?,\n        useFileDatabase: Bool?,\n        useMessageDatabase: Bool?,\n        useSecretChats: Bool?,\n        useTestDc: Bool?\n    ) async throws -> Ok {\n        let query = SetTdlibParameters(\n            apiHash: apiHash,\n            apiId: apiId,\n            applicationVersion: applicationVersion,\n            databaseDirectory: databaseDirectory,\n            databaseEncryptionKey: databaseEncryptionKey,\n            deviceModel: deviceModel,\n            filesDirectory: filesDirectory,\n            systemLanguageCode: systemLanguageCode,\n            systemVersion: systemVersion,\n            useChatInfoDatabase: useChatInfoDatabase,\n            useFileDatabase: useFileDatabase,\n            useMessageDatabase: useMessageDatabase,\n            useSecretChats: useSecretChats,\n            useTestDc: useTestDc\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets the phone number of the user and sends an authentication code to the user. Works only when the current authorization state is authorizationStateWaitPhoneNumber, or if there is no pending authentication query and the current authorization state is authorizationStateWaitPremiumPurchase, authorizationStateWaitEmailAddress, authorizationStateWaitEmailCode, authorizationStateWaitCode, authorizationStateWaitRegistration, or authorizationStateWaitPassword\n    /// - Parameter phoneNumber: The phone number of the user, in international format\n    /// - Parameter settings: Settings for the authentication of the user's phone number; pass null to use default settings\n    public final func setAuthenticationPhoneNumber(\n        phoneNumber: String?,\n        settings: PhoneNumberAuthenticationSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetAuthenticationPhoneNumber(\n            phoneNumber: phoneNumber,\n            settings: settings\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets the phone number of the user and sends an authentication code to the user. Works only when the current authorization state is authorizationStateWaitPhoneNumber, or if there is no pending authentication query and the current authorization state is authorizationStateWaitPremiumPurchase, authorizationStateWaitEmailAddress, authorizationStateWaitEmailCode, authorizationStateWaitCode, authorizationStateWaitRegistration, or authorizationStateWaitPassword\n    /// - Parameter phoneNumber: The phone number of the user, in international format\n    /// - Parameter settings: Settings for the authentication of the user's phone number; pass null to use default settings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setAuthenticationPhoneNumber(\n        phoneNumber: String?,\n        settings: PhoneNumberAuthenticationSettings?\n    ) async throws -> Ok {\n        let query = SetAuthenticationPhoneNumber(\n            phoneNumber: phoneNumber,\n            settings: settings\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks whether an in-store purchase of Telegram Premium is possible before authorization. Works only when the current authorization state is authorizationStateWaitPremiumPurchase\n    /// - Parameter amount: Paid amount, in the smallest units of the currency\n    /// - Parameter currency: ISO 4217 currency code of the payment currency\n    /// - Parameter premiumDayCount: The number of days for which the Telegram Premium subscription will be granted\n    public final func checkAuthenticationPremiumPurchase(\n        amount: Int64?,\n        currency: String?,\n        premiumDayCount: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckAuthenticationPremiumPurchase(\n            amount: amount,\n            currency: currency,\n            premiumDayCount: premiumDayCount\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks whether an in-store purchase of Telegram Premium is possible before authorization. Works only when the current authorization state is authorizationStateWaitPremiumPurchase\n    /// - Parameter amount: Paid amount, in the smallest units of the currency\n    /// - Parameter currency: ISO 4217 currency code of the payment currency\n    /// - Parameter premiumDayCount: The number of days for which the Telegram Premium subscription will be granted\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func checkAuthenticationPremiumPurchase(\n        amount: Int64?,\n        currency: String?,\n        premiumDayCount: Int?\n    ) async throws -> Ok {\n        let query = CheckAuthenticationPremiumPurchase(\n            amount: amount,\n            currency: currency,\n            premiumDayCount: premiumDayCount\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs server about an in-store purchase of Telegram Premium before authorization. Works only when the current authorization state is authorizationStateWaitPremiumPurchase\n    /// - Parameter amount: Paid amount, in the smallest units of the currency\n    /// - Parameter currency: ISO 4217 currency code of the payment currency\n    /// - Parameter isRestore: Pass true if this is a restore of a Telegram Premium purchase; only for App Store\n    /// - Parameter premiumDayCount: The number of days for which the Telegram Premium subscription will be granted\n    /// - Parameter transaction: Information about the transaction\n    public final func setAuthenticationPremiumPurchaseTransaction(\n        amount: Int64?,\n        currency: String?,\n        isRestore: Bool?,\n        premiumDayCount: Int?,\n        transaction: StoreTransaction?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetAuthenticationPremiumPurchaseTransaction(\n            amount: amount,\n            currency: currency,\n            isRestore: isRestore,\n            premiumDayCount: premiumDayCount,\n            transaction: transaction\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs server about an in-store purchase of Telegram Premium before authorization. Works only when the current authorization state is authorizationStateWaitPremiumPurchase\n    /// - Parameter amount: Paid amount, in the smallest units of the currency\n    /// - Parameter currency: ISO 4217 currency code of the payment currency\n    /// - Parameter isRestore: Pass true if this is a restore of a Telegram Premium purchase; only for App Store\n    /// - Parameter premiumDayCount: The number of days for which the Telegram Premium subscription will be granted\n    /// - Parameter transaction: Information about the transaction\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setAuthenticationPremiumPurchaseTransaction(\n        amount: Int64?,\n        currency: String?,\n        isRestore: Bool?,\n        premiumDayCount: Int?,\n        transaction: StoreTransaction?\n    ) async throws -> Ok {\n        let query = SetAuthenticationPremiumPurchaseTransaction(\n            amount: amount,\n            currency: currency,\n            isRestore: isRestore,\n            premiumDayCount: premiumDayCount,\n            transaction: transaction\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets the email address of the user and sends an authentication code to the email address. Works only when the current authorization state is authorizationStateWaitEmailAddress\n    /// - Parameter emailAddress: The email address of the user\n    public final func setAuthenticationEmailAddress(\n        emailAddress: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetAuthenticationEmailAddress(\n            emailAddress: emailAddress\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets the email address of the user and sends an authentication code to the email address. Works only when the current authorization state is authorizationStateWaitEmailAddress\n    /// - Parameter emailAddress: The email address of the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setAuthenticationEmailAddress(emailAddress: String?) async throws -> Ok {\n        let query = SetAuthenticationEmailAddress(\n            emailAddress: emailAddress\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Resends an authentication code to the user. Works only when the current authorization state is authorizationStateWaitCode, the next_code_type of the result is not null and the server-specified timeout has passed, or when the current authorization state is authorizationStateWaitEmailCode\n    /// - Parameter reason: Reason of code resending; pass null if unknown\n    public final func resendAuthenticationCode(\n        reason: ResendCodeReason?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ResendAuthenticationCode(\n            reason: reason\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Resends an authentication code to the user. Works only when the current authorization state is authorizationStateWaitCode, the next_code_type of the result is not null and the server-specified timeout has passed, or when the current authorization state is authorizationStateWaitEmailCode\n    /// - Parameter reason: Reason of code resending; pass null if unknown\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func resendAuthenticationCode(reason: ResendCodeReason?) async throws -> Ok {\n        let query = ResendAuthenticationCode(\n            reason: reason\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks the authentication of an email address. Works only when the current authorization state is authorizationStateWaitEmailCode\n    /// - Parameter code: Email address authentication to check\n    public final func checkAuthenticationEmailCode(\n        code: EmailAddressAuthentication?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckAuthenticationEmailCode(\n            code: code\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks the authentication of an email address. Works only when the current authorization state is authorizationStateWaitEmailCode\n    /// - Parameter code: Email address authentication to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func checkAuthenticationEmailCode(code: EmailAddressAuthentication?) async throws -> Ok {\n        let query = CheckAuthenticationEmailCode(\n            code: code\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks the authentication code. Works only when the current authorization state is authorizationStateWaitCode\n    /// - Parameter code: Authentication code to check\n    public final func checkAuthenticationCode(\n        code: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckAuthenticationCode(\n            code: code\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks the authentication code. Works only when the current authorization state is authorizationStateWaitCode\n    /// - Parameter code: Authentication code to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func checkAuthenticationCode(code: String?) async throws -> Ok {\n        let query = CheckAuthenticationCode(\n            code: code\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Requests QR code authentication by scanning a QR code on another logged in device. Works only when the current authorization state is authorizationStateWaitPhoneNumber, or if there is no pending authentication query and the current authorization state is authorizationStateWaitPremiumPurchase, authorizationStateWaitEmailAddress, authorizationStateWaitEmailCode, authorizationStateWaitCode, authorizationStateWaitRegistration, or authorizationStateWaitPassword\n    /// - Parameter otherUserIds: List of user identifiers of other users currently using the application\n    public final func requestQrCodeAuthentication(\n        otherUserIds: [Int64]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RequestQrCodeAuthentication(\n            otherUserIds: otherUserIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Requests QR code authentication by scanning a QR code on another logged in device. Works only when the current authorization state is authorizationStateWaitPhoneNumber, or if there is no pending authentication query and the current authorization state is authorizationStateWaitPremiumPurchase, authorizationStateWaitEmailAddress, authorizationStateWaitEmailCode, authorizationStateWaitCode, authorizationStateWaitRegistration, or authorizationStateWaitPassword\n    /// - Parameter otherUserIds: List of user identifiers of other users currently using the application\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func requestQrCodeAuthentication(otherUserIds: [Int64]?) async throws -> Ok {\n        let query = RequestQrCodeAuthentication(\n            otherUserIds: otherUserIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns parameters for authentication using a passkey as JSON-serialized string\n    /// - Returns: Parameters for authentication using a passkey as JSON-serialized string\n    public final func getAuthenticationPasskeyParameters(completion: @escaping (Result<Text, Swift.Error>) -> Void) throws {\n        let query = GetAuthenticationPasskeyParameters()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns parameters for authentication using a passkey as JSON-serialized string\n    /// - Returns: Parameters for authentication using a passkey as JSON-serialized string\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getAuthenticationPasskeyParameters() async throws -> Text {\n        let query = GetAuthenticationPasskeyParameters()\n        return try await self.run(query: query)\n    }\n\n    /// Checks a passkey to log in to the corresponding account. Call getAuthenticationPasskeyParameters to get parameters for the passkey. Works only when the current authorization state is authorizationStateWaitPhoneNumber or authorizationStateWaitOtherDeviceConfirmation, or if there is no pending authentication query and the current authorization state is authorizationStateWaitPremiumPurchase, authorizationStateWaitEmailAddress, authorizationStateWaitEmailCode, authorizationStateWaitCode, authorizationStateWaitRegistration, or authorizationStateWaitPassword\n    /// - Parameter authenticatorData: Authenticator data of the application that created the credential\n    /// - Parameter clientData: JSON-encoded client data\n    /// - Parameter credentialId: Base64url-encoded identifier of the credential\n    /// - Parameter signature: Cryptographic signature of the credential\n    /// - Parameter userHandle: User handle of the passkey\n    public final func checkAuthenticationPasskey(\n        authenticatorData: Data?,\n        clientData: String?,\n        credentialId: String?,\n        signature: Data?,\n        userHandle: Data?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckAuthenticationPasskey(\n            authenticatorData: authenticatorData,\n            clientData: clientData,\n            credentialId: credentialId,\n            signature: signature,\n            userHandle: userHandle\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks a passkey to log in to the corresponding account. Call getAuthenticationPasskeyParameters to get parameters for the passkey. Works only when the current authorization state is authorizationStateWaitPhoneNumber or authorizationStateWaitOtherDeviceConfirmation, or if there is no pending authentication query and the current authorization state is authorizationStateWaitPremiumPurchase, authorizationStateWaitEmailAddress, authorizationStateWaitEmailCode, authorizationStateWaitCode, authorizationStateWaitRegistration, or authorizationStateWaitPassword\n    /// - Parameter authenticatorData: Authenticator data of the application that created the credential\n    /// - Parameter clientData: JSON-encoded client data\n    /// - Parameter credentialId: Base64url-encoded identifier of the credential\n    /// - Parameter signature: Cryptographic signature of the credential\n    /// - Parameter userHandle: User handle of the passkey\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func checkAuthenticationPasskey(\n        authenticatorData: Data?,\n        clientData: String?,\n        credentialId: String?,\n        signature: Data?,\n        userHandle: Data?\n    ) async throws -> Ok {\n        let query = CheckAuthenticationPasskey(\n            authenticatorData: authenticatorData,\n            clientData: clientData,\n            credentialId: credentialId,\n            signature: signature,\n            userHandle: userHandle\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Finishes user registration. Works only when the current authorization state is authorizationStateWaitRegistration\n    /// - Parameter disableNotification: Pass true to disable notification about the current user joining Telegram for other users that added them to contact list\n    /// - Parameter firstName: The first name of the user; 1-64 characters\n    /// - Parameter lastName: The last name of the user; 0-64 characters\n    public final func registerUser(\n        disableNotification: Bool?,\n        firstName: String?,\n        lastName: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RegisterUser(\n            disableNotification: disableNotification,\n            firstName: firstName,\n            lastName: lastName\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Finishes user registration. Works only when the current authorization state is authorizationStateWaitRegistration\n    /// - Parameter disableNotification: Pass true to disable notification about the current user joining Telegram for other users that added them to contact list\n    /// - Parameter firstName: The first name of the user; 1-64 characters\n    /// - Parameter lastName: The last name of the user; 0-64 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func registerUser(\n        disableNotification: Bool?,\n        firstName: String?,\n        lastName: String?\n    ) async throws -> Ok {\n        let query = RegisterUser(\n            disableNotification: disableNotification,\n            firstName: firstName,\n            lastName: lastName\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Resets the login email address. May return an error with a message \"TASK_ALREADY_EXISTS\" if reset is still pending. Works only when the current authorization state is authorizationStateWaitEmailCode and authorization_state.can_reset_email_address == true\n    /// - Returns: May return an error with a message \"TASK_ALREADY_EXISTS\" if reset is still pending\n    public final func resetAuthenticationEmailAddress(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ResetAuthenticationEmailAddress()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Resets the login email address. May return an error with a message \"TASK_ALREADY_EXISTS\" if reset is still pending. Works only when the current authorization state is authorizationStateWaitEmailCode and authorization_state.can_reset_email_address == true\n    /// - Returns: May return an error with a message \"TASK_ALREADY_EXISTS\" if reset is still pending\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func resetAuthenticationEmailAddress() async throws -> Ok {\n        let query = ResetAuthenticationEmailAddress()\n        return try await self.run(query: query)\n    }\n\n    /// Checks the 2-step verification password for correctness. Works only when the current authorization state is authorizationStateWaitPassword\n    /// - Parameter password: The 2-step verification password to check\n    public final func checkAuthenticationPassword(\n        password: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckAuthenticationPassword(\n            password: password\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks the 2-step verification password for correctness. Works only when the current authorization state is authorizationStateWaitPassword\n    /// - Parameter password: The 2-step verification password to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func checkAuthenticationPassword(password: String?) async throws -> Ok {\n        let query = CheckAuthenticationPassword(\n            password: password\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Requests to send a 2-step verification password recovery code to an email address that was previously set up. Works only when the current authorization state is authorizationStateWaitPassword\n    public final func requestAuthenticationPasswordRecovery(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = RequestAuthenticationPasswordRecovery()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Requests to send a 2-step verification password recovery code to an email address that was previously set up. Works only when the current authorization state is authorizationStateWaitPassword\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func requestAuthenticationPasswordRecovery() async throws -> Ok {\n        let query = RequestAuthenticationPasswordRecovery()\n        return try await self.run(query: query)\n    }\n\n    /// Checks whether a 2-step verification password recovery code sent to an email address is valid. Works only when the current authorization state is authorizationStateWaitPassword\n    /// - Parameter recoveryCode: Recovery code to check\n    public final func checkAuthenticationPasswordRecoveryCode(\n        recoveryCode: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckAuthenticationPasswordRecoveryCode(\n            recoveryCode: recoveryCode\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks whether a 2-step verification password recovery code sent to an email address is valid. Works only when the current authorization state is authorizationStateWaitPassword\n    /// - Parameter recoveryCode: Recovery code to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func checkAuthenticationPasswordRecoveryCode(recoveryCode: String?) async throws -> Ok {\n        let query = CheckAuthenticationPasswordRecoveryCode(\n            recoveryCode: recoveryCode\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Recovers the 2-step verification password with a password recovery code sent to an email address that was previously set up. Works only when the current authorization state is authorizationStateWaitPassword\n    /// - Parameter newHint: New password hint; may be empty\n    /// - Parameter newPassword: New 2-step verification password of the user; may be empty to remove the password\n    /// - Parameter recoveryCode: Recovery code to check\n    public final func recoverAuthenticationPassword(\n        newHint: String?,\n        newPassword: String?,\n        recoveryCode: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RecoverAuthenticationPassword(\n            newHint: newHint,\n            newPassword: newPassword,\n            recoveryCode: recoveryCode\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Recovers the 2-step verification password with a password recovery code sent to an email address that was previously set up. Works only when the current authorization state is authorizationStateWaitPassword\n    /// - Parameter newHint: New password hint; may be empty\n    /// - Parameter newPassword: New 2-step verification password of the user; may be empty to remove the password\n    /// - Parameter recoveryCode: Recovery code to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func recoverAuthenticationPassword(\n        newHint: String?,\n        newPassword: String?,\n        recoveryCode: String?\n    ) async throws -> Ok {\n        let query = RecoverAuthenticationPassword(\n            newHint: newHint,\n            newPassword: newPassword,\n            recoveryCode: recoveryCode\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends Firebase Authentication SMS to the phone number of the user. Works only when the current authorization state is authorizationStateWaitCode and the server returned code of the type authenticationCodeTypeFirebaseAndroid or authenticationCodeTypeFirebaseIos\n    /// - Parameter token: Play Integrity API or SafetyNet Attestation API token for the Android application, or secret from push notification for the iOS application\n    /// - Returns: Works only when the current authorization state is authorizationStateWaitCode and the server returned code of the type authenticationCodeTypeFirebaseAndroid or authenticationCodeTypeFirebaseIos\n    public final func sendAuthenticationFirebaseSms(\n        token: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendAuthenticationFirebaseSms(\n            token: token\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends Firebase Authentication SMS to the phone number of the user. Works only when the current authorization state is authorizationStateWaitCode and the server returned code of the type authenticationCodeTypeFirebaseAndroid or authenticationCodeTypeFirebaseIos\n    /// - Parameter token: Play Integrity API or SafetyNet Attestation API token for the Android application, or secret from push notification for the iOS application\n    /// - Returns: Works only when the current authorization state is authorizationStateWaitCode and the server returned code of the type authenticationCodeTypeFirebaseAndroid or authenticationCodeTypeFirebaseIos\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func sendAuthenticationFirebaseSms(token: String?) async throws -> Ok {\n        let query = SendAuthenticationFirebaseSms(\n            token: token\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Reports that authentication code wasn't delivered via SMS; for official mobile applications only. Works only when the current authorization state is authorizationStateWaitCode\n    /// - Parameter mobileNetworkCode: Current mobile network code\n    public final func reportAuthenticationCodeMissing(\n        mobileNetworkCode: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportAuthenticationCodeMissing(\n            mobileNetworkCode: mobileNetworkCode\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Reports that authentication code wasn't delivered via SMS; for official mobile applications only. Works only when the current authorization state is authorizationStateWaitCode\n    /// - Parameter mobileNetworkCode: Current mobile network code\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func reportAuthenticationCodeMissing(mobileNetworkCode: String?) async throws -> Ok {\n        let query = ReportAuthenticationCodeMissing(\n            mobileNetworkCode: mobileNetworkCode\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks the authentication token of a bot; to log in as a bot. Works only when the current authorization state is authorizationStateWaitPhoneNumber. Can be used instead of setAuthenticationPhoneNumber and checkAuthenticationCode to log in\n    /// - Parameter token: The bot token\n    public final func checkAuthenticationBotToken(\n        token: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckAuthenticationBotToken(\n            token: token\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks the authentication token of a bot; to log in as a bot. Works only when the current authorization state is authorizationStateWaitPhoneNumber. Can be used instead of setAuthenticationPhoneNumber and checkAuthenticationCode to log in\n    /// - Parameter token: The bot token\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func checkAuthenticationBotToken(token: String?) async throws -> Ok {\n        let query = CheckAuthenticationBotToken(\n            token: token\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Closes the TDLib instance after a proper logout. Requires an available network connection. All local data will be destroyed. After the logout completes, updateAuthorizationState with authorizationStateClosed will be sent\n    public final func logOut(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = LogOut()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Closes the TDLib instance after a proper logout. Requires an available network connection. All local data will be destroyed. After the logout completes, updateAuthorizationState with authorizationStateClosed will be sent\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func logOut() async throws -> Ok {\n        let query = LogOut()\n        return try await self.run(query: query)\n    }\n\n    /// Closes the TDLib instance. All databases will be flushed to disk and properly closed. After the close completes, updateAuthorizationState with authorizationStateClosed will be sent. Can be called before initialization\n    public final func close(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = Close()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Closes the TDLib instance. All databases will be flushed to disk and properly closed. After the close completes, updateAuthorizationState with authorizationStateClosed will be sent. Can be called before initialization\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func close() async throws -> Ok {\n        let query = Close()\n        return try await self.run(query: query)\n    }\n\n    /// Closes the TDLib instance, destroying all local data without a proper logout. The current user session will remain in the list of all active sessions. All local data will be destroyed. After the destruction completes updateAuthorizationState with authorizationStateClosed will be sent. Can be called before authorization\n    public final func destroy(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = Destroy()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Closes the TDLib instance, destroying all local data without a proper logout. The current user session will remain in the list of all active sessions. All local data will be destroyed. After the destruction completes updateAuthorizationState with authorizationStateClosed will be sent. Can be called before authorization\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func destroy() async throws -> Ok {\n        let query = Destroy()\n        return try await self.run(query: query)\n    }\n\n    /// Confirms QR code authentication on another device. Returns created session on success\n    /// - Parameter link: A link from a QR code. The link must be scanned by the in-app camera\n    /// - Returns: Created session on success\n    public final func confirmQrCodeAuthentication(\n        link: String?,\n        completion: @escaping (Result<Session, Swift.Error>) -> Void\n    ) throws {\n        let query = ConfirmQrCodeAuthentication(\n            link: link\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Confirms QR code authentication on another device. Returns created session on success\n    /// - Parameter link: A link from a QR code. The link must be scanned by the in-app camera\n    /// - Returns: Created session on success\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func confirmQrCodeAuthentication(link: String?) async throws -> Session {\n        let query = ConfirmQrCodeAuthentication(\n            link: link\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns all updates needed to restore current TDLib state, i.e. all actual updateAuthorizationState/updateUser/updateNewChat and others. This is especially useful if TDLib is run in a separate process. Can be called before initialization\n    /// - Returns: All updates needed to restore current TDLib state, i.e. all actual updateAuthorizationState/updateUser/updateNewChat and others\n    public final func getCurrentState(completion: @escaping (Result<Updates, Swift.Error>) -> Void) throws {\n        let query = GetCurrentState()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns all updates needed to restore current TDLib state, i.e. all actual updateAuthorizationState/updateUser/updateNewChat and others. This is especially useful if TDLib is run in a separate process. Can be called before initialization\n    /// - Returns: All updates needed to restore current TDLib state, i.e. all actual updateAuthorizationState/updateUser/updateNewChat and others\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getCurrentState() async throws -> Updates {\n        let query = GetCurrentState()\n        return try await self.run(query: query)\n    }\n\n    /// Changes the database encryption key. Usually the encryption key is never changed and is stored in some OS keychain\n    /// - Parameter newEncryptionKey: New encryption key\n    public final func setDatabaseEncryptionKey(\n        newEncryptionKey: Data?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetDatabaseEncryptionKey(\n            newEncryptionKey: newEncryptionKey\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the database encryption key. Usually the encryption key is never changed and is stored in some OS keychain\n    /// - Parameter newEncryptionKey: New encryption key\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setDatabaseEncryptionKey(newEncryptionKey: Data?) async throws -> Ok {\n        let query = SetDatabaseEncryptionKey(\n            newEncryptionKey: newEncryptionKey\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the current state of 2-step verification\n    /// - Returns: The current state of 2-step verification\n    public final func getPasswordState(completion: @escaping (Result<PasswordState, Swift.Error>) -> Void) throws {\n        let query = GetPasswordState()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the current state of 2-step verification\n    /// - Returns: The current state of 2-step verification\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPasswordState() async throws -> PasswordState {\n        let query = GetPasswordState()\n        return try await self.run(query: query)\n    }\n\n    /// Changes the 2-step verification password for the current user. If a new recovery email address is specified, then the change will not be applied until the new recovery email address is confirmed\n    /// - Parameter newHint: New password hint; may be empty\n    /// - Parameter newPassword: New 2-step verification password of the user; may be empty to remove the password\n    /// - Parameter newRecoveryEmailAddress: New recovery email address; may be empty\n    /// - Parameter oldPassword: Previous 2-step verification password of the user\n    /// - Parameter setRecoveryEmailAddress: Pass true to change also the recovery email address\n    public final func setPassword(\n        newHint: String?,\n        newPassword: String?,\n        newRecoveryEmailAddress: String?,\n        oldPassword: String?,\n        setRecoveryEmailAddress: Bool?,\n        completion: @escaping (Result<PasswordState, Swift.Error>) -> Void\n    ) throws {\n        let query = SetPassword(\n            newHint: newHint,\n            newPassword: newPassword,\n            newRecoveryEmailAddress: newRecoveryEmailAddress,\n            oldPassword: oldPassword,\n            setRecoveryEmailAddress: setRecoveryEmailAddress\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the 2-step verification password for the current user. If a new recovery email address is specified, then the change will not be applied until the new recovery email address is confirmed\n    /// - Parameter newHint: New password hint; may be empty\n    /// - Parameter newPassword: New 2-step verification password of the user; may be empty to remove the password\n    /// - Parameter newRecoveryEmailAddress: New recovery email address; may be empty\n    /// - Parameter oldPassword: Previous 2-step verification password of the user\n    /// - Parameter setRecoveryEmailAddress: Pass true to change also the recovery email address\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func setPassword(\n        newHint: String?,\n        newPassword: String?,\n        newRecoveryEmailAddress: String?,\n        oldPassword: String?,\n        setRecoveryEmailAddress: Bool?\n    ) async throws -> PasswordState {\n        let query = SetPassword(\n            newHint: newHint,\n            newPassword: newPassword,\n            newRecoveryEmailAddress: newRecoveryEmailAddress,\n            oldPassword: oldPassword,\n            setRecoveryEmailAddress: setRecoveryEmailAddress\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks whether the current user is required to set login email address\n    public final func isLoginEmailAddressRequired(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = IsLoginEmailAddressRequired()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks whether the current user is required to set login email address\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func isLoginEmailAddressRequired() async throws -> Ok {\n        let query = IsLoginEmailAddressRequired()\n        return try await self.run(query: query)\n    }\n\n    /// Changes the login email address of the user. The email address can be changed only if the current user already has login email and passwordState.login_email_address_pattern is non-empty, or the user received suggestedActionSetLoginEmailAddress and isLoginEmailAddressRequired succeeds. The change will not be applied until the new login email address is confirmed with checkLoginEmailAddressCode. To use Apple ID/Google ID instead of an email address, call checkLoginEmailAddressCode directly\n    /// - Parameter newLoginEmailAddress: New login email address\n    public final func setLoginEmailAddress(\n        newLoginEmailAddress: String?,\n        completion: @escaping (Result<EmailAddressAuthenticationCodeInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = SetLoginEmailAddress(\n            newLoginEmailAddress: newLoginEmailAddress\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the login email address of the user. The email address can be changed only if the current user already has login email and passwordState.login_email_address_pattern is non-empty, or the user received suggestedActionSetLoginEmailAddress and isLoginEmailAddressRequired succeeds. The change will not be applied until the new login email address is confirmed with checkLoginEmailAddressCode. To use Apple ID/Google ID instead of an email address, call checkLoginEmailAddressCode directly\n    /// - Parameter newLoginEmailAddress: New login email address\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func setLoginEmailAddress(newLoginEmailAddress: String?) async throws -> EmailAddressAuthenticationCodeInfo {\n        let query = SetLoginEmailAddress(\n            newLoginEmailAddress: newLoginEmailAddress\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Resends the login email address verification code\n    public final func resendLoginEmailAddressCode(completion: @escaping (Result<EmailAddressAuthenticationCodeInfo, Swift.Error>) -> Void) throws {\n        let query = ResendLoginEmailAddressCode()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Resends the login email address verification code\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func resendLoginEmailAddressCode() async throws -> EmailAddressAuthenticationCodeInfo {\n        let query = ResendLoginEmailAddressCode()\n        return try await self.run(query: query)\n    }\n\n    /// Checks the login email address authentication\n    /// - Parameter code: Email address authentication to check\n    public final func checkLoginEmailAddressCode(\n        code: EmailAddressAuthentication?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckLoginEmailAddressCode(\n            code: code\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks the login email address authentication\n    /// - Parameter code: Email address authentication to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func checkLoginEmailAddressCode(code: EmailAddressAuthentication?) async throws -> Ok {\n        let query = CheckLoginEmailAddressCode(\n            code: code\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a 2-step verification recovery email address that was previously set up. This method can be used to verify a password provided by the user\n    /// - Parameter password: The 2-step verification password for the current user\n    /// - Returns: A 2-step verification recovery email address that was previously set up\n    public final func getRecoveryEmailAddress(\n        password: String?,\n        completion: @escaping (Result<RecoveryEmailAddress, Swift.Error>) -> Void\n    ) throws {\n        let query = GetRecoveryEmailAddress(\n            password: password\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a 2-step verification recovery email address that was previously set up. This method can be used to verify a password provided by the user\n    /// - Parameter password: The 2-step verification password for the current user\n    /// - Returns: A 2-step verification recovery email address that was previously set up\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getRecoveryEmailAddress(password: String?) async throws -> RecoveryEmailAddress {\n        let query = GetRecoveryEmailAddress(\n            password: password\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the 2-step verification recovery email address of the user. If a new recovery email address is specified, then the change will not be applied until the new recovery email address is confirmed. If new_recovery_email_address is the same as the email address that is currently set up, this call succeeds immediately and aborts all other requests waiting for an email confirmation\n    /// - Parameter newRecoveryEmailAddress: New recovery email address\n    /// - Parameter password: The 2-step verification password of the current user\n    public final func setRecoveryEmailAddress(\n        newRecoveryEmailAddress: String?,\n        password: String?,\n        completion: @escaping (Result<PasswordState, Swift.Error>) -> Void\n    ) throws {\n        let query = SetRecoveryEmailAddress(\n            newRecoveryEmailAddress: newRecoveryEmailAddress,\n            password: password\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the 2-step verification recovery email address of the user. If a new recovery email address is specified, then the change will not be applied until the new recovery email address is confirmed. If new_recovery_email_address is the same as the email address that is currently set up, this call succeeds immediately and aborts all other requests waiting for an email confirmation\n    /// - Parameter newRecoveryEmailAddress: New recovery email address\n    /// - Parameter password: The 2-step verification password of the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func setRecoveryEmailAddress(\n        newRecoveryEmailAddress: String?,\n        password: String?\n    ) async throws -> PasswordState {\n        let query = SetRecoveryEmailAddress(\n            newRecoveryEmailAddress: newRecoveryEmailAddress,\n            password: password\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks the 2-step verification recovery email address verification code\n    /// - Parameter code: Verification code to check\n    public final func checkRecoveryEmailAddressCode(\n        code: String?,\n        completion: @escaping (Result<PasswordState, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckRecoveryEmailAddressCode(\n            code: code\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks the 2-step verification recovery email address verification code\n    /// - Parameter code: Verification code to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func checkRecoveryEmailAddressCode(code: String?) async throws -> PasswordState {\n        let query = CheckRecoveryEmailAddressCode(\n            code: code\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Resends the 2-step verification recovery email address verification code\n    public final func resendRecoveryEmailAddressCode(completion: @escaping (Result<PasswordState, Swift.Error>) -> Void) throws {\n        let query = ResendRecoveryEmailAddressCode()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Resends the 2-step verification recovery email address verification code\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func resendRecoveryEmailAddressCode() async throws -> PasswordState {\n        let query = ResendRecoveryEmailAddressCode()\n        return try await self.run(query: query)\n    }\n\n    /// Cancels verification of the 2-step verification recovery email address\n    public final func cancelRecoveryEmailAddressVerification(completion: @escaping (Result<PasswordState, Swift.Error>) -> Void) throws {\n        let query = CancelRecoveryEmailAddressVerification()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Cancels verification of the 2-step verification recovery email address\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func cancelRecoveryEmailAddressVerification() async throws -> PasswordState {\n        let query = CancelRecoveryEmailAddressVerification()\n        return try await self.run(query: query)\n    }\n\n    /// Requests to send a 2-step verification password recovery code to an email address that was previously set up\n    public final func requestPasswordRecovery(completion: @escaping (Result<EmailAddressAuthenticationCodeInfo, Swift.Error>) -> Void) throws {\n        let query = RequestPasswordRecovery()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Requests to send a 2-step verification password recovery code to an email address that was previously set up\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func requestPasswordRecovery() async throws -> EmailAddressAuthenticationCodeInfo {\n        let query = RequestPasswordRecovery()\n        return try await self.run(query: query)\n    }\n\n    /// Checks whether a 2-step verification password recovery code sent to an email address is valid\n    /// - Parameter recoveryCode: Recovery code to check\n    public final func checkPasswordRecoveryCode(\n        recoveryCode: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckPasswordRecoveryCode(\n            recoveryCode: recoveryCode\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks whether a 2-step verification password recovery code sent to an email address is valid\n    /// - Parameter recoveryCode: Recovery code to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func checkPasswordRecoveryCode(recoveryCode: String?) async throws -> Ok {\n        let query = CheckPasswordRecoveryCode(\n            recoveryCode: recoveryCode\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Recovers the 2-step verification password using a recovery code sent to an email address that was previously set up\n    /// - Parameter newHint: New password hint; may be empty\n    /// - Parameter newPassword: New 2-step verification password of the user; may be empty to remove the password\n    /// - Parameter recoveryCode: Recovery code to check\n    public final func recoverPassword(\n        newHint: String?,\n        newPassword: String?,\n        recoveryCode: String?,\n        completion: @escaping (Result<PasswordState, Swift.Error>) -> Void\n    ) throws {\n        let query = RecoverPassword(\n            newHint: newHint,\n            newPassword: newPassword,\n            recoveryCode: recoveryCode\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Recovers the 2-step verification password using a recovery code sent to an email address that was previously set up\n    /// - Parameter newHint: New password hint; may be empty\n    /// - Parameter newPassword: New 2-step verification password of the user; may be empty to remove the password\n    /// - Parameter recoveryCode: Recovery code to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func recoverPassword(\n        newHint: String?,\n        newPassword: String?,\n        recoveryCode: String?\n    ) async throws -> PasswordState {\n        let query = RecoverPassword(\n            newHint: newHint,\n            newPassword: newPassword,\n            recoveryCode: recoveryCode\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes 2-step verification password without previous password and access to recovery email address. The password can't be reset immediately and the request needs to be repeated after the specified time\n    public final func resetPassword(completion: @escaping (Result<ResetPasswordResult, Swift.Error>) -> Void) throws {\n        let query = ResetPassword()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes 2-step verification password without previous password and access to recovery email address. The password can't be reset immediately and the request needs to be repeated after the specified time\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func resetPassword() async throws -> ResetPasswordResult {\n        let query = ResetPassword()\n        return try await self.run(query: query)\n    }\n\n    /// Cancels reset of 2-step verification password. The method can be called if passwordState.pending_reset_date > 0\n    public final func cancelPasswordReset(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = CancelPasswordReset()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Cancels reset of 2-step verification password. The method can be called if passwordState.pending_reset_date > 0\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func cancelPasswordReset() async throws -> Ok {\n        let query = CancelPasswordReset()\n        return try await self.run(query: query)\n    }\n\n    /// Creates a new temporary password for processing payments\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Parameter validFor: Time during which the temporary password will be valid, in seconds; must be between 60 and 86400\n    public final func createTemporaryPassword(\n        password: String?,\n        validFor: Int?,\n        completion: @escaping (Result<TemporaryPasswordState, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateTemporaryPassword(\n            password: password,\n            validFor: validFor\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Creates a new temporary password for processing payments\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Parameter validFor: Time during which the temporary password will be valid, in seconds; must be between 60 and 86400\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createTemporaryPassword(\n        password: String?,\n        validFor: Int?\n    ) async throws -> TemporaryPasswordState {\n        let query = CreateTemporaryPassword(\n            password: password,\n            validFor: validFor\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about the current temporary password\n    /// - Returns: Information about the current temporary password\n    public final func getTemporaryPasswordState(completion: @escaping (Result<TemporaryPasswordState, Swift.Error>) -> Void) throws {\n        let query = GetTemporaryPasswordState()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about the current temporary password\n    /// - Returns: Information about the current temporary password\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getTemporaryPasswordState() async throws -> TemporaryPasswordState {\n        let query = GetTemporaryPasswordState()\n        return try await self.run(query: query)\n    }\n\n    /// Returns the current user\n    /// - Returns: The current user\n    public final func getMe(completion: @escaping (Result<User, Swift.Error>) -> Void) throws {\n        let query = GetMe()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the current user\n    /// - Returns: The current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMe() async throws -> User {\n        let query = GetMe()\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a user by their identifier. This is an offline method if the current user is not a bot\n    /// - Parameter userId: User identifier\n    /// - Returns: Information about a user by their identifier\n    public final func getUser(\n        userId: Int64?,\n        completion: @escaping (Result<User, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUser(\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a user by their identifier. This is an offline method if the current user is not a bot\n    /// - Parameter userId: User identifier\n    /// - Returns: Information about a user by their identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getUser(userId: Int64?) async throws -> User {\n        let query = GetUser(\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns full information about a user by their identifier\n    /// - Parameter userId: User identifier\n    /// - Returns: Full information about a user by their identifier\n    public final func getUserFullInfo(\n        userId: Int64?,\n        completion: @escaping (Result<UserFullInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUserFullInfo(\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns full information about a user by their identifier\n    /// - Parameter userId: User identifier\n    /// - Returns: Full information about a user by their identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getUserFullInfo(userId: Int64?) async throws -> UserFullInfo {\n        let query = GetUserFullInfo(\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a basic group by its identifier. This is an offline method if the current user is not a bot\n    /// - Parameter basicGroupId: Basic group identifier\n    /// - Returns: Information about a basic group by its identifier\n    public final func getBasicGroup(\n        basicGroupId: Int64?,\n        completion: @escaping (Result<BasicGroup, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBasicGroup(\n            basicGroupId: basicGroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a basic group by its identifier. This is an offline method if the current user is not a bot\n    /// - Parameter basicGroupId: Basic group identifier\n    /// - Returns: Information about a basic group by its identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getBasicGroup(basicGroupId: Int64?) async throws -> BasicGroup {\n        let query = GetBasicGroup(\n            basicGroupId: basicGroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns full information about a basic group by its identifier\n    /// - Parameter basicGroupId: Basic group identifier\n    /// - Returns: Full information about a basic group by its identifier\n    public final func getBasicGroupFullInfo(\n        basicGroupId: Int64?,\n        completion: @escaping (Result<BasicGroupFullInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBasicGroupFullInfo(\n            basicGroupId: basicGroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns full information about a basic group by its identifier\n    /// - Parameter basicGroupId: Basic group identifier\n    /// - Returns: Full information about a basic group by its identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getBasicGroupFullInfo(basicGroupId: Int64?) async throws -> BasicGroupFullInfo {\n        let query = GetBasicGroupFullInfo(\n            basicGroupId: basicGroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a supergroup or a channel by its identifier. This is an offline method if the current user is not a bot\n    /// - Parameter supergroupId: Supergroup or channel identifier\n    /// - Returns: Information about a supergroup or a channel by its identifier\n    public final func getSupergroup(\n        supergroupId: Int64?,\n        completion: @escaping (Result<Supergroup, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSupergroup(\n            supergroupId: supergroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a supergroup or a channel by its identifier. This is an offline method if the current user is not a bot\n    /// - Parameter supergroupId: Supergroup or channel identifier\n    /// - Returns: Information about a supergroup or a channel by its identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getSupergroup(supergroupId: Int64?) async throws -> Supergroup {\n        let query = GetSupergroup(\n            supergroupId: supergroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns full information about a supergroup or a channel by its identifier, cached for up to 1 minute\n    /// - Parameter supergroupId: Supergroup or channel identifier\n    /// - Returns: Full information about a supergroup or a channel by its identifier, cached for up to 1 minute\n    public final func getSupergroupFullInfo(\n        supergroupId: Int64?,\n        completion: @escaping (Result<SupergroupFullInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSupergroupFullInfo(\n            supergroupId: supergroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns full information about a supergroup or a channel by its identifier, cached for up to 1 minute\n    /// - Parameter supergroupId: Supergroup or channel identifier\n    /// - Returns: Full information about a supergroup or a channel by its identifier, cached for up to 1 minute\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getSupergroupFullInfo(supergroupId: Int64?) async throws -> SupergroupFullInfo {\n        let query = GetSupergroupFullInfo(\n            supergroupId: supergroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a secret chat by its identifier. This is an offline method\n    /// - Parameter secretChatId: Secret chat identifier\n    /// - Returns: Information about a secret chat by its identifier\n    public final func getSecretChat(\n        secretChatId: Int?,\n        completion: @escaping (Result<SecretChat, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSecretChat(\n            secretChatId: secretChatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a secret chat by its identifier. This is an offline method\n    /// - Parameter secretChatId: Secret chat identifier\n    /// - Returns: Information about a secret chat by its identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getSecretChat(secretChatId: Int?) async throws -> SecretChat {\n        let query = GetSecretChat(\n            secretChatId: secretChatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a chat by its identifier. This is an offline method if the current user is not a bot\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: Information about a chat by its identifier\n    public final func getChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChat(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a chat by its identifier. This is an offline method if the current user is not a bot\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: Information about a chat by its identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChat(chatId: Int64?) async throws -> Chat {\n        let query = GetChat(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a message. Returns a 404 error if the message doesn't exist\n    /// - Parameter chatId: Identifier of the chat the message belongs to\n    /// - Parameter messageId: Identifier of the message to get\n    /// - Returns: Information about a message. Returns a 404 error if the message doesn't exist\n    public final func getMessage(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessage(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a message. Returns a 404 error if the message doesn't exist\n    /// - Parameter chatId: Identifier of the chat the message belongs to\n    /// - Parameter messageId: Identifier of the message to get\n    /// - Returns: Information about a message. Returns a 404 error if the message doesn't exist\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMessage(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Message {\n        let query = GetMessage(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a message, if it is available without sending network request. Returns a 404 error if message isn't available locally. This is an offline method\n    /// - Parameter chatId: Identifier of the chat the message belongs to\n    /// - Parameter messageId: Identifier of the message to get\n    /// - Returns: Information about a message, if it is available without sending network request. Returns a 404 error if message isn't available locally\n    public final func getMessageLocally(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageLocally(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a message, if it is available without sending network request. Returns a 404 error if message isn't available locally. This is an offline method\n    /// - Parameter chatId: Identifier of the chat the message belongs to\n    /// - Parameter messageId: Identifier of the message to get\n    /// - Returns: Information about a message, if it is available without sending network request. Returns a 404 error if message isn't available locally\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMessageLocally(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Message {\n        let query = GetMessageLocally(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a non-bundled message that is replied by a given message. Also, returns the pinned message for messagePinMessage, the game message for messageGameScore, the invoice message for messagePaymentSuccessful, the message with a previously set same background for messageChatSetBackground, the giveaway message for messageGiveawayCompleted, the checklist message for messageChecklistTasksDone, messageChecklistTasksAdded, the message with suggested post information for messageSuggestedPostApprovalFailed, messageSuggestedPostApproved, messageSuggestedPostDeclined, messageSuggestedPostPaid, messageSuggestedPostRefunded, the message with the regular gift that was upgraded for messageUpgradedGift with origin of the type upgradedGiftOriginUpgrade, the message with gift purchase offer for messageUpgradedGiftPurchaseOfferRejected, the message with the request to disable content protection for messageChatHasProtectedContentToggled, the message with the poll for messagePollOptionAdded and messagePollOptionDeleted, and the topic creation message for topic messages without non-bundled replied message. Returns a 404 error if the message doesn't exist\n    /// - Parameter chatId: Identifier of the chat the message belongs to\n    /// - Parameter messageId: Identifier of the reply message\n    /// - Returns: Information about a non-bundled message that is replied by a given message. Also, returns the pinned message for messagePinMessage, the game message for messageGameScore, the invoice message for messagePaymentSuccessful, the message with a previously set same background for messageChatSetBackground, the giveaway message for messageGiveawayCompleted, the checklist message for messageChecklistTasksDone, messageChecklistTasksAdded, the message with suggested post information for messageSuggestedPostApprovalFailed, messageSuggestedPostApproved, messageSuggestedPostDeclined, messageSuggestedPostPaid, messageSuggestedPostRefunded, the message with the regular gift that was upgraded for messageUpgradedGift with origin of the type upgradedGiftOriginUpgrade, the message with gift purchase offer for messageUpgradedGiftPurchaseOfferRejected, the message with the request to disable content protection for messageChatHasProtectedContentToggled, the message with the poll for messagePollOptionAdded and messagePollOptionDeleted, and the topic creation message for topic messages without non-bundled replied message. Returns a 404 error if the message doesn't exist\n    public final func getRepliedMessage(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = GetRepliedMessage(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a non-bundled message that is replied by a given message. Also, returns the pinned message for messagePinMessage, the game message for messageGameScore, the invoice message for messagePaymentSuccessful, the message with a previously set same background for messageChatSetBackground, the giveaway message for messageGiveawayCompleted, the checklist message for messageChecklistTasksDone, messageChecklistTasksAdded, the message with suggested post information for messageSuggestedPostApprovalFailed, messageSuggestedPostApproved, messageSuggestedPostDeclined, messageSuggestedPostPaid, messageSuggestedPostRefunded, the message with the regular gift that was upgraded for messageUpgradedGift with origin of the type upgradedGiftOriginUpgrade, the message with gift purchase offer for messageUpgradedGiftPurchaseOfferRejected, the message with the request to disable content protection for messageChatHasProtectedContentToggled, the message with the poll for messagePollOptionAdded and messagePollOptionDeleted, and the topic creation message for topic messages without non-bundled replied message. Returns a 404 error if the message doesn't exist\n    /// - Parameter chatId: Identifier of the chat the message belongs to\n    /// - Parameter messageId: Identifier of the reply message\n    /// - Returns: Information about a non-bundled message that is replied by a given message. Also, returns the pinned message for messagePinMessage, the game message for messageGameScore, the invoice message for messagePaymentSuccessful, the message with a previously set same background for messageChatSetBackground, the giveaway message for messageGiveawayCompleted, the checklist message for messageChecklistTasksDone, messageChecklistTasksAdded, the message with suggested post information for messageSuggestedPostApprovalFailed, messageSuggestedPostApproved, messageSuggestedPostDeclined, messageSuggestedPostPaid, messageSuggestedPostRefunded, the message with the regular gift that was upgraded for messageUpgradedGift with origin of the type upgradedGiftOriginUpgrade, the message with gift purchase offer for messageUpgradedGiftPurchaseOfferRejected, the message with the request to disable content protection for messageChatHasProtectedContentToggled, the message with the poll for messagePollOptionAdded and messagePollOptionDeleted, and the topic creation message for topic messages without non-bundled replied message. Returns a 404 error if the message doesn't exist\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getRepliedMessage(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Message {\n        let query = GetRepliedMessage(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a newest pinned message in the chat. Returns a 404 error if the message doesn't exist\n    /// - Parameter chatId: Identifier of the chat the message belongs to\n    /// - Returns: Information about a newest pinned message in the chat. Returns a 404 error if the message doesn't exist\n    public final func getChatPinnedMessage(\n        chatId: Int64?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatPinnedMessage(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a newest pinned message in the chat. Returns a 404 error if the message doesn't exist\n    /// - Parameter chatId: Identifier of the chat the message belongs to\n    /// - Returns: Information about a newest pinned message in the chat. Returns a 404 error if the message doesn't exist\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatPinnedMessage(chatId: Int64?) async throws -> Message {\n        let query = GetChatPinnedMessage(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a message with the callback button that originated a callback query; for bots only\n    /// - Parameter callbackQueryId: Identifier of the callback query\n    /// - Parameter chatId: Identifier of the chat the message belongs to\n    /// - Parameter messageId: Message identifier\n    /// - Returns: Information about a message with the callback button that originated a callback query\n    public final func getCallbackQueryMessage(\n        callbackQueryId: TdInt64?,\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = GetCallbackQueryMessage(\n            callbackQueryId: callbackQueryId,\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a message with the callback button that originated a callback query; for bots only\n    /// - Parameter callbackQueryId: Identifier of the callback query\n    /// - Parameter chatId: Identifier of the chat the message belongs to\n    /// - Parameter messageId: Message identifier\n    /// - Returns: Information about a message with the callback button that originated a callback query\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getCallbackQueryMessage(\n        callbackQueryId: TdInt64?,\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Message {\n        let query = GetCallbackQueryMessage(\n            callbackQueryId: callbackQueryId,\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about messages. If a message is not found, returns null on the corresponding position of the result\n    /// - Parameter chatId: Identifier of the chat the messages belong to\n    /// - Parameter messageIds: Identifiers of the messages to get\n    /// - Returns: Information about messages. If a message is not found, returns null on the corresponding position of the result\n    public final func getMessages(\n        chatId: Int64?,\n        messageIds: [Int64]?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessages(\n            chatId: chatId,\n            messageIds: messageIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about messages. If a message is not found, returns null on the corresponding position of the result\n    /// - Parameter chatId: Identifier of the chat the messages belong to\n    /// - Parameter messageIds: Identifiers of the messages to get\n    /// - Returns: Information about messages. If a message is not found, returns null on the corresponding position of the result\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMessages(\n        chatId: Int64?,\n        messageIds: [Int64]?\n    ) async throws -> Messages {\n        let query = GetMessages(\n            chatId: chatId,\n            messageIds: messageIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns properties of a message. This is an offline method\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Properties of a message\n    public final func getMessageProperties(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<MessageProperties, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageProperties(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns properties of a message. This is an offline method\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Properties of a message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMessageProperties(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> MessageProperties {\n        let query = GetMessageProperties(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns properties of a poll option. This is an offline method\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter pollOptionId: Unique identifier of the answer option, which properties will be returned\n    /// - Returns: Properties of a poll option\n    public final func getPollOptionProperties(\n        chatId: Int64?,\n        messageId: Int64?,\n        pollOptionId: String?,\n        completion: @escaping (Result<PollOptionProperties, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPollOptionProperties(\n            chatId: chatId,\n            messageId: messageId,\n            pollOptionId: pollOptionId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns properties of a poll option. This is an offline method\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter pollOptionId: Unique identifier of the answer option, which properties will be returned\n    /// - Returns: Properties of a poll option\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPollOptionProperties(\n        chatId: Int64?,\n        messageId: Int64?,\n        pollOptionId: String?\n    ) async throws -> PollOptionProperties {\n        let query = GetPollOptionProperties(\n            chatId: chatId,\n            messageId: messageId,\n            pollOptionId: pollOptionId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a message thread. Can be used only if messageProperties.can_get_message_thread == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Information about a message thread\n    public final func getMessageThread(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<MessageThreadInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageThread(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a message thread. Can be used only if messageProperties.can_get_message_thread == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Information about a message thread\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMessageThread(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> MessageThreadInfo {\n        let query = GetMessageThread(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns read date of a recent outgoing message in a private chat. The method can be called if messageProperties.can_get_read_date == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Read date of a recent outgoing message in a private chat\n    public final func getMessageReadDate(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<MessageReadDate, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageReadDate(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns read date of a recent outgoing message in a private chat. The method can be called if messageProperties.can_get_read_date == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Read date of a recent outgoing message in a private chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMessageReadDate(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> MessageReadDate {\n        let query = GetMessageReadDate(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns viewers of a recent outgoing message in a basic group or a supergroup chat. For video notes and voice notes only users, opened content of the message, are returned. The method can be called if messageProperties.can_get_viewers == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Viewers of a recent outgoing message in a basic group or a supergroup chat. For video notes and voice notes only users, opened content of the message, are returned\n    public final func getMessageViewers(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<MessageViewers, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageViewers(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns viewers of a recent outgoing message in a basic group or a supergroup chat. For video notes and voice notes only users, opened content of the message, are returned. The method can be called if messageProperties.can_get_viewers == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Viewers of a recent outgoing message in a basic group or a supergroup chat. For video notes and voice notes only users, opened content of the message, are returned\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMessageViewers(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> MessageViewers {\n        let query = GetMessageViewers(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about actual author of a message sent on behalf of a channel. The method can be called if messageProperties.can_get_author == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Information about actual author of a message sent on behalf of a channel\n    public final func getMessageAuthor(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<User, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageAuthor(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about actual author of a message sent on behalf of a channel. The method can be called if messageProperties.can_get_author == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Information about actual author of a message sent on behalf of a channel\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMessageAuthor(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> User {\n        let query = GetMessageAuthor(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a file. This is an offline method\n    /// - Parameter fileId: Identifier of the file to get\n    /// - Returns: Information about a file\n    public final func getFile(\n        fileId: Int?,\n        completion: @escaping (Result<File, Swift.Error>) -> Void\n    ) throws {\n        let query = GetFile(\n            fileId: fileId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a file. This is an offline method\n    /// - Parameter fileId: Identifier of the file to get\n    /// - Returns: Information about a file\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getFile(fileId: Int?) async throws -> File {\n        let query = GetFile(\n            fileId: fileId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a file by its remote identifier. This is an offline method. Can be used to register a URL as a file for further uploading, or sending as a message. Even the request succeeds, the file can be used only if it is still accessible to the user. For example, if the file is from a message, then the message must be not deleted and accessible to the user. If the file database is disabled, then the corresponding object with the file must be preloaded by the application\n    /// - Parameter fileType: File type; pass null if unknown\n    /// - Parameter remoteFileId: Remote identifier of the file to get\n    /// - Returns: Information about a file by its remote identifier\n    public final func getRemoteFile(\n        fileType: FileType?,\n        remoteFileId: String?,\n        completion: @escaping (Result<File, Swift.Error>) -> Void\n    ) throws {\n        let query = GetRemoteFile(\n            fileType: fileType,\n            remoteFileId: remoteFileId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a file by its remote identifier. This is an offline method. Can be used to register a URL as a file for further uploading, or sending as a message. Even the request succeeds, the file can be used only if it is still accessible to the user. For example, if the file is from a message, then the message must be not deleted and accessible to the user. If the file database is disabled, then the corresponding object with the file must be preloaded by the application\n    /// - Parameter fileType: File type; pass null if unknown\n    /// - Parameter remoteFileId: Remote identifier of the file to get\n    /// - Returns: Information about a file by its remote identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getRemoteFile(\n        fileType: FileType?,\n        remoteFileId: String?\n    ) async throws -> File {\n        let query = GetRemoteFile(\n            fileType: fileType,\n            remoteFileId: remoteFileId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Loads more chats from a chat list. The loaded chats and their positions in the chat list will be sent through updates. Chats are sorted by the pair (chat.position.order, chat.id) in descending order. Returns a 404 error if all chats have been loaded\n    /// - Parameter chatList: The chat list in which to load chats; pass null to load chats from the main chat list\n    /// - Parameter limit: The maximum number of chats to be loaded. For optimal performance, the number of loaded chats is chosen by TDLib and can be smaller than the specified limit, even if the end of the list is not reached\n    /// - Returns: A 404 error if all chats have been loaded\n    public final func loadChats(\n        chatList: ChatList?,\n        limit: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = LoadChats(\n            chatList: chatList,\n            limit: limit\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Loads more chats from a chat list. The loaded chats and their positions in the chat list will be sent through updates. Chats are sorted by the pair (chat.position.order, chat.id) in descending order. Returns a 404 error if all chats have been loaded\n    /// - Parameter chatList: The chat list in which to load chats; pass null to load chats from the main chat list\n    /// - Parameter limit: The maximum number of chats to be loaded. For optimal performance, the number of loaded chats is chosen by TDLib and can be smaller than the specified limit, even if the end of the list is not reached\n    /// - Returns: A 404 error if all chats have been loaded\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func loadChats(\n        chatList: ChatList?,\n        limit: Int?\n    ) async throws -> Ok {\n        let query = LoadChats(\n            chatList: chatList,\n            limit: limit\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an ordered list of chats from the beginning of a chat list. For informational purposes only. Use loadChats and updates processing instead to maintain chat lists in a consistent state\n    /// - Parameter chatList: The chat list in which to return chats; pass null to get chats from the main chat list\n    /// - Parameter limit: The maximum number of chats to be returned\n    /// - Returns: An ordered list of chats from the beginning of a chat list\n    public final func getChats(\n        chatList: ChatList?,\n        limit: Int?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChats(\n            chatList: chatList,\n            limit: limit\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an ordered list of chats from the beginning of a chat list. For informational purposes only. Use loadChats and updates processing instead to maintain chat lists in a consistent state\n    /// - Parameter chatList: The chat list in which to return chats; pass null to get chats from the main chat list\n    /// - Parameter limit: The maximum number of chats to be returned\n    /// - Returns: An ordered list of chats from the beginning of a chat list\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChats(\n        chatList: ChatList?,\n        limit: Int?\n    ) async throws -> Chats {\n        let query = GetChats(\n            chatList: chatList,\n            limit: limit\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches a public chat by its username. Currently, only private chats, supergroups and channels can be public. Returns the chat if found; otherwise, an error is returned\n    /// - Parameter username: Username to be resolved\n    /// - Returns: The chat if found. otherwise, an error is returned\n    public final func searchPublicChat(\n        username: String?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchPublicChat(\n            username: username\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches a public chat by its username. Currently, only private chats, supergroups and channels can be public. Returns the chat if found; otherwise, an error is returned\n    /// - Parameter username: Username to be resolved\n    /// - Returns: The chat if found. otherwise, an error is returned\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchPublicChat(username: String?) async throws -> Chat {\n        let query = SearchPublicChat(\n            username: username\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches public chats by looking for specified query in their username and title. Currently, only private chats, supergroups and channels can be public. Returns a meaningful number of results. Excludes private chats with contacts and chats from the chat list from the results\n    /// - Parameter query: Query to search for\n    /// - Returns: A meaningful number of results\n    public final func searchPublicChats(\n        query: String?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchPublicChats(\n            query: query\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches public chats by looking for specified query in their username and title. Currently, only private chats, supergroups and channels can be public. Returns a meaningful number of results. Excludes private chats with contacts and chats from the chat list from the results\n    /// - Parameter query: Query to search for\n    /// - Returns: A meaningful number of results\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchPublicChats(query: String?) async throws -> Chats {\n        let query = SearchPublicChats(\n            query: query\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for the specified query in the title and username of already known chats. This is an offline method. Returns chats in the order seen in the main chat list\n    /// - Parameter limit: The maximum number of chats to be returned\n    /// - Parameter query: Query to search for. If the query is empty, returns up to 50 recently found chats\n    /// - Returns: Chats in the order seen in the main chat list\n    public final func searchChats(\n        limit: Int?,\n        query: String?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchChats(\n            limit: limit,\n            query: query\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for the specified query in the title and username of already known chats. This is an offline method. Returns chats in the order seen in the main chat list\n    /// - Parameter limit: The maximum number of chats to be returned\n    /// - Parameter query: Query to search for. If the query is empty, returns up to 50 recently found chats\n    /// - Returns: Chats in the order seen in the main chat list\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchChats(\n        limit: Int?,\n        query: String?\n    ) async throws -> Chats {\n        let query = SearchChats(\n            limit: limit,\n            query: query\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for the specified query in the title and username of already known chats via request to the server. Returns chats in the order seen in the main chat list\n    /// - Parameter limit: The maximum number of chats to be returned\n    /// - Parameter query: Query to search for\n    /// - Returns: Chats in the order seen in the main chat list\n    public final func searchChatsOnServer(\n        limit: Int?,\n        query: String?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchChatsOnServer(\n            limit: limit,\n            query: query\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for the specified query in the title and username of already known chats via request to the server. Returns chats in the order seen in the main chat list\n    /// - Parameter limit: The maximum number of chats to be returned\n    /// - Parameter query: Query to search for\n    /// - Returns: Chats in the order seen in the main chat list\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchChatsOnServer(\n        limit: Int?,\n        query: String?\n    ) async throws -> Chats {\n        let query = SearchChatsOnServer(\n            limit: limit,\n            query: query\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a list of channel chats recommended to the current user\n    /// - Returns: A list of channel chats recommended to the current user\n    public final func getRecommendedChats(completion: @escaping (Result<Chats, Swift.Error>) -> Void) throws {\n        let query = GetRecommendedChats()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a list of channel chats recommended to the current user\n    /// - Returns: A list of channel chats recommended to the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getRecommendedChats() async throws -> Chats {\n        let query = GetRecommendedChats()\n        return try await self.run(query: query)\n    }\n\n    /// Returns a list of chats similar to the given chat\n    /// - Parameter chatId: Identifier of the target chat; must be an identifier of a channel chat\n    /// - Returns: A list of chats similar to the given chat\n    public final func getChatSimilarChats(\n        chatId: Int64?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatSimilarChats(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a list of chats similar to the given chat\n    /// - Parameter chatId: Identifier of the target chat; must be an identifier of a channel chat\n    /// - Returns: A list of chats similar to the given chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatSimilarChats(chatId: Int64?) async throws -> Chats {\n        let query = GetChatSimilarChats(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns approximate number of chats similar to the given chat\n    /// - Parameter chatId: Identifier of the target chat; must be an identifier of a channel chat\n    /// - Parameter returnLocal: Pass true to get the number of chats without sending network requests, or -1 if the number of chats is unknown locally\n    /// - Returns: Approximate number of chats similar to the given chat\n    public final func getChatSimilarChatCount(\n        chatId: Int64?,\n        returnLocal: Bool?,\n        completion: @escaping (Result<Count, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatSimilarChatCount(\n            chatId: chatId,\n            returnLocal: returnLocal\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns approximate number of chats similar to the given chat\n    /// - Parameter chatId: Identifier of the target chat; must be an identifier of a channel chat\n    /// - Parameter returnLocal: Pass true to get the number of chats without sending network requests, or -1 if the number of chats is unknown locally\n    /// - Returns: Approximate number of chats similar to the given chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatSimilarChatCount(\n        chatId: Int64?,\n        returnLocal: Bool?\n    ) async throws -> Count {\n        let query = GetChatSimilarChatCount(\n            chatId: chatId,\n            returnLocal: returnLocal\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that a chat was opened from the list of similar chats. The method is independent of openChat and closeChat methods\n    /// - Parameter chatId: Identifier of the original chat, which similar chats were requested\n    /// - Parameter openedChatId: Identifier of the opened chat\n    public final func openChatSimilarChat(\n        chatId: Int64?,\n        openedChatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = OpenChatSimilarChat(\n            chatId: chatId,\n            openedChatId: openedChatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that a chat was opened from the list of similar chats. The method is independent of openChat and closeChat methods\n    /// - Parameter chatId: Identifier of the original chat, which similar chats were requested\n    /// - Parameter openedChatId: Identifier of the opened chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func openChatSimilarChat(\n        chatId: Int64?,\n        openedChatId: Int64?\n    ) async throws -> Ok {\n        let query = OpenChatSimilarChat(\n            chatId: chatId,\n            openedChatId: openedChatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a list of bots similar to the given bot\n    /// - Parameter botUserId: User identifier of the target bot\n    /// - Returns: A list of bots similar to the given bot\n    public final func getBotSimilarBots(\n        botUserId: Int64?,\n        completion: @escaping (Result<Users, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBotSimilarBots(\n            botUserId: botUserId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a list of bots similar to the given bot\n    /// - Parameter botUserId: User identifier of the target bot\n    /// - Returns: A list of bots similar to the given bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getBotSimilarBots(botUserId: Int64?) async throws -> Users {\n        let query = GetBotSimilarBots(\n            botUserId: botUserId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns approximate number of bots similar to the given bot\n    /// - Parameter botUserId: User identifier of the target bot\n    /// - Parameter returnLocal: Pass true to get the number of bots without sending network requests, or -1 if the number of bots is unknown locally\n    /// - Returns: Approximate number of bots similar to the given bot\n    public final func getBotSimilarBotCount(\n        botUserId: Int64?,\n        returnLocal: Bool?,\n        completion: @escaping (Result<Count, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBotSimilarBotCount(\n            botUserId: botUserId,\n            returnLocal: returnLocal\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns approximate number of bots similar to the given bot\n    /// - Parameter botUserId: User identifier of the target bot\n    /// - Parameter returnLocal: Pass true to get the number of bots without sending network requests, or -1 if the number of bots is unknown locally\n    /// - Returns: Approximate number of bots similar to the given bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getBotSimilarBotCount(\n        botUserId: Int64?,\n        returnLocal: Bool?\n    ) async throws -> Count {\n        let query = GetBotSimilarBotCount(\n            botUserId: botUserId,\n            returnLocal: returnLocal\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that a bot was opened from the list of similar bots\n    /// - Parameter botUserId: Identifier of the original bot, which similar bots were requested\n    /// - Parameter openedBotUserId: Identifier of the opened bot\n    public final func openBotSimilarBot(\n        botUserId: Int64?,\n        openedBotUserId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = OpenBotSimilarBot(\n            botUserId: botUserId,\n            openedBotUserId: openedBotUserId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that a bot was opened from the list of similar bots\n    /// - Parameter botUserId: Identifier of the original bot, which similar bots were requested\n    /// - Parameter openedBotUserId: Identifier of the opened bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func openBotSimilarBot(\n        botUserId: Int64?,\n        openedBotUserId: Int64?\n    ) async throws -> Ok {\n        let query = OpenBotSimilarBot(\n            botUserId: botUserId,\n            openedBotUserId: openedBotUserId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a list of frequently used chats\n    /// - Parameter category: Category of chats to be returned\n    /// - Parameter limit: The maximum number of chats to be returned; up to 30\n    /// - Returns: A list of frequently used chats\n    public final func getTopChats(\n        category: TopChatCategory?,\n        limit: Int?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetTopChats(\n            category: category,\n            limit: limit\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a list of frequently used chats\n    /// - Parameter category: Category of chats to be returned\n    /// - Parameter limit: The maximum number of chats to be returned; up to 30\n    /// - Returns: A list of frequently used chats\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getTopChats(\n        category: TopChatCategory?,\n        limit: Int?\n    ) async throws -> Chats {\n        let query = GetTopChats(\n            category: category,\n            limit: limit\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes a chat from the list of frequently used chats. Supported only if the chat info database is enabled\n    /// - Parameter category: Category of frequently used chats\n    /// - Parameter chatId: Chat identifier\n    public final func removeTopChat(\n        category: TopChatCategory?,\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveTopChat(\n            category: category,\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes a chat from the list of frequently used chats. Supported only if the chat info database is enabled\n    /// - Parameter category: Category of frequently used chats\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeTopChat(\n        category: TopChatCategory?,\n        chatId: Int64?\n    ) async throws -> Ok {\n        let query = RemoveTopChat(\n            category: category,\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for the specified query in the title and username of up to 50 recently found chats. This is an offline method\n    /// - Parameter limit: The maximum number of chats to be returned\n    /// - Parameter query: Query to search for\n    public final func searchRecentlyFoundChats(\n        limit: Int?,\n        query: String?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchRecentlyFoundChats(\n            limit: limit,\n            query: query\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for the specified query in the title and username of up to 50 recently found chats. This is an offline method\n    /// - Parameter limit: The maximum number of chats to be returned\n    /// - Parameter query: Query to search for\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchRecentlyFoundChats(\n        limit: Int?,\n        query: String?\n    ) async throws -> Chats {\n        let query = SearchRecentlyFoundChats(\n            limit: limit,\n            query: query\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds a chat to the list of recently found chats. The chat is added to the beginning of the list. If the chat is already in the list, it will be removed from the list first\n    /// - Parameter chatId: Identifier of the chat to add\n    public final func addRecentlyFoundChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddRecentlyFoundChat(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds a chat to the list of recently found chats. The chat is added to the beginning of the list. If the chat is already in the list, it will be removed from the list first\n    /// - Parameter chatId: Identifier of the chat to add\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func addRecentlyFoundChat(chatId: Int64?) async throws -> Ok {\n        let query = AddRecentlyFoundChat(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes a chat from the list of recently found chats\n    /// - Parameter chatId: Identifier of the chat to be removed\n    public final func removeRecentlyFoundChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveRecentlyFoundChat(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes a chat from the list of recently found chats\n    /// - Parameter chatId: Identifier of the chat to be removed\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeRecentlyFoundChat(chatId: Int64?) async throws -> Ok {\n        let query = RemoveRecentlyFoundChat(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Clears the list of recently found chats\n    public final func clearRecentlyFoundChats(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ClearRecentlyFoundChats()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Clears the list of recently found chats\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func clearRecentlyFoundChats() async throws -> Ok {\n        let query = ClearRecentlyFoundChats()\n        return try await self.run(query: query)\n    }\n\n    /// Returns recently opened chats. This is an offline method. Returns chats in the order of last opening\n    /// - Parameter limit: The maximum number of chats to be returned\n    /// - Returns: Recently opened chats. Returns chats in the order of last opening\n    public final func getRecentlyOpenedChats(\n        limit: Int?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetRecentlyOpenedChats(\n            limit: limit\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns recently opened chats. This is an offline method. Returns chats in the order of last opening\n    /// - Parameter limit: The maximum number of chats to be returned\n    /// - Returns: Recently opened chats. Returns chats in the order of last opening\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getRecentlyOpenedChats(limit: Int?) async throws -> Chats {\n        let query = GetRecentlyOpenedChats(\n            limit: limit\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks whether a username can be set for a chat\n    /// - Parameter chatId: Chat identifier; must be identifier of a supergroup chat, or a channel chat, or a private chat with self, or 0 if the chat is being created\n    /// - Parameter username: Username to be checked\n    public final func checkChatUsername(\n        chatId: Int64?,\n        username: String?,\n        completion: @escaping (Result<CheckChatUsernameResult, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckChatUsername(\n            chatId: chatId,\n            username: username\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks whether a username can be set for a chat\n    /// - Parameter chatId: Chat identifier; must be identifier of a supergroup chat, or a channel chat, or a private chat with self, or 0 if the chat is being created\n    /// - Parameter username: Username to be checked\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func checkChatUsername(\n        chatId: Int64?,\n        username: String?\n    ) async throws -> CheckChatUsernameResult {\n        let query = CheckChatUsername(\n            chatId: chatId,\n            username: username\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a list of public chats of the specified type, owned by the user\n    /// - Parameter type: Type of the public chats to return\n    /// - Returns: A list of public chats of the specified type, owned by the user\n    public final func getCreatedPublicChats(\n        type: PublicChatType?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetCreatedPublicChats(\n            type: type\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a list of public chats of the specified type, owned by the user\n    /// - Parameter type: Type of the public chats to return\n    /// - Returns: A list of public chats of the specified type, owned by the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getCreatedPublicChats(type: PublicChatType?) async throws -> Chats {\n        let query = GetCreatedPublicChats(\n            type: type\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks whether the maximum number of owned public chats has been reached. Returns corresponding error if the limit was reached. The limit can be increased with Telegram Premium\n    /// - Parameter type: Type of the public chats, for which to check the limit\n    /// - Returns: Corresponding error if the limit was reached\n    public final func checkCreatedPublicChatsLimit(\n        type: PublicChatType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckCreatedPublicChatsLimit(\n            type: type\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks whether the maximum number of owned public chats has been reached. Returns corresponding error if the limit was reached. The limit can be increased with Telegram Premium\n    /// - Parameter type: Type of the public chats, for which to check the limit\n    /// - Returns: Corresponding error if the limit was reached\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func checkCreatedPublicChatsLimit(type: PublicChatType?) async throws -> Ok {\n        let query = CheckCreatedPublicChatsLimit(\n            type: type\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a list of basic group and supergroup chats, which can be used as a discussion group for a channel. Returned basic group chats must be first upgraded to supergroups before they can be set as a discussion group. To set a returned supergroup as a discussion group, access to its old messages must be enabled using toggleSupergroupIsAllHistoryAvailable first\n    /// - Returns: A list of basic group and supergroup chats, which can be used as a discussion group for a channel. Returned basic group chats must be first upgraded to supergroups before they can be set as a discussion group. To set a returned supergroup as a discussion group, access to its old messages must be enabled using toggleSupergroupIsAllHistoryAvailable first\n    public final func getSuitableDiscussionChats(completion: @escaping (Result<Chats, Swift.Error>) -> Void) throws {\n        let query = GetSuitableDiscussionChats()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a list of basic group and supergroup chats, which can be used as a discussion group for a channel. Returned basic group chats must be first upgraded to supergroups before they can be set as a discussion group. To set a returned supergroup as a discussion group, access to its old messages must be enabled using toggleSupergroupIsAllHistoryAvailable first\n    /// - Returns: A list of basic group and supergroup chats, which can be used as a discussion group for a channel. Returned basic group chats must be first upgraded to supergroups before they can be set as a discussion group. To set a returned supergroup as a discussion group, access to its old messages must be enabled using toggleSupergroupIsAllHistoryAvailable first\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getSuitableDiscussionChats() async throws -> Chats {\n        let query = GetSuitableDiscussionChats()\n        return try await self.run(query: query)\n    }\n\n    /// Returns a list of recently inactive supergroups and channels. Can be used when user reaches limit on the number of joined supergroups and channels and receives the error \"CHANNELS_TOO_MUCH\". Also, the limit can be increased with Telegram Premium\n    /// - Returns: A list of recently inactive supergroups and channels\n    public final func getInactiveSupergroupChats(completion: @escaping (Result<Chats, Swift.Error>) -> Void) throws {\n        let query = GetInactiveSupergroupChats()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a list of recently inactive supergroups and channels. Can be used when user reaches limit on the number of joined supergroups and channels and receives the error \"CHANNELS_TOO_MUCH\". Also, the limit can be increased with Telegram Premium\n    /// - Returns: A list of recently inactive supergroups and channels\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getInactiveSupergroupChats() async throws -> Chats {\n        let query = GetInactiveSupergroupChats()\n        return try await self.run(query: query)\n    }\n\n    /// Returns a list of channel chats, which can be used as a personal chat\n    /// - Returns: A list of channel chats, which can be used as a personal chat\n    public final func getSuitablePersonalChats(completion: @escaping (Result<Chats, Swift.Error>) -> Void) throws {\n        let query = GetSuitablePersonalChats()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a list of channel chats, which can be used as a personal chat\n    /// - Returns: A list of channel chats, which can be used as a personal chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getSuitablePersonalChats() async throws -> Chats {\n        let query = GetSuitablePersonalChats()\n        return try await self.run(query: query)\n    }\n\n    /// Loads more topics in a channel direct messages chat administered by the current user. The loaded topics will be sent through updateDirectMessagesChatTopic. Topics are sorted by their topic.order in descending order. Returns a 404 error if all topics have been loaded\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter limit: The maximum number of topics to be loaded. For optimal performance, the number of loaded topics is chosen by TDLib and can be smaller than the specified limit, even if the end of the list is not reached\n    /// - Returns: A 404 error if all topics have been loaded\n    public final func loadDirectMessagesChatTopics(\n        chatId: Int64?,\n        limit: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = LoadDirectMessagesChatTopics(\n            chatId: chatId,\n            limit: limit\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Loads more topics in a channel direct messages chat administered by the current user. The loaded topics will be sent through updateDirectMessagesChatTopic. Topics are sorted by their topic.order in descending order. Returns a 404 error if all topics have been loaded\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter limit: The maximum number of topics to be loaded. For optimal performance, the number of loaded topics is chosen by TDLib and can be smaller than the specified limit, even if the end of the list is not reached\n    /// - Returns: A 404 error if all topics have been loaded\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func loadDirectMessagesChatTopics(\n        chatId: Int64?,\n        limit: Int?\n    ) async throws -> Ok {\n        let query = LoadDirectMessagesChatTopics(\n            chatId: chatId,\n            limit: limit\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about the topic in a channel direct messages chat administered by the current user\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter topicId: Identifier of the topic to get\n    /// - Returns: Information about the topic in a channel direct messages chat administered by the current user\n    public final func getDirectMessagesChatTopic(\n        chatId: Int64?,\n        topicId: Int64?,\n        completion: @escaping (Result<DirectMessagesChatTopic, Swift.Error>) -> Void\n    ) throws {\n        let query = GetDirectMessagesChatTopic(\n            chatId: chatId,\n            topicId: topicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about the topic in a channel direct messages chat administered by the current user\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter topicId: Identifier of the topic to get\n    /// - Returns: Information about the topic in a channel direct messages chat administered by the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getDirectMessagesChatTopic(\n        chatId: Int64?,\n        topicId: Int64?\n    ) async throws -> DirectMessagesChatTopic {\n        let query = GetDirectMessagesChatTopic(\n            chatId: chatId,\n            topicId: topicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns messages in the topic in a channel direct messages chat administered by the current user. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter fromMessageId: Identifier of the message starting from which messages must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    /// - Parameter topicId: Identifier of the topic which messages will be fetched\n    /// - Returns: Messages in the topic in a channel direct messages chat administered by the current user. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    public final func getDirectMessagesChatTopicHistory(\n        chatId: Int64?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        topicId: Int64?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = GetDirectMessagesChatTopicHistory(\n            chatId: chatId,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset,\n            topicId: topicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns messages in the topic in a channel direct messages chat administered by the current user. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter fromMessageId: Identifier of the message starting from which messages must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    /// - Parameter topicId: Identifier of the topic which messages will be fetched\n    /// - Returns: Messages in the topic in a channel direct messages chat administered by the current user. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getDirectMessagesChatTopicHistory(\n        chatId: Int64?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        topicId: Int64?\n    ) async throws -> Messages {\n        let query = GetDirectMessagesChatTopicHistory(\n            chatId: chatId,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset,\n            topicId: topicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the last message sent in the topic in a channel direct messages chat administered by the current user no later than the specified date\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter date: Point in time (Unix timestamp) relative to which to search for messages\n    /// - Parameter topicId: Identifier of the topic which messages will be fetched\n    /// - Returns: The last message sent in the topic in a channel direct messages chat administered by the current user no later than the specified date\n    public final func getDirectMessagesChatTopicMessageByDate(\n        chatId: Int64?,\n        date: Int?,\n        topicId: Int64?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = GetDirectMessagesChatTopicMessageByDate(\n            chatId: chatId,\n            date: date,\n            topicId: topicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the last message sent in the topic in a channel direct messages chat administered by the current user no later than the specified date\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter date: Point in time (Unix timestamp) relative to which to search for messages\n    /// - Parameter topicId: Identifier of the topic which messages will be fetched\n    /// - Returns: The last message sent in the topic in a channel direct messages chat administered by the current user no later than the specified date\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getDirectMessagesChatTopicMessageByDate(\n        chatId: Int64?,\n        date: Int?,\n        topicId: Int64?\n    ) async throws -> Message {\n        let query = GetDirectMessagesChatTopicMessageByDate(\n            chatId: chatId,\n            date: date,\n            topicId: topicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes all messages in the topic in a channel direct messages chat administered by the current user\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter topicId: Identifier of the topic which messages will be deleted\n    public final func deleteDirectMessagesChatTopicHistory(\n        chatId: Int64?,\n        topicId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteDirectMessagesChatTopicHistory(\n            chatId: chatId,\n            topicId: topicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes all messages in the topic in a channel direct messages chat administered by the current user\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter topicId: Identifier of the topic which messages will be deleted\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteDirectMessagesChatTopicHistory(\n        chatId: Int64?,\n        topicId: Int64?\n    ) async throws -> Ok {\n        let query = DeleteDirectMessagesChatTopicHistory(\n            chatId: chatId,\n            topicId: topicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes all messages between the specified dates in the topic in a channel direct messages chat administered by the current user. Messages sent in the last 30 seconds will not be deleted\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter maxDate: The maximum date of the messages to delete\n    /// - Parameter minDate: The minimum date of the messages to delete\n    /// - Parameter topicId: Identifier of the topic which messages will be deleted\n    public final func deleteDirectMessagesChatTopicMessagesByDate(\n        chatId: Int64?,\n        maxDate: Int?,\n        minDate: Int?,\n        topicId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteDirectMessagesChatTopicMessagesByDate(\n            chatId: chatId,\n            maxDate: maxDate,\n            minDate: minDate,\n            topicId: topicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes all messages between the specified dates in the topic in a channel direct messages chat administered by the current user. Messages sent in the last 30 seconds will not be deleted\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter maxDate: The maximum date of the messages to delete\n    /// - Parameter minDate: The minimum date of the messages to delete\n    /// - Parameter topicId: Identifier of the topic which messages will be deleted\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteDirectMessagesChatTopicMessagesByDate(\n        chatId: Int64?,\n        maxDate: Int?,\n        minDate: Int?,\n        topicId: Int64?\n    ) async throws -> Ok {\n        let query = DeleteDirectMessagesChatTopicMessagesByDate(\n            chatId: chatId,\n            maxDate: maxDate,\n            minDate: minDate,\n            topicId: topicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the marked as unread state of the topic in a channel direct messages chat administered by the current user\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter isMarkedAsUnread: New value of is_marked_as_unread\n    /// - Parameter topicId: Topic identifier\n    public final func setDirectMessagesChatTopicIsMarkedAsUnread(\n        chatId: Int64?,\n        isMarkedAsUnread: Bool?,\n        topicId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetDirectMessagesChatTopicIsMarkedAsUnread(\n            chatId: chatId,\n            isMarkedAsUnread: isMarkedAsUnread,\n            topicId: topicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the marked as unread state of the topic in a channel direct messages chat administered by the current user\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter isMarkedAsUnread: New value of is_marked_as_unread\n    /// - Parameter topicId: Topic identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setDirectMessagesChatTopicIsMarkedAsUnread(\n        chatId: Int64?,\n        isMarkedAsUnread: Bool?,\n        topicId: Int64?\n    ) async throws -> Ok {\n        let query = SetDirectMessagesChatTopicIsMarkedAsUnread(\n            chatId: chatId,\n            isMarkedAsUnread: isMarkedAsUnread,\n            topicId: topicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes all pinned messages from the topic in a channel direct messages chat administered by the current user\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter topicId: Topic identifier\n    public final func unpinAllDirectMessagesChatTopicMessages(\n        chatId: Int64?,\n        topicId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = UnpinAllDirectMessagesChatTopicMessages(\n            chatId: chatId,\n            topicId: topicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes all pinned messages from the topic in a channel direct messages chat administered by the current user\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter topicId: Topic identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func unpinAllDirectMessagesChatTopicMessages(\n        chatId: Int64?,\n        topicId: Int64?\n    ) async throws -> Ok {\n        let query = UnpinAllDirectMessagesChatTopicMessages(\n            chatId: chatId,\n            topicId: topicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes all unread reactions in the topic in a channel direct messages chat administered by the current user\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter topicId: Topic identifier\n    public final func readAllDirectMessagesChatTopicReactions(\n        chatId: Int64?,\n        topicId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReadAllDirectMessagesChatTopicReactions(\n            chatId: chatId,\n            topicId: topicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes all unread reactions in the topic in a channel direct messages chat administered by the current user\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter topicId: Topic identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func readAllDirectMessagesChatTopicReactions(\n        chatId: Int64?,\n        topicId: Int64?\n    ) async throws -> Ok {\n        let query = ReadAllDirectMessagesChatTopicReactions(\n            chatId: chatId,\n            topicId: topicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the total number of Telegram Stars received by the channel chat for direct messages from the given topic\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat administered by the current user\n    /// - Parameter topicId: Identifier of the topic\n    /// - Returns: The total number of Telegram Stars received by the channel chat for direct messages from the given topic\n    public final func getDirectMessagesChatTopicRevenue(\n        chatId: Int64?,\n        topicId: Int64?,\n        completion: @escaping (Result<StarCount, Swift.Error>) -> Void\n    ) throws {\n        let query = GetDirectMessagesChatTopicRevenue(\n            chatId: chatId,\n            topicId: topicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the total number of Telegram Stars received by the channel chat for direct messages from the given topic\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat administered by the current user\n    /// - Parameter topicId: Identifier of the topic\n    /// - Returns: The total number of Telegram Stars received by the channel chat for direct messages from the given topic\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getDirectMessagesChatTopicRevenue(\n        chatId: Int64?,\n        topicId: Int64?\n    ) async throws -> StarCount {\n        let query = GetDirectMessagesChatTopicRevenue(\n            chatId: chatId,\n            topicId: topicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Allows to send unpaid messages to the given topic of the channel direct messages chat administered by the current user\n    /// - Parameter canSendUnpaidMessages: Pass true to allow unpaid messages; pass false to disallow unpaid messages\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter refundPayments: Pass true to refund the user previously paid messages\n    /// - Parameter topicId: Identifier of the topic\n    public final func toggleDirectMessagesChatTopicCanSendUnpaidMessages(\n        canSendUnpaidMessages: Bool?,\n        chatId: Int64?,\n        refundPayments: Bool?,\n        topicId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleDirectMessagesChatTopicCanSendUnpaidMessages(\n            canSendUnpaidMessages: canSendUnpaidMessages,\n            chatId: chatId,\n            refundPayments: refundPayments,\n            topicId: topicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Allows to send unpaid messages to the given topic of the channel direct messages chat administered by the current user\n    /// - Parameter canSendUnpaidMessages: Pass true to allow unpaid messages; pass false to disallow unpaid messages\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter refundPayments: Pass true to refund the user previously paid messages\n    /// - Parameter topicId: Identifier of the topic\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleDirectMessagesChatTopicCanSendUnpaidMessages(\n        canSendUnpaidMessages: Bool?,\n        chatId: Int64?,\n        refundPayments: Bool?,\n        topicId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleDirectMessagesChatTopicCanSendUnpaidMessages(\n            canSendUnpaidMessages: canSendUnpaidMessages,\n            chatId: chatId,\n            refundPayments: refundPayments,\n            topicId: topicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Loads more Saved Messages topics. The loaded topics will be sent through updateSavedMessagesTopic. Topics are sorted by their topic.order in descending order. Returns a 404 error if all topics have been loaded\n    /// - Parameter limit: The maximum number of topics to be loaded. For optimal performance, the number of loaded topics is chosen by TDLib and can be smaller than the specified limit, even if the end of the list is not reached\n    /// - Returns: A 404 error if all topics have been loaded\n    public final func loadSavedMessagesTopics(\n        limit: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = LoadSavedMessagesTopics(\n            limit: limit\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Loads more Saved Messages topics. The loaded topics will be sent through updateSavedMessagesTopic. Topics are sorted by their topic.order in descending order. Returns a 404 error if all topics have been loaded\n    /// - Parameter limit: The maximum number of topics to be loaded. For optimal performance, the number of loaded topics is chosen by TDLib and can be smaller than the specified limit, even if the end of the list is not reached\n    /// - Returns: A 404 error if all topics have been loaded\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func loadSavedMessagesTopics(limit: Int?) async throws -> Ok {\n        let query = LoadSavedMessagesTopics(\n            limit: limit\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns messages in a Saved Messages topic. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    /// - Parameter fromMessageId: Identifier of the message starting from which messages must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic which messages will be fetched\n    /// - Returns: Messages in a Saved Messages topic. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    public final func getSavedMessagesTopicHistory(\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        savedMessagesTopicId: Int64?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSavedMessagesTopicHistory(\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset,\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns messages in a Saved Messages topic. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    /// - Parameter fromMessageId: Identifier of the message starting from which messages must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic which messages will be fetched\n    /// - Returns: Messages in a Saved Messages topic. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getSavedMessagesTopicHistory(\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        savedMessagesTopicId: Int64?\n    ) async throws -> Messages {\n        let query = GetSavedMessagesTopicHistory(\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset,\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the last message sent in a Saved Messages topic no later than the specified date\n    /// - Parameter date: Point in time (Unix timestamp) relative to which to search for messages\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic which message will be returned\n    /// - Returns: The last message sent in a Saved Messages topic no later than the specified date\n    public final func getSavedMessagesTopicMessageByDate(\n        date: Int?,\n        savedMessagesTopicId: Int64?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSavedMessagesTopicMessageByDate(\n            date: date,\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the last message sent in a Saved Messages topic no later than the specified date\n    /// - Parameter date: Point in time (Unix timestamp) relative to which to search for messages\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic which message will be returned\n    /// - Returns: The last message sent in a Saved Messages topic no later than the specified date\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getSavedMessagesTopicMessageByDate(\n        date: Int?,\n        savedMessagesTopicId: Int64?\n    ) async throws -> Message {\n        let query = GetSavedMessagesTopicMessageByDate(\n            date: date,\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes all messages in a Saved Messages topic\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic which messages will be deleted\n    public final func deleteSavedMessagesTopicHistory(\n        savedMessagesTopicId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteSavedMessagesTopicHistory(\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes all messages in a Saved Messages topic\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic which messages will be deleted\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteSavedMessagesTopicHistory(savedMessagesTopicId: Int64?) async throws -> Ok {\n        let query = DeleteSavedMessagesTopicHistory(\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes all messages between the specified dates in a Saved Messages topic. Messages sent in the last 30 seconds will not be deleted\n    /// - Parameter maxDate: The maximum date of the messages to delete\n    /// - Parameter minDate: The minimum date of the messages to delete\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic which messages will be deleted\n    public final func deleteSavedMessagesTopicMessagesByDate(\n        maxDate: Int?,\n        minDate: Int?,\n        savedMessagesTopicId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteSavedMessagesTopicMessagesByDate(\n            maxDate: maxDate,\n            minDate: minDate,\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes all messages between the specified dates in a Saved Messages topic. Messages sent in the last 30 seconds will not be deleted\n    /// - Parameter maxDate: The maximum date of the messages to delete\n    /// - Parameter minDate: The minimum date of the messages to delete\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic which messages will be deleted\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteSavedMessagesTopicMessagesByDate(\n        maxDate: Int?,\n        minDate: Int?,\n        savedMessagesTopicId: Int64?\n    ) async throws -> Ok {\n        let query = DeleteSavedMessagesTopicMessagesByDate(\n            maxDate: maxDate,\n            minDate: minDate,\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the pinned state of a Saved Messages topic. There can be up to getOption(\"pinned_saved_messages_topic_count_max\") pinned topics. The limit can be increased with Telegram Premium\n    /// - Parameter isPinned: Pass true to pin the topic; pass false to unpin it\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic to pin or unpin\n    public final func toggleSavedMessagesTopicIsPinned(\n        isPinned: Bool?,\n        savedMessagesTopicId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSavedMessagesTopicIsPinned(\n            isPinned: isPinned,\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the pinned state of a Saved Messages topic. There can be up to getOption(\"pinned_saved_messages_topic_count_max\") pinned topics. The limit can be increased with Telegram Premium\n    /// - Parameter isPinned: Pass true to pin the topic; pass false to unpin it\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic to pin or unpin\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleSavedMessagesTopicIsPinned(\n        isPinned: Bool?,\n        savedMessagesTopicId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleSavedMessagesTopicIsPinned(\n            isPinned: isPinned,\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the order of pinned Saved Messages topics\n    /// - Parameter savedMessagesTopicIds: Identifiers of the new pinned Saved Messages topics\n    public final func setPinnedSavedMessagesTopics(\n        savedMessagesTopicIds: [Int64]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetPinnedSavedMessagesTopics(\n            savedMessagesTopicIds: savedMessagesTopicIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the order of pinned Saved Messages topics\n    /// - Parameter savedMessagesTopicIds: Identifiers of the new pinned Saved Messages topics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setPinnedSavedMessagesTopics(savedMessagesTopicIds: [Int64]?) async throws -> Ok {\n        let query = SetPinnedSavedMessagesTopics(\n            savedMessagesTopicIds: savedMessagesTopicIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a list of common group chats with a given user. Chats are sorted by their type and creation date\n    /// - Parameter limit: The maximum number of chats to be returned; up to 100\n    /// - Parameter offsetChatId: Chat identifier starting from which to return chats; use 0 for the first request\n    /// - Parameter userId: User identifier\n    /// - Returns: A list of common group chats with a given user\n    public final func getGroupsInCommon(\n        limit: Int?,\n        offsetChatId: Int64?,\n        userId: Int64?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGroupsInCommon(\n            limit: limit,\n            offsetChatId: offsetChatId,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a list of common group chats with a given user. Chats are sorted by their type and creation date\n    /// - Parameter limit: The maximum number of chats to be returned; up to 100\n    /// - Parameter offsetChatId: Chat identifier starting from which to return chats; use 0 for the first request\n    /// - Parameter userId: User identifier\n    /// - Returns: A list of common group chats with a given user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getGroupsInCommon(\n        limit: Int?,\n        offsetChatId: Int64?,\n        userId: Int64?\n    ) async throws -> Chats {\n        let query = GetGroupsInCommon(\n            limit: limit,\n            offsetChatId: offsetChatId,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns messages in a chat. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib. This is an offline method if only_local is true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter fromMessageId: Identifier of the message starting from which history must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    /// - Parameter onlyLocal: Pass true to get only messages that are available without sending network requests\n    /// - Returns: Messages in a chat. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    public final func getChatHistory(\n        chatId: Int64?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        onlyLocal: Bool?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatHistory(\n            chatId: chatId,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset,\n            onlyLocal: onlyLocal\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns messages in a chat. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib. This is an offline method if only_local is true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter fromMessageId: Identifier of the message starting from which history must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    /// - Parameter onlyLocal: Pass true to get only messages that are available without sending network requests\n    /// - Returns: Messages in a chat. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatHistory(\n        chatId: Int64?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        onlyLocal: Bool?\n    ) async throws -> Messages {\n        let query = GetChatHistory(\n            chatId: chatId,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset,\n            onlyLocal: onlyLocal\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns messages in a message thread of a message. Can be used only if messageProperties.can_get_message_thread == true. Message thread of a channel message is in the channel's linked supergroup. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter fromMessageId: Identifier of the message starting from which history must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter messageId: Message identifier, which thread history needs to be returned\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    /// - Returns: Messages in a message thread of a message. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    public final func getMessageThreadHistory(\n        chatId: Int64?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        messageId: Int64?,\n        offset: Int?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageThreadHistory(\n            chatId: chatId,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            messageId: messageId,\n            offset: offset\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns messages in a message thread of a message. Can be used only if messageProperties.can_get_message_thread == true. Message thread of a channel message is in the channel's linked supergroup. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter fromMessageId: Identifier of the message starting from which history must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter messageId: Message identifier, which thread history needs to be returned\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    /// - Returns: Messages in a message thread of a message. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMessageThreadHistory(\n        chatId: Int64?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        messageId: Int64?,\n        offset: Int?\n    ) async throws -> Messages {\n        let query = GetMessageThreadHistory(\n            chatId: chatId,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            messageId: messageId,\n            offset: offset\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes all messages in the chat. Use chat.can_be_deleted_only_for_self and chat.can_be_deleted_for_all_users fields to find whether and how the method can be applied to the chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter removeFromChatList: Pass true to remove the chat from all chat lists\n    /// - Parameter revoke: Pass true to delete chat history for all users\n    public final func deleteChatHistory(\n        chatId: Int64?,\n        removeFromChatList: Bool?,\n        revoke: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteChatHistory(\n            chatId: chatId,\n            removeFromChatList: removeFromChatList,\n            revoke: revoke\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes all messages in the chat. Use chat.can_be_deleted_only_for_self and chat.can_be_deleted_for_all_users fields to find whether and how the method can be applied to the chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter removeFromChatList: Pass true to remove the chat from all chat lists\n    /// - Parameter revoke: Pass true to delete chat history for all users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteChatHistory(\n        chatId: Int64?,\n        removeFromChatList: Bool?,\n        revoke: Bool?\n    ) async throws -> Ok {\n        let query = DeleteChatHistory(\n            chatId: chatId,\n            removeFromChatList: removeFromChatList,\n            revoke: revoke\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes a chat along with all messages in the corresponding chat for all chat members. For group chats this will release the usernames and remove all members. Use the field chat.can_be_deleted_for_all_users to find whether the method can be applied to the chat\n    /// - Parameter chatId: Chat identifier\n    public final func deleteChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteChat(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes a chat along with all messages in the corresponding chat for all chat members. For group chats this will release the usernames and remove all members. Use the field chat.can_be_deleted_for_all_users to find whether the method can be applied to the chat\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteChat(chatId: Int64?) async throws -> Ok {\n        let query = DeleteChat(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for messages with given words in the chat. Returns the results in reverse chronological order, i.e. in order of decreasing message_id. Cannot be used in secret chats with a non-empty query (searchSecretMessages must be used instead), or without an enabled message database. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit. A combination of query, sender_id, filter and topic_id search criteria is expected to be supported, only if it is required for Telegram official application implementation\n    /// - Parameter chatId: Identifier of the chat in which to search messages\n    /// - Parameter filter: Additional filter for messages to search; pass null to search for all messages\n    /// - Parameter fromMessageId: Identifier of the message starting from which history must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number to get the specified message and some newer messages\n    /// - Parameter query: Query to search for\n    /// - Parameter senderId: Identifier of the sender of messages to search for; pass null to search for messages from any sender. Not supported in secret chats\n    /// - Parameter topicId: Pass topic identifier to search messages only in specific topic; pass null to search for messages in all topics\n    /// - Returns: The results in reverse chronological order, i.e. in order of decreasing message_id. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public final func searchChatMessages(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        query: String?,\n        senderId: MessageSender?,\n        topicId: MessageTopic?,\n        completion: @escaping (Result<FoundChatMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchChatMessages(\n            chatId: chatId,\n            filter: filter,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset,\n            query: query,\n            senderId: senderId,\n            topicId: topicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for messages with given words in the chat. Returns the results in reverse chronological order, i.e. in order of decreasing message_id. Cannot be used in secret chats with a non-empty query (searchSecretMessages must be used instead), or without an enabled message database. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit. A combination of query, sender_id, filter and topic_id search criteria is expected to be supported, only if it is required for Telegram official application implementation\n    /// - Parameter chatId: Identifier of the chat in which to search messages\n    /// - Parameter filter: Additional filter for messages to search; pass null to search for all messages\n    /// - Parameter fromMessageId: Identifier of the message starting from which history must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number to get the specified message and some newer messages\n    /// - Parameter query: Query to search for\n    /// - Parameter senderId: Identifier of the sender of messages to search for; pass null to search for messages from any sender. Not supported in secret chats\n    /// - Parameter topicId: Pass topic identifier to search messages only in specific topic; pass null to search for messages in all topics\n    /// - Returns: The results in reverse chronological order, i.e. in order of decreasing message_id. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchChatMessages(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        query: String?,\n        senderId: MessageSender?,\n        topicId: MessageTopic?\n    ) async throws -> FoundChatMessages {\n        let query = SearchChatMessages(\n            chatId: chatId,\n            filter: filter,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset,\n            query: query,\n            senderId: senderId,\n            topicId: topicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for messages in all chats except secret chats. Returns the results in reverse chronological order (i.e., in order of decreasing (date, chat_id, message_id)). For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter chatList: Chat list in which to search messages; pass null to search in all chats regardless of their chat list. Only Main and Archive chat lists are supported\n    /// - Parameter chatTypeFilter: Additional filter for type of the chat of the searched messages; pass null to search for messages in all chats\n    /// - Parameter filter: Additional filter for messages to search; pass null to search for all messages. Filters searchMessagesFilterMention, searchMessagesFilterUnreadMention, searchMessagesFilterUnreadReaction, searchMessagesFilterUnreadPollVote, searchMessagesFilterFailedToSend, and searchMessagesFilterPinned are unsupported in this function\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter maxDate: If not 0, the maximum date of the messages to return\n    /// - Parameter minDate: If not 0, the minimum date of the messages to return\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter query: Query to search for\n    /// - Returns: The results in reverse chronological order (i.e., in order of decreasing (date, chat_id, message_id)). For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public final func searchMessages(\n        chatList: ChatList?,\n        chatTypeFilter: SearchMessagesChatTypeFilter?,\n        filter: SearchMessagesFilter?,\n        limit: Int?,\n        maxDate: Int?,\n        minDate: Int?,\n        offset: String?,\n        query: String?,\n        completion: @escaping (Result<FoundMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchMessages(\n            chatList: chatList,\n            chatTypeFilter: chatTypeFilter,\n            filter: filter,\n            limit: limit,\n            maxDate: maxDate,\n            minDate: minDate,\n            offset: offset,\n            query: query\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for messages in all chats except secret chats. Returns the results in reverse chronological order (i.e., in order of decreasing (date, chat_id, message_id)). For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter chatList: Chat list in which to search messages; pass null to search in all chats regardless of their chat list. Only Main and Archive chat lists are supported\n    /// - Parameter chatTypeFilter: Additional filter for type of the chat of the searched messages; pass null to search for messages in all chats\n    /// - Parameter filter: Additional filter for messages to search; pass null to search for all messages. Filters searchMessagesFilterMention, searchMessagesFilterUnreadMention, searchMessagesFilterUnreadReaction, searchMessagesFilterUnreadPollVote, searchMessagesFilterFailedToSend, and searchMessagesFilterPinned are unsupported in this function\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter maxDate: If not 0, the maximum date of the messages to return\n    /// - Parameter minDate: If not 0, the minimum date of the messages to return\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter query: Query to search for\n    /// - Returns: The results in reverse chronological order (i.e., in order of decreasing (date, chat_id, message_id)). For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchMessages(\n        chatList: ChatList?,\n        chatTypeFilter: SearchMessagesChatTypeFilter?,\n        filter: SearchMessagesFilter?,\n        limit: Int?,\n        maxDate: Int?,\n        minDate: Int?,\n        offset: String?,\n        query: String?\n    ) async throws -> FoundMessages {\n        let query = SearchMessages(\n            chatList: chatList,\n            chatTypeFilter: chatTypeFilter,\n            filter: filter,\n            limit: limit,\n            maxDate: maxDate,\n            minDate: minDate,\n            offset: offset,\n            query: query\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for messages in secret chats. Returns the results in reverse chronological order. For optimal performance, the number of returned messages is chosen by TDLib\n    /// - Parameter chatId: Identifier of the chat in which to search. Specify 0 to search in all secret chats\n    /// - Parameter filter: Additional filter for messages to search; pass null to search for all messages\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter query: Query to search for. If empty, searchChatMessages must be used instead\n    /// - Returns: The results in reverse chronological order. For optimal performance, the number of returned messages is chosen by TDLib\n    public final func searchSecretMessages(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        limit: Int?,\n        offset: String?,\n        query: String?,\n        completion: @escaping (Result<FoundMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchSecretMessages(\n            chatId: chatId,\n            filter: filter,\n            limit: limit,\n            offset: offset,\n            query: query\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for messages in secret chats. Returns the results in reverse chronological order. For optimal performance, the number of returned messages is chosen by TDLib\n    /// - Parameter chatId: Identifier of the chat in which to search. Specify 0 to search in all secret chats\n    /// - Parameter filter: Additional filter for messages to search; pass null to search for all messages\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter query: Query to search for. If empty, searchChatMessages must be used instead\n    /// - Returns: The results in reverse chronological order. For optimal performance, the number of returned messages is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchSecretMessages(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        limit: Int?,\n        offset: String?,\n        query: String?\n    ) async throws -> FoundMessages {\n        let query = SearchSecretMessages(\n            chatId: chatId,\n            filter: filter,\n            limit: limit,\n            offset: offset,\n            query: query\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for messages tagged by the given reaction and with the given words in the Saved Messages chat; for Telegram Premium users only. Returns the results in reverse chronological order, i.e. in order of decreasing message_id. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter fromMessageId: Identifier of the message starting from which messages must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number to get the specified message and some newer messages\n    /// - Parameter query: Query to search for\n    /// - Parameter savedMessagesTopicId: If not 0, only messages in the specified Saved Messages topic will be considered; pass 0 to consider all messages\n    /// - Parameter tag: Tag to search for; pass null to return all suitable messages\n    /// - Returns: The results in reverse chronological order, i.e. in order of decreasing message_id. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public final func searchSavedMessages(\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        query: String?,\n        savedMessagesTopicId: Int64?,\n        tag: ReactionType?,\n        completion: @escaping (Result<FoundChatMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchSavedMessages(\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset,\n            query: query,\n            savedMessagesTopicId: savedMessagesTopicId,\n            tag: tag\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for messages tagged by the given reaction and with the given words in the Saved Messages chat; for Telegram Premium users only. Returns the results in reverse chronological order, i.e. in order of decreasing message_id. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter fromMessageId: Identifier of the message starting from which messages must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number to get the specified message and some newer messages\n    /// - Parameter query: Query to search for\n    /// - Parameter savedMessagesTopicId: If not 0, only messages in the specified Saved Messages topic will be considered; pass 0 to consider all messages\n    /// - Parameter tag: Tag to search for; pass null to return all suitable messages\n    /// - Returns: The results in reverse chronological order, i.e. in order of decreasing message_id. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchSavedMessages(\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        query: String?,\n        savedMessagesTopicId: Int64?,\n        tag: ReactionType?\n    ) async throws -> FoundChatMessages {\n        let query = SearchSavedMessages(\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset,\n            query: query,\n            savedMessagesTopicId: savedMessagesTopicId,\n            tag: tag\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for call and group call messages. Returns the results in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter onlyMissed: Pass true to search only for messages with missed/declined calls\n    /// - Returns: The results in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    public final func searchCallMessages(\n        limit: Int?,\n        offset: String?,\n        onlyMissed: Bool?,\n        completion: @escaping (Result<FoundMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchCallMessages(\n            limit: limit,\n            offset: offset,\n            onlyMissed: onlyMissed\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for call and group call messages. Returns the results in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter onlyMissed: Pass true to search only for messages with missed/declined calls\n    /// - Returns: The results in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchCallMessages(\n        limit: Int?,\n        offset: String?,\n        onlyMissed: Bool?\n    ) async throws -> FoundMessages {\n        let query = SearchCallMessages(\n            limit: limit,\n            offset: offset,\n            onlyMissed: onlyMissed\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for outgoing messages with content of the type messageDocument in all chats except secret chats. Returns the results in reverse chronological order\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100\n    /// - Parameter query: Query to search for in document file name and message caption\n    /// - Returns: The results in reverse chronological order\n    public final func searchOutgoingDocumentMessages(\n        limit: Int?,\n        query: String?,\n        completion: @escaping (Result<FoundMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchOutgoingDocumentMessages(\n            limit: limit,\n            query: query\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for outgoing messages with content of the type messageDocument in all chats except secret chats. Returns the results in reverse chronological order\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100\n    /// - Parameter query: Query to search for in document file name and message caption\n    /// - Returns: The results in reverse chronological order\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchOutgoingDocumentMessages(\n        limit: Int?,\n        query: String?\n    ) async throws -> FoundMessages {\n        let query = SearchOutgoingDocumentMessages(\n            limit: limit,\n            query: query\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks public post search limits without actually performing the search\n    /// - Parameter query: Query that will be searched for\n    public final func getPublicPostSearchLimits(\n        query: String?,\n        completion: @escaping (Result<PublicPostSearchLimits, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPublicPostSearchLimits(\n            query: query\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks public post search limits without actually performing the search\n    /// - Parameter query: Query that will be searched for\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPublicPostSearchLimits(query: String?) async throws -> PublicPostSearchLimits {\n        let query = GetPublicPostSearchLimits(\n            query: query\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for public channel posts using the given query. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter query: Query to search for\n    /// - Parameter starCount: The Telegram Star amount the user agreed to pay for the search; pass 0 for free searches\n    /// - Returns: For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public final func searchPublicPosts(\n        limit: Int?,\n        offset: String?,\n        query: String?,\n        starCount: Int64?,\n        completion: @escaping (Result<FoundPublicPosts, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchPublicPosts(\n            limit: limit,\n            offset: offset,\n            query: query,\n            starCount: starCount\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for public channel posts using the given query. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter query: Query to search for\n    /// - Parameter starCount: The Telegram Star amount the user agreed to pay for the search; pass 0 for free searches\n    /// - Returns: For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchPublicPosts(\n        limit: Int?,\n        offset: String?,\n        query: String?,\n        starCount: Int64?\n    ) async throws -> FoundPublicPosts {\n        let query = SearchPublicPosts(\n            limit: limit,\n            offset: offset,\n            query: query,\n            starCount: starCount\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for public channel posts containing the given hashtag or cashtag. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter tag: Hashtag or cashtag to search for\n    /// - Returns: For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public final func searchPublicMessagesByTag(\n        limit: Int?,\n        offset: String?,\n        tag: String?,\n        completion: @escaping (Result<FoundMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchPublicMessagesByTag(\n            limit: limit,\n            offset: offset,\n            tag: tag\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for public channel posts containing the given hashtag or cashtag. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter tag: Hashtag or cashtag to search for\n    /// - Returns: For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchPublicMessagesByTag(\n        limit: Int?,\n        offset: String?,\n        tag: String?\n    ) async throws -> FoundMessages {\n        let query = SearchPublicMessagesByTag(\n            limit: limit,\n            offset: offset,\n            tag: tag\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for public stories containing the given hashtag or cashtag. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter limit: The maximum number of stories to be returned; up to 100. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the stories to search for; pass 0 to search stories in all chats\n    /// - Parameter tag: Hashtag or cashtag to search for\n    /// - Returns: For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    public final func searchPublicStoriesByTag(\n        limit: Int?,\n        offset: String?,\n        storyPosterChatId: Int64?,\n        tag: String?,\n        completion: @escaping (Result<FoundStories, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchPublicStoriesByTag(\n            limit: limit,\n            offset: offset,\n            storyPosterChatId: storyPosterChatId,\n            tag: tag\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for public stories containing the given hashtag or cashtag. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter limit: The maximum number of stories to be returned; up to 100. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the stories to search for; pass 0 to search stories in all chats\n    /// - Parameter tag: Hashtag or cashtag to search for\n    /// - Returns: For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchPublicStoriesByTag(\n        limit: Int?,\n        offset: String?,\n        storyPosterChatId: Int64?,\n        tag: String?\n    ) async throws -> FoundStories {\n        let query = SearchPublicStoriesByTag(\n            limit: limit,\n            offset: offset,\n            storyPosterChatId: storyPosterChatId,\n            tag: tag\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for public stories by the given address location. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter address: Address of the location\n    /// - Parameter limit: The maximum number of stories to be returned; up to 100. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    public final func searchPublicStoriesByLocation(\n        address: LocationAddress?,\n        limit: Int?,\n        offset: String?,\n        completion: @escaping (Result<FoundStories, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchPublicStoriesByLocation(\n            address: address,\n            limit: limit,\n            offset: offset\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for public stories by the given address location. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter address: Address of the location\n    /// - Parameter limit: The maximum number of stories to be returned; up to 100. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchPublicStoriesByLocation(\n        address: LocationAddress?,\n        limit: Int?,\n        offset: String?\n    ) async throws -> FoundStories {\n        let query = SearchPublicStoriesByLocation(\n            address: address,\n            limit: limit,\n            offset: offset\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for public stories from the given venue. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter limit: The maximum number of stories to be returned; up to 100. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter venueId: Identifier of the venue in the provider database\n    /// - Parameter venueProvider: Provider of the venue\n    /// - Returns: For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    public final func searchPublicStoriesByVenue(\n        limit: Int?,\n        offset: String?,\n        venueId: String?,\n        venueProvider: String?,\n        completion: @escaping (Result<FoundStories, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchPublicStoriesByVenue(\n            limit: limit,\n            offset: offset,\n            venueId: venueId,\n            venueProvider: venueProvider\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for public stories from the given venue. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter limit: The maximum number of stories to be returned; up to 100. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter venueId: Identifier of the venue in the provider database\n    /// - Parameter venueProvider: Provider of the venue\n    /// - Returns: For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchPublicStoriesByVenue(\n        limit: Int?,\n        offset: String?,\n        venueId: String?,\n        venueProvider: String?\n    ) async throws -> FoundStories {\n        let query = SearchPublicStoriesByVenue(\n            limit: limit,\n            offset: offset,\n            venueId: venueId,\n            venueProvider: venueProvider\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns recently searched for hashtags or cashtags by their prefix\n    /// - Parameter limit: The maximum number of items to be returned\n    /// - Parameter tagPrefix: Prefix of hashtags or cashtags to return\n    /// - Returns: Recently searched for hashtags or cashtags by their prefix\n    public final func getSearchedForTags(\n        limit: Int?,\n        tagPrefix: String?,\n        completion: @escaping (Result<Hashtags, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSearchedForTags(\n            limit: limit,\n            tagPrefix: tagPrefix\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns recently searched for hashtags or cashtags by their prefix\n    /// - Parameter limit: The maximum number of items to be returned\n    /// - Parameter tagPrefix: Prefix of hashtags or cashtags to return\n    /// - Returns: Recently searched for hashtags or cashtags by their prefix\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getSearchedForTags(\n        limit: Int?,\n        tagPrefix: String?\n    ) async throws -> Hashtags {\n        let query = GetSearchedForTags(\n            limit: limit,\n            tagPrefix: tagPrefix\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes a hashtag or a cashtag from the list of recently searched for hashtags or cashtags\n    /// - Parameter tag: Hashtag or cashtag to delete\n    public final func removeSearchedForTag(\n        tag: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveSearchedForTag(\n            tag: tag\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes a hashtag or a cashtag from the list of recently searched for hashtags or cashtags\n    /// - Parameter tag: Hashtag or cashtag to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeSearchedForTag(tag: String?) async throws -> Ok {\n        let query = RemoveSearchedForTag(\n            tag: tag\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Clears the list of recently searched for hashtags or cashtags\n    /// - Parameter clearCashtags: Pass true to clear the list of recently searched for cashtags; otherwise, the list of recently searched for hashtags will be cleared\n    public final func clearSearchedForTags(\n        clearCashtags: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ClearSearchedForTags(\n            clearCashtags: clearCashtags\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Clears the list of recently searched for hashtags or cashtags\n    /// - Parameter clearCashtags: Pass true to clear the list of recently searched for cashtags; otherwise, the list of recently searched for hashtags will be cleared\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func clearSearchedForTags(clearCashtags: Bool?) async throws -> Ok {\n        let query = ClearSearchedForTags(\n            clearCashtags: clearCashtags\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes all call messages\n    /// - Parameter revoke: Pass true to delete the messages for all users\n    public final func deleteAllCallMessages(\n        revoke: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteAllCallMessages(\n            revoke: revoke\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes all call messages\n    /// - Parameter revoke: Pass true to delete the messages for all users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteAllCallMessages(revoke: Bool?) async throws -> Ok {\n        let query = DeleteAllCallMessages(\n            revoke: revoke\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about the recent locations of chat members that were sent to the chat. Returns up to 1 location message per user\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter limit: The maximum number of messages to be returned\n    /// - Returns: Information about the recent locations of chat members that were sent to the chat. Returns up to 1 location message per user\n    public final func searchChatRecentLocationMessages(\n        chatId: Int64?,\n        limit: Int?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchChatRecentLocationMessages(\n            chatId: chatId,\n            limit: limit\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about the recent locations of chat members that were sent to the chat. Returns up to 1 location message per user\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter limit: The maximum number of messages to be returned\n    /// - Returns: Information about the recent locations of chat members that were sent to the chat. Returns up to 1 location message per user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchChatRecentLocationMessages(\n        chatId: Int64?,\n        limit: Int?\n    ) async throws -> Messages {\n        let query = SearchChatRecentLocationMessages(\n            chatId: chatId,\n            limit: limit\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the last message sent in a chat no later than the specified date. Returns a 404 error if such message doesn't exist\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter date: Point in time (Unix timestamp) relative to which to search for messages\n    /// - Returns: The last message sent in a chat no later than the specified date. Returns a 404 error if such message doesn't exist\n    public final func getChatMessageByDate(\n        chatId: Int64?,\n        date: Int?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatMessageByDate(\n            chatId: chatId,\n            date: date\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the last message sent in a chat no later than the specified date. Returns a 404 error if such message doesn't exist\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter date: Point in time (Unix timestamp) relative to which to search for messages\n    /// - Returns: The last message sent in a chat no later than the specified date. Returns a 404 error if such message doesn't exist\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatMessageByDate(\n        chatId: Int64?,\n        date: Int?\n    ) async throws -> Message {\n        let query = GetChatMessageByDate(\n            chatId: chatId,\n            date: date\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns sparse positions of messages of the specified type in the chat to be used for shared media scroll implementation. Returns the results in reverse chronological order (i.e., in order of decreasing message_id). Cannot be used in secret chats or with searchMessagesFilterFailedToSend filter without an enabled message database\n    /// - Parameter chatId: Identifier of the chat in which to return information about message positions\n    /// - Parameter filter: Filter for message content. Filters searchMessagesFilterEmpty, searchMessagesFilterMention, searchMessagesFilterUnreadMention, searchMessagesFilterUnreadReaction, and searchMessagesFilterUnreadPollVote are unsupported in this function\n    /// - Parameter fromMessageId: The message identifier from which to return information about message positions\n    /// - Parameter limit: The expected number of message positions to be returned; 50-2000. A smaller number of positions can be returned, if there are not enough appropriate messages\n    /// - Parameter savedMessagesTopicId: If not 0, only messages in the specified Saved Messages topic will be considered; pass 0 to consider all messages, or for chats other than Saved Messages\n    /// - Returns: Sparse positions of messages of the specified type in the chat to be used for shared media scroll implementation. Returns the results in reverse chronological order (i.e., in order of decreasing message_id)\n    public final func getChatSparseMessagePositions(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        savedMessagesTopicId: Int64?,\n        completion: @escaping (Result<MessagePositions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatSparseMessagePositions(\n            chatId: chatId,\n            filter: filter,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns sparse positions of messages of the specified type in the chat to be used for shared media scroll implementation. Returns the results in reverse chronological order (i.e., in order of decreasing message_id). Cannot be used in secret chats or with searchMessagesFilterFailedToSend filter without an enabled message database\n    /// - Parameter chatId: Identifier of the chat in which to return information about message positions\n    /// - Parameter filter: Filter for message content. Filters searchMessagesFilterEmpty, searchMessagesFilterMention, searchMessagesFilterUnreadMention, searchMessagesFilterUnreadReaction, and searchMessagesFilterUnreadPollVote are unsupported in this function\n    /// - Parameter fromMessageId: The message identifier from which to return information about message positions\n    /// - Parameter limit: The expected number of message positions to be returned; 50-2000. A smaller number of positions can be returned, if there are not enough appropriate messages\n    /// - Parameter savedMessagesTopicId: If not 0, only messages in the specified Saved Messages topic will be considered; pass 0 to consider all messages, or for chats other than Saved Messages\n    /// - Returns: Sparse positions of messages of the specified type in the chat to be used for shared media scroll implementation. Returns the results in reverse chronological order (i.e., in order of decreasing message_id)\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatSparseMessagePositions(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        savedMessagesTopicId: Int64?\n    ) async throws -> MessagePositions {\n        let query = GetChatSparseMessagePositions(\n            chatId: chatId,\n            filter: filter,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about the next messages of the specified type in the chat split by days. Returns the results in reverse chronological order. Can return partial result for the last returned day. Behavior of this method depends on the value of the option \"utc_time_offset\"\n    /// - Parameter chatId: Identifier of the chat in which to return information about messages\n    /// - Parameter filter: Filter for message content. Filters searchMessagesFilterEmpty, searchMessagesFilterMention, searchMessagesFilterUnreadMention, searchMessagesFilterUnreadReaction, and searchMessagesFilterUnreadPollVote are unsupported in this function\n    /// - Parameter fromMessageId: The message identifier from which to return information about messages; use 0 to get results from the last message\n    /// - Parameter topicId: Pass topic identifier to get the result only in specific topic; pass null to get the result in all topics; forum topics and message threads aren't supported\n    /// - Returns: Information about the next messages of the specified type in the chat split by days. Returns the results in reverse chronological order. Can return partial result for the last returned day\n    public final func getChatMessageCalendar(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        fromMessageId: Int64?,\n        topicId: MessageTopic?,\n        completion: @escaping (Result<MessageCalendar, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatMessageCalendar(\n            chatId: chatId,\n            filter: filter,\n            fromMessageId: fromMessageId,\n            topicId: topicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about the next messages of the specified type in the chat split by days. Returns the results in reverse chronological order. Can return partial result for the last returned day. Behavior of this method depends on the value of the option \"utc_time_offset\"\n    /// - Parameter chatId: Identifier of the chat in which to return information about messages\n    /// - Parameter filter: Filter for message content. Filters searchMessagesFilterEmpty, searchMessagesFilterMention, searchMessagesFilterUnreadMention, searchMessagesFilterUnreadReaction, and searchMessagesFilterUnreadPollVote are unsupported in this function\n    /// - Parameter fromMessageId: The message identifier from which to return information about messages; use 0 to get results from the last message\n    /// - Parameter topicId: Pass topic identifier to get the result only in specific topic; pass null to get the result in all topics; forum topics and message threads aren't supported\n    /// - Returns: Information about the next messages of the specified type in the chat split by days. Returns the results in reverse chronological order. Can return partial result for the last returned day\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatMessageCalendar(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        fromMessageId: Int64?,\n        topicId: MessageTopic?\n    ) async throws -> MessageCalendar {\n        let query = GetChatMessageCalendar(\n            chatId: chatId,\n            filter: filter,\n            fromMessageId: fromMessageId,\n            topicId: topicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns approximate number of messages of the specified type in the chat or its topic\n    /// - Parameter chatId: Identifier of the chat in which to count messages\n    /// - Parameter filter: Filter for message content; searchMessagesFilterEmpty is unsupported in this function\n    /// - Parameter returnLocal: Pass true to get the number of messages without sending network requests, or -1 if the number of messages is unknown locally\n    /// - Parameter topicId: Pass topic identifier to get number of messages only in specific topic; pass null to get number of messages in all topics; message threads aren't supported\n    /// - Returns: Approximate number of messages of the specified type in the chat or its topic\n    public final func getChatMessageCount(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        returnLocal: Bool?,\n        topicId: MessageTopic?,\n        completion: @escaping (Result<Count, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatMessageCount(\n            chatId: chatId,\n            filter: filter,\n            returnLocal: returnLocal,\n            topicId: topicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns approximate number of messages of the specified type in the chat or its topic\n    /// - Parameter chatId: Identifier of the chat in which to count messages\n    /// - Parameter filter: Filter for message content; searchMessagesFilterEmpty is unsupported in this function\n    /// - Parameter returnLocal: Pass true to get the number of messages without sending network requests, or -1 if the number of messages is unknown locally\n    /// - Parameter topicId: Pass topic identifier to get number of messages only in specific topic; pass null to get number of messages in all topics; message threads aren't supported\n    /// - Returns: Approximate number of messages of the specified type in the chat or its topic\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatMessageCount(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        returnLocal: Bool?,\n        topicId: MessageTopic?\n    ) async throws -> Count {\n        let query = GetChatMessageCount(\n            chatId: chatId,\n            filter: filter,\n            returnLocal: returnLocal,\n            topicId: topicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns approximate 1-based position of a message among messages, which can be found by the specified filter in the chat and topic. Cannot be used in secret chats\n    /// - Parameter chatId: Identifier of the chat in which to find message position\n    /// - Parameter filter: Filter for message content; searchMessagesFilterEmpty, searchMessagesFilterUnreadMention, searchMessagesFilterUnreadReaction, searchMessagesFilterUnreadPollVote, and searchMessagesFilterFailedToSend are unsupported in this function\n    /// - Parameter messageId: Message identifier\n    /// - Parameter topicId: Pass topic identifier to get position among messages only in specific topic; pass null to get position among all chat messages; message threads aren't supported\n    /// - Returns: Approximate 1-based position of a message among messages, which can be found by the specified filter in the chat and topic\n    public final func getChatMessagePosition(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        messageId: Int64?,\n        topicId: MessageTopic?,\n        completion: @escaping (Result<Count, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatMessagePosition(\n            chatId: chatId,\n            filter: filter,\n            messageId: messageId,\n            topicId: topicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns approximate 1-based position of a message among messages, which can be found by the specified filter in the chat and topic. Cannot be used in secret chats\n    /// - Parameter chatId: Identifier of the chat in which to find message position\n    /// - Parameter filter: Filter for message content; searchMessagesFilterEmpty, searchMessagesFilterUnreadMention, searchMessagesFilterUnreadReaction, searchMessagesFilterUnreadPollVote, and searchMessagesFilterFailedToSend are unsupported in this function\n    /// - Parameter messageId: Message identifier\n    /// - Parameter topicId: Pass topic identifier to get position among messages only in specific topic; pass null to get position among all chat messages; message threads aren't supported\n    /// - Returns: Approximate 1-based position of a message among messages, which can be found by the specified filter in the chat and topic\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatMessagePosition(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        messageId: Int64?,\n        topicId: MessageTopic?\n    ) async throws -> Count {\n        let query = GetChatMessagePosition(\n            chatId: chatId,\n            filter: filter,\n            messageId: messageId,\n            topicId: topicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns all scheduled messages in a chat. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: All scheduled messages in a chat. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    public final func getChatScheduledMessages(\n        chatId: Int64?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatScheduledMessages(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns all scheduled messages in a chat. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: All scheduled messages in a chat. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatScheduledMessages(chatId: Int64?) async throws -> Messages {\n        let query = GetChatScheduledMessages(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns sponsored messages to be shown in a chat; for channel chats and chats with bots only\n    /// - Parameter chatId: Identifier of the chat\n    /// - Returns: Sponsored messages to be shown in a chat\n    public final func getChatSponsoredMessages(\n        chatId: Int64?,\n        completion: @escaping (Result<SponsoredMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatSponsoredMessages(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns sponsored messages to be shown in a chat; for channel chats and chats with bots only\n    /// - Parameter chatId: Identifier of the chat\n    /// - Returns: Sponsored messages to be shown in a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatSponsoredMessages(chatId: Int64?) async throws -> SponsoredMessages {\n        let query = GetChatSponsoredMessages(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that the user opened the sponsored chat via the button, the name, the chat photo, a mention in the sponsored message text, or the media in the sponsored message\n    /// - Parameter chatId: Chat identifier of the sponsored message\n    /// - Parameter fromFullscreen: Pass true if the user expanded the video from the sponsored message fullscreen before the click\n    /// - Parameter isMediaClick: Pass true if the media was clicked in the sponsored message\n    /// - Parameter messageId: Identifier of the sponsored message\n    public final func clickChatSponsoredMessage(\n        chatId: Int64?,\n        fromFullscreen: Bool?,\n        isMediaClick: Bool?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ClickChatSponsoredMessage(\n            chatId: chatId,\n            fromFullscreen: fromFullscreen,\n            isMediaClick: isMediaClick,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that the user opened the sponsored chat via the button, the name, the chat photo, a mention in the sponsored message text, or the media in the sponsored message\n    /// - Parameter chatId: Chat identifier of the sponsored message\n    /// - Parameter fromFullscreen: Pass true if the user expanded the video from the sponsored message fullscreen before the click\n    /// - Parameter isMediaClick: Pass true if the media was clicked in the sponsored message\n    /// - Parameter messageId: Identifier of the sponsored message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func clickChatSponsoredMessage(\n        chatId: Int64?,\n        fromFullscreen: Bool?,\n        isMediaClick: Bool?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = ClickChatSponsoredMessage(\n            chatId: chatId,\n            fromFullscreen: fromFullscreen,\n            isMediaClick: isMediaClick,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Reports a sponsored message to Telegram moderators\n    /// - Parameter chatId: Chat identifier of the sponsored message\n    /// - Parameter messageId: Identifier of the sponsored message\n    /// - Parameter optionId: Option identifier chosen by the user; leave empty for the initial request\n    public final func reportChatSponsoredMessage(\n        chatId: Int64?,\n        messageId: Int64?,\n        optionId: Data?,\n        completion: @escaping (Result<ReportSponsoredResult, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportChatSponsoredMessage(\n            chatId: chatId,\n            messageId: messageId,\n            optionId: optionId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Reports a sponsored message to Telegram moderators\n    /// - Parameter chatId: Chat identifier of the sponsored message\n    /// - Parameter messageId: Identifier of the sponsored message\n    /// - Parameter optionId: Option identifier chosen by the user; leave empty for the initial request\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func reportChatSponsoredMessage(\n        chatId: Int64?,\n        messageId: Int64?,\n        optionId: Data?\n    ) async throws -> ReportSponsoredResult {\n        let query = ReportChatSponsoredMessage(\n            chatId: chatId,\n            messageId: messageId,\n            optionId: optionId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns sponsored chats to be shown in the search results\n    /// - Parameter query: Query the user searches for\n    /// - Returns: Sponsored chats to be shown in the search results\n    public final func getSearchSponsoredChats(\n        query: String?,\n        completion: @escaping (Result<SponsoredChats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSearchSponsoredChats(\n            query: query\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns sponsored chats to be shown in the search results\n    /// - Parameter query: Query the user searches for\n    /// - Returns: Sponsored chats to be shown in the search results\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getSearchSponsoredChats(query: String?) async throws -> SponsoredChats {\n        let query = GetSearchSponsoredChats(\n            query: query\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that the user fully viewed a sponsored chat\n    /// - Parameter sponsoredChatUniqueId: Unique identifier of the sponsored chat\n    public final func viewSponsoredChat(\n        sponsoredChatUniqueId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ViewSponsoredChat(\n            sponsoredChatUniqueId: sponsoredChatUniqueId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that the user fully viewed a sponsored chat\n    /// - Parameter sponsoredChatUniqueId: Unique identifier of the sponsored chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func viewSponsoredChat(sponsoredChatUniqueId: Int64?) async throws -> Ok {\n        let query = ViewSponsoredChat(\n            sponsoredChatUniqueId: sponsoredChatUniqueId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that the user opened a sponsored chat\n    /// - Parameter sponsoredChatUniqueId: Unique identifier of the sponsored chat\n    public final func openSponsoredChat(\n        sponsoredChatUniqueId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = OpenSponsoredChat(\n            sponsoredChatUniqueId: sponsoredChatUniqueId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that the user opened a sponsored chat\n    /// - Parameter sponsoredChatUniqueId: Unique identifier of the sponsored chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func openSponsoredChat(sponsoredChatUniqueId: Int64?) async throws -> Ok {\n        let query = OpenSponsoredChat(\n            sponsoredChatUniqueId: sponsoredChatUniqueId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Reports a sponsored chat to Telegram moderators\n    /// - Parameter optionId: Option identifier chosen by the user; leave empty for the initial request\n    /// - Parameter sponsoredChatUniqueId: Unique identifier of the sponsored chat\n    public final func reportSponsoredChat(\n        optionId: Data?,\n        sponsoredChatUniqueId: Int64?,\n        completion: @escaping (Result<ReportSponsoredResult, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportSponsoredChat(\n            optionId: optionId,\n            sponsoredChatUniqueId: sponsoredChatUniqueId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Reports a sponsored chat to Telegram moderators\n    /// - Parameter optionId: Option identifier chosen by the user; leave empty for the initial request\n    /// - Parameter sponsoredChatUniqueId: Unique identifier of the sponsored chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func reportSponsoredChat(\n        optionId: Data?,\n        sponsoredChatUniqueId: Int64?\n    ) async throws -> ReportSponsoredResult {\n        let query = ReportSponsoredChat(\n            optionId: optionId,\n            sponsoredChatUniqueId: sponsoredChatUniqueId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns advertisements to be shown while a video from a message is watched. Available only if messageProperties.can_get_video_advertisements\n    /// - Parameter chatId: Identifier of the chat with the message\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Advertisements to be shown while a video from a message is watched\n    public final func getVideoMessageAdvertisements(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<VideoMessageAdvertisements, Swift.Error>) -> Void\n    ) throws {\n        let query = GetVideoMessageAdvertisements(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns advertisements to be shown while a video from a message is watched. Available only if messageProperties.can_get_video_advertisements\n    /// - Parameter chatId: Identifier of the chat with the message\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Advertisements to be shown while a video from a message is watched\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getVideoMessageAdvertisements(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> VideoMessageAdvertisements {\n        let query = GetVideoMessageAdvertisements(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that the user viewed a video message advertisement\n    /// - Parameter advertisementUniqueId: Unique identifier of the advertisement\n    public final func viewVideoMessageAdvertisement(\n        advertisementUniqueId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ViewVideoMessageAdvertisement(\n            advertisementUniqueId: advertisementUniqueId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that the user viewed a video message advertisement\n    /// - Parameter advertisementUniqueId: Unique identifier of the advertisement\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func viewVideoMessageAdvertisement(advertisementUniqueId: Int64?) async throws -> Ok {\n        let query = ViewVideoMessageAdvertisement(\n            advertisementUniqueId: advertisementUniqueId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that the user clicked a video message advertisement\n    /// - Parameter advertisementUniqueId: Unique identifier of the advertisement\n    public final func clickVideoMessageAdvertisement(\n        advertisementUniqueId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ClickVideoMessageAdvertisement(\n            advertisementUniqueId: advertisementUniqueId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that the user clicked a video message advertisement\n    /// - Parameter advertisementUniqueId: Unique identifier of the advertisement\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func clickVideoMessageAdvertisement(advertisementUniqueId: Int64?) async throws -> Ok {\n        let query = ClickVideoMessageAdvertisement(\n            advertisementUniqueId: advertisementUniqueId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Reports a video message advertisement to Telegram moderators\n    /// - Parameter advertisementUniqueId: Unique identifier of the advertisement\n    /// - Parameter optionId: Option identifier chosen by the user; leave empty for the initial request\n    public final func reportVideoMessageAdvertisement(\n        advertisementUniqueId: Int64?,\n        optionId: Data?,\n        completion: @escaping (Result<ReportSponsoredResult, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportVideoMessageAdvertisement(\n            advertisementUniqueId: advertisementUniqueId,\n            optionId: optionId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Reports a video message advertisement to Telegram moderators\n    /// - Parameter advertisementUniqueId: Unique identifier of the advertisement\n    /// - Parameter optionId: Option identifier chosen by the user; leave empty for the initial request\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func reportVideoMessageAdvertisement(\n        advertisementUniqueId: Int64?,\n        optionId: Data?\n    ) async throws -> ReportSponsoredResult {\n        let query = ReportVideoMessageAdvertisement(\n            advertisementUniqueId: advertisementUniqueId,\n            optionId: optionId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes an active notification from notification list. Needs to be called only if the notification is removed by the current user\n    /// - Parameter notificationGroupId: Identifier of notification group to which the notification belongs\n    /// - Parameter notificationId: Identifier of removed notification\n    public final func removeNotification(\n        notificationGroupId: Int?,\n        notificationId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveNotification(\n            notificationGroupId: notificationGroupId,\n            notificationId: notificationId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes an active notification from notification list. Needs to be called only if the notification is removed by the current user\n    /// - Parameter notificationGroupId: Identifier of notification group to which the notification belongs\n    /// - Parameter notificationId: Identifier of removed notification\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeNotification(\n        notificationGroupId: Int?,\n        notificationId: Int?\n    ) async throws -> Ok {\n        let query = RemoveNotification(\n            notificationGroupId: notificationGroupId,\n            notificationId: notificationId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes a group of active notifications. Needs to be called only if the notification group is removed by the current user\n    /// - Parameter maxNotificationId: The maximum identifier of removed notifications\n    /// - Parameter notificationGroupId: Notification group identifier\n    public final func removeNotificationGroup(\n        maxNotificationId: Int?,\n        notificationGroupId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveNotificationGroup(\n            maxNotificationId: maxNotificationId,\n            notificationGroupId: notificationGroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes a group of active notifications. Needs to be called only if the notification group is removed by the current user\n    /// - Parameter maxNotificationId: The maximum identifier of removed notifications\n    /// - Parameter notificationGroupId: Notification group identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeNotificationGroup(\n        maxNotificationId: Int?,\n        notificationGroupId: Int?\n    ) async throws -> Ok {\n        let query = RemoveNotificationGroup(\n            maxNotificationId: maxNotificationId,\n            notificationGroupId: notificationGroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an HTTPS link to a message in a chat. Available only if messageProperties.can_get_link, or if messageProperties.can_get_media_timestamp_links and a media timestamp link is generated. This is an offline method\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter checklistTaskId: If not 0, identifier of the checklist task in the message to be linked\n    /// - Parameter forAlbum: Pass true to create a link for the whole media album\n    /// - Parameter inMessageThread: Pass true to create a link to the message as a channel post comment, in a message thread, or a forum topic\n    /// - Parameter mediaTimestamp: If not 0, timestamp from which the video/audio/video note/voice note/story playing must start, in seconds. The media can be in the message content or in its link preview\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter pollOptionId: If not empty, identifier of the poll option in the message to be linked\n    /// - Returns: An HTTPS link to a message in a chat\n    public final func getMessageLink(\n        chatId: Int64?,\n        checklistTaskId: Int?,\n        forAlbum: Bool?,\n        inMessageThread: Bool?,\n        mediaTimestamp: Int?,\n        messageId: Int64?,\n        pollOptionId: String?,\n        completion: @escaping (Result<MessageLink, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageLink(\n            chatId: chatId,\n            checklistTaskId: checklistTaskId,\n            forAlbum: forAlbum,\n            inMessageThread: inMessageThread,\n            mediaTimestamp: mediaTimestamp,\n            messageId: messageId,\n            pollOptionId: pollOptionId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an HTTPS link to a message in a chat. Available only if messageProperties.can_get_link, or if messageProperties.can_get_media_timestamp_links and a media timestamp link is generated. This is an offline method\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter checklistTaskId: If not 0, identifier of the checklist task in the message to be linked\n    /// - Parameter forAlbum: Pass true to create a link for the whole media album\n    /// - Parameter inMessageThread: Pass true to create a link to the message as a channel post comment, in a message thread, or a forum topic\n    /// - Parameter mediaTimestamp: If not 0, timestamp from which the video/audio/video note/voice note/story playing must start, in seconds. The media can be in the message content or in its link preview\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter pollOptionId: If not empty, identifier of the poll option in the message to be linked\n    /// - Returns: An HTTPS link to a message in a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMessageLink(\n        chatId: Int64?,\n        checklistTaskId: Int?,\n        forAlbum: Bool?,\n        inMessageThread: Bool?,\n        mediaTimestamp: Int?,\n        messageId: Int64?,\n        pollOptionId: String?\n    ) async throws -> MessageLink {\n        let query = GetMessageLink(\n            chatId: chatId,\n            checklistTaskId: checklistTaskId,\n            forAlbum: forAlbum,\n            inMessageThread: inMessageThread,\n            mediaTimestamp: mediaTimestamp,\n            messageId: messageId,\n            pollOptionId: pollOptionId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an HTML code for embedding the message. Available only if messageProperties.can_get_embedding_code\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter forAlbum: Pass true to return an HTML code for embedding of the whole media album\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: An HTML code for embedding the message\n    public final func getMessageEmbeddingCode(\n        chatId: Int64?,\n        forAlbum: Bool?,\n        messageId: Int64?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageEmbeddingCode(\n            chatId: chatId,\n            forAlbum: forAlbum,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an HTML code for embedding the message. Available only if messageProperties.can_get_embedding_code\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter forAlbum: Pass true to return an HTML code for embedding of the whole media album\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: An HTML code for embedding the message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMessageEmbeddingCode(\n        chatId: Int64?,\n        forAlbum: Bool?,\n        messageId: Int64?\n    ) async throws -> Text {\n        let query = GetMessageEmbeddingCode(\n            chatId: chatId,\n            forAlbum: forAlbum,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a public or private message link. Can be called for any internal link of the type internalLinkTypeMessage\n    /// - Parameter url: The message link\n    /// - Returns: Information about a public or private message link\n    public final func getMessageLinkInfo(\n        url: String?,\n        completion: @escaping (Result<MessageLinkInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageLinkInfo(\n            url: url\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a public or private message link. Can be called for any internal link of the type internalLinkTypeMessage\n    /// - Parameter url: The message link\n    /// - Returns: Information about a public or private message link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMessageLinkInfo(url: String?) async throws -> MessageLinkInfo {\n        let query = GetMessageLinkInfo(\n            url: url\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Creates a custom text composition style. May return an error with a message \"TONES_SAVED_TOO_MANY\" if the maximum number of added custom styles has been reached\n    /// - Parameter customEmojiId: Identifier of the custom emoji corresponding to the style\n    /// - Parameter prompt: Prompt that will be used for text composition; 1-getOption(\"text_composition_style_prompt_length_max\") characters\n    /// - Parameter showCreator: Pass true if the current user must be shown as the creator of the style\n    /// - Parameter title: Title of the style; 1-getOption(\"text_composition_style_title_length_max\") characters\n    /// - Returns: May return an error with a message \"TONES_SAVED_TOO_MANY\" if the maximum number of added custom styles has been reached\n    public final func createTextCompositionStyle(\n        customEmojiId: TdInt64?,\n        prompt: String?,\n        showCreator: Bool?,\n        title: String?,\n        completion: @escaping (Result<TextCompositionStyle, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateTextCompositionStyle(\n            customEmojiId: customEmojiId,\n            prompt: prompt,\n            showCreator: showCreator,\n            title: title\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Creates a custom text composition style. May return an error with a message \"TONES_SAVED_TOO_MANY\" if the maximum number of added custom styles has been reached\n    /// - Parameter customEmojiId: Identifier of the custom emoji corresponding to the style\n    /// - Parameter prompt: Prompt that will be used for text composition; 1-getOption(\"text_composition_style_prompt_length_max\") characters\n    /// - Parameter showCreator: Pass true if the current user must be shown as the creator of the style\n    /// - Parameter title: Title of the style; 1-getOption(\"text_composition_style_title_length_max\") characters\n    /// - Returns: May return an error with a message \"TONES_SAVED_TOO_MANY\" if the maximum number of added custom styles has been reached\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createTextCompositionStyle(\n        customEmojiId: TdInt64?,\n        prompt: String?,\n        showCreator: Bool?,\n        title: String?\n    ) async throws -> TextCompositionStyle {\n        let query = CreateTextCompositionStyle(\n            customEmojiId: customEmojiId,\n            prompt: prompt,\n            showCreator: showCreator,\n            title: title\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits a custom text composition style that was created by the current user\n    /// - Parameter customEmojiId: Identifier of the custom emoji corresponding to the style\n    /// - Parameter name: Name of the style\n    /// - Parameter prompt: Prompt that will be used for text composition; 1-getOption(\"text_composition_style_prompt_length_max\") characters\n    /// - Parameter showCreator: Pass true if the current user must be shown as the creator of the style\n    /// - Parameter title: Title of the style; 1-getOption(\"text_composition_style_title_length_max\") characters\n    public final func editTextCompositionStyle(\n        customEmojiId: TdInt64?,\n        name: String?,\n        prompt: String?,\n        showCreator: Bool?,\n        title: String?,\n        completion: @escaping (Result<TextCompositionStyle, Swift.Error>) -> Void\n    ) throws {\n        let query = EditTextCompositionStyle(\n            customEmojiId: customEmojiId,\n            name: name,\n            prompt: prompt,\n            showCreator: showCreator,\n            title: title\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits a custom text composition style that was created by the current user\n    /// - Parameter customEmojiId: Identifier of the custom emoji corresponding to the style\n    /// - Parameter name: Name of the style\n    /// - Parameter prompt: Prompt that will be used for text composition; 1-getOption(\"text_composition_style_prompt_length_max\") characters\n    /// - Parameter showCreator: Pass true if the current user must be shown as the creator of the style\n    /// - Parameter title: Title of the style; 1-getOption(\"text_composition_style_title_length_max\") characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func editTextCompositionStyle(\n        customEmojiId: TdInt64?,\n        name: String?,\n        prompt: String?,\n        showCreator: Bool?,\n        title: String?\n    ) async throws -> TextCompositionStyle {\n        let query = EditTextCompositionStyle(\n            customEmojiId: customEmojiId,\n            name: name,\n            prompt: prompt,\n            showCreator: showCreator,\n            title: title\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes a custom text composition style that was created by the current user\n    /// - Parameter name: Name of the style\n    public final func deleteTextCompositionStyle(\n        name: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteTextCompositionStyle(\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes a custom text composition style that was created by the current user\n    /// - Parameter name: Name of the style\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteTextCompositionStyle(name: String?) async throws -> Ok {\n        let query = DeleteTextCompositionStyle(\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches a custom text composition style by its name\n    /// - Parameter name: Name of the style\n    public final func searchTextCompositionStyle(\n        name: String?,\n        completion: @escaping (Result<TextCompositionStyle, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchTextCompositionStyle(\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches a custom text composition style by its name\n    /// - Parameter name: Name of the style\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchTextCompositionStyle(name: String?) async throws -> TextCompositionStyle {\n        let query = SearchTextCompositionStyle(\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an example of usage of a custom text composition style\n    /// - Parameter exampleNumber: 0-based unique number of the requested example; must be non-negative and less than getOption(\"text_composition_style_example_count\")\n    /// - Parameter name: Name of the style\n    /// - Returns: An example of usage of a custom text composition style\n    public final func getTextCompositionStyleExample(\n        exampleNumber: Int?,\n        name: String?,\n        completion: @escaping (Result<TextCompositionStyleExample, Swift.Error>) -> Void\n    ) throws {\n        let query = GetTextCompositionStyleExample(\n            exampleNumber: exampleNumber,\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an example of usage of a custom text composition style\n    /// - Parameter exampleNumber: 0-based unique number of the requested example; must be non-negative and less than getOption(\"text_composition_style_example_count\")\n    /// - Parameter name: Name of the style\n    /// - Returns: An example of usage of a custom text composition style\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getTextCompositionStyleExample(\n        exampleNumber: Int?,\n        name: String?\n    ) async throws -> TextCompositionStyleExample {\n        let query = GetTextCompositionStyleExample(\n            exampleNumber: exampleNumber,\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds a custom text composition style to the list of used by the user styles. May return an error with a message \"TONES_SAVED_TOO_MANY\" if the maximum number of added custom styles has been reached\n    /// - Parameter name: Name of the style\n    /// - Returns: May return an error with a message \"TONES_SAVED_TOO_MANY\" if the maximum number of added custom styles has been reached\n    public final func addTextCompositionStyle(\n        name: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddTextCompositionStyle(\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds a custom text composition style to the list of used by the user styles. May return an error with a message \"TONES_SAVED_TOO_MANY\" if the maximum number of added custom styles has been reached\n    /// - Parameter name: Name of the style\n    /// - Returns: May return an error with a message \"TONES_SAVED_TOO_MANY\" if the maximum number of added custom styles has been reached\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func addTextCompositionStyle(name: String?) async throws -> Ok {\n        let query = AddTextCompositionStyle(\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes a custom text composition style from the list of used by the user styles. If the style was created by the current user, then it can only be deleted\n    /// - Parameter name: Name of the style\n    public final func removeTextCompositionStyle(\n        name: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveTextCompositionStyle(\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes a custom text composition style from the list of used by the user styles. If the style was created by the current user, then it can only be deleted\n    /// - Parameter name: Name of the style\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeTextCompositionStyle(name: String?) async throws -> Ok {\n        let query = RemoveTextCompositionStyle(\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Translates a text to the given language; must not be used in secret chats. If the current user is a Telegram Premium user, then text formatting is preserved\n    /// - Parameter text: Text to translate\n    /// - Parameter toLanguageCode: Language code of the language to which the message is translated. Must be one of \"af\", \"sq\", \"am\", \"ar\", \"hy\", \"az\", \"eu\", \"be\", \"bn\", \"bs\", \"bg\", \"ca\", \"ceb\", \"zh-CN\", \"zh\", \"zh-Hans\", \"zh-TW\", \"zh-Hant\", \"co\", \"hr\", \"cs\", \"da\", \"nl\", \"en\", \"eo\", \"et\", \"fi\", \"fr\", \"fy\", \"gl\", \"ka\", \"de\", \"el\", \"gu\", \"ht\", \"ha\", \"haw\", \"he\", \"iw\", \"hi\", \"hmn\", \"hu\", \"is\", \"ig\", \"id\", \"in\", \"ga\", \"it\", \"ja\", \"jv\", \"kn\", \"kk\", \"km\", \"rw\", \"ko\", \"ku\", \"ky\", \"lo\", \"la\", \"lv\", \"lt\", \"lb\", \"mk\", \"mg\", \"ms\", \"ml\", \"mt\", \"mi\", \"mr\", \"mn\", \"my\", \"ne\", \"no\", \"ny\", \"or\", \"ps\", \"fa\", \"pl\", \"pt\", \"pa\", \"ro\", \"ru\", \"sm\", \"gd\", \"sr\", \"st\", \"sn\", \"sd\", \"si\", \"sk\", \"sl\", \"so\", \"es\", \"su\", \"sw\", \"sv\", \"tl\", \"tg\", \"ta\", \"tt\", \"te\", \"th\", \"tr\", \"tk\", \"uk\", \"ur\", \"ug\", \"uz\", \"vi\", \"cy\", \"xh\", \"yi\", \"ji\", \"yo\", \"zu\"\n    /// - Parameter tone: Tone of the translation; must be one of \"\", \"formal\", \"neutral\", \"casual\"; defaults to \"neutral\"\n    public final func translateText(\n        text: FormattedText?,\n        toLanguageCode: String?,\n        tone: String?,\n        completion: @escaping (Result<FormattedText, Swift.Error>) -> Void\n    ) throws {\n        let query = TranslateText(\n            text: text,\n            toLanguageCode: toLanguageCode,\n            tone: tone\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Translates a text to the given language; must not be used in secret chats. If the current user is a Telegram Premium user, then text formatting is preserved\n    /// - Parameter text: Text to translate\n    /// - Parameter toLanguageCode: Language code of the language to which the message is translated. Must be one of \"af\", \"sq\", \"am\", \"ar\", \"hy\", \"az\", \"eu\", \"be\", \"bn\", \"bs\", \"bg\", \"ca\", \"ceb\", \"zh-CN\", \"zh\", \"zh-Hans\", \"zh-TW\", \"zh-Hant\", \"co\", \"hr\", \"cs\", \"da\", \"nl\", \"en\", \"eo\", \"et\", \"fi\", \"fr\", \"fy\", \"gl\", \"ka\", \"de\", \"el\", \"gu\", \"ht\", \"ha\", \"haw\", \"he\", \"iw\", \"hi\", \"hmn\", \"hu\", \"is\", \"ig\", \"id\", \"in\", \"ga\", \"it\", \"ja\", \"jv\", \"kn\", \"kk\", \"km\", \"rw\", \"ko\", \"ku\", \"ky\", \"lo\", \"la\", \"lv\", \"lt\", \"lb\", \"mk\", \"mg\", \"ms\", \"ml\", \"mt\", \"mi\", \"mr\", \"mn\", \"my\", \"ne\", \"no\", \"ny\", \"or\", \"ps\", \"fa\", \"pl\", \"pt\", \"pa\", \"ro\", \"ru\", \"sm\", \"gd\", \"sr\", \"st\", \"sn\", \"sd\", \"si\", \"sk\", \"sl\", \"so\", \"es\", \"su\", \"sw\", \"sv\", \"tl\", \"tg\", \"ta\", \"tt\", \"te\", \"th\", \"tr\", \"tk\", \"uk\", \"ur\", \"ug\", \"uz\", \"vi\", \"cy\", \"xh\", \"yi\", \"ji\", \"yo\", \"zu\"\n    /// - Parameter tone: Tone of the translation; must be one of \"\", \"formal\", \"neutral\", \"casual\"; defaults to \"neutral\"\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func translateText(\n        text: FormattedText?,\n        toLanguageCode: String?,\n        tone: String?\n    ) async throws -> FormattedText {\n        let query = TranslateText(\n            text: text,\n            toLanguageCode: toLanguageCode,\n            tone: tone\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Extracts text or caption of the given message and translates it to the given language; must not be used in secret chats. If the current user is a Telegram Premium user, then text formatting is preserved\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter toLanguageCode: Language code of the language to which the message is translated. See translateText.to_language_code for the list of supported values\n    /// - Parameter tone: Tone of the translation; see translateText.tone for the list of supported values\n    public final func translateMessageText(\n        chatId: Int64?,\n        messageId: Int64?,\n        toLanguageCode: String?,\n        tone: String?,\n        completion: @escaping (Result<FormattedText, Swift.Error>) -> Void\n    ) throws {\n        let query = TranslateMessageText(\n            chatId: chatId,\n            messageId: messageId,\n            toLanguageCode: toLanguageCode,\n            tone: tone\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Extracts text or caption of the given message and translates it to the given language; must not be used in secret chats. If the current user is a Telegram Premium user, then text formatting is preserved\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter toLanguageCode: Language code of the language to which the message is translated. See translateText.to_language_code for the list of supported values\n    /// - Parameter tone: Tone of the translation; see translateText.tone for the list of supported values\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func translateMessageText(\n        chatId: Int64?,\n        messageId: Int64?,\n        toLanguageCode: String?,\n        tone: String?\n    ) async throws -> FormattedText {\n        let query = TranslateMessageText(\n            chatId: chatId,\n            messageId: messageId,\n            toLanguageCode: toLanguageCode,\n            tone: tone\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Summarizes content of the message with non-empty summary_language_code\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter tone: Tone of the summarization; see translateText.tone for the list of supported values\n    /// - Parameter translateToLanguageCode: Pass a language code to which the summary will be translated; pass an empty string if translation isn't needed. See translateText.to_language_code for the list of supported values\n    public final func summarizeMessage(\n        chatId: Int64?,\n        messageId: Int64?,\n        tone: String?,\n        translateToLanguageCode: String?,\n        completion: @escaping (Result<FormattedText, Swift.Error>) -> Void\n    ) throws {\n        let query = SummarizeMessage(\n            chatId: chatId,\n            messageId: messageId,\n            tone: tone,\n            translateToLanguageCode: translateToLanguageCode\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Summarizes content of the message with non-empty summary_language_code\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter tone: Tone of the summarization; see translateText.tone for the list of supported values\n    /// - Parameter translateToLanguageCode: Pass a language code to which the summary will be translated; pass an empty string if translation isn't needed. See translateText.to_language_code for the list of supported values\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func summarizeMessage(\n        chatId: Int64?,\n        messageId: Int64?,\n        tone: String?,\n        translateToLanguageCode: String?\n    ) async throws -> FormattedText {\n        let query = SummarizeMessage(\n            chatId: chatId,\n            messageId: messageId,\n            tone: tone,\n            translateToLanguageCode: translateToLanguageCode\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes text using an AI model; must not be used in secret chats. May return an error with a message \"AICOMPOSE_FLOOD_PREMIUM\" if Telegram Premium is required to send further requests\n    /// - Parameter addEmojis: Pass true to add emoji to the text\n    /// - Parameter styleName: Name of the style of the resulted text; handle updateTextCompositionStyles to get the list of supported styles; pass an empty string to keep the current style of the text\n    /// - Parameter text: The original text\n    /// - Parameter translateToLanguageCode: Pass a language code to which the text will be translated; pass an empty string if translation isn't needed. See translateText.to_language_code for the list of supported values\n    /// - Returns: May return an error with a message \"AICOMPOSE_FLOOD_PREMIUM\" if Telegram Premium is required to send further requests\n    public final func composeTextWithAi(\n        addEmojis: Bool?,\n        styleName: String?,\n        text: FormattedText?,\n        translateToLanguageCode: String?,\n        completion: @escaping (Result<FormattedText, Swift.Error>) -> Void\n    ) throws {\n        let query = ComposeTextWithAi(\n            addEmojis: addEmojis,\n            styleName: styleName,\n            text: text,\n            translateToLanguageCode: translateToLanguageCode\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes text using an AI model; must not be used in secret chats. May return an error with a message \"AICOMPOSE_FLOOD_PREMIUM\" if Telegram Premium is required to send further requests\n    /// - Parameter addEmojis: Pass true to add emoji to the text\n    /// - Parameter styleName: Name of the style of the resulted text; handle updateTextCompositionStyles to get the list of supported styles; pass an empty string to keep the current style of the text\n    /// - Parameter text: The original text\n    /// - Parameter translateToLanguageCode: Pass a language code to which the text will be translated; pass an empty string if translation isn't needed. See translateText.to_language_code for the list of supported values\n    /// - Returns: May return an error with a message \"AICOMPOSE_FLOOD_PREMIUM\" if Telegram Premium is required to send further requests\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func composeTextWithAi(\n        addEmojis: Bool?,\n        styleName: String?,\n        text: FormattedText?,\n        translateToLanguageCode: String?\n    ) async throws -> FormattedText {\n        let query = ComposeTextWithAi(\n            addEmojis: addEmojis,\n            styleName: styleName,\n            text: text,\n            translateToLanguageCode: translateToLanguageCode\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Fixes text using an AI model; must not be used in secret chats. May return an error with a message \"AICOMPOSE_FLOOD_PREMIUM\" if Telegram Premium is required to send further requests\n    /// - Parameter text: The original text\n    /// - Returns: May return an error with a message \"AICOMPOSE_FLOOD_PREMIUM\" if Telegram Premium is required to send further requests\n    public final func fixTextWithAi(\n        text: FormattedText?,\n        completion: @escaping (Result<FixedText, Swift.Error>) -> Void\n    ) throws {\n        let query = FixTextWithAi(\n            text: text\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Fixes text using an AI model; must not be used in secret chats. May return an error with a message \"AICOMPOSE_FLOOD_PREMIUM\" if Telegram Premium is required to send further requests\n    /// - Parameter text: The original text\n    /// - Returns: May return an error with a message \"AICOMPOSE_FLOOD_PREMIUM\" if Telegram Premium is required to send further requests\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func fixTextWithAi(text: FormattedText?) async throws -> FixedText {\n        let query = FixTextWithAi(\n            text: text\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Recognizes speech in a video note or a voice note message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_recognize_speech to check whether the message is suitable\n    public final func recognizeSpeech(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RecognizeSpeech(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Recognizes speech in a video note or a voice note message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_recognize_speech to check whether the message is suitable\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func recognizeSpeech(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = RecognizeSpeech(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Rates recognized speech in a video note or a voice note message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter isGood: Pass true if the speech recognition is good\n    /// - Parameter messageId: Identifier of the message\n    public final func rateSpeechRecognition(\n        chatId: Int64?,\n        isGood: Bool?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RateSpeechRecognition(\n            chatId: chatId,\n            isGood: isGood,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Rates recognized speech in a video note or a voice note message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter isGood: Pass true if the speech recognition is good\n    /// - Parameter messageId: Identifier of the message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func rateSpeechRecognition(\n        chatId: Int64?,\n        isGood: Bool?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = RateSpeechRecognition(\n            chatId: chatId,\n            isGood: isGood,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of message sender identifiers, which can be used to send messages in a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of message sender identifiers, which can be used to send messages in a chat\n    public final func getChatAvailableMessageSenders(\n        chatId: Int64?,\n        completion: @escaping (Result<ChatMessageSenders, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatAvailableMessageSenders(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of message sender identifiers, which can be used to send messages in a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of message sender identifiers, which can be used to send messages in a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatAvailableMessageSenders(chatId: Int64?) async throws -> ChatMessageSenders {\n        let query = GetChatAvailableMessageSenders(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Selects a message sender to send messages in a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageSenderId: New message sender for the chat\n    public final func setChatMessageSender(\n        chatId: Int64?,\n        messageSenderId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatMessageSender(\n            chatId: chatId,\n            messageSenderId: messageSenderId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Selects a message sender to send messages in a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageSenderId: New message sender for the chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatMessageSender(\n        chatId: Int64?,\n        messageSenderId: MessageSender?\n    ) async throws -> Ok {\n        let query = SetChatMessageSender(\n            chatId: chatId,\n            messageSenderId: messageSenderId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends a message. Returns the sent message\n    /// - Parameter chatId: Target chat\n    /// - Parameter inputMessageContent: The content of the message to be sent\n    /// - Parameter options: Options to be used to send the message; pass null to use default options\n    /// - Parameter replyMarkup: Markup for replying to the message; pass null if none; for bots only\n    /// - Parameter replyTo: Information about the message or story to be replied; pass null if none\n    /// - Parameter topicId: Topic in which the message will be sent; pass null if none\n    /// - Returns: The sent message\n    public final func sendMessage(\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        options: MessageSendOptions?,\n        replyMarkup: ReplyMarkup?,\n        replyTo: InputMessageReplyTo?,\n        topicId: MessageTopic?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = SendMessage(\n            chatId: chatId,\n            inputMessageContent: inputMessageContent,\n            options: options,\n            replyMarkup: replyMarkup,\n            replyTo: replyTo,\n            topicId: topicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends a message. Returns the sent message\n    /// - Parameter chatId: Target chat\n    /// - Parameter inputMessageContent: The content of the message to be sent\n    /// - Parameter options: Options to be used to send the message; pass null to use default options\n    /// - Parameter replyMarkup: Markup for replying to the message; pass null if none; for bots only\n    /// - Parameter replyTo: Information about the message or story to be replied; pass null if none\n    /// - Parameter topicId: Topic in which the message will be sent; pass null if none\n    /// - Returns: The sent message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func sendMessage(\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        options: MessageSendOptions?,\n        replyMarkup: ReplyMarkup?,\n        replyTo: InputMessageReplyTo?,\n        topicId: MessageTopic?\n    ) async throws -> Message {\n        let query = SendMessage(\n            chatId: chatId,\n            inputMessageContent: inputMessageContent,\n            options: options,\n            replyMarkup: replyMarkup,\n            replyTo: replyTo,\n            topicId: topicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends 2-10 messages grouped together into an album. Currently, only audio, document, photo and video messages can be grouped into an album. Documents and audio files can be only grouped in an album with messages of the same type. Returns sent messages\n    /// - Parameter chatId: Target chat\n    /// - Parameter inputMessageContents: Contents of messages to be sent. At most 10 messages can be added to an album. All messages must have the same value of show_caption_above_media\n    /// - Parameter options: Options to be used to send the messages; pass null to use default options\n    /// - Parameter replyTo: Information about the message or story to be replied; pass null if none\n    /// - Parameter topicId: Topic in which the messages will be sent; pass null if none\n    /// - Returns: Sent messages\n    public final func sendMessageAlbum(\n        chatId: Int64?,\n        inputMessageContents: [InputMessageContent]?,\n        options: MessageSendOptions?,\n        replyTo: InputMessageReplyTo?,\n        topicId: MessageTopic?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = SendMessageAlbum(\n            chatId: chatId,\n            inputMessageContents: inputMessageContents,\n            options: options,\n            replyTo: replyTo,\n            topicId: topicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends 2-10 messages grouped together into an album. Currently, only audio, document, photo and video messages can be grouped into an album. Documents and audio files can be only grouped in an album with messages of the same type. Returns sent messages\n    /// - Parameter chatId: Target chat\n    /// - Parameter inputMessageContents: Contents of messages to be sent. At most 10 messages can be added to an album. All messages must have the same value of show_caption_above_media\n    /// - Parameter options: Options to be used to send the messages; pass null to use default options\n    /// - Parameter replyTo: Information about the message or story to be replied; pass null if none\n    /// - Parameter topicId: Topic in which the messages will be sent; pass null if none\n    /// - Returns: Sent messages\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func sendMessageAlbum(\n        chatId: Int64?,\n        inputMessageContents: [InputMessageContent]?,\n        options: MessageSendOptions?,\n        replyTo: InputMessageReplyTo?,\n        topicId: MessageTopic?\n    ) async throws -> Messages {\n        let query = SendMessageAlbum(\n            chatId: chatId,\n            inputMessageContents: inputMessageContents,\n            options: options,\n            replyTo: replyTo,\n            topicId: topicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Invites a bot to a chat (if it is not yet a member) and sends it the /start command; requires can_invite_users member right. Bots can't be invited to a private chat other than the chat with the bot. Bots can't be invited to channels (although they can be added as admins) and secret chats. Returns the sent message\n    /// - Parameter botUserId: Identifier of the bot\n    /// - Parameter chatId: Identifier of the target chat\n    /// - Parameter parameter: A hidden parameter sent to the bot for deep linking purposes (https://core.telegram.org/bots#deep-linking)\n    /// - Returns: The sent message\n    public final func sendBotStartMessage(\n        botUserId: Int64?,\n        chatId: Int64?,\n        parameter: String?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = SendBotStartMessage(\n            botUserId: botUserId,\n            chatId: chatId,\n            parameter: parameter\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Invites a bot to a chat (if it is not yet a member) and sends it the /start command; requires can_invite_users member right. Bots can't be invited to a private chat other than the chat with the bot. Bots can't be invited to channels (although they can be added as admins) and secret chats. Returns the sent message\n    /// - Parameter botUserId: Identifier of the bot\n    /// - Parameter chatId: Identifier of the target chat\n    /// - Parameter parameter: A hidden parameter sent to the bot for deep linking purposes (https://core.telegram.org/bots#deep-linking)\n    /// - Returns: The sent message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func sendBotStartMessage(\n        botUserId: Int64?,\n        chatId: Int64?,\n        parameter: String?\n    ) async throws -> Message {\n        let query = SendBotStartMessage(\n            botUserId: botUserId,\n            chatId: chatId,\n            parameter: parameter\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends the result of an inline query as a message. Returns the sent message. Always clears a chat draft message\n    /// - Parameter chatId: Target chat\n    /// - Parameter hideViaBot: Pass true to hide the bot, via which the message is sent. Can be used only for bots getOption(\"animation_search_bot_username\"), getOption(\"photo_search_bot_username\"), and getOption(\"venue_search_bot_username\")\n    /// - Parameter options: Options to be used to send the message; pass null to use default options\n    /// - Parameter queryId: Identifier of the inline query\n    /// - Parameter replyTo: Information about the message or story to be replied; pass null if none\n    /// - Parameter resultId: Identifier of the inline query result\n    /// - Parameter topicId: Topic in which the message will be sent; pass null if none\n    /// - Returns: The sent message\n    public final func sendInlineQueryResultMessage(\n        chatId: Int64?,\n        hideViaBot: Bool?,\n        options: MessageSendOptions?,\n        queryId: TdInt64?,\n        replyTo: InputMessageReplyTo?,\n        resultId: String?,\n        topicId: MessageTopic?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = SendInlineQueryResultMessage(\n            chatId: chatId,\n            hideViaBot: hideViaBot,\n            options: options,\n            queryId: queryId,\n            replyTo: replyTo,\n            resultId: resultId,\n            topicId: topicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends the result of an inline query as a message. Returns the sent message. Always clears a chat draft message\n    /// - Parameter chatId: Target chat\n    /// - Parameter hideViaBot: Pass true to hide the bot, via which the message is sent. Can be used only for bots getOption(\"animation_search_bot_username\"), getOption(\"photo_search_bot_username\"), and getOption(\"venue_search_bot_username\")\n    /// - Parameter options: Options to be used to send the message; pass null to use default options\n    /// - Parameter queryId: Identifier of the inline query\n    /// - Parameter replyTo: Information about the message or story to be replied; pass null if none\n    /// - Parameter resultId: Identifier of the inline query result\n    /// - Parameter topicId: Topic in which the message will be sent; pass null if none\n    /// - Returns: The sent message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func sendInlineQueryResultMessage(\n        chatId: Int64?,\n        hideViaBot: Bool?,\n        options: MessageSendOptions?,\n        queryId: TdInt64?,\n        replyTo: InputMessageReplyTo?,\n        resultId: String?,\n        topicId: MessageTopic?\n    ) async throws -> Message {\n        let query = SendInlineQueryResultMessage(\n            chatId: chatId,\n            hideViaBot: hideViaBot,\n            options: options,\n            queryId: queryId,\n            replyTo: replyTo,\n            resultId: resultId,\n            topicId: topicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Forwards previously sent messages. Returns the forwarded messages in the same order as the message identifiers passed in message_ids. If a message can't be forwarded, null will be returned instead of the message\n    /// - Parameter chatId: Identifier of the chat to which to forward messages\n    /// - Parameter fromChatId: Identifier of the chat from which to forward messages\n    /// - Parameter messageIds: Identifiers of the messages to forward. Message identifiers must be in a strictly increasing order. At most 100 messages can be forwarded simultaneously. A message can be forwarded only if messageProperties.can_be_forwarded\n    /// - Parameter options: Options to be used to send the messages; pass null to use default options\n    /// - Parameter removeCaption: Pass true to remove media captions of message copies. Ignored if send_copy is false\n    /// - Parameter sendCopy: Pass true to copy content of the messages without reference to the original sender. Always true if the messages are forwarded to a secret chat or are local. Use messageProperties.can_be_copied and messageProperties.can_be_copied_to_secret_chat to check whether the message is suitable\n    /// - Parameter topicId: Topic in which the messages will be forwarded; message threads aren't supported; pass null if none\n    /// - Returns: The forwarded messages in the same order as the message identifiers passed in message_ids. If a message can't be forwarded, null will be returned instead of the message\n    public final func forwardMessages(\n        chatId: Int64?,\n        fromChatId: Int64?,\n        messageIds: [Int64]?,\n        options: MessageSendOptions?,\n        removeCaption: Bool?,\n        sendCopy: Bool?,\n        topicId: MessageTopic?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = ForwardMessages(\n            chatId: chatId,\n            fromChatId: fromChatId,\n            messageIds: messageIds,\n            options: options,\n            removeCaption: removeCaption,\n            sendCopy: sendCopy,\n            topicId: topicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Forwards previously sent messages. Returns the forwarded messages in the same order as the message identifiers passed in message_ids. If a message can't be forwarded, null will be returned instead of the message\n    /// - Parameter chatId: Identifier of the chat to which to forward messages\n    /// - Parameter fromChatId: Identifier of the chat from which to forward messages\n    /// - Parameter messageIds: Identifiers of the messages to forward. Message identifiers must be in a strictly increasing order. At most 100 messages can be forwarded simultaneously. A message can be forwarded only if messageProperties.can_be_forwarded\n    /// - Parameter options: Options to be used to send the messages; pass null to use default options\n    /// - Parameter removeCaption: Pass true to remove media captions of message copies. Ignored if send_copy is false\n    /// - Parameter sendCopy: Pass true to copy content of the messages without reference to the original sender. Always true if the messages are forwarded to a secret chat or are local. Use messageProperties.can_be_copied and messageProperties.can_be_copied_to_secret_chat to check whether the message is suitable\n    /// - Parameter topicId: Topic in which the messages will be forwarded; message threads aren't supported; pass null if none\n    /// - Returns: The forwarded messages in the same order as the message identifiers passed in message_ids. If a message can't be forwarded, null will be returned instead of the message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func forwardMessages(\n        chatId: Int64?,\n        fromChatId: Int64?,\n        messageIds: [Int64]?,\n        options: MessageSendOptions?,\n        removeCaption: Bool?,\n        sendCopy: Bool?,\n        topicId: MessageTopic?\n    ) async throws -> Messages {\n        let query = ForwardMessages(\n            chatId: chatId,\n            fromChatId: fromChatId,\n            messageIds: messageIds,\n            options: options,\n            removeCaption: removeCaption,\n            sendCopy: sendCopy,\n            topicId: topicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends messages from a quick reply shortcut. Requires Telegram Business subscription. Can't be used to send paid messages\n    /// - Parameter chatId: Identifier of the chat to which to send messages. The chat must be a private chat with a regular user\n    /// - Parameter sendingId: Non-persistent identifier, which will be returned back in messageSendingStatePending object and can be used to match sent messages and corresponding updateNewMessage updates\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut\n    public final func sendQuickReplyShortcutMessages(\n        chatId: Int64?,\n        sendingId: Int?,\n        shortcutId: Int?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = SendQuickReplyShortcutMessages(\n            chatId: chatId,\n            sendingId: sendingId,\n            shortcutId: shortcutId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends messages from a quick reply shortcut. Requires Telegram Business subscription. Can't be used to send paid messages\n    /// - Parameter chatId: Identifier of the chat to which to send messages. The chat must be a private chat with a regular user\n    /// - Parameter sendingId: Non-persistent identifier, which will be returned back in messageSendingStatePending object and can be used to match sent messages and corresponding updateNewMessage updates\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func sendQuickReplyShortcutMessages(\n        chatId: Int64?,\n        sendingId: Int?,\n        shortcutId: Int?\n    ) async throws -> Messages {\n        let query = SendQuickReplyShortcutMessages(\n            chatId: chatId,\n            sendingId: sendingId,\n            shortcutId: shortcutId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Resends messages which failed to send. Can be called only for messages for which messageSendingStateFailed.can_retry is true and after specified in messageSendingStateFailed.retry_after time passed. If a message is re-sent, the corresponding failed to send message is deleted. Returns the sent messages in the same order as the message identifiers passed in message_ids. If a message can't be re-sent, null will be returned instead of the message\n    /// - Parameter chatId: Identifier of the chat to send messages\n    /// - Parameter messageIds: Identifiers of the messages to resend. Message identifiers must be in a strictly increasing order\n    /// - Parameter paidMessageStarCount: The number of Telegram Stars the user agreed to pay to send the messages. Ignored if messageSendingStateFailed.required_paid_message_star_count == 0\n    /// - Parameter quote: New manually chosen quote from the message to be replied; pass null if none. Ignored if more than one message is re-sent, or if messageSendingStateFailed.need_another_reply_quote == false\n    /// - Returns: The sent messages in the same order as the message identifiers passed in message_ids. If a message can't be re-sent, null will be returned instead of the message\n    public final func resendMessages(\n        chatId: Int64?,\n        messageIds: [Int64]?,\n        paidMessageStarCount: Int64?,\n        quote: InputTextQuote?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = ResendMessages(\n            chatId: chatId,\n            messageIds: messageIds,\n            paidMessageStarCount: paidMessageStarCount,\n            quote: quote\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Resends messages which failed to send. Can be called only for messages for which messageSendingStateFailed.can_retry is true and after specified in messageSendingStateFailed.retry_after time passed. If a message is re-sent, the corresponding failed to send message is deleted. Returns the sent messages in the same order as the message identifiers passed in message_ids. If a message can't be re-sent, null will be returned instead of the message\n    /// - Parameter chatId: Identifier of the chat to send messages\n    /// - Parameter messageIds: Identifiers of the messages to resend. Message identifiers must be in a strictly increasing order\n    /// - Parameter paidMessageStarCount: The number of Telegram Stars the user agreed to pay to send the messages. Ignored if messageSendingStateFailed.required_paid_message_star_count == 0\n    /// - Parameter quote: New manually chosen quote from the message to be replied; pass null if none. Ignored if more than one message is re-sent, or if messageSendingStateFailed.need_another_reply_quote == false\n    /// - Returns: The sent messages in the same order as the message identifiers passed in message_ids. If a message can't be re-sent, null will be returned instead of the message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func resendMessages(\n        chatId: Int64?,\n        messageIds: [Int64]?,\n        paidMessageStarCount: Int64?,\n        quote: InputTextQuote?\n    ) async throws -> Messages {\n        let query = ResendMessages(\n            chatId: chatId,\n            messageIds: messageIds,\n            paidMessageStarCount: paidMessageStarCount,\n            quote: quote\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds a local message to a chat. The message is persistent across application restarts only if the message database is used. Returns the added message\n    /// - Parameter chatId: Target chat; channel direct messages chats aren't supported\n    /// - Parameter disableNotification: Pass true to disable notification for the message\n    /// - Parameter inputMessageContent: The content of the message to be added\n    /// - Parameter replyTo: Information about the message or story to be replied; pass null if none\n    /// - Parameter senderId: Identifier of the sender of the message\n    /// - Returns: The added message\n    public final func addLocalMessage(\n        chatId: Int64?,\n        disableNotification: Bool?,\n        inputMessageContent: InputMessageContent?,\n        replyTo: InputMessageReplyTo?,\n        senderId: MessageSender?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = AddLocalMessage(\n            chatId: chatId,\n            disableNotification: disableNotification,\n            inputMessageContent: inputMessageContent,\n            replyTo: replyTo,\n            senderId: senderId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds a local message to a chat. The message is persistent across application restarts only if the message database is used. Returns the added message\n    /// - Parameter chatId: Target chat; channel direct messages chats aren't supported\n    /// - Parameter disableNotification: Pass true to disable notification for the message\n    /// - Parameter inputMessageContent: The content of the message to be added\n    /// - Parameter replyTo: Information about the message or story to be replied; pass null if none\n    /// - Parameter senderId: Identifier of the sender of the message\n    /// - Returns: The added message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func addLocalMessage(\n        chatId: Int64?,\n        disableNotification: Bool?,\n        inputMessageContent: InputMessageContent?,\n        replyTo: InputMessageReplyTo?,\n        senderId: MessageSender?\n    ) async throws -> Message {\n        let query = AddLocalMessage(\n            chatId: chatId,\n            disableNotification: disableNotification,\n            inputMessageContent: inputMessageContent,\n            replyTo: replyTo,\n            senderId: senderId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes messages\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageIds: Identifiers of the messages to be deleted. Use messageProperties.can_be_deleted_only_for_self and messageProperties.can_be_deleted_for_all_users to get suitable messages\n    /// - Parameter revoke: Pass true to delete messages for all chat members. Always true for supergroups, channels and secret chats\n    public final func deleteMessages(\n        chatId: Int64?,\n        messageIds: [Int64]?,\n        revoke: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteMessages(\n            chatId: chatId,\n            messageIds: messageIds,\n            revoke: revoke\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes messages\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageIds: Identifiers of the messages to be deleted. Use messageProperties.can_be_deleted_only_for_self and messageProperties.can_be_deleted_for_all_users to get suitable messages\n    /// - Parameter revoke: Pass true to delete messages for all chat members. Always true for supergroups, channels and secret chats\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteMessages(\n        chatId: Int64?,\n        messageIds: [Int64]?,\n        revoke: Bool?\n    ) async throws -> Ok {\n        let query = DeleteMessages(\n            chatId: chatId,\n            messageIds: messageIds,\n            revoke: revoke\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes all messages sent by the specified message sender in a chat. Supported only for supergroups; requires can_delete_messages administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter senderId: Identifier of the sender of messages to delete\n    public final func deleteChatMessagesBySender(\n        chatId: Int64?,\n        senderId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteChatMessagesBySender(\n            chatId: chatId,\n            senderId: senderId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes all messages sent by the specified message sender in a chat. Supported only for supergroups; requires can_delete_messages administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter senderId: Identifier of the sender of messages to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteChatMessagesBySender(\n        chatId: Int64?,\n        senderId: MessageSender?\n    ) async throws -> Ok {\n        let query = DeleteChatMessagesBySender(\n            chatId: chatId,\n            senderId: senderId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes all messages between the specified dates in a chat. Supported only for private chats and basic groups. Messages sent in the last 30 seconds will not be deleted\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter maxDate: The maximum date of the messages to delete\n    /// - Parameter minDate: The minimum date of the messages to delete\n    /// - Parameter revoke: Pass true to delete chat messages for all users; private chats only\n    public final func deleteChatMessagesByDate(\n        chatId: Int64?,\n        maxDate: Int?,\n        minDate: Int?,\n        revoke: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteChatMessagesByDate(\n            chatId: chatId,\n            maxDate: maxDate,\n            minDate: minDate,\n            revoke: revoke\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes all messages between the specified dates in a chat. Supported only for private chats and basic groups. Messages sent in the last 30 seconds will not be deleted\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter maxDate: The maximum date of the messages to delete\n    /// - Parameter minDate: The minimum date of the messages to delete\n    /// - Parameter revoke: Pass true to delete chat messages for all users; private chats only\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteChatMessagesByDate(\n        chatId: Int64?,\n        maxDate: Int?,\n        minDate: Int?,\n        revoke: Bool?\n    ) async throws -> Ok {\n        let query = DeleteChatMessagesByDate(\n            chatId: chatId,\n            maxDate: maxDate,\n            minDate: minDate,\n            revoke: revoke\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits the text of a message (or a text of a game message). Returns the edited message after the edit is completed on the server side\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter inputMessageContent: New text content of the message. Must be of type inputMessageText\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    /// - Returns: The edited message after the edit is completed on the server side\n    public final func editMessageText(\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = EditMessageText(\n            chatId: chatId,\n            inputMessageContent: inputMessageContent,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits the text of a message (or a text of a game message). Returns the edited message after the edit is completed on the server side\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter inputMessageContent: New text content of the message. Must be of type inputMessageText\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    /// - Returns: The edited message after the edit is completed on the server side\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func editMessageText(\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> Message {\n        let query = EditMessageText(\n            chatId: chatId,\n            inputMessageContent: inputMessageContent,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits the message content of a live location. Messages can be edited for a limited period of time specified in the live location. Returns the edited message after the edit is completed on the server side\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter heading: The new direction in which the location moves, in degrees; 1-360. Pass 0 if unknown\n    /// - Parameter livePeriod: New time relative to the message send date, for which the location can be updated, in seconds. If 0x7FFFFFFF specified, then the location can be updated forever. Otherwise, must not exceed the current live_period by more than a day, and the live location expiration date must remain in the next 90 days. Pass 0 to keep the current live_period\n    /// - Parameter location: New location content of the message; pass null to stop sharing the live location\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    /// - Parameter proximityAlertRadius: The new maximum distance for proximity alerts, in meters (0-100000). Pass 0 if the notification is disabled\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    /// - Returns: The edited message after the edit is completed on the server side\n    public final func editMessageLiveLocation(\n        chatId: Int64?,\n        heading: Int?,\n        livePeriod: Int?,\n        location: Location?,\n        messageId: Int64?,\n        proximityAlertRadius: Int?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = EditMessageLiveLocation(\n            chatId: chatId,\n            heading: heading,\n            livePeriod: livePeriod,\n            location: location,\n            messageId: messageId,\n            proximityAlertRadius: proximityAlertRadius,\n            replyMarkup: replyMarkup\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits the message content of a live location. Messages can be edited for a limited period of time specified in the live location. Returns the edited message after the edit is completed on the server side\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter heading: The new direction in which the location moves, in degrees; 1-360. Pass 0 if unknown\n    /// - Parameter livePeriod: New time relative to the message send date, for which the location can be updated, in seconds. If 0x7FFFFFFF specified, then the location can be updated forever. Otherwise, must not exceed the current live_period by more than a day, and the live location expiration date must remain in the next 90 days. Pass 0 to keep the current live_period\n    /// - Parameter location: New location content of the message; pass null to stop sharing the live location\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    /// - Parameter proximityAlertRadius: The new maximum distance for proximity alerts, in meters (0-100000). Pass 0 if the notification is disabled\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    /// - Returns: The edited message after the edit is completed on the server side\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func editMessageLiveLocation(\n        chatId: Int64?,\n        heading: Int?,\n        livePeriod: Int?,\n        location: Location?,\n        messageId: Int64?,\n        proximityAlertRadius: Int?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> Message {\n        let query = EditMessageLiveLocation(\n            chatId: chatId,\n            heading: heading,\n            livePeriod: livePeriod,\n            location: location,\n            messageId: messageId,\n            proximityAlertRadius: proximityAlertRadius,\n            replyMarkup: replyMarkup\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits the message content of a checklist. Returns the edited message after the edit is completed on the server side\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter checklist: The new checklist. If some tasks were completed, this information will be kept\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    /// - Returns: The edited message after the edit is completed on the server side\n    public final func editMessageChecklist(\n        chatId: Int64?,\n        checklist: InputChecklist?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = EditMessageChecklist(\n            chatId: chatId,\n            checklist: checklist,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits the message content of a checklist. Returns the edited message after the edit is completed on the server side\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter checklist: The new checklist. If some tasks were completed, this information will be kept\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    /// - Returns: The edited message after the edit is completed on the server side\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func editMessageChecklist(\n        chatId: Int64?,\n        checklist: InputChecklist?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> Message {\n        let query = EditMessageChecklist(\n            chatId: chatId,\n            checklist: checklist,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits the media content of a message, including message caption. If only the caption needs to be edited, use editMessageCaption instead. The type of message content in an album can't be changed with exception of replacing a photo with a video or vice versa. Returns the edited message after the edit is completed on the server side\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter inputMessageContent: New content of the message. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageDocument, inputMessagePhoto or inputMessageVideo\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_edit_media to check whether the message can be edited\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    /// - Returns: The edited message after the edit is completed on the server side\n    public final func editMessageMedia(\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = EditMessageMedia(\n            chatId: chatId,\n            inputMessageContent: inputMessageContent,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits the media content of a message, including message caption. If only the caption needs to be edited, use editMessageCaption instead. The type of message content in an album can't be changed with exception of replacing a photo with a video or vice versa. Returns the edited message after the edit is completed on the server side\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter inputMessageContent: New content of the message. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageDocument, inputMessagePhoto or inputMessageVideo\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_edit_media to check whether the message can be edited\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    /// - Returns: The edited message after the edit is completed on the server side\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func editMessageMedia(\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> Message {\n        let query = EditMessageMedia(\n            chatId: chatId,\n            inputMessageContent: inputMessageContent,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits the message content caption. Returns the edited message after the edit is completed on the server side\n    /// - Parameter caption: New message content caption; 0-getOption(\"message_caption_length_max\") characters; pass null to remove caption\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    /// - Parameter showCaptionAboveMedia: Pass true to show the caption above the media; otherwise, the caption will be shown below the media. May be true only for animation, photo, and video messages\n    /// - Returns: The edited message after the edit is completed on the server side\n    public final func editMessageCaption(\n        caption: FormattedText?,\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        showCaptionAboveMedia: Bool?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = EditMessageCaption(\n            caption: caption,\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup,\n            showCaptionAboveMedia: showCaptionAboveMedia\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits the message content caption. Returns the edited message after the edit is completed on the server side\n    /// - Parameter caption: New message content caption; 0-getOption(\"message_caption_length_max\") characters; pass null to remove caption\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    /// - Parameter showCaptionAboveMedia: Pass true to show the caption above the media; otherwise, the caption will be shown below the media. May be true only for animation, photo, and video messages\n    /// - Returns: The edited message after the edit is completed on the server side\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func editMessageCaption(\n        caption: FormattedText?,\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        showCaptionAboveMedia: Bool?\n    ) async throws -> Message {\n        let query = EditMessageCaption(\n            caption: caption,\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup,\n            showCaptionAboveMedia: showCaptionAboveMedia\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits the message reply markup; for bots only. Returns the edited message after the edit is completed on the server side\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    /// - Returns: The edited message after the edit is completed on the server side\n    public final func editMessageReplyMarkup(\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = EditMessageReplyMarkup(\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits the message reply markup; for bots only. Returns the edited message after the edit is completed on the server side\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    /// - Returns: The edited message after the edit is completed on the server side\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func editMessageReplyMarkup(\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> Message {\n        let query = EditMessageReplyMarkup(\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits the text of an inline text or game message sent via a bot; for bots only\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter inputMessageContent: New text content of the message. Must be of type inputMessageText\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    public final func editInlineMessageText(\n        inlineMessageId: String?,\n        inputMessageContent: InputMessageContent?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditInlineMessageText(\n            inlineMessageId: inlineMessageId,\n            inputMessageContent: inputMessageContent,\n            replyMarkup: replyMarkup\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits the text of an inline text or game message sent via a bot; for bots only\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter inputMessageContent: New text content of the message. Must be of type inputMessageText\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func editInlineMessageText(\n        inlineMessageId: String?,\n        inputMessageContent: InputMessageContent?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> Ok {\n        let query = EditInlineMessageText(\n            inlineMessageId: inlineMessageId,\n            inputMessageContent: inputMessageContent,\n            replyMarkup: replyMarkup\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits the content of a live location in an inline message sent via a bot; for bots only\n    /// - Parameter heading: The new direction in which the location moves, in degrees; 1-360. Pass 0 if unknown\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter livePeriod: New time relative to the message send date, for which the location can be updated, in seconds. If 0x7FFFFFFF specified, then the location can be updated forever. Otherwise, must not exceed the current live_period by more than a day, and the live location expiration date must remain in the next 90 days. Pass 0 to keep the current live_period\n    /// - Parameter location: New location content of the message; pass null to stop sharing the live location\n    /// - Parameter proximityAlertRadius: The new maximum distance for proximity alerts, in meters (0-100000). Pass 0 if the notification is disabled\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    public final func editInlineMessageLiveLocation(\n        heading: Int?,\n        inlineMessageId: String?,\n        livePeriod: Int?,\n        location: Location?,\n        proximityAlertRadius: Int?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditInlineMessageLiveLocation(\n            heading: heading,\n            inlineMessageId: inlineMessageId,\n            livePeriod: livePeriod,\n            location: location,\n            proximityAlertRadius: proximityAlertRadius,\n            replyMarkup: replyMarkup\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits the content of a live location in an inline message sent via a bot; for bots only\n    /// - Parameter heading: The new direction in which the location moves, in degrees; 1-360. Pass 0 if unknown\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter livePeriod: New time relative to the message send date, for which the location can be updated, in seconds. If 0x7FFFFFFF specified, then the location can be updated forever. Otherwise, must not exceed the current live_period by more than a day, and the live location expiration date must remain in the next 90 days. Pass 0 to keep the current live_period\n    /// - Parameter location: New location content of the message; pass null to stop sharing the live location\n    /// - Parameter proximityAlertRadius: The new maximum distance for proximity alerts, in meters (0-100000). Pass 0 if the notification is disabled\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func editInlineMessageLiveLocation(\n        heading: Int?,\n        inlineMessageId: String?,\n        livePeriod: Int?,\n        location: Location?,\n        proximityAlertRadius: Int?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> Ok {\n        let query = EditInlineMessageLiveLocation(\n            heading: heading,\n            inlineMessageId: inlineMessageId,\n            livePeriod: livePeriod,\n            location: location,\n            proximityAlertRadius: proximityAlertRadius,\n            replyMarkup: replyMarkup\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits the media content of a message with a text, an animation, an audio, a document, a photo or a video in an inline message sent via a bot; for bots only\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter inputMessageContent: New content of the message. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageDocument, inputMessagePhoto or inputMessageVideo\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    public final func editInlineMessageMedia(\n        inlineMessageId: String?,\n        inputMessageContent: InputMessageContent?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditInlineMessageMedia(\n            inlineMessageId: inlineMessageId,\n            inputMessageContent: inputMessageContent,\n            replyMarkup: replyMarkup\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits the media content of a message with a text, an animation, an audio, a document, a photo or a video in an inline message sent via a bot; for bots only\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter inputMessageContent: New content of the message. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageDocument, inputMessagePhoto or inputMessageVideo\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func editInlineMessageMedia(\n        inlineMessageId: String?,\n        inputMessageContent: InputMessageContent?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> Ok {\n        let query = EditInlineMessageMedia(\n            inlineMessageId: inlineMessageId,\n            inputMessageContent: inputMessageContent,\n            replyMarkup: replyMarkup\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits the caption of an inline message sent via a bot; for bots only\n    /// - Parameter caption: New message content caption; pass null to remove caption; 0-getOption(\"message_caption_length_max\") characters\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    /// - Parameter showCaptionAboveMedia: Pass true to show the caption above the media; otherwise, the caption will be shown below the media. May be true only for animation, photo, and video messages\n    public final func editInlineMessageCaption(\n        caption: FormattedText?,\n        inlineMessageId: String?,\n        replyMarkup: ReplyMarkup?,\n        showCaptionAboveMedia: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditInlineMessageCaption(\n            caption: caption,\n            inlineMessageId: inlineMessageId,\n            replyMarkup: replyMarkup,\n            showCaptionAboveMedia: showCaptionAboveMedia\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits the caption of an inline message sent via a bot; for bots only\n    /// - Parameter caption: New message content caption; pass null to remove caption; 0-getOption(\"message_caption_length_max\") characters\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    /// - Parameter showCaptionAboveMedia: Pass true to show the caption above the media; otherwise, the caption will be shown below the media. May be true only for animation, photo, and video messages\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func editInlineMessageCaption(\n        caption: FormattedText?,\n        inlineMessageId: String?,\n        replyMarkup: ReplyMarkup?,\n        showCaptionAboveMedia: Bool?\n    ) async throws -> Ok {\n        let query = EditInlineMessageCaption(\n            caption: caption,\n            inlineMessageId: inlineMessageId,\n            replyMarkup: replyMarkup,\n            showCaptionAboveMedia: showCaptionAboveMedia\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits the reply markup of an inline message sent via a bot; for bots only\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    public final func editInlineMessageReplyMarkup(\n        inlineMessageId: String?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditInlineMessageReplyMarkup(\n            inlineMessageId: inlineMessageId,\n            replyMarkup: replyMarkup\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits the reply markup of an inline message sent via a bot; for bots only\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func editInlineMessageReplyMarkup(\n        inlineMessageId: String?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> Ok {\n        let query = EditInlineMessageReplyMarkup(\n            inlineMessageId: inlineMessageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits the time when a scheduled message will be sent. Scheduling state of all messages in the same album or forwarded together with the message will be also changed\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_edit_scheduling_state to check whether the message is suitable\n    /// - Parameter schedulingState: The new message scheduling state; pass null to send the message immediately. Must be null for messages in the state messageSchedulingStateSendWhenVideoProcessed\n    public final func editMessageSchedulingState(\n        chatId: Int64?,\n        messageId: Int64?,\n        schedulingState: MessageSchedulingState?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditMessageSchedulingState(\n            chatId: chatId,\n            messageId: messageId,\n            schedulingState: schedulingState\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits the time when a scheduled message will be sent. Scheduling state of all messages in the same album or forwarded together with the message will be also changed\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_edit_scheduling_state to check whether the message is suitable\n    /// - Parameter schedulingState: The new message scheduling state; pass null to send the message immediately. Must be null for messages in the state messageSchedulingStateSendWhenVideoProcessed\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func editMessageSchedulingState(\n        chatId: Int64?,\n        messageId: Int64?,\n        schedulingState: MessageSchedulingState?\n    ) async throws -> Ok {\n        let query = EditMessageSchedulingState(\n            chatId: chatId,\n            messageId: messageId,\n            schedulingState: schedulingState\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the fact-check of a message. Can be only used if messageProperties.can_set_fact_check == true\n    /// - Parameter chatId: The channel chat the message belongs to\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter text: New text of the fact-check; 0-getOption(\"fact_check_length_max\") characters; pass null to remove it. Only Bold, Italic, and TextUrl entities with https://t.me/ links are supported\n    public final func setMessageFactCheck(\n        chatId: Int64?,\n        messageId: Int64?,\n        text: FormattedText?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetMessageFactCheck(\n            chatId: chatId,\n            messageId: messageId,\n            text: text\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the fact-check of a message. Can be only used if messageProperties.can_set_fact_check == true\n    /// - Parameter chatId: The channel chat the message belongs to\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter text: New text of the fact-check; 0-getOption(\"fact_check_length_max\") characters; pass null to remove it. Only Bold, Italic, and TextUrl entities with https://t.me/ links are supported\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setMessageFactCheck(\n        chatId: Int64?,\n        messageId: Int64?,\n        text: FormattedText?\n    ) async throws -> Ok {\n        let query = SetMessageFactCheck(\n            chatId: chatId,\n            messageId: messageId,\n            text: text\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends a message on behalf of a business account; for bots only. Returns the message after it was sent\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request\n    /// - Parameter chatId: Target chat\n    /// - Parameter disableNotification: Pass true to disable notification for the message\n    /// - Parameter effectId: Identifier of the effect to apply to the message\n    /// - Parameter inputMessageContent: The content of the message to be sent\n    /// - Parameter protectContent: Pass true if the content of the message must be protected from forwarding and saving\n    /// - Parameter replyMarkup: Markup for replying to the message; pass null if none\n    /// - Parameter replyTo: Information about the message to be replied; pass null if none\n    /// - Returns: The message after it was sent\n    public final func sendBusinessMessage(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        disableNotification: Bool?,\n        effectId: TdInt64?,\n        inputMessageContent: InputMessageContent?,\n        protectContent: Bool?,\n        replyMarkup: ReplyMarkup?,\n        replyTo: InputMessageReplyTo?,\n        completion: @escaping (Result<BusinessMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = SendBusinessMessage(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            disableNotification: disableNotification,\n            effectId: effectId,\n            inputMessageContent: inputMessageContent,\n            protectContent: protectContent,\n            replyMarkup: replyMarkup,\n            replyTo: replyTo\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends a message on behalf of a business account; for bots only. Returns the message after it was sent\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request\n    /// - Parameter chatId: Target chat\n    /// - Parameter disableNotification: Pass true to disable notification for the message\n    /// - Parameter effectId: Identifier of the effect to apply to the message\n    /// - Parameter inputMessageContent: The content of the message to be sent\n    /// - Parameter protectContent: Pass true if the content of the message must be protected from forwarding and saving\n    /// - Parameter replyMarkup: Markup for replying to the message; pass null if none\n    /// - Parameter replyTo: Information about the message to be replied; pass null if none\n    /// - Returns: The message after it was sent\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func sendBusinessMessage(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        disableNotification: Bool?,\n        effectId: TdInt64?,\n        inputMessageContent: InputMessageContent?,\n        protectContent: Bool?,\n        replyMarkup: ReplyMarkup?,\n        replyTo: InputMessageReplyTo?\n    ) async throws -> BusinessMessage {\n        let query = SendBusinessMessage(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            disableNotification: disableNotification,\n            effectId: effectId,\n            inputMessageContent: inputMessageContent,\n            protectContent: protectContent,\n            replyMarkup: replyMarkup,\n            replyTo: replyTo\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends 2-10 messages grouped together into an album on behalf of a business account; for bots only. Currently, only audio, document, photo and video messages can be grouped into an album. Documents and audio files can be only grouped in an album with messages of the same type. Returns sent messages\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request\n    /// - Parameter chatId: Target chat\n    /// - Parameter disableNotification: Pass true to disable notification for the message\n    /// - Parameter effectId: Identifier of the effect to apply to the message\n    /// - Parameter inputMessageContents: Contents of messages to be sent. At most 10 messages can be added to an album. All messages must have the same value of show_caption_above_media\n    /// - Parameter protectContent: Pass true if the content of the message must be protected from forwarding and saving\n    /// - Parameter replyTo: Information about the message to be replied; pass null if none\n    /// - Returns: Sent messages\n    public final func sendBusinessMessageAlbum(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        disableNotification: Bool?,\n        effectId: TdInt64?,\n        inputMessageContents: [InputMessageContent]?,\n        protectContent: Bool?,\n        replyTo: InputMessageReplyTo?,\n        completion: @escaping (Result<BusinessMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = SendBusinessMessageAlbum(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            disableNotification: disableNotification,\n            effectId: effectId,\n            inputMessageContents: inputMessageContents,\n            protectContent: protectContent,\n            replyTo: replyTo\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends 2-10 messages grouped together into an album on behalf of a business account; for bots only. Currently, only audio, document, photo and video messages can be grouped into an album. Documents and audio files can be only grouped in an album with messages of the same type. Returns sent messages\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request\n    /// - Parameter chatId: Target chat\n    /// - Parameter disableNotification: Pass true to disable notification for the message\n    /// - Parameter effectId: Identifier of the effect to apply to the message\n    /// - Parameter inputMessageContents: Contents of messages to be sent. At most 10 messages can be added to an album. All messages must have the same value of show_caption_above_media\n    /// - Parameter protectContent: Pass true if the content of the message must be protected from forwarding and saving\n    /// - Parameter replyTo: Information about the message to be replied; pass null if none\n    /// - Returns: Sent messages\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func sendBusinessMessageAlbum(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        disableNotification: Bool?,\n        effectId: TdInt64?,\n        inputMessageContents: [InputMessageContent]?,\n        protectContent: Bool?,\n        replyTo: InputMessageReplyTo?\n    ) async throws -> BusinessMessages {\n        let query = SendBusinessMessageAlbum(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            disableNotification: disableNotification,\n            effectId: effectId,\n            inputMessageContents: inputMessageContents,\n            protectContent: protectContent,\n            replyTo: replyTo\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits the text of a text or game message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter inputMessageContent: New text content of the message. Must be of type inputMessageText\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    public final func editBusinessMessageText(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<BusinessMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = EditBusinessMessageText(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            inputMessageContent: inputMessageContent,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits the text of a text or game message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter inputMessageContent: New text content of the message. Must be of type inputMessageText\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func editBusinessMessageText(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> BusinessMessage {\n        let query = EditBusinessMessageText(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            inputMessageContent: inputMessageContent,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits the content of a live location in a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter heading: The new direction in which the location moves, in degrees; 1-360. Pass 0 if unknown\n    /// - Parameter livePeriod: New time relative to the message send date, for which the location can be updated, in seconds. If 0x7FFFFFFF specified, then the location can be updated forever. Otherwise, must not exceed the current live_period by more than a day, and the live location expiration date must remain in the next 90 days. Pass 0 to keep the current live_period\n    /// - Parameter location: New location content of the message; pass null to stop sharing the live location\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter proximityAlertRadius: The new maximum distance for proximity alerts, in meters (0-100000). Pass 0 if the notification is disabled\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    public final func editBusinessMessageLiveLocation(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        heading: Int?,\n        livePeriod: Int?,\n        location: Location?,\n        messageId: Int64?,\n        proximityAlertRadius: Int?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<BusinessMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = EditBusinessMessageLiveLocation(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            heading: heading,\n            livePeriod: livePeriod,\n            location: location,\n            messageId: messageId,\n            proximityAlertRadius: proximityAlertRadius,\n            replyMarkup: replyMarkup\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits the content of a live location in a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter heading: The new direction in which the location moves, in degrees; 1-360. Pass 0 if unknown\n    /// - Parameter livePeriod: New time relative to the message send date, for which the location can be updated, in seconds. If 0x7FFFFFFF specified, then the location can be updated forever. Otherwise, must not exceed the current live_period by more than a day, and the live location expiration date must remain in the next 90 days. Pass 0 to keep the current live_period\n    /// - Parameter location: New location content of the message; pass null to stop sharing the live location\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter proximityAlertRadius: The new maximum distance for proximity alerts, in meters (0-100000). Pass 0 if the notification is disabled\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func editBusinessMessageLiveLocation(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        heading: Int?,\n        livePeriod: Int?,\n        location: Location?,\n        messageId: Int64?,\n        proximityAlertRadius: Int?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> BusinessMessage {\n        let query = EditBusinessMessageLiveLocation(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            heading: heading,\n            livePeriod: livePeriod,\n            location: location,\n            messageId: messageId,\n            proximityAlertRadius: proximityAlertRadius,\n            replyMarkup: replyMarkup\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits the content of a checklist in a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter checklist: The new checklist. If some tasks were completed, this information will be kept\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    public final func editBusinessMessageChecklist(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        checklist: InputChecklist?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<BusinessMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = EditBusinessMessageChecklist(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            checklist: checklist,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits the content of a checklist in a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter checklist: The new checklist. If some tasks were completed, this information will be kept\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func editBusinessMessageChecklist(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        checklist: InputChecklist?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> BusinessMessage {\n        let query = EditBusinessMessageChecklist(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            checklist: checklist,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits the media content of a message with a text, an animation, an audio, a document, a photo or a video in a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter inputMessageContent: New content of the message. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageDocument, inputMessagePhoto or inputMessageVideo\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    public final func editBusinessMessageMedia(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<BusinessMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = EditBusinessMessageMedia(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            inputMessageContent: inputMessageContent,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits the media content of a message with a text, an animation, an audio, a document, a photo or a video in a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter inputMessageContent: New content of the message. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageDocument, inputMessagePhoto or inputMessageVideo\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func editBusinessMessageMedia(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> BusinessMessage {\n        let query = EditBusinessMessageMedia(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            inputMessageContent: inputMessageContent,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits the caption of a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter caption: New message content caption; pass null to remove caption; 0-getOption(\"message_caption_length_max\") characters\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    /// - Parameter showCaptionAboveMedia: Pass true to show the caption above the media; otherwise, the caption will be shown below the media. May be true only for animation, photo, and video messages\n    public final func editBusinessMessageCaption(\n        businessConnectionId: String?,\n        caption: FormattedText?,\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        showCaptionAboveMedia: Bool?,\n        completion: @escaping (Result<BusinessMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = EditBusinessMessageCaption(\n            businessConnectionId: businessConnectionId,\n            caption: caption,\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup,\n            showCaptionAboveMedia: showCaptionAboveMedia\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits the caption of a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter caption: New message content caption; pass null to remove caption; 0-getOption(\"message_caption_length_max\") characters\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    /// - Parameter showCaptionAboveMedia: Pass true to show the caption above the media; otherwise, the caption will be shown below the media. May be true only for animation, photo, and video messages\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func editBusinessMessageCaption(\n        businessConnectionId: String?,\n        caption: FormattedText?,\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        showCaptionAboveMedia: Bool?\n    ) async throws -> BusinessMessage {\n        let query = EditBusinessMessageCaption(\n            businessConnectionId: businessConnectionId,\n            caption: caption,\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup,\n            showCaptionAboveMedia: showCaptionAboveMedia\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits the reply markup of a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    public final func editBusinessMessageReplyMarkup(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<BusinessMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = EditBusinessMessageReplyMarkup(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits the reply markup of a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func editBusinessMessageReplyMarkup(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> BusinessMessage {\n        let query = EditBusinessMessageReplyMarkup(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Stops a poll sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message with the poll was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message containing the poll\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    public final func stopBusinessPoll(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<BusinessMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = StopBusinessPoll(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Stops a poll sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message with the poll was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message containing the poll\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func stopBusinessPoll(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> BusinessMessage {\n        let query = StopBusinessPoll(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Pins or unpins a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter isPinned: Pass true to pin the message, pass false to unpin it\n    /// - Parameter messageId: Identifier of the message\n    public final func setBusinessMessageIsPinned(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        isPinned: Bool?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessMessageIsPinned(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            isPinned: isPinned,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Pins or unpins a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter isPinned: Pass true to pin the message, pass false to unpin it\n    /// - Parameter messageId: Identifier of the message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setBusinessMessageIsPinned(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        isPinned: Bool?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = SetBusinessMessageIsPinned(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            isPinned: isPinned,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Reads a message on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection through which the message was received\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message\n    public final func readBusinessMessage(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReadBusinessMessage(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Reads a message on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection through which the message was received\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func readBusinessMessage(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = ReadBusinessMessage(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes messages on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection through which the messages were received\n    /// - Parameter messageIds: Identifier of the messages\n    public final func deleteBusinessMessages(\n        businessConnectionId: String?,\n        messageIds: [Int64]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteBusinessMessages(\n            businessConnectionId: businessConnectionId,\n            messageIds: messageIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes messages on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection through which the messages were received\n    /// - Parameter messageIds: Identifier of the messages\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteBusinessMessages(\n        businessConnectionId: String?,\n        messageIds: [Int64]?\n    ) async throws -> Ok {\n        let query = DeleteBusinessMessages(\n            businessConnectionId: businessConnectionId,\n            messageIds: messageIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes a story posted by the bot on behalf of a business account; for bots only\n    /// - Parameter areas: New clickable rectangle areas to be shown on the story media\n    /// - Parameter caption: New story caption\n    /// - Parameter content: New content of the story\n    /// - Parameter privacySettings: The new privacy settings for the story\n    /// - Parameter storyId: Identifier of the story to edit\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    public final func editBusinessStory(\n        areas: InputStoryAreas?,\n        caption: FormattedText?,\n        content: InputStoryContent?,\n        privacySettings: StoryPrivacySettings?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<Story, Swift.Error>) -> Void\n    ) throws {\n        let query = EditBusinessStory(\n            areas: areas,\n            caption: caption,\n            content: content,\n            privacySettings: privacySettings,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes a story posted by the bot on behalf of a business account; for bots only\n    /// - Parameter areas: New clickable rectangle areas to be shown on the story media\n    /// - Parameter caption: New story caption\n    /// - Parameter content: New content of the story\n    /// - Parameter privacySettings: The new privacy settings for the story\n    /// - Parameter storyId: Identifier of the story to edit\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func editBusinessStory(\n        areas: InputStoryAreas?,\n        caption: FormattedText?,\n        content: InputStoryContent?,\n        privacySettings: StoryPrivacySettings?,\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) async throws -> Story {\n        let query = EditBusinessStory(\n            areas: areas,\n            caption: caption,\n            content: content,\n            privacySettings: privacySettings,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes a story posted by the bot on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter storyId: Identifier of the story to delete\n    public final func deleteBusinessStory(\n        businessConnectionId: String?,\n        storyId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteBusinessStory(\n            businessConnectionId: businessConnectionId,\n            storyId: storyId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes a story posted by the bot on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter storyId: Identifier of the story to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteBusinessStory(\n        businessConnectionId: String?,\n        storyId: Int?\n    ) async throws -> Ok {\n        let query = DeleteBusinessStory(\n            businessConnectionId: businessConnectionId,\n            storyId: storyId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the first and last name of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter firstName: The new value of the first name for the business account; 1-64 characters\n    /// - Parameter lastName: The new value of the optional last name for the business account; 0-64 characters\n    public final func setBusinessAccountName(\n        businessConnectionId: String?,\n        firstName: String?,\n        lastName: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessAccountName(\n            businessConnectionId: businessConnectionId,\n            firstName: firstName,\n            lastName: lastName\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the first and last name of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter firstName: The new value of the first name for the business account; 1-64 characters\n    /// - Parameter lastName: The new value of the optional last name for the business account; 0-64 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setBusinessAccountName(\n        businessConnectionId: String?,\n        firstName: String?,\n        lastName: String?\n    ) async throws -> Ok {\n        let query = SetBusinessAccountName(\n            businessConnectionId: businessConnectionId,\n            firstName: firstName,\n            lastName: lastName\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the bio of a business account; for bots only\n    /// - Parameter bio: The new value of the bio; 0-getOption(\"bio_length_max\") characters without line feeds\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    public final func setBusinessAccountBio(\n        bio: String?,\n        businessConnectionId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessAccountBio(\n            bio: bio,\n            businessConnectionId: businessConnectionId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the bio of a business account; for bots only\n    /// - Parameter bio: The new value of the bio; 0-getOption(\"bio_length_max\") characters without line feeds\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setBusinessAccountBio(\n        bio: String?,\n        businessConnectionId: String?\n    ) async throws -> Ok {\n        let query = SetBusinessAccountBio(\n            bio: bio,\n            businessConnectionId: businessConnectionId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes a profile photo of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter isPublic: Pass true to set the public photo, which will be visible even if the main photo is hidden by privacy settings\n    /// - Parameter photo: Profile photo to set; pass null to remove the photo\n    public final func setBusinessAccountProfilePhoto(\n        businessConnectionId: String?,\n        isPublic: Bool?,\n        photo: InputChatPhoto?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessAccountProfilePhoto(\n            businessConnectionId: businessConnectionId,\n            isPublic: isPublic,\n            photo: photo\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes a profile photo of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter isPublic: Pass true to set the public photo, which will be visible even if the main photo is hidden by privacy settings\n    /// - Parameter photo: Profile photo to set; pass null to remove the photo\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setBusinessAccountProfilePhoto(\n        businessConnectionId: String?,\n        isPublic: Bool?,\n        photo: InputChatPhoto?\n    ) async throws -> Ok {\n        let query = SetBusinessAccountProfilePhoto(\n            businessConnectionId: businessConnectionId,\n            isPublic: isPublic,\n            photo: photo\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the editable username of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter username: The new value of the username\n    public final func setBusinessAccountUsername(\n        businessConnectionId: String?,\n        username: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessAccountUsername(\n            businessConnectionId: businessConnectionId,\n            username: username\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the editable username of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter username: The new value of the username\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setBusinessAccountUsername(\n        businessConnectionId: String?,\n        username: String?\n    ) async throws -> Ok {\n        let query = SetBusinessAccountUsername(\n            businessConnectionId: businessConnectionId,\n            username: username\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes settings for gift receiving of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter settings: The new settings\n    public final func setBusinessAccountGiftSettings(\n        businessConnectionId: String?,\n        settings: GiftSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessAccountGiftSettings(\n            businessConnectionId: businessConnectionId,\n            settings: settings\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes settings for gift receiving of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter settings: The new settings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setBusinessAccountGiftSettings(\n        businessConnectionId: String?,\n        settings: GiftSettings?\n    ) async throws -> Ok {\n        let query = SetBusinessAccountGiftSettings(\n            businessConnectionId: businessConnectionId,\n            settings: settings\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the Telegram Star amount owned by a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Returns: The Telegram Star amount owned by a business account\n    public final func getBusinessAccountStarAmount(\n        businessConnectionId: String?,\n        completion: @escaping (Result<StarAmount, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBusinessAccountStarAmount(\n            businessConnectionId: businessConnectionId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the Telegram Star amount owned by a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Returns: The Telegram Star amount owned by a business account\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getBusinessAccountStarAmount(businessConnectionId: String?) async throws -> StarAmount {\n        let query = GetBusinessAccountStarAmount(\n            businessConnectionId: businessConnectionId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Transfers Telegram Stars from the business account to the business bot; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter starCount: Number of Telegram Stars to transfer\n    public final func transferBusinessAccountStars(\n        businessConnectionId: String?,\n        starCount: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = TransferBusinessAccountStars(\n            businessConnectionId: businessConnectionId,\n            starCount: starCount\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Transfers Telegram Stars from the business account to the business bot; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter starCount: Number of Telegram Stars to transfer\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func transferBusinessAccountStars(\n        businessConnectionId: String?,\n        starCount: Int64?\n    ) async throws -> Ok {\n        let query = TransferBusinessAccountStars(\n            businessConnectionId: businessConnectionId,\n            starCount: starCount\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks validness of a name for a quick reply shortcut. Can be called synchronously\n    /// - Parameter name: The name of the shortcut; 1-32 characters\n    public final func checkQuickReplyShortcutName(\n        name: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckQuickReplyShortcutName(\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks validness of a name for a quick reply shortcut. Can be called synchronously\n    /// - Parameter name: The name of the shortcut; 1-32 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func checkQuickReplyShortcutName(name: String?) async throws -> Ok {\n        let query = CheckQuickReplyShortcutName(\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Loads quick reply shortcuts created by the current user. The loaded data will be sent through updateQuickReplyShortcut and updateQuickReplyShortcuts\n    public final func loadQuickReplyShortcuts(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = LoadQuickReplyShortcuts()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Loads quick reply shortcuts created by the current user. The loaded data will be sent through updateQuickReplyShortcut and updateQuickReplyShortcuts\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func loadQuickReplyShortcuts() async throws -> Ok {\n        let query = LoadQuickReplyShortcuts()\n        return try await self.run(query: query)\n    }\n\n    /// Changes name of a quick reply shortcut\n    /// - Parameter name: New name for the shortcut. Use checkQuickReplyShortcutName to check its validness\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut\n    public final func setQuickReplyShortcutName(\n        name: String?,\n        shortcutId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetQuickReplyShortcutName(\n            name: name,\n            shortcutId: shortcutId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes name of a quick reply shortcut\n    /// - Parameter name: New name for the shortcut. Use checkQuickReplyShortcutName to check its validness\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setQuickReplyShortcutName(\n        name: String?,\n        shortcutId: Int?\n    ) async throws -> Ok {\n        let query = SetQuickReplyShortcutName(\n            name: name,\n            shortcutId: shortcutId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes a quick reply shortcut\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut\n    public final func deleteQuickReplyShortcut(\n        shortcutId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteQuickReplyShortcut(\n            shortcutId: shortcutId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes a quick reply shortcut\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteQuickReplyShortcut(shortcutId: Int?) async throws -> Ok {\n        let query = DeleteQuickReplyShortcut(\n            shortcutId: shortcutId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the order of quick reply shortcuts\n    /// - Parameter shortcutIds: The new order of quick reply shortcuts\n    public final func reorderQuickReplyShortcuts(\n        shortcutIds: [Int]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderQuickReplyShortcuts(\n            shortcutIds: shortcutIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the order of quick reply shortcuts\n    /// - Parameter shortcutIds: The new order of quick reply shortcuts\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func reorderQuickReplyShortcuts(shortcutIds: [Int]?) async throws -> Ok {\n        let query = ReorderQuickReplyShortcuts(\n            shortcutIds: shortcutIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Loads quick reply messages that can be sent by a given quick reply shortcut. The loaded messages will be sent through updateQuickReplyShortcutMessages\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut\n    public final func loadQuickReplyShortcutMessages(\n        shortcutId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = LoadQuickReplyShortcutMessages(\n            shortcutId: shortcutId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Loads quick reply messages that can be sent by a given quick reply shortcut. The loaded messages will be sent through updateQuickReplyShortcutMessages\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func loadQuickReplyShortcutMessages(shortcutId: Int?) async throws -> Ok {\n        let query = LoadQuickReplyShortcutMessages(\n            shortcutId: shortcutId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes specified quick reply messages\n    /// - Parameter messageIds: Unique identifiers of the messages\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut to which the messages belong\n    public final func deleteQuickReplyShortcutMessages(\n        messageIds: [Int64]?,\n        shortcutId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteQuickReplyShortcutMessages(\n            messageIds: messageIds,\n            shortcutId: shortcutId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes specified quick reply messages\n    /// - Parameter messageIds: Unique identifiers of the messages\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut to which the messages belong\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteQuickReplyShortcutMessages(\n        messageIds: [Int64]?,\n        shortcutId: Int?\n    ) async throws -> Ok {\n        let query = DeleteQuickReplyShortcutMessages(\n            messageIds: messageIds,\n            shortcutId: shortcutId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds a message to a quick reply shortcut. If shortcut doesn't exist and there are less than getOption(\"quick_reply_shortcut_count_max\") shortcuts, then a new shortcut is created. The shortcut must not contain more than getOption(\"quick_reply_shortcut_message_count_max\") messages after adding the new message. Returns the added message\n    /// - Parameter inputMessageContent: The content of the message to be added; inputMessagePaidMedia, inputMessageForwarded and inputMessageLocation with live_period aren't supported\n    /// - Parameter replyToMessageId: Identifier of a quick reply message in the same shortcut to be replied; pass 0 if none\n    /// - Parameter shortcutName: Name of the target shortcut\n    /// - Returns: The added message\n    public final func addQuickReplyShortcutMessage(\n        inputMessageContent: InputMessageContent?,\n        replyToMessageId: Int64?,\n        shortcutName: String?,\n        completion: @escaping (Result<QuickReplyMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = AddQuickReplyShortcutMessage(\n            inputMessageContent: inputMessageContent,\n            replyToMessageId: replyToMessageId,\n            shortcutName: shortcutName\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds a message to a quick reply shortcut. If shortcut doesn't exist and there are less than getOption(\"quick_reply_shortcut_count_max\") shortcuts, then a new shortcut is created. The shortcut must not contain more than getOption(\"quick_reply_shortcut_message_count_max\") messages after adding the new message. Returns the added message\n    /// - Parameter inputMessageContent: The content of the message to be added; inputMessagePaidMedia, inputMessageForwarded and inputMessageLocation with live_period aren't supported\n    /// - Parameter replyToMessageId: Identifier of a quick reply message in the same shortcut to be replied; pass 0 if none\n    /// - Parameter shortcutName: Name of the target shortcut\n    /// - Returns: The added message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func addQuickReplyShortcutMessage(\n        inputMessageContent: InputMessageContent?,\n        replyToMessageId: Int64?,\n        shortcutName: String?\n    ) async throws -> QuickReplyMessage {\n        let query = AddQuickReplyShortcutMessage(\n            inputMessageContent: inputMessageContent,\n            replyToMessageId: replyToMessageId,\n            shortcutName: shortcutName\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds a message to a quick reply shortcut via inline bot. If shortcut doesn't exist and there are less than getOption(\"quick_reply_shortcut_count_max\") shortcuts, then a new shortcut is created. The shortcut must not contain more than getOption(\"quick_reply_shortcut_message_count_max\") messages after adding the new message. Returns the added message\n    /// - Parameter hideViaBot: Pass true to hide the bot, via which the message is sent. Can be used only for bots getOption(\"animation_search_bot_username\"), getOption(\"photo_search_bot_username\"), and getOption(\"venue_search_bot_username\")\n    /// - Parameter queryId: Identifier of the inline query\n    /// - Parameter replyToMessageId: Identifier of a quick reply message in the same shortcut to be replied; pass 0 if none\n    /// - Parameter resultId: Identifier of the inline query result\n    /// - Parameter shortcutName: Name of the target shortcut\n    /// - Returns: The added message\n    public final func addQuickReplyShortcutInlineQueryResultMessage(\n        hideViaBot: Bool?,\n        queryId: TdInt64?,\n        replyToMessageId: Int64?,\n        resultId: String?,\n        shortcutName: String?,\n        completion: @escaping (Result<QuickReplyMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = AddQuickReplyShortcutInlineQueryResultMessage(\n            hideViaBot: hideViaBot,\n            queryId: queryId,\n            replyToMessageId: replyToMessageId,\n            resultId: resultId,\n            shortcutName: shortcutName\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds a message to a quick reply shortcut via inline bot. If shortcut doesn't exist and there are less than getOption(\"quick_reply_shortcut_count_max\") shortcuts, then a new shortcut is created. The shortcut must not contain more than getOption(\"quick_reply_shortcut_message_count_max\") messages after adding the new message. Returns the added message\n    /// - Parameter hideViaBot: Pass true to hide the bot, via which the message is sent. Can be used only for bots getOption(\"animation_search_bot_username\"), getOption(\"photo_search_bot_username\"), and getOption(\"venue_search_bot_username\")\n    /// - Parameter queryId: Identifier of the inline query\n    /// - Parameter replyToMessageId: Identifier of a quick reply message in the same shortcut to be replied; pass 0 if none\n    /// - Parameter resultId: Identifier of the inline query result\n    /// - Parameter shortcutName: Name of the target shortcut\n    /// - Returns: The added message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func addQuickReplyShortcutInlineQueryResultMessage(\n        hideViaBot: Bool?,\n        queryId: TdInt64?,\n        replyToMessageId: Int64?,\n        resultId: String?,\n        shortcutName: String?\n    ) async throws -> QuickReplyMessage {\n        let query = AddQuickReplyShortcutInlineQueryResultMessage(\n            hideViaBot: hideViaBot,\n            queryId: queryId,\n            replyToMessageId: replyToMessageId,\n            resultId: resultId,\n            shortcutName: shortcutName\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds 2-10 messages grouped together into an album to a quick reply shortcut. Currently, only audio, document, photo and video messages can be grouped into an album. Documents and audio files can be only grouped in an album with messages of the same type. Returns sent messages\n    /// - Parameter inputMessageContents: Contents of messages to be sent. At most 10 messages can be added to an album. All messages must have the same value of show_caption_above_media\n    /// - Parameter replyToMessageId: Identifier of a quick reply message in the same shortcut to be replied; pass 0 if none\n    /// - Parameter shortcutName: Name of the target shortcut\n    /// - Returns: Sent messages\n    public final func addQuickReplyShortcutMessageAlbum(\n        inputMessageContents: [InputMessageContent]?,\n        replyToMessageId: Int64?,\n        shortcutName: String?,\n        completion: @escaping (Result<QuickReplyMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = AddQuickReplyShortcutMessageAlbum(\n            inputMessageContents: inputMessageContents,\n            replyToMessageId: replyToMessageId,\n            shortcutName: shortcutName\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds 2-10 messages grouped together into an album to a quick reply shortcut. Currently, only audio, document, photo and video messages can be grouped into an album. Documents and audio files can be only grouped in an album with messages of the same type. Returns sent messages\n    /// - Parameter inputMessageContents: Contents of messages to be sent. At most 10 messages can be added to an album. All messages must have the same value of show_caption_above_media\n    /// - Parameter replyToMessageId: Identifier of a quick reply message in the same shortcut to be replied; pass 0 if none\n    /// - Parameter shortcutName: Name of the target shortcut\n    /// - Returns: Sent messages\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func addQuickReplyShortcutMessageAlbum(\n        inputMessageContents: [InputMessageContent]?,\n        replyToMessageId: Int64?,\n        shortcutName: String?\n    ) async throws -> QuickReplyMessages {\n        let query = AddQuickReplyShortcutMessageAlbum(\n            inputMessageContents: inputMessageContents,\n            replyToMessageId: replyToMessageId,\n            shortcutName: shortcutName\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Readds quick reply messages which failed to add. Can be called only for messages for which messageSendingStateFailed.can_retry is true and after specified in messageSendingStateFailed.retry_after time passed. If a message is readded, the corresponding failed to send message is deleted. Returns the sent messages in the same order as the message identifiers passed in message_ids. If a message can't be readded, null will be returned instead of the message\n    /// - Parameter messageIds: Identifiers of the quick reply messages to readd. Message identifiers must be in a strictly increasing order\n    /// - Parameter shortcutName: Name of the target shortcut\n    /// - Returns: The sent messages in the same order as the message identifiers passed in message_ids. If a message can't be readded, null will be returned instead of the message\n    public final func readdQuickReplyShortcutMessages(\n        messageIds: [Int64]?,\n        shortcutName: String?,\n        completion: @escaping (Result<QuickReplyMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = ReaddQuickReplyShortcutMessages(\n            messageIds: messageIds,\n            shortcutName: shortcutName\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Readds quick reply messages which failed to add. Can be called only for messages for which messageSendingStateFailed.can_retry is true and after specified in messageSendingStateFailed.retry_after time passed. If a message is readded, the corresponding failed to send message is deleted. Returns the sent messages in the same order as the message identifiers passed in message_ids. If a message can't be readded, null will be returned instead of the message\n    /// - Parameter messageIds: Identifiers of the quick reply messages to readd. Message identifiers must be in a strictly increasing order\n    /// - Parameter shortcutName: Name of the target shortcut\n    /// - Returns: The sent messages in the same order as the message identifiers passed in message_ids. If a message can't be readded, null will be returned instead of the message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func readdQuickReplyShortcutMessages(\n        messageIds: [Int64]?,\n        shortcutName: String?\n    ) async throws -> QuickReplyMessages {\n        let query = ReaddQuickReplyShortcutMessages(\n            messageIds: messageIds,\n            shortcutName: shortcutName\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Asynchronously edits the text, media or caption of a quick reply message. Use quickReplyMessage.can_be_edited to check whether a message can be edited. Media message can be edited only to a media message. Checklist messages can be edited only to a checklist message. The type of message content in an album can't be changed with exception of replacing a photo with a video or vice versa\n    /// - Parameter inputMessageContent: New content of the message. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageChecklist, inputMessageDocument, inputMessagePhoto, inputMessageText, or inputMessageVideo\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut with the message\n    public final func editQuickReplyMessage(\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        shortcutId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditQuickReplyMessage(\n            inputMessageContent: inputMessageContent,\n            messageId: messageId,\n            shortcutId: shortcutId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Asynchronously edits the text, media or caption of a quick reply message. Use quickReplyMessage.can_be_edited to check whether a message can be edited. Media message can be edited only to a media message. Checklist messages can be edited only to a checklist message. The type of message content in an album can't be changed with exception of replacing a photo with a video or vice versa\n    /// - Parameter inputMessageContent: New content of the message. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageChecklist, inputMessageDocument, inputMessagePhoto, inputMessageText, or inputMessageVideo\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut with the message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func editQuickReplyMessage(\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        shortcutId: Int?\n    ) async throws -> Ok {\n        let query = EditQuickReplyMessage(\n            inputMessageContent: inputMessageContent,\n            messageId: messageId,\n            shortcutId: shortcutId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of custom emoji, which can be used as forum topic icon by all users\n    /// - Returns: The list of custom emoji, which can be used as forum topic icon by all users\n    public final func getForumTopicDefaultIcons(completion: @escaping (Result<Stickers, Swift.Error>) -> Void) throws {\n        let query = GetForumTopicDefaultIcons()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of custom emoji, which can be used as forum topic icon by all users\n    /// - Returns: The list of custom emoji, which can be used as forum topic icon by all users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getForumTopicDefaultIcons() async throws -> Stickers {\n        let query = GetForumTopicDefaultIcons()\n        return try await self.run(query: query)\n    }\n\n    /// Creates a topic in a forum supergroup chat or a chat with a bot with topics; requires can_manage_topics administrator or can_create_topics member right in the supergroup\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter icon: Icon of the topic. Icon color must be one of 0x6FB9F0, 0xFFD67E, 0xCB86DB, 0x8EEE98, 0xFF93B2, or 0xFB6F5F. Telegram Premium users can use any custom emoji as topic icon, other users can use only a custom emoji returned by getForumTopicDefaultIcons\n    /// - Parameter isNameImplicit: Pass true if the name of the topic wasn't entered explicitly; for chats with bots only\n    /// - Parameter name: Name of the topic; 1-128 characters\n    public final func createForumTopic(\n        chatId: Int64?,\n        icon: ForumTopicIcon?,\n        isNameImplicit: Bool?,\n        name: String?,\n        completion: @escaping (Result<ForumTopicInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateForumTopic(\n            chatId: chatId,\n            icon: icon,\n            isNameImplicit: isNameImplicit,\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Creates a topic in a forum supergroup chat or a chat with a bot with topics; requires can_manage_topics administrator or can_create_topics member right in the supergroup\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter icon: Icon of the topic. Icon color must be one of 0x6FB9F0, 0xFFD67E, 0xCB86DB, 0x8EEE98, 0xFF93B2, or 0xFB6F5F. Telegram Premium users can use any custom emoji as topic icon, other users can use only a custom emoji returned by getForumTopicDefaultIcons\n    /// - Parameter isNameImplicit: Pass true if the name of the topic wasn't entered explicitly; for chats with bots only\n    /// - Parameter name: Name of the topic; 1-128 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createForumTopic(\n        chatId: Int64?,\n        icon: ForumTopicIcon?,\n        isNameImplicit: Bool?,\n        name: String?\n    ) async throws -> ForumTopicInfo {\n        let query = CreateForumTopic(\n            chatId: chatId,\n            icon: icon,\n            isNameImplicit: isNameImplicit,\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits title and icon of a topic in a forum supergroup chat or a chat with a bot with topics; for supergroup chats requires can_manage_topics administrator right unless the user is creator of the topic\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter editIconCustomEmoji: Pass true to edit the icon of the topic. Icon of the General topic can't be edited\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Parameter iconCustomEmojiId: Identifier of the new custom emoji for topic icon; pass 0 to remove the custom emoji. Ignored if edit_icon_custom_emoji is false. Telegram Premium users can use any custom emoji, other users can use only a custom emoji returned by getForumTopicDefaultIcons\n    /// - Parameter name: New name of the topic; 0-128 characters. If empty, the previous topic name is kept\n    public final func editForumTopic(\n        chatId: Int64?,\n        editIconCustomEmoji: Bool?,\n        forumTopicId: Int?,\n        iconCustomEmojiId: TdInt64?,\n        name: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditForumTopic(\n            chatId: chatId,\n            editIconCustomEmoji: editIconCustomEmoji,\n            forumTopicId: forumTopicId,\n            iconCustomEmojiId: iconCustomEmojiId,\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits title and icon of a topic in a forum supergroup chat or a chat with a bot with topics; for supergroup chats requires can_manage_topics administrator right unless the user is creator of the topic\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter editIconCustomEmoji: Pass true to edit the icon of the topic. Icon of the General topic can't be edited\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Parameter iconCustomEmojiId: Identifier of the new custom emoji for topic icon; pass 0 to remove the custom emoji. Ignored if edit_icon_custom_emoji is false. Telegram Premium users can use any custom emoji, other users can use only a custom emoji returned by getForumTopicDefaultIcons\n    /// - Parameter name: New name of the topic; 0-128 characters. If empty, the previous topic name is kept\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func editForumTopic(\n        chatId: Int64?,\n        editIconCustomEmoji: Bool?,\n        forumTopicId: Int?,\n        iconCustomEmojiId: TdInt64?,\n        name: String?\n    ) async throws -> Ok {\n        let query = EditForumTopic(\n            chatId: chatId,\n            editIconCustomEmoji: editIconCustomEmoji,\n            forumTopicId: forumTopicId,\n            iconCustomEmojiId: iconCustomEmojiId,\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a topic in a forum supergroup chat or a chat with a bot with topics\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Returns: Information about a topic in a forum supergroup chat or a chat with a bot with topics\n    public final func getForumTopic(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        completion: @escaping (Result<ForumTopic, Swift.Error>) -> Void\n    ) throws {\n        let query = GetForumTopic(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a topic in a forum supergroup chat or a chat with a bot with topics\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Returns: Information about a topic in a forum supergroup chat or a chat with a bot with topics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getForumTopic(\n        chatId: Int64?,\n        forumTopicId: Int?\n    ) async throws -> ForumTopic {\n        let query = GetForumTopic(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns messages in a topic in a forum supergroup chat or a chat with a bot with topics. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Parameter fromMessageId: Identifier of the message starting from which history must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    /// - Returns: Messages in a topic in a forum supergroup chat or a chat with a bot with topics. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    public final func getForumTopicHistory(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = GetForumTopicHistory(\n            chatId: chatId,\n            forumTopicId: forumTopicId,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns messages in a topic in a forum supergroup chat or a chat with a bot with topics. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Parameter fromMessageId: Identifier of the message starting from which history must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    /// - Returns: Messages in a topic in a forum supergroup chat or a chat with a bot with topics. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getForumTopicHistory(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?\n    ) async throws -> Messages {\n        let query = GetForumTopicHistory(\n            chatId: chatId,\n            forumTopicId: forumTopicId,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an HTTPS link to a topic in a forum supergroup chat. This is an offline method\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Returns: An HTTPS link to a topic in a forum supergroup chat\n    public final func getForumTopicLink(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        completion: @escaping (Result<MessageLink, Swift.Error>) -> Void\n    ) throws {\n        let query = GetForumTopicLink(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an HTTPS link to a topic in a forum supergroup chat. This is an offline method\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Returns: An HTTPS link to a topic in a forum supergroup chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getForumTopicLink(\n        chatId: Int64?,\n        forumTopicId: Int?\n    ) async throws -> MessageLink {\n        let query = GetForumTopicLink(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns found forum topics in a forum supergroup chat or a chat with a bot with topics. This is a temporary method for getting information about topic list from the server\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter limit: The maximum number of forum topics to be returned; up to 100. For optimal performance, the number of returned forum topics is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offsetDate: The date starting from which the results need to be fetched. Use 0 or any date in the future to get results from the last topic\n    /// - Parameter offsetForumTopicId: The forum topic identifier of the last found topic, or 0 for the first request\n    /// - Parameter offsetMessageId: The message identifier of the last message in the last found topic, or 0 for the first request\n    /// - Parameter query: Query to search for in the forum topic's name\n    /// - Returns: Found forum topics in a forum supergroup chat or a chat with a bot with topics\n    public final func getForumTopics(\n        chatId: Int64?,\n        limit: Int?,\n        offsetDate: Int?,\n        offsetForumTopicId: Int?,\n        offsetMessageId: Int64?,\n        query: String?,\n        completion: @escaping (Result<ForumTopics, Swift.Error>) -> Void\n    ) throws {\n        let query = GetForumTopics(\n            chatId: chatId,\n            limit: limit,\n            offsetDate: offsetDate,\n            offsetForumTopicId: offsetForumTopicId,\n            offsetMessageId: offsetMessageId,\n            query: query\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns found forum topics in a forum supergroup chat or a chat with a bot with topics. This is a temporary method for getting information about topic list from the server\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter limit: The maximum number of forum topics to be returned; up to 100. For optimal performance, the number of returned forum topics is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offsetDate: The date starting from which the results need to be fetched. Use 0 or any date in the future to get results from the last topic\n    /// - Parameter offsetForumTopicId: The forum topic identifier of the last found topic, or 0 for the first request\n    /// - Parameter offsetMessageId: The message identifier of the last message in the last found topic, or 0 for the first request\n    /// - Parameter query: Query to search for in the forum topic's name\n    /// - Returns: Found forum topics in a forum supergroup chat or a chat with a bot with topics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getForumTopics(\n        chatId: Int64?,\n        limit: Int?,\n        offsetDate: Int?,\n        offsetForumTopicId: Int?,\n        offsetMessageId: Int64?,\n        query: String?\n    ) async throws -> ForumTopics {\n        let query = GetForumTopics(\n            chatId: chatId,\n            limit: limit,\n            offsetDate: offsetDate,\n            offsetForumTopicId: offsetForumTopicId,\n            offsetMessageId: offsetMessageId,\n            query: query\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the notification settings of a forum topic in a forum supergroup chat or a chat with a bot with topics\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Parameter notificationSettings: New notification settings for the forum topic. If the topic is muted for more than 366 days, it is considered to be muted forever\n    public final func setForumTopicNotificationSettings(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        notificationSettings: ChatNotificationSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetForumTopicNotificationSettings(\n            chatId: chatId,\n            forumTopicId: forumTopicId,\n            notificationSettings: notificationSettings\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the notification settings of a forum topic in a forum supergroup chat or a chat with a bot with topics\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Parameter notificationSettings: New notification settings for the forum topic. If the topic is muted for more than 366 days, it is considered to be muted forever\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setForumTopicNotificationSettings(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        notificationSettings: ChatNotificationSettings?\n    ) async throws -> Ok {\n        let query = SetForumTopicNotificationSettings(\n            chatId: chatId,\n            forumTopicId: forumTopicId,\n            notificationSettings: notificationSettings\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether a topic is closed in a forum supergroup chat; requires can_manage_topics administrator right in the supergroup unless the user is creator of the topic\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Parameter isClosed: Pass true to close the topic; pass false to reopen it\n    public final func toggleForumTopicIsClosed(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        isClosed: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleForumTopicIsClosed(\n            chatId: chatId,\n            forumTopicId: forumTopicId,\n            isClosed: isClosed\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether a topic is closed in a forum supergroup chat; requires can_manage_topics administrator right in the supergroup unless the user is creator of the topic\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Parameter isClosed: Pass true to close the topic; pass false to reopen it\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleForumTopicIsClosed(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        isClosed: Bool?\n    ) async throws -> Ok {\n        let query = ToggleForumTopicIsClosed(\n            chatId: chatId,\n            forumTopicId: forumTopicId,\n            isClosed: isClosed\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether a General topic is hidden in a forum supergroup chat; requires can_manage_topics administrator right in the supergroup\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter isHidden: Pass true to hide and close the General topic; pass false to unhide it\n    public final func toggleGeneralForumTopicIsHidden(\n        chatId: Int64?,\n        isHidden: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleGeneralForumTopicIsHidden(\n            chatId: chatId,\n            isHidden: isHidden\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether a General topic is hidden in a forum supergroup chat; requires can_manage_topics administrator right in the supergroup\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter isHidden: Pass true to hide and close the General topic; pass false to unhide it\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleGeneralForumTopicIsHidden(\n        chatId: Int64?,\n        isHidden: Bool?\n    ) async throws -> Ok {\n        let query = ToggleGeneralForumTopicIsHidden(\n            chatId: chatId,\n            isHidden: isHidden\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the pinned state of a topic in a forum supergroup chat or a chat with a bot with topics; requires can_manage_topics administrator right in the supergroup. There can be up to getOption(\"pinned_forum_topic_count_max\") pinned forum topics\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Parameter isPinned: Pass true to pin the topic; pass false to unpin it\n    public final func toggleForumTopicIsPinned(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        isPinned: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleForumTopicIsPinned(\n            chatId: chatId,\n            forumTopicId: forumTopicId,\n            isPinned: isPinned\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the pinned state of a topic in a forum supergroup chat or a chat with a bot with topics; requires can_manage_topics administrator right in the supergroup. There can be up to getOption(\"pinned_forum_topic_count_max\") pinned forum topics\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Parameter isPinned: Pass true to pin the topic; pass false to unpin it\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleForumTopicIsPinned(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        isPinned: Bool?\n    ) async throws -> Ok {\n        let query = ToggleForumTopicIsPinned(\n            chatId: chatId,\n            forumTopicId: forumTopicId,\n            isPinned: isPinned\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the order of pinned topics in a forum supergroup chat or a chat with a bot with topics; requires can_manage_topics administrator right in the supergroup\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicIds: The new list of identifiers of the pinned forum topics\n    public final func setPinnedForumTopics(\n        chatId: Int64?,\n        forumTopicIds: [Int]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetPinnedForumTopics(\n            chatId: chatId,\n            forumTopicIds: forumTopicIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the order of pinned topics in a forum supergroup chat or a chat with a bot with topics; requires can_manage_topics administrator right in the supergroup\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicIds: The new list of identifiers of the pinned forum topics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setPinnedForumTopics(\n        chatId: Int64?,\n        forumTopicIds: [Int]?\n    ) async throws -> Ok {\n        let query = SetPinnedForumTopics(\n            chatId: chatId,\n            forumTopicIds: forumTopicIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes all messages from a topic in a forum supergroup chat or a chat with a bot with topics; requires can_delete_messages administrator right in the supergroup unless the user is creator of the topic, the topic has no messages from other users and has at most 11 messages\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter forumTopicId: Forum topic identifier\n    public final func deleteForumTopic(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteForumTopic(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes all messages from a topic in a forum supergroup chat or a chat with a bot with topics; requires can_delete_messages administrator right in the supergroup unless the user is creator of the topic, the topic has no messages from other users and has at most 11 messages\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter forumTopicId: Forum topic identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteForumTopic(\n        chatId: Int64?,\n        forumTopicId: Int?\n    ) async throws -> Ok {\n        let query = DeleteForumTopic(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Marks all mentions in a topic in a forum supergroup chat as read\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier in which mentions are marked as read\n    public final func readAllForumTopicMentions(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReadAllForumTopicMentions(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Marks all mentions in a topic in a forum supergroup chat as read\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier in which mentions are marked as read\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func readAllForumTopicMentions(\n        chatId: Int64?,\n        forumTopicId: Int?\n    ) async throws -> Ok {\n        let query = ReadAllForumTopicMentions(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Marks all reactions in a topic in a forum supergroup chat or a chat with a bot with topics as read\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier in which reactions are marked as read\n    public final func readAllForumTopicReactions(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReadAllForumTopicReactions(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Marks all reactions in a topic in a forum supergroup chat or a chat with a bot with topics as read\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier in which reactions are marked as read\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func readAllForumTopicReactions(\n        chatId: Int64?,\n        forumTopicId: Int?\n    ) async throws -> Ok {\n        let query = ReadAllForumTopicReactions(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Marks all poll votes in a topic in a forum supergroup chat as read\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier in which poll votes are marked as read\n    public final func readAllForumTopicPollVotes(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReadAllForumTopicPollVotes(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Marks all poll votes in a topic in a forum supergroup chat as read\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier in which poll votes are marked as read\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func readAllForumTopicPollVotes(\n        chatId: Int64?,\n        forumTopicId: Int?\n    ) async throws -> Ok {\n        let query = ReadAllForumTopicPollVotes(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes all pinned messages from a topic in a forum supergroup chat or a chat with a bot with topics; requires can_pin_messages member right in the supergroup\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter forumTopicId: Forum topic identifier in which messages will be unpinned\n    public final func unpinAllForumTopicMessages(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = UnpinAllForumTopicMessages(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes all pinned messages from a topic in a forum supergroup chat or a chat with a bot with topics; requires can_pin_messages member right in the supergroup\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter forumTopicId: Forum topic identifier in which messages will be unpinned\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func unpinAllForumTopicMessages(\n        chatId: Int64?,\n        forumTopicId: Int?\n    ) async throws -> Ok {\n        let query = UnpinAllForumTopicMessages(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns parameters for creating of a new passkey as JSON-serialized string\n    /// - Returns: Parameters for creating of a new passkey as JSON-serialized string\n    public final func getPasskeyParameters(completion: @escaping (Result<Text, Swift.Error>) -> Void) throws {\n        let query = GetPasskeyParameters()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns parameters for creating of a new passkey as JSON-serialized string\n    /// - Returns: Parameters for creating of a new passkey as JSON-serialized string\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPasskeyParameters() async throws -> Text {\n        let query = GetPasskeyParameters()\n        return try await self.run(query: query)\n    }\n\n    /// Adds a passkey allowed to be used for the login by the current user and returns the added passkey. Call getPasskeyParameters to get parameters for creating of the passkey\n    /// - Parameter attestationObject: Passkey attestation object\n    /// - Parameter clientData: JSON-encoded client data\n    /// - Returns: Adds a passkey allowed to be used for the login by the current user and returns the added passkey\n    public final func addLoginPasskey(\n        attestationObject: Data?,\n        clientData: String?,\n        completion: @escaping (Result<Passkey, Swift.Error>) -> Void\n    ) throws {\n        let query = AddLoginPasskey(\n            attestationObject: attestationObject,\n            clientData: clientData\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds a passkey allowed to be used for the login by the current user and returns the added passkey. Call getPasskeyParameters to get parameters for creating of the passkey\n    /// - Parameter attestationObject: Passkey attestation object\n    /// - Parameter clientData: JSON-encoded client data\n    /// - Returns: Adds a passkey allowed to be used for the login by the current user and returns the added passkey\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func addLoginPasskey(\n        attestationObject: Data?,\n        clientData: String?\n    ) async throws -> Passkey {\n        let query = AddLoginPasskey(\n            attestationObject: attestationObject,\n            clientData: clientData\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of passkeys allowed to be used for the login by the current user\n    /// - Returns: The list of passkeys allowed to be used for the login by the current user\n    public final func getLoginPasskeys(completion: @escaping (Result<Passkeys, Swift.Error>) -> Void) throws {\n        let query = GetLoginPasskeys()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of passkeys allowed to be used for the login by the current user\n    /// - Returns: The list of passkeys allowed to be used for the login by the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getLoginPasskeys() async throws -> Passkeys {\n        let query = GetLoginPasskeys()\n        return try await self.run(query: query)\n    }\n\n    /// Removes a passkey from the list of passkeys allowed to be used for the login by the current user\n    /// - Parameter passkeyId: Unique identifier of the passkey to remove\n    public final func removeLoginPasskey(\n        passkeyId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveLoginPasskey(\n            passkeyId: passkeyId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes a passkey from the list of passkeys allowed to be used for the login by the current user\n    /// - Parameter passkeyId: Unique identifier of the passkey to remove\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeLoginPasskey(passkeyId: String?) async throws -> Ok {\n        let query = RemoveLoginPasskey(\n            passkeyId: passkeyId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about an emoji reaction. Returns a 404 error if the reaction is not found\n    /// - Parameter emoji: Text representation of the reaction\n    /// - Returns: Information about an emoji reaction. Returns a 404 error if the reaction is not found\n    public final func getEmojiReaction(\n        emoji: String?,\n        completion: @escaping (Result<EmojiReaction, Swift.Error>) -> Void\n    ) throws {\n        let query = GetEmojiReaction(\n            emoji: emoji\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about an emoji reaction. Returns a 404 error if the reaction is not found\n    /// - Parameter emoji: Text representation of the reaction\n    /// - Returns: Information about an emoji reaction. Returns a 404 error if the reaction is not found\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getEmojiReaction(emoji: String?) async throws -> EmojiReaction {\n        let query = GetEmojiReaction(\n            emoji: emoji\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns TGS stickers with generic animations for custom emoji reactions\n    /// - Returns: TGS stickers with generic animations for custom emoji reactions\n    public final func getCustomEmojiReactionAnimations(completion: @escaping (Result<Stickers, Swift.Error>) -> Void) throws {\n        let query = GetCustomEmojiReactionAnimations()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns TGS stickers with generic animations for custom emoji reactions\n    /// - Returns: TGS stickers with generic animations for custom emoji reactions\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getCustomEmojiReactionAnimations() async throws -> Stickers {\n        let query = GetCustomEmojiReactionAnimations()\n        return try await self.run(query: query)\n    }\n\n    /// Returns reactions, which can be added to a message. The list can change after updateActiveEmojiReactions, updateChatAvailableReactions for the chat, or updateMessageInteractionInfo for the message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter rowSize: Number of reaction per row, 5-25\n    /// - Returns: Reactions, which can be added to a message\n    public final func getMessageAvailableReactions(\n        chatId: Int64?,\n        messageId: Int64?,\n        rowSize: Int?,\n        completion: @escaping (Result<AvailableReactions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageAvailableReactions(\n            chatId: chatId,\n            messageId: messageId,\n            rowSize: rowSize\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns reactions, which can be added to a message. The list can change after updateActiveEmojiReactions, updateChatAvailableReactions for the chat, or updateMessageInteractionInfo for the message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter rowSize: Number of reaction per row, 5-25\n    /// - Returns: Reactions, which can be added to a message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMessageAvailableReactions(\n        chatId: Int64?,\n        messageId: Int64?,\n        rowSize: Int?\n    ) async throws -> AvailableReactions {\n        let query = GetMessageAvailableReactions(\n            chatId: chatId,\n            messageId: messageId,\n            rowSize: rowSize\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Clears the list of recently used reactions\n    public final func clearRecentReactions(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ClearRecentReactions()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Clears the list of recently used reactions\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func clearRecentReactions() async throws -> Ok {\n        let query = ClearRecentReactions()\n        return try await self.run(query: query)\n    }\n\n    /// Adds a reaction or a tag to a message. Use getMessageAvailableReactions to receive the list of available reactions for the message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter isBig: Pass true if the reaction is added with a big animation\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter reactionType: Type of the reaction to add. Use addPendingPaidMessageReaction instead to add the paid reaction\n    /// - Parameter updateRecentReactions: Pass true if the reaction needs to be added to recent reactions; tags are never added to the list of recent reactions\n    public final func addMessageReaction(\n        chatId: Int64?,\n        isBig: Bool?,\n        messageId: Int64?,\n        reactionType: ReactionType?,\n        updateRecentReactions: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddMessageReaction(\n            chatId: chatId,\n            isBig: isBig,\n            messageId: messageId,\n            reactionType: reactionType,\n            updateRecentReactions: updateRecentReactions\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds a reaction or a tag to a message. Use getMessageAvailableReactions to receive the list of available reactions for the message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter isBig: Pass true if the reaction is added with a big animation\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter reactionType: Type of the reaction to add. Use addPendingPaidMessageReaction instead to add the paid reaction\n    /// - Parameter updateRecentReactions: Pass true if the reaction needs to be added to recent reactions; tags are never added to the list of recent reactions\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func addMessageReaction(\n        chatId: Int64?,\n        isBig: Bool?,\n        messageId: Int64?,\n        reactionType: ReactionType?,\n        updateRecentReactions: Bool?\n    ) async throws -> Ok {\n        let query = AddMessageReaction(\n            chatId: chatId,\n            isBig: isBig,\n            messageId: messageId,\n            reactionType: reactionType,\n            updateRecentReactions: updateRecentReactions\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes a reaction from a message. A chosen reaction can always be removed\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter reactionType: Type of the reaction to remove. The paid reaction can't be removed\n    public final func removeMessageReaction(\n        chatId: Int64?,\n        messageId: Int64?,\n        reactionType: ReactionType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveMessageReaction(\n            chatId: chatId,\n            messageId: messageId,\n            reactionType: reactionType\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes a reaction from a message. A chosen reaction can always be removed\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter reactionType: Type of the reaction to remove. The paid reaction can't be removed\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeMessageReaction(\n        chatId: Int64?,\n        messageId: Int64?,\n        reactionType: ReactionType?\n    ) async throws -> Ok {\n        let query = RemoveMessageReaction(\n            chatId: chatId,\n            messageId: messageId,\n            reactionType: reactionType\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes all recent reactions added by the specified sender in a chat. Supported only for basic groups and supergroups; requires can_delete_messages administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter senderId: Identifier of the sender of reactions to delete\n    public final func deleteAllRecentMessageReactionsFromSender(\n        chatId: Int64?,\n        senderId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteAllRecentMessageReactionsFromSender(\n            chatId: chatId,\n            senderId: senderId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes all recent reactions added by the specified sender in a chat. Supported only for basic groups and supergroups; requires can_delete_messages administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter senderId: Identifier of the sender of reactions to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteAllRecentMessageReactionsFromSender(\n        chatId: Int64?,\n        senderId: MessageSender?\n    ) async throws -> Ok {\n        let query = DeleteAllRecentMessageReactionsFromSender(\n            chatId: chatId,\n            senderId: senderId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes all reactions added by the specified sender on a message\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message containing the reactions. Use messageProperties.can_delete_reactions to check whether the method can be used for a message\n    /// - Parameter senderId: Identifier of the sender of reactions to delete\n    public final func deleteMessageReactionsFromSender(\n        chatId: Int64?,\n        messageId: Int64?,\n        senderId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteMessageReactionsFromSender(\n            chatId: chatId,\n            messageId: messageId,\n            senderId: senderId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes all reactions added by the specified sender on a message\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message containing the reactions. Use messageProperties.can_delete_reactions to check whether the method can be used for a message\n    /// - Parameter senderId: Identifier of the sender of reactions to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteMessageReactionsFromSender(\n        chatId: Int64?,\n        messageId: Int64?,\n        senderId: MessageSender?\n    ) async throws -> Ok {\n        let query = DeleteMessageReactionsFromSender(\n            chatId: chatId,\n            messageId: messageId,\n            senderId: senderId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of message sender identifiers, which can be used to send a paid reaction in a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of message sender identifiers, which can be used to send a paid reaction in a chat\n    public final func getChatAvailablePaidMessageReactionSenders(\n        chatId: Int64?,\n        completion: @escaping (Result<MessageSenders, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatAvailablePaidMessageReactionSenders(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of message sender identifiers, which can be used to send a paid reaction in a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of message sender identifiers, which can be used to send a paid reaction in a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatAvailablePaidMessageReactionSenders(chatId: Int64?) async throws -> MessageSenders {\n        let query = GetChatAvailablePaidMessageReactionSenders(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds the paid message reaction to a message. Use getMessageAvailableReactions to check whether the reaction is available for the message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter starCount: Number of Telegram Stars to be used for the reaction. The total number of pending paid reactions must not exceed getOption(\"paid_reaction_star_count_max\")\n    /// - Parameter type: Type of the paid reaction; pass null if the user didn't choose reaction type explicitly, for example, the reaction is set from the message bubble\n    public final func addPendingPaidMessageReaction(\n        chatId: Int64?,\n        messageId: Int64?,\n        starCount: Int64?,\n        type: PaidReactionType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddPendingPaidMessageReaction(\n            chatId: chatId,\n            messageId: messageId,\n            starCount: starCount,\n            type: type\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds the paid message reaction to a message. Use getMessageAvailableReactions to check whether the reaction is available for the message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter starCount: Number of Telegram Stars to be used for the reaction. The total number of pending paid reactions must not exceed getOption(\"paid_reaction_star_count_max\")\n    /// - Parameter type: Type of the paid reaction; pass null if the user didn't choose reaction type explicitly, for example, the reaction is set from the message bubble\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func addPendingPaidMessageReaction(\n        chatId: Int64?,\n        messageId: Int64?,\n        starCount: Int64?,\n        type: PaidReactionType?\n    ) async throws -> Ok {\n        let query = AddPendingPaidMessageReaction(\n            chatId: chatId,\n            messageId: messageId,\n            starCount: starCount,\n            type: type\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Applies all pending paid reactions on a message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    public final func commitPendingPaidMessageReactions(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CommitPendingPaidMessageReactions(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Applies all pending paid reactions on a message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func commitPendingPaidMessageReactions(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = CommitPendingPaidMessageReactions(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes all pending paid reactions on a message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    public final func removePendingPaidMessageReactions(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemovePendingPaidMessageReactions(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes all pending paid reactions on a message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removePendingPaidMessageReactions(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = RemovePendingPaidMessageReactions(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes type of paid message reaction of the current user on a message. The message must have paid reaction added by the current user\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter type: New type of the paid reaction\n    public final func setPaidMessageReactionType(\n        chatId: Int64?,\n        messageId: Int64?,\n        type: PaidReactionType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetPaidMessageReactionType(\n            chatId: chatId,\n            messageId: messageId,\n            type: type\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes type of paid message reaction of the current user on a message. The message must have paid reaction added by the current user\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter type: New type of the paid reaction\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setPaidMessageReactionType(\n        chatId: Int64?,\n        messageId: Int64?,\n        type: PaidReactionType?\n    ) async throws -> Ok {\n        let query = SetPaidMessageReactionType(\n            chatId: chatId,\n            messageId: messageId,\n            type: type\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets reactions on a message; for bots only\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter isBig: Pass true if the reactions are added with a big animation\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter reactionTypes: Types of the reaction to set; pass an empty list to remove the reactions\n    public final func setMessageReactions(\n        chatId: Int64?,\n        isBig: Bool?,\n        messageId: Int64?,\n        reactionTypes: [ReactionType]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetMessageReactions(\n            chatId: chatId,\n            isBig: isBig,\n            messageId: messageId,\n            reactionTypes: reactionTypes\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets reactions on a message; for bots only\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter isBig: Pass true if the reactions are added with a big animation\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter reactionTypes: Types of the reaction to set; pass an empty list to remove the reactions\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setMessageReactions(\n        chatId: Int64?,\n        isBig: Bool?,\n        messageId: Int64?,\n        reactionTypes: [ReactionType]?\n    ) async throws -> Ok {\n        let query = SetMessageReactions(\n            chatId: chatId,\n            isBig: isBig,\n            messageId: messageId,\n            reactionTypes: reactionTypes\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns reactions added for a message, along with their sender\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter limit: The maximum number of reactions to be returned; must be positive and can't be greater than 100\n    /// - Parameter messageId: Identifier of the message. Use message.interaction_info.reactions.can_get_added_reactions to check whether added reactions can be received for the message\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter reactionType: Type of the reactions to return; pass null to return all added reactions; reactionTypePaid isn't supported\n    /// - Returns: Reactions added for a message, along with their sender\n    public final func getMessageAddedReactions(\n        chatId: Int64?,\n        limit: Int?,\n        messageId: Int64?,\n        offset: String?,\n        reactionType: ReactionType?,\n        completion: @escaping (Result<AddedReactions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageAddedReactions(\n            chatId: chatId,\n            limit: limit,\n            messageId: messageId,\n            offset: offset,\n            reactionType: reactionType\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns reactions added for a message, along with their sender\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter limit: The maximum number of reactions to be returned; must be positive and can't be greater than 100\n    /// - Parameter messageId: Identifier of the message. Use message.interaction_info.reactions.can_get_added_reactions to check whether added reactions can be received for the message\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter reactionType: Type of the reactions to return; pass null to return all added reactions; reactionTypePaid isn't supported\n    /// - Returns: Reactions added for a message, along with their sender\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMessageAddedReactions(\n        chatId: Int64?,\n        limit: Int?,\n        messageId: Int64?,\n        offset: String?,\n        reactionType: ReactionType?\n    ) async throws -> AddedReactions {\n        let query = GetMessageAddedReactions(\n            chatId: chatId,\n            limit: limit,\n            messageId: messageId,\n            offset: offset,\n            reactionType: reactionType\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes type of default reaction for the current user\n    /// - Parameter reactionType: New type of the default reaction. The paid reaction can't be set as default\n    public final func setDefaultReactionType(\n        reactionType: ReactionType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetDefaultReactionType(\n            reactionType: reactionType\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes type of default reaction for the current user\n    /// - Parameter reactionType: New type of the default reaction. The paid reaction can't be set as default\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setDefaultReactionType(reactionType: ReactionType?) async throws -> Ok {\n        let query = SetDefaultReactionType(\n            reactionType: reactionType\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns tags used in Saved Messages or a Saved Messages topic\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic which tags will be returned; pass 0 to get all Saved Messages tags\n    /// - Returns: Tags used in Saved Messages or a Saved Messages topic\n    public final func getSavedMessagesTags(\n        savedMessagesTopicId: Int64?,\n        completion: @escaping (Result<SavedMessagesTags, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSavedMessagesTags(\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns tags used in Saved Messages or a Saved Messages topic\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic which tags will be returned; pass 0 to get all Saved Messages tags\n    /// - Returns: Tags used in Saved Messages or a Saved Messages topic\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getSavedMessagesTags(savedMessagesTopicId: Int64?) async throws -> SavedMessagesTags {\n        let query = GetSavedMessagesTags(\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes label of a Saved Messages tag; for Telegram Premium users only\n    /// - Parameter label: New label for the tag; 0-12 characters\n    /// - Parameter tag: The tag which label will be changed\n    public final func setSavedMessagesTagLabel(\n        label: String?,\n        tag: ReactionType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetSavedMessagesTagLabel(\n            label: label,\n            tag: tag\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes label of a Saved Messages tag; for Telegram Premium users only\n    /// - Parameter label: New label for the tag; 0-12 characters\n    /// - Parameter tag: The tag which label will be changed\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setSavedMessagesTagLabel(\n        label: String?,\n        tag: ReactionType?\n    ) async throws -> Ok {\n        let query = SetSavedMessagesTagLabel(\n            label: label,\n            tag: tag\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a message effect. Returns a 404 error if the effect is not found\n    /// - Parameter effectId: Unique identifier of the effect\n    /// - Returns: Information about a message effect. Returns a 404 error if the effect is not found\n    public final func getMessageEffect(\n        effectId: TdInt64?,\n        completion: @escaping (Result<MessageEffect, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageEffect(\n            effectId: effectId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a message effect. Returns a 404 error if the effect is not found\n    /// - Parameter effectId: Unique identifier of the effect\n    /// - Returns: Information about a message effect. Returns a 404 error if the effect is not found\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMessageEffect(effectId: TdInt64?) async throws -> MessageEffect {\n        let query = GetMessageEffect(\n            effectId: effectId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for a given quote in a text. Returns found quote start position in UTF-16 code units. Returns a 404 error if the quote is not found. Can be called synchronously\n    /// - Parameter quote: Quote to search for\n    /// - Parameter quotePosition: Approximate quote position in UTF-16 code units\n    /// - Parameter text: Text in which to search for the quote\n    /// - Returns: Found quote start position in UTF-16 code units. Returns a 404 error if the quote is not found\n    public final func searchQuote(\n        quote: FormattedText?,\n        quotePosition: Int?,\n        text: FormattedText?,\n        completion: @escaping (Result<FoundPosition, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchQuote(\n            quote: quote,\n            quotePosition: quotePosition,\n            text: text\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for a given quote in a text. Returns found quote start position in UTF-16 code units. Returns a 404 error if the quote is not found. Can be called synchronously\n    /// - Parameter quote: Quote to search for\n    /// - Parameter quotePosition: Approximate quote position in UTF-16 code units\n    /// - Parameter text: Text in which to search for the quote\n    /// - Returns: Found quote start position in UTF-16 code units. Returns a 404 error if the quote is not found\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchQuote(\n        quote: FormattedText?,\n        quotePosition: Int?,\n        text: FormattedText?\n    ) async throws -> FoundPosition {\n        let query = SearchQuote(\n            quote: quote,\n            quotePosition: quotePosition,\n            text: text\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns all entities (mentions, hashtags, cashtags, bot commands, bank card numbers, URLs, and email addresses) found in the text. Can be called synchronously\n    /// - Parameter text: The text in which to look for entities\n    /// - Returns: All entities (mentions, hashtags, cashtags, bot commands, bank card numbers, URLs, and email addresses) found in the text\n    public final func getTextEntities(\n        text: String?,\n        completion: @escaping (Result<TextEntities, Swift.Error>) -> Void\n    ) throws {\n        let query = GetTextEntities(\n            text: text\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns all entities (mentions, hashtags, cashtags, bot commands, bank card numbers, URLs, and email addresses) found in the text. Can be called synchronously\n    /// - Parameter text: The text in which to look for entities\n    /// - Returns: All entities (mentions, hashtags, cashtags, bot commands, bank card numbers, URLs, and email addresses) found in the text\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getTextEntities(text: String?) async throws -> TextEntities {\n        let query = GetTextEntities(\n            text: text\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Parses Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, BlockQuote, ExpandableBlockQuote, Code, Pre, PreCode, TextUrl, MentionName, and DateTime entities from a marked-up text. Can be called synchronously\n    /// - Parameter parseMode: Text parse mode\n    /// - Parameter text: The text to parse\n    public final func parseTextEntities(\n        parseMode: TextParseMode?,\n        text: String?,\n        completion: @escaping (Result<FormattedText, Swift.Error>) -> Void\n    ) throws {\n        let query = ParseTextEntities(\n            parseMode: parseMode,\n            text: text\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Parses Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, BlockQuote, ExpandableBlockQuote, Code, Pre, PreCode, TextUrl, MentionName, and DateTime entities from a marked-up text. Can be called synchronously\n    /// - Parameter parseMode: Text parse mode\n    /// - Parameter text: The text to parse\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func parseTextEntities(\n        parseMode: TextParseMode?,\n        text: String?\n    ) async throws -> FormattedText {\n        let query = ParseTextEntities(\n            parseMode: parseMode,\n            text: text\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Parses Markdown entities in a human-friendly format, ignoring markup errors. Can be called synchronously\n    /// - Parameter text: The text to parse. For example, \"__italic__ ~~strikethrough~~ ||spoiler|| **bold** `code` ```pre``` __[italic__ text_url](telegram.org) __italic**bold italic__bold**\"\n    public final func parseMarkdown(\n        text: FormattedText?,\n        completion: @escaping (Result<FormattedText, Swift.Error>) -> Void\n    ) throws {\n        let query = ParseMarkdown(\n            text: text\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Parses Markdown entities in a human-friendly format, ignoring markup errors. Can be called synchronously\n    /// - Parameter text: The text to parse. For example, \"__italic__ ~~strikethrough~~ ||spoiler|| **bold** `code` ```pre``` __[italic__ text_url](telegram.org) __italic**bold italic__bold**\"\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func parseMarkdown(text: FormattedText?) async throws -> FormattedText {\n        let query = ParseMarkdown(\n            text: text\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Replaces text entities with Markdown formatting in a human-friendly format. Entities that can't be represented in Markdown unambiguously are kept as is. Can be called synchronously\n    /// - Parameter text: The text\n    public final func getMarkdownText(\n        text: FormattedText?,\n        completion: @escaping (Result<FormattedText, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMarkdownText(\n            text: text\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Replaces text entities with Markdown formatting in a human-friendly format. Entities that can't be represented in Markdown unambiguously are kept as is. Can be called synchronously\n    /// - Parameter text: The text\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMarkdownText(text: FormattedText?) async throws -> FormattedText {\n        let query = GetMarkdownText(\n            text: text\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an emoji for the given country. Returns an empty string on failure. Can be called synchronously\n    /// - Parameter countryCode: A two-letter ISO 3166-1 alpha-2 country code as received from getCountries\n    /// - Returns: An emoji for the given country. Returns an empty string on failure\n    public final func getCountryFlagEmoji(\n        countryCode: String?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetCountryFlagEmoji(\n            countryCode: countryCode\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an emoji for the given country. Returns an empty string on failure. Can be called synchronously\n    /// - Parameter countryCode: A two-letter ISO 3166-1 alpha-2 country code as received from getCountries\n    /// - Returns: An emoji for the given country. Returns an empty string on failure\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getCountryFlagEmoji(countryCode: String?) async throws -> Text {\n        let query = GetCountryFlagEmoji(\n            countryCode: countryCode\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the MIME type of a file, guessed by its extension. Returns an empty string on failure. Can be called synchronously\n    /// - Parameter fileName: The name of the file or path to the file\n    /// - Returns: The MIME type of a file, guessed by its extension. Returns an empty string on failure\n    public final func getFileMimeType(\n        fileName: String?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetFileMimeType(\n            fileName: fileName\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the MIME type of a file, guessed by its extension. Returns an empty string on failure. Can be called synchronously\n    /// - Parameter fileName: The name of the file or path to the file\n    /// - Returns: The MIME type of a file, guessed by its extension. Returns an empty string on failure\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getFileMimeType(fileName: String?) async throws -> Text {\n        let query = GetFileMimeType(\n            fileName: fileName\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the extension of a file, guessed by its MIME type. Returns an empty string on failure. Can be called synchronously\n    /// - Parameter mimeType: The MIME type of the file\n    /// - Returns: The extension of a file, guessed by its MIME type. Returns an empty string on failure\n    public final func getFileExtension(\n        mimeType: String?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetFileExtension(\n            mimeType: mimeType\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the extension of a file, guessed by its MIME type. Returns an empty string on failure. Can be called synchronously\n    /// - Parameter mimeType: The MIME type of the file\n    /// - Returns: The extension of a file, guessed by its MIME type. Returns an empty string on failure\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getFileExtension(mimeType: String?) async throws -> Text {\n        let query = GetFileExtension(\n            mimeType: mimeType\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes potentially dangerous characters from the name of a file. Returns an empty string on failure. Can be called synchronously\n    /// - Parameter fileName: File name or path to the file\n    /// - Returns: An empty string on failure\n    public final func cleanFileName(\n        fileName: String?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = CleanFileName(\n            fileName: fileName\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes potentially dangerous characters from the name of a file. Returns an empty string on failure. Can be called synchronously\n    /// - Parameter fileName: File name or path to the file\n    /// - Returns: An empty string on failure\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func cleanFileName(fileName: String?) async throws -> Text {\n        let query = CleanFileName(\n            fileName: fileName\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a string stored in the local database from the specified localization target and language pack by its key. Returns a 404 error if the string is not found. Can be called synchronously\n    /// - Parameter key: Language pack key of the string to be returned\n    /// - Parameter languagePackDatabasePath: Path to the language pack database in which strings are stored\n    /// - Parameter languagePackId: Language pack identifier\n    /// - Parameter localizationTarget: Localization target to which the language pack belongs\n    /// - Returns: A string stored in the local database from the specified localization target and language pack by its key. Returns a 404 error if the string is not found\n    public final func getLanguagePackString(\n        key: String?,\n        languagePackDatabasePath: String?,\n        languagePackId: String?,\n        localizationTarget: String?,\n        completion: @escaping (Result<LanguagePackStringValue, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLanguagePackString(\n            key: key,\n            languagePackDatabasePath: languagePackDatabasePath,\n            languagePackId: languagePackId,\n            localizationTarget: localizationTarget\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a string stored in the local database from the specified localization target and language pack by its key. Returns a 404 error if the string is not found. Can be called synchronously\n    /// - Parameter key: Language pack key of the string to be returned\n    /// - Parameter languagePackDatabasePath: Path to the language pack database in which strings are stored\n    /// - Parameter languagePackId: Language pack identifier\n    /// - Parameter localizationTarget: Localization target to which the language pack belongs\n    /// - Returns: A string stored in the local database from the specified localization target and language pack by its key. Returns a 404 error if the string is not found\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getLanguagePackString(\n        key: String?,\n        languagePackDatabasePath: String?,\n        languagePackId: String?,\n        localizationTarget: String?\n    ) async throws -> LanguagePackStringValue {\n        let query = GetLanguagePackString(\n            key: key,\n            languagePackDatabasePath: languagePackDatabasePath,\n            languagePackId: languagePackId,\n            localizationTarget: localizationTarget\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Converts a JSON-serialized string to corresponding JsonValue object. Can be called synchronously\n    /// - Parameter json: The JSON-serialized string\n    public final func getJsonValue(\n        json: String?,\n        completion: @escaping (Result<JsonValue, Swift.Error>) -> Void\n    ) throws {\n        let query = GetJsonValue(\n            json: json\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Converts a JSON-serialized string to corresponding JsonValue object. Can be called synchronously\n    /// - Parameter json: The JSON-serialized string\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getJsonValue(json: String?) async throws -> JsonValue {\n        let query = GetJsonValue(\n            json: json\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Converts a JsonValue object to corresponding JSON-serialized string. Can be called synchronously\n    /// - Parameter jsonValue: The JsonValue object\n    public final func getJsonString(\n        jsonValue: JsonValue?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetJsonString(\n            jsonValue: jsonValue\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Converts a JsonValue object to corresponding JSON-serialized string. Can be called synchronously\n    /// - Parameter jsonValue: The JsonValue object\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getJsonString(jsonValue: JsonValue?) async throws -> Text {\n        let query = GetJsonString(\n            jsonValue: jsonValue\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Converts a themeParameters object to corresponding JSON-serialized string. Can be called synchronously\n    /// - Parameter theme: Theme parameters to convert to JSON\n    public final func getThemeParametersJsonString(\n        theme: ThemeParameters?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetThemeParametersJsonString(\n            theme: theme\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Converts a themeParameters object to corresponding JSON-serialized string. Can be called synchronously\n    /// - Parameter theme: Theme parameters to convert to JSON\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getThemeParametersJsonString(theme: ThemeParameters?) async throws -> Text {\n        let query = GetThemeParametersJsonString(\n            theme: theme\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds an option to a poll\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter messageId: Identifier of the message containing the poll. Use messagePoll.can_add_option to check whether an option can be added\n    /// - Parameter option: The new option\n    public final func addPollOption(\n        chatId: Int64?,\n        messageId: Int64?,\n        option: InputPollOption?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddPollOption(\n            chatId: chatId,\n            messageId: messageId,\n            option: option\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds an option to a poll\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter messageId: Identifier of the message containing the poll. Use messagePoll.can_add_option to check whether an option can be added\n    /// - Parameter option: The new option\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func addPollOption(\n        chatId: Int64?,\n        messageId: Int64?,\n        option: InputPollOption?\n    ) async throws -> Ok {\n        let query = AddPollOption(\n            chatId: chatId,\n            messageId: messageId,\n            option: option\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes an option from a poll\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter messageId: Identifier of the message containing the poll\n    /// - Parameter optionId: Unique identifier of the option. Use pollOptionProperties.can_be_deleted to check whether the option can be deleted by the user\n    public final func deletePollOption(\n        chatId: Int64?,\n        messageId: Int64?,\n        optionId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeletePollOption(\n            chatId: chatId,\n            messageId: messageId,\n            optionId: optionId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes an option from a poll\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter messageId: Identifier of the message containing the poll\n    /// - Parameter optionId: Unique identifier of the option. Use pollOptionProperties.can_be_deleted to check whether the option can be deleted by the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deletePollOption(\n        chatId: Int64?,\n        messageId: Int64?,\n        optionId: String?\n    ) async throws -> Ok {\n        let query = DeletePollOption(\n            chatId: chatId,\n            messageId: messageId,\n            optionId: optionId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the user answer to a poll\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter messageId: Identifier of the message containing the poll\n    /// - Parameter optionIds: 0-based identifiers of answer options, chosen by the user. User can choose more than 1 answer option only is the poll allows multiple answers\n    public final func setPollAnswer(\n        chatId: Int64?,\n        messageId: Int64?,\n        optionIds: [Int]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetPollAnswer(\n            chatId: chatId,\n            messageId: messageId,\n            optionIds: optionIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the user answer to a poll\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter messageId: Identifier of the message containing the poll\n    /// - Parameter optionIds: 0-based identifiers of answer options, chosen by the user. User can choose more than 1 answer option only is the poll allows multiple answers\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setPollAnswer(\n        chatId: Int64?,\n        messageId: Int64?,\n        optionIds: [Int]?\n    ) async throws -> Ok {\n        let query = SetPollAnswer(\n            chatId: chatId,\n            messageId: messageId,\n            optionIds: optionIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns message senders voted for the specified option in a poll; use poll.can_get_voters to check whether the method can be used. For optimal performance, the number of returned users is chosen by TDLib\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter limit: The maximum number of voters to be returned; must be positive and can't be greater than 50. For optimal performance, the number of returned voters is chosen by TDLib and can be smaller than the specified limit, even if the end of the voter list has not been reached\n    /// - Parameter messageId: Identifier of the message containing the poll\n    /// - Parameter offset: Number of voters to skip in the result; must be non-negative\n    /// - Parameter optionId: 0-based identifier of the answer option\n    /// - Returns: Message senders voted for the specified option in a poll. For optimal performance, the number of returned users is chosen by TDLib\n    public final func getPollVoters(\n        chatId: Int64?,\n        limit: Int?,\n        messageId: Int64?,\n        offset: Int?,\n        optionId: Int?,\n        completion: @escaping (Result<PollVoters, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPollVoters(\n            chatId: chatId,\n            limit: limit,\n            messageId: messageId,\n            offset: offset,\n            optionId: optionId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns message senders voted for the specified option in a poll; use poll.can_get_voters to check whether the method can be used. For optimal performance, the number of returned users is chosen by TDLib\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter limit: The maximum number of voters to be returned; must be positive and can't be greater than 50. For optimal performance, the number of returned voters is chosen by TDLib and can be smaller than the specified limit, even if the end of the voter list has not been reached\n    /// - Parameter messageId: Identifier of the message containing the poll\n    /// - Parameter offset: Number of voters to skip in the result; must be non-negative\n    /// - Parameter optionId: 0-based identifier of the answer option\n    /// - Returns: Message senders voted for the specified option in a poll. For optimal performance, the number of returned users is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPollVoters(\n        chatId: Int64?,\n        limit: Int?,\n        messageId: Int64?,\n        offset: Int?,\n        optionId: Int?\n    ) async throws -> PollVoters {\n        let query = GetPollVoters(\n            chatId: chatId,\n            limit: limit,\n            messageId: messageId,\n            offset: offset,\n            optionId: optionId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns statistics of poll votes in a poll\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Parameter messageId: Identifier of the message containing the poll. Use messageProperties.can_get_poll_vote_statistics to check whether the method can be used for a message\n    /// - Returns: Statistics of poll votes in a poll\n    public final func getPollVoteStatistics(\n        chatId: Int64?,\n        isDark: Bool?,\n        messageId: Int64?,\n        completion: @escaping (Result<PollVoteStatistics, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPollVoteStatistics(\n            chatId: chatId,\n            isDark: isDark,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns statistics of poll votes in a poll\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Parameter messageId: Identifier of the message containing the poll. Use messageProperties.can_get_poll_vote_statistics to check whether the method can be used for a message\n    /// - Returns: Statistics of poll votes in a poll\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPollVoteStatistics(\n        chatId: Int64?,\n        isDark: Bool?,\n        messageId: Int64?\n    ) async throws -> PollVoteStatistics {\n        let query = GetPollVoteStatistics(\n            chatId: chatId,\n            isDark: isDark,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Stops a poll\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter messageId: Identifier of the message containing the poll. Use messageProperties.can_be_edited to check whether the poll can be stopped\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    public final func stopPoll(\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = StopPoll(\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Stops a poll\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter messageId: Identifier of the message containing the poll. Use messageProperties.can_be_edited to check whether the poll can be stopped\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func stopPoll(\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> Ok {\n        let query = StopPoll(\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds tasks to a checklist in a message\n    /// - Parameter chatId: Identifier of the chat with the message\n    /// - Parameter messageId: Identifier of the message containing the checklist. Use messageProperties.can_add_tasks to check whether the tasks can be added\n    /// - Parameter tasks: List of added tasks\n    public final func addChecklistTasks(\n        chatId: Int64?,\n        messageId: Int64?,\n        tasks: [InputChecklistTask]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddChecklistTasks(\n            chatId: chatId,\n            messageId: messageId,\n            tasks: tasks\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds tasks to a checklist in a message\n    /// - Parameter chatId: Identifier of the chat with the message\n    /// - Parameter messageId: Identifier of the message containing the checklist. Use messageProperties.can_add_tasks to check whether the tasks can be added\n    /// - Parameter tasks: List of added tasks\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func addChecklistTasks(\n        chatId: Int64?,\n        messageId: Int64?,\n        tasks: [InputChecklistTask]?\n    ) async throws -> Ok {\n        let query = AddChecklistTasks(\n            chatId: chatId,\n            messageId: messageId,\n            tasks: tasks\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds tasks of a checklist in a message as done or not done\n    /// - Parameter chatId: Identifier of the chat with the message\n    /// - Parameter markedAsDoneTaskIds: Identifiers of tasks that were marked as done\n    /// - Parameter markedAsNotDoneTaskIds: Identifiers of tasks that were marked as not done\n    /// - Parameter messageId: Identifier of the message containing the checklist. Use messageProperties.can_mark_tasks_as_done to check whether the tasks can be marked as done or not done\n    public final func markChecklistTasksAsDone(\n        chatId: Int64?,\n        markedAsDoneTaskIds: [Int]?,\n        markedAsNotDoneTaskIds: [Int]?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = MarkChecklistTasksAsDone(\n            chatId: chatId,\n            markedAsDoneTaskIds: markedAsDoneTaskIds,\n            markedAsNotDoneTaskIds: markedAsNotDoneTaskIds,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds tasks of a checklist in a message as done or not done\n    /// - Parameter chatId: Identifier of the chat with the message\n    /// - Parameter markedAsDoneTaskIds: Identifiers of tasks that were marked as done\n    /// - Parameter markedAsNotDoneTaskIds: Identifiers of tasks that were marked as not done\n    /// - Parameter messageId: Identifier of the message containing the checklist. Use messageProperties.can_mark_tasks_as_done to check whether the tasks can be marked as done or not done\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func markChecklistTasksAsDone(\n        chatId: Int64?,\n        markedAsDoneTaskIds: [Int]?,\n        markedAsNotDoneTaskIds: [Int]?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = MarkChecklistTasksAsDone(\n            chatId: chatId,\n            markedAsDoneTaskIds: markedAsDoneTaskIds,\n            markedAsNotDoneTaskIds: markedAsNotDoneTaskIds,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Hides a suggested action\n    /// - Parameter action: Suggested action to hide\n    public final func hideSuggestedAction(\n        action: SuggestedAction?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = HideSuggestedAction(\n            action: action\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Hides a suggested action\n    /// - Parameter action: Suggested action to hide\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func hideSuggestedAction(action: SuggestedAction?) async throws -> Ok {\n        let query = HideSuggestedAction(\n            action: action\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Hides the list of contacts that have close birthdays for 24 hours\n    public final func hideContactCloseBirthdays(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = HideContactCloseBirthdays()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Hides the list of contacts that have close birthdays for 24 hours\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func hideContactCloseBirthdays() async throws -> Ok {\n        let query = HideContactCloseBirthdays()\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a business connection by its identifier; for bots only\n    /// - Parameter connectionId: Identifier of the business connection to return\n    /// - Returns: Information about a business connection by its identifier\n    public final func getBusinessConnection(\n        connectionId: String?,\n        completion: @escaping (Result<BusinessConnection, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBusinessConnection(\n            connectionId: connectionId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a business connection by its identifier; for bots only\n    /// - Parameter connectionId: Identifier of the business connection to return\n    /// - Returns: Information about a business connection by its identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getBusinessConnection(connectionId: String?) async throws -> BusinessConnection {\n        let query = GetBusinessConnection(\n            connectionId: connectionId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a button of type inlineKeyboardButtonTypeLoginUrl. The method needs to be called when the user presses the button\n    /// - Parameter buttonId: Button identifier\n    /// - Parameter chatId: Chat identifier of the message with the button\n    /// - Parameter messageId: Message identifier of the message with the button. The message must not be scheduled\n    /// - Returns: Information about a button of type inlineKeyboardButtonTypeLoginUrl\n    public final func getLoginUrlInfo(\n        buttonId: Int64?,\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<LoginUrlInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLoginUrlInfo(\n            buttonId: buttonId,\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a button of type inlineKeyboardButtonTypeLoginUrl. The method needs to be called when the user presses the button\n    /// - Parameter buttonId: Button identifier\n    /// - Parameter chatId: Chat identifier of the message with the button\n    /// - Parameter messageId: Message identifier of the message with the button. The message must not be scheduled\n    /// - Returns: Information about a button of type inlineKeyboardButtonTypeLoginUrl\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getLoginUrlInfo(\n        buttonId: Int64?,\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> LoginUrlInfo {\n        let query = GetLoginUrlInfo(\n            buttonId: buttonId,\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an HTTP URL which can be used to automatically authorize the user on a website after clicking an inline button of type inlineKeyboardButtonTypeLoginUrl. Use the method getLoginUrlInfo to find whether a prior user confirmation is needed. If an error is returned, then the button must be handled as an ordinary URL button\n    /// - Parameter allowWriteAccess: Pass true to allow the bot to send messages to the current user. Phone number access can't be requested using the button\n    /// - Parameter buttonId: Button identifier\n    /// - Parameter chatId: Chat identifier of the message with the button\n    /// - Parameter messageId: Message identifier of the message with the button\n    /// - Returns: An HTTP URL which can be used to automatically authorize the user on a website after clicking an inline button of type inlineKeyboardButtonTypeLoginUrl. If an error is returned, then the button must be handled as an ordinary URL button\n    public final func getLoginUrl(\n        allowWriteAccess: Bool?,\n        buttonId: Int64?,\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLoginUrl(\n            allowWriteAccess: allowWriteAccess,\n            buttonId: buttonId,\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an HTTP URL which can be used to automatically authorize the user on a website after clicking an inline button of type inlineKeyboardButtonTypeLoginUrl. Use the method getLoginUrlInfo to find whether a prior user confirmation is needed. If an error is returned, then the button must be handled as an ordinary URL button\n    /// - Parameter allowWriteAccess: Pass true to allow the bot to send messages to the current user. Phone number access can't be requested using the button\n    /// - Parameter buttonId: Button identifier\n    /// - Parameter chatId: Chat identifier of the message with the button\n    /// - Parameter messageId: Message identifier of the message with the button\n    /// - Returns: An HTTP URL which can be used to automatically authorize the user on a website after clicking an inline button of type inlineKeyboardButtonTypeLoginUrl. If an error is returned, then the button must be handled as an ordinary URL button\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getLoginUrl(\n        allowWriteAccess: Bool?,\n        buttonId: Int64?,\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> HttpUrl {\n        let query = GetLoginUrl(\n            allowWriteAccess: allowWriteAccess,\n            buttonId: buttonId,\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Shares users after pressing a keyboardButtonTypeRequestUsers button with the bot\n    /// - Parameter buttonId: Identifier of the button\n    /// - Parameter onlyCheck: Pass true to check that the users can be shared by the button instead of actually sharing them\n    /// - Parameter sharedUserIds: Identifiers of the shared users\n    /// - Parameter source: Source of the button\n    public final func shareUsersWithBot(\n        buttonId: Int?,\n        onlyCheck: Bool?,\n        sharedUserIds: [Int64]?,\n        source: KeyboardButtonSource?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ShareUsersWithBot(\n            buttonId: buttonId,\n            onlyCheck: onlyCheck,\n            sharedUserIds: sharedUserIds,\n            source: source\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Shares users after pressing a keyboardButtonTypeRequestUsers button with the bot\n    /// - Parameter buttonId: Identifier of the button\n    /// - Parameter onlyCheck: Pass true to check that the users can be shared by the button instead of actually sharing them\n    /// - Parameter sharedUserIds: Identifiers of the shared users\n    /// - Parameter source: Source of the button\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func shareUsersWithBot(\n        buttonId: Int?,\n        onlyCheck: Bool?,\n        sharedUserIds: [Int64]?,\n        source: KeyboardButtonSource?\n    ) async throws -> Ok {\n        let query = ShareUsersWithBot(\n            buttonId: buttonId,\n            onlyCheck: onlyCheck,\n            sharedUserIds: sharedUserIds,\n            source: source\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Shares a chat after pressing a keyboardButtonTypeRequestChat button with the bot\n    /// - Parameter buttonId: Identifier of the button\n    /// - Parameter onlyCheck: Pass true to check that the chat can be shared by the button instead of actually sharing it. Doesn't check bot_is_member and bot_administrator_rights restrictions. If the bot must be a member, then all chats from getGroupsInCommon and all chats, where the user can add the bot, are suitable. In the latter case the bot will be automatically added to the chat. If the bot must be an administrator, then all chats, where the bot already has requested rights or can be added to administrators by the user, are suitable. In the latter case the bot will be automatically granted requested rights\n    /// - Parameter sharedChatId: Identifier of the shared chat\n    /// - Parameter source: Source of the button\n    public final func shareChatWithBot(\n        buttonId: Int?,\n        onlyCheck: Bool?,\n        sharedChatId: Int64?,\n        source: KeyboardButtonSource?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ShareChatWithBot(\n            buttonId: buttonId,\n            onlyCheck: onlyCheck,\n            sharedChatId: sharedChatId,\n            source: source\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Shares a chat after pressing a keyboardButtonTypeRequestChat button with the bot\n    /// - Parameter buttonId: Identifier of the button\n    /// - Parameter onlyCheck: Pass true to check that the chat can be shared by the button instead of actually sharing it. Doesn't check bot_is_member and bot_administrator_rights restrictions. If the bot must be a member, then all chats from getGroupsInCommon and all chats, where the user can add the bot, are suitable. In the latter case the bot will be automatically added to the chat. If the bot must be an administrator, then all chats, where the bot already has requested rights or can be added to administrators by the user, are suitable. In the latter case the bot will be automatically granted requested rights\n    /// - Parameter sharedChatId: Identifier of the shared chat\n    /// - Parameter source: Source of the button\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func shareChatWithBot(\n        buttonId: Int?,\n        onlyCheck: Bool?,\n        sharedChatId: Int64?,\n        source: KeyboardButtonSource?\n    ) async throws -> Ok {\n        let query = ShareChatWithBot(\n            buttonId: buttonId,\n            onlyCheck: onlyCheck,\n            sharedChatId: sharedChatId,\n            source: source\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends an inline query to a bot and returns its results. Returns an error with code 502 if the bot fails to answer the query before the query timeout expires\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter chatId: Identifier of the chat where the query was sent\n    /// - Parameter offset: Offset of the first entry to return; use empty string to get the first chunk of results\n    /// - Parameter query: Text of the query\n    /// - Parameter userLocation: Location of the user; pass null if unknown or the bot doesn't need user's location\n    /// - Returns: Sends an inline query to a bot and returns its results. Returns an error with code 502 if the bot fails to answer the query before the query timeout expires\n    public final func getInlineQueryResults(\n        botUserId: Int64?,\n        chatId: Int64?,\n        offset: String?,\n        query: String?,\n        userLocation: Location?,\n        completion: @escaping (Result<InlineQueryResults, Swift.Error>) -> Void\n    ) throws {\n        let query = GetInlineQueryResults(\n            botUserId: botUserId,\n            chatId: chatId,\n            offset: offset,\n            query: query,\n            userLocation: userLocation\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends an inline query to a bot and returns its results. Returns an error with code 502 if the bot fails to answer the query before the query timeout expires\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter chatId: Identifier of the chat where the query was sent\n    /// - Parameter offset: Offset of the first entry to return; use empty string to get the first chunk of results\n    /// - Parameter query: Text of the query\n    /// - Parameter userLocation: Location of the user; pass null if unknown or the bot doesn't need user's location\n    /// - Returns: Sends an inline query to a bot and returns its results. Returns an error with code 502 if the bot fails to answer the query before the query timeout expires\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getInlineQueryResults(\n        botUserId: Int64?,\n        chatId: Int64?,\n        offset: String?,\n        query: String?,\n        userLocation: Location?\n    ) async throws -> InlineQueryResults {\n        let query = GetInlineQueryResults(\n            botUserId: botUserId,\n            chatId: chatId,\n            offset: offset,\n            query: query,\n            userLocation: userLocation\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets the result of an inline query; for bots only\n    /// - Parameter button: Button to be shown above inline query results; pass null if none\n    /// - Parameter cacheTime: Allowed time to cache the results of the query, in seconds\n    /// - Parameter inlineQueryId: Identifier of the inline query\n    /// - Parameter isPersonal: Pass true if results may be cached and returned only for the user who sent the query. By default, results may be returned to any user who sends the same query\n    /// - Parameter nextOffset: Offset for the next inline query; pass an empty string if there are no more results\n    /// - Parameter results: The results of the query\n    public final func answerInlineQuery(\n        button: InlineQueryResultsButton?,\n        cacheTime: Int?,\n        inlineQueryId: TdInt64?,\n        isPersonal: Bool?,\n        nextOffset: String?,\n        results: [InputInlineQueryResult]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AnswerInlineQuery(\n            button: button,\n            cacheTime: cacheTime,\n            inlineQueryId: inlineQueryId,\n            isPersonal: isPersonal,\n            nextOffset: nextOffset,\n            results: results\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets the result of an inline query; for bots only\n    /// - Parameter button: Button to be shown above inline query results; pass null if none\n    /// - Parameter cacheTime: Allowed time to cache the results of the query, in seconds\n    /// - Parameter inlineQueryId: Identifier of the inline query\n    /// - Parameter isPersonal: Pass true if results may be cached and returned only for the user who sent the query. By default, results may be returned to any user who sends the same query\n    /// - Parameter nextOffset: Offset for the next inline query; pass an empty string if there are no more results\n    /// - Parameter results: The results of the query\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func answerInlineQuery(\n        button: InlineQueryResultsButton?,\n        cacheTime: Int?,\n        inlineQueryId: TdInt64?,\n        isPersonal: Bool?,\n        nextOffset: String?,\n        results: [InputInlineQueryResult]?\n    ) async throws -> Ok {\n        let query = AnswerInlineQuery(\n            button: button,\n            cacheTime: cacheTime,\n            inlineQueryId: inlineQueryId,\n            isPersonal: isPersonal,\n            nextOffset: nextOffset,\n            results: results\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets the result of a guest query; for bots only\n    /// - Parameter guestQueryId: Identifier of the guest query\n    /// - Parameter result: The result of the query\n    public final func answerGuestQuery(\n        guestQueryId: TdInt64?,\n        result: InputInlineQueryResult?,\n        completion: @escaping (Result<InlineMessageId, Swift.Error>) -> Void\n    ) throws {\n        let query = AnswerGuestQuery(\n            guestQueryId: guestQueryId,\n            result: result\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets the result of a guest query; for bots only\n    /// - Parameter guestQueryId: Identifier of the guest query\n    /// - Parameter result: The result of the query\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func answerGuestQuery(\n        guestQueryId: TdInt64?,\n        result: InputInlineQueryResult?\n    ) async throws -> InlineMessageId {\n        let query = AnswerGuestQuery(\n            guestQueryId: guestQueryId,\n            result: result\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Saves an inline message to be sent by the given user; for bots only\n    /// - Parameter chatTypes: Types of the chats to which the message can be sent\n    /// - Parameter result: The description of the message\n    /// - Parameter userId: Identifier of the user\n    public final func savePreparedInlineMessage(\n        chatTypes: TargetChatTypes?,\n        result: InputInlineQueryResult?,\n        userId: Int64?,\n        completion: @escaping (Result<PreparedInlineMessageId, Swift.Error>) -> Void\n    ) throws {\n        let query = SavePreparedInlineMessage(\n            chatTypes: chatTypes,\n            result: result,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Saves an inline message to be sent by the given user; for bots only\n    /// - Parameter chatTypes: Types of the chats to which the message can be sent\n    /// - Parameter result: The description of the message\n    /// - Parameter userId: Identifier of the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func savePreparedInlineMessage(\n        chatTypes: TargetChatTypes?,\n        result: InputInlineQueryResult?,\n        userId: Int64?\n    ) async throws -> PreparedInlineMessageId {\n        let query = SavePreparedInlineMessage(\n            chatTypes: chatTypes,\n            result: result,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Saves an inline message to be sent by the given user\n    /// - Parameter botUserId: Identifier of the bot that created the message\n    /// - Parameter preparedMessageId: Identifier of the prepared message\n    public final func getPreparedInlineMessage(\n        botUserId: Int64?,\n        preparedMessageId: String?,\n        completion: @escaping (Result<PreparedInlineMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPreparedInlineMessage(\n            botUserId: botUserId,\n            preparedMessageId: preparedMessageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Saves an inline message to be sent by the given user\n    /// - Parameter botUserId: Identifier of the bot that created the message\n    /// - Parameter preparedMessageId: Identifier of the prepared message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPreparedInlineMessage(\n        botUserId: Int64?,\n        preparedMessageId: String?\n    ) async throws -> PreparedInlineMessage {\n        let query = GetPreparedInlineMessage(\n            botUserId: botUserId,\n            preparedMessageId: preparedMessageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Saves a keyboard button to be shown to the given user; for bots only\n    /// - Parameter button: The button; must be of the type keyboardButtonTypeRequestUsers, keyboardButtonTypeRequestChat, or keyboardButtonTypeRequestManagedBot\n    /// - Parameter userId: Identifier of the user\n    public final func savePreparedKeyboardButton(\n        button: KeyboardButton?,\n        userId: Int64?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = SavePreparedKeyboardButton(\n            button: button,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Saves a keyboard button to be shown to the given user; for bots only\n    /// - Parameter button: The button; must be of the type keyboardButtonTypeRequestUsers, keyboardButtonTypeRequestChat, or keyboardButtonTypeRequestManagedBot\n    /// - Parameter userId: Identifier of the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func savePreparedKeyboardButton(\n        button: KeyboardButton?,\n        userId: Int64?\n    ) async throws -> Text {\n        let query = SavePreparedKeyboardButton(\n            button: button,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a keyboard button prepared by the bot for the user. The button will be of the type keyboardButtonTypeRequestUsers, keyboardButtonTypeRequestChat, or keyboardButtonTypeRequestManagedBot\n    /// - Parameter botUserId: Identifier of the bot that created the button\n    /// - Parameter preparedButtonId: Identifier of the prepared button\n    /// - Returns: A keyboard button prepared by the bot for the user\n    public final func getPreparedKeyboardButton(\n        botUserId: Int64?,\n        preparedButtonId: String?,\n        completion: @escaping (Result<KeyboardButton, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPreparedKeyboardButton(\n            botUserId: botUserId,\n            preparedButtonId: preparedButtonId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a keyboard button prepared by the bot for the user. The button will be of the type keyboardButtonTypeRequestUsers, keyboardButtonTypeRequestChat, or keyboardButtonTypeRequestManagedBot\n    /// - Parameter botUserId: Identifier of the bot that created the button\n    /// - Parameter preparedButtonId: Identifier of the prepared button\n    /// - Returns: A keyboard button prepared by the bot for the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPreparedKeyboardButton(\n        botUserId: Int64?,\n        preparedButtonId: String?\n    ) async throws -> KeyboardButton {\n        let query = GetPreparedKeyboardButton(\n            botUserId: botUserId,\n            preparedButtonId: preparedButtonId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the most grossing Web App bots\n    /// - Parameter limit: The maximum number of bots to be returned; up to 100\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: The most grossing Web App bots\n    public final func getGrossingWebAppBots(\n        limit: Int?,\n        offset: String?,\n        completion: @escaping (Result<FoundUsers, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGrossingWebAppBots(\n            limit: limit,\n            offset: offset\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the most grossing Web App bots\n    /// - Parameter limit: The maximum number of bots to be returned; up to 100\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: The most grossing Web App bots\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getGrossingWebAppBots(\n        limit: Int?,\n        offset: String?\n    ) async throws -> FoundUsers {\n        let query = GetGrossingWebAppBots(\n            limit: limit,\n            offset: offset\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a Web App by its short name. Returns a 404 error if the Web App is not found\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter webAppShortName: Short name of the Web App\n    /// - Returns: Information about a Web App by its short name. Returns a 404 error if the Web App is not found\n    public final func searchWebApp(\n        botUserId: Int64?,\n        webAppShortName: String?,\n        completion: @escaping (Result<FoundWebApp, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchWebApp(\n            botUserId: botUserId,\n            webAppShortName: webAppShortName\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a Web App by its short name. Returns a 404 error if the Web App is not found\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter webAppShortName: Short name of the Web App\n    /// - Returns: Information about a Web App by its short name. Returns a 404 error if the Web App is not found\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchWebApp(\n        botUserId: Int64?,\n        webAppShortName: String?\n    ) async throws -> FoundWebApp {\n        let query = SearchWebApp(\n            botUserId: botUserId,\n            webAppShortName: webAppShortName\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a default placeholder for Web Apps of a bot. This is an offline method. Returns a 404 error if the placeholder isn't known\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Returns: A default placeholder for Web Apps of a bot. Returns a 404 error if the placeholder isn't known\n    public final func getWebAppPlaceholder(\n        botUserId: Int64?,\n        completion: @escaping (Result<Outline, Swift.Error>) -> Void\n    ) throws {\n        let query = GetWebAppPlaceholder(\n            botUserId: botUserId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a default placeholder for Web Apps of a bot. This is an offline method. Returns a 404 error if the placeholder isn't known\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Returns: A default placeholder for Web Apps of a bot. Returns a 404 error if the placeholder isn't known\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getWebAppPlaceholder(botUserId: Int64?) async throws -> Outline {\n        let query = GetWebAppPlaceholder(\n            botUserId: botUserId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an HTTPS URL of a Web App to open after a link of the type internalLinkTypeWebApp is clicked\n    /// - Parameter allowWriteAccess: Pass true if the current user allowed the bot to send them messages\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter chatId: Identifier of the chat in which the link was clicked; pass 0 if none\n    /// - Parameter parameters: Parameters to use to open the Web App\n    /// - Parameter startParameter: Start parameter from internalLinkTypeWebApp\n    /// - Parameter webAppShortName: Short name of the Web App\n    /// - Returns: An HTTPS URL of a Web App to open after a link of the type internalLinkTypeWebApp is clicked\n    public final func getWebAppLinkUrl(\n        allowWriteAccess: Bool?,\n        botUserId: Int64?,\n        chatId: Int64?,\n        parameters: WebAppOpenParameters?,\n        startParameter: String?,\n        webAppShortName: String?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetWebAppLinkUrl(\n            allowWriteAccess: allowWriteAccess,\n            botUserId: botUserId,\n            chatId: chatId,\n            parameters: parameters,\n            startParameter: startParameter,\n            webAppShortName: webAppShortName\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an HTTPS URL of a Web App to open after a link of the type internalLinkTypeWebApp is clicked\n    /// - Parameter allowWriteAccess: Pass true if the current user allowed the bot to send them messages\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter chatId: Identifier of the chat in which the link was clicked; pass 0 if none\n    /// - Parameter parameters: Parameters to use to open the Web App\n    /// - Parameter startParameter: Start parameter from internalLinkTypeWebApp\n    /// - Parameter webAppShortName: Short name of the Web App\n    /// - Returns: An HTTPS URL of a Web App to open after a link of the type internalLinkTypeWebApp is clicked\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getWebAppLinkUrl(\n        allowWriteAccess: Bool?,\n        botUserId: Int64?,\n        chatId: Int64?,\n        parameters: WebAppOpenParameters?,\n        startParameter: String?,\n        webAppShortName: String?\n    ) async throws -> HttpUrl {\n        let query = GetWebAppLinkUrl(\n            allowWriteAccess: allowWriteAccess,\n            botUserId: botUserId,\n            chatId: chatId,\n            parameters: parameters,\n            startParameter: startParameter,\n            webAppShortName: webAppShortName\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information needed to open the main Web App of a bot\n    /// - Parameter botUserId: Identifier of the target bot. If the bot is restricted for the current user, then show an error instead of calling the method\n    /// - Parameter chatId: Identifier of the chat in which the Web App is opened; pass 0 if none\n    /// - Parameter parameters: Parameters to use to open the Web App\n    /// - Parameter startParameter: Start parameter from internalLinkTypeMainWebApp\n    /// - Returns: Information needed to open the main Web App of a bot\n    public final func getMainWebApp(\n        botUserId: Int64?,\n        chatId: Int64?,\n        parameters: WebAppOpenParameters?,\n        startParameter: String?,\n        completion: @escaping (Result<MainWebApp, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMainWebApp(\n            botUserId: botUserId,\n            chatId: chatId,\n            parameters: parameters,\n            startParameter: startParameter\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information needed to open the main Web App of a bot\n    /// - Parameter botUserId: Identifier of the target bot. If the bot is restricted for the current user, then show an error instead of calling the method\n    /// - Parameter chatId: Identifier of the chat in which the Web App is opened; pass 0 if none\n    /// - Parameter parameters: Parameters to use to open the Web App\n    /// - Parameter startParameter: Start parameter from internalLinkTypeMainWebApp\n    /// - Returns: Information needed to open the main Web App of a bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMainWebApp(\n        botUserId: Int64?,\n        chatId: Int64?,\n        parameters: WebAppOpenParameters?,\n        startParameter: String?\n    ) async throws -> MainWebApp {\n        let query = GetMainWebApp(\n            botUserId: botUserId,\n            chatId: chatId,\n            parameters: parameters,\n            startParameter: startParameter\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an HTTPS URL of a Web App to open from the side menu, a keyboardButtonTypeWebApp button, or an inlineQueryResultsButtonTypeWebApp button\n    /// - Parameter botUserId: Identifier of the target bot. If the bot is restricted for the current user, then show an error instead of calling the method\n    /// - Parameter parameters: Parameters to use to open the Web App\n    /// - Parameter url: The URL from a keyboardButtonTypeWebApp button, inlineQueryResultsButtonTypeWebApp button, or an empty string when the bot is opened from the side menu\n    /// - Returns: An HTTPS URL of a Web App to open from the side menu, a keyboardButtonTypeWebApp button, or an inlineQueryResultsButtonTypeWebApp button\n    public final func getWebAppUrl(\n        botUserId: Int64?,\n        parameters: WebAppOpenParameters?,\n        url: String?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetWebAppUrl(\n            botUserId: botUserId,\n            parameters: parameters,\n            url: url\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an HTTPS URL of a Web App to open from the side menu, a keyboardButtonTypeWebApp button, or an inlineQueryResultsButtonTypeWebApp button\n    /// - Parameter botUserId: Identifier of the target bot. If the bot is restricted for the current user, then show an error instead of calling the method\n    /// - Parameter parameters: Parameters to use to open the Web App\n    /// - Parameter url: The URL from a keyboardButtonTypeWebApp button, inlineQueryResultsButtonTypeWebApp button, or an empty string when the bot is opened from the side menu\n    /// - Returns: An HTTPS URL of a Web App to open from the side menu, a keyboardButtonTypeWebApp button, or an inlineQueryResultsButtonTypeWebApp button\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getWebAppUrl(\n        botUserId: Int64?,\n        parameters: WebAppOpenParameters?,\n        url: String?\n    ) async throws -> HttpUrl {\n        let query = GetWebAppUrl(\n            botUserId: botUserId,\n            parameters: parameters,\n            url: url\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends data received from a keyboardButtonTypeWebApp Web App to a bot\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter buttonText: Text of the keyboardButtonTypeWebApp button, which opened the Web App\n    /// - Parameter data: The data\n    public final func sendWebAppData(\n        botUserId: Int64?,\n        buttonText: String?,\n        data: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendWebAppData(\n            botUserId: botUserId,\n            buttonText: buttonText,\n            data: data\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends data received from a keyboardButtonTypeWebApp Web App to a bot\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter buttonText: Text of the keyboardButtonTypeWebApp button, which opened the Web App\n    /// - Parameter data: The data\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func sendWebAppData(\n        botUserId: Int64?,\n        buttonText: String?,\n        data: String?\n    ) async throws -> Ok {\n        let query = SendWebAppData(\n            botUserId: botUserId,\n            buttonText: buttonText,\n            data: data\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that a Web App is being opened from the attachment menu, a botMenuButton button, an internalLinkTypeAttachmentMenuBot link, or an inlineKeyboardButtonTypeWebApp button. For each bot, a confirmation alert about data sent to the bot must be shown once\n    /// - Parameter botUserId: Identifier of the bot, providing the Web App. If the bot is restricted for the current user, then show an error instead of calling the method\n    /// - Parameter chatId: Identifier of the chat in which the Web App is opened. The Web App can't be opened in secret chats\n    /// - Parameter parameters: Parameters to use to open the Web App\n    /// - Parameter replyTo: Information about the message or story to be replied in the message sent by the Web App; pass null if none\n    /// - Parameter topicId: Topic in which the message will be sent; pass null if none\n    /// - Parameter url: The URL from an inlineKeyboardButtonTypeWebApp button, a botMenuButton button, an internalLinkTypeAttachmentMenuBot link, or an empty string otherwise\n    public final func openWebApp(\n        botUserId: Int64?,\n        chatId: Int64?,\n        parameters: WebAppOpenParameters?,\n        replyTo: InputMessageReplyTo?,\n        topicId: MessageTopic?,\n        url: String?,\n        completion: @escaping (Result<WebAppInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = OpenWebApp(\n            botUserId: botUserId,\n            chatId: chatId,\n            parameters: parameters,\n            replyTo: replyTo,\n            topicId: topicId,\n            url: url\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that a Web App is being opened from the attachment menu, a botMenuButton button, an internalLinkTypeAttachmentMenuBot link, or an inlineKeyboardButtonTypeWebApp button. For each bot, a confirmation alert about data sent to the bot must be shown once\n    /// - Parameter botUserId: Identifier of the bot, providing the Web App. If the bot is restricted for the current user, then show an error instead of calling the method\n    /// - Parameter chatId: Identifier of the chat in which the Web App is opened. The Web App can't be opened in secret chats\n    /// - Parameter parameters: Parameters to use to open the Web App\n    /// - Parameter replyTo: Information about the message or story to be replied in the message sent by the Web App; pass null if none\n    /// - Parameter topicId: Topic in which the message will be sent; pass null if none\n    /// - Parameter url: The URL from an inlineKeyboardButtonTypeWebApp button, a botMenuButton button, an internalLinkTypeAttachmentMenuBot link, or an empty string otherwise\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func openWebApp(\n        botUserId: Int64?,\n        chatId: Int64?,\n        parameters: WebAppOpenParameters?,\n        replyTo: InputMessageReplyTo?,\n        topicId: MessageTopic?,\n        url: String?\n    ) async throws -> WebAppInfo {\n        let query = OpenWebApp(\n            botUserId: botUserId,\n            chatId: chatId,\n            parameters: parameters,\n            replyTo: replyTo,\n            topicId: topicId,\n            url: url\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that a previously opened Web App was closed\n    /// - Parameter webAppLaunchId: Identifier of Web App launch, received from openWebApp\n    public final func closeWebApp(\n        webAppLaunchId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CloseWebApp(\n            webAppLaunchId: webAppLaunchId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that a previously opened Web App was closed\n    /// - Parameter webAppLaunchId: Identifier of Web App launch, received from openWebApp\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func closeWebApp(webAppLaunchId: TdInt64?) async throws -> Ok {\n        let query = CloseWebApp(\n            webAppLaunchId: webAppLaunchId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets the result of interaction with a Web App and sends corresponding message on behalf of the user to the chat from which the query originated; for bots only\n    /// - Parameter result: The result of the query\n    /// - Parameter webAppQueryId: Identifier of the Web App query\n    public final func answerWebAppQuery(\n        result: InputInlineQueryResult?,\n        webAppQueryId: String?,\n        completion: @escaping (Result<InlineMessageId, Swift.Error>) -> Void\n    ) throws {\n        let query = AnswerWebAppQuery(\n            result: result,\n            webAppQueryId: webAppQueryId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets the result of interaction with a Web App and sends corresponding message on behalf of the user to the chat from which the query originated; for bots only\n    /// - Parameter result: The result of the query\n    /// - Parameter webAppQueryId: Identifier of the Web App query\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func answerWebAppQuery(\n        result: InputInlineQueryResult?,\n        webAppQueryId: String?\n    ) async throws -> InlineMessageId {\n        let query = AnswerWebAppQuery(\n            result: result,\n            webAppQueryId: webAppQueryId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks whether a file can be downloaded and saved locally by Web App request\n    /// - Parameter botUserId: Identifier of the bot, providing the Web App\n    /// - Parameter fileName: Name of the file\n    /// - Parameter url: URL of the file\n    public final func checkWebAppFileDownload(\n        botUserId: Int64?,\n        fileName: String?,\n        url: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckWebAppFileDownload(\n            botUserId: botUserId,\n            fileName: fileName,\n            url: url\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks whether a file can be downloaded and saved locally by Web App request\n    /// - Parameter botUserId: Identifier of the bot, providing the Web App\n    /// - Parameter fileName: Name of the file\n    /// - Parameter url: URL of the file\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func checkWebAppFileDownload(\n        botUserId: Int64?,\n        fileName: String?,\n        url: String?\n    ) async throws -> Ok {\n        let query = CheckWebAppFileDownload(\n            botUserId: botUserId,\n            fileName: fileName,\n            url: url\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends a callback query to a bot and returns an answer. Returns an error with code 502 if the bot fails to answer the query before the query timeout expires\n    /// - Parameter chatId: Identifier of the chat with the message\n    /// - Parameter messageId: Identifier of the message from which the query originated. The message must not be scheduled\n    /// - Parameter payload: Query payload\n    /// - Returns: Sends a callback query to a bot and returns an answer. Returns an error with code 502 if the bot fails to answer the query before the query timeout expires\n    public final func getCallbackQueryAnswer(\n        chatId: Int64?,\n        messageId: Int64?,\n        payload: CallbackQueryPayload?,\n        completion: @escaping (Result<CallbackQueryAnswer, Swift.Error>) -> Void\n    ) throws {\n        let query = GetCallbackQueryAnswer(\n            chatId: chatId,\n            messageId: messageId,\n            payload: payload\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends a callback query to a bot and returns an answer. Returns an error with code 502 if the bot fails to answer the query before the query timeout expires\n    /// - Parameter chatId: Identifier of the chat with the message\n    /// - Parameter messageId: Identifier of the message from which the query originated. The message must not be scheduled\n    /// - Parameter payload: Query payload\n    /// - Returns: Sends a callback query to a bot and returns an answer. Returns an error with code 502 if the bot fails to answer the query before the query timeout expires\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getCallbackQueryAnswer(\n        chatId: Int64?,\n        messageId: Int64?,\n        payload: CallbackQueryPayload?\n    ) async throws -> CallbackQueryAnswer {\n        let query = GetCallbackQueryAnswer(\n            chatId: chatId,\n            messageId: messageId,\n            payload: payload\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets the result of a callback query; for bots only\n    /// - Parameter cacheTime: Time during which the result of the query can be cached, in seconds\n    /// - Parameter callbackQueryId: Identifier of the callback query\n    /// - Parameter showAlert: Pass true to show an alert to the user instead of a toast notification\n    /// - Parameter text: Text of the answer\n    /// - Parameter url: URL to be opened\n    public final func answerCallbackQuery(\n        cacheTime: Int?,\n        callbackQueryId: TdInt64?,\n        showAlert: Bool?,\n        text: String?,\n        url: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AnswerCallbackQuery(\n            cacheTime: cacheTime,\n            callbackQueryId: callbackQueryId,\n            showAlert: showAlert,\n            text: text,\n            url: url\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets the result of a callback query; for bots only\n    /// - Parameter cacheTime: Time during which the result of the query can be cached, in seconds\n    /// - Parameter callbackQueryId: Identifier of the callback query\n    /// - Parameter showAlert: Pass true to show an alert to the user instead of a toast notification\n    /// - Parameter text: Text of the answer\n    /// - Parameter url: URL to be opened\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func answerCallbackQuery(\n        cacheTime: Int?,\n        callbackQueryId: TdInt64?,\n        showAlert: Bool?,\n        text: String?,\n        url: String?\n    ) async throws -> Ok {\n        let query = AnswerCallbackQuery(\n            cacheTime: cacheTime,\n            callbackQueryId: callbackQueryId,\n            showAlert: showAlert,\n            text: text,\n            url: url\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets the result of a shipping query; for bots only\n    /// - Parameter errorMessage: An error message, empty on success\n    /// - Parameter shippingOptions: Available shipping options\n    /// - Parameter shippingQueryId: Identifier of the shipping query\n    public final func answerShippingQuery(\n        errorMessage: String?,\n        shippingOptions: [ShippingOption]?,\n        shippingQueryId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AnswerShippingQuery(\n            errorMessage: errorMessage,\n            shippingOptions: shippingOptions,\n            shippingQueryId: shippingQueryId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets the result of a shipping query; for bots only\n    /// - Parameter errorMessage: An error message, empty on success\n    /// - Parameter shippingOptions: Available shipping options\n    /// - Parameter shippingQueryId: Identifier of the shipping query\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func answerShippingQuery(\n        errorMessage: String?,\n        shippingOptions: [ShippingOption]?,\n        shippingQueryId: TdInt64?\n    ) async throws -> Ok {\n        let query = AnswerShippingQuery(\n            errorMessage: errorMessage,\n            shippingOptions: shippingOptions,\n            shippingQueryId: shippingQueryId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets the result of a pre-checkout query; for bots only\n    /// - Parameter errorMessage: An error message, empty on success\n    /// - Parameter preCheckoutQueryId: Identifier of the pre-checkout query\n    public final func answerPreCheckoutQuery(\n        errorMessage: String?,\n        preCheckoutQueryId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AnswerPreCheckoutQuery(\n            errorMessage: errorMessage,\n            preCheckoutQueryId: preCheckoutQueryId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets the result of a pre-checkout query; for bots only\n    /// - Parameter errorMessage: An error message, empty on success\n    /// - Parameter preCheckoutQueryId: Identifier of the pre-checkout query\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func answerPreCheckoutQuery(\n        errorMessage: String?,\n        preCheckoutQueryId: TdInt64?\n    ) async throws -> Ok {\n        let query = AnswerPreCheckoutQuery(\n            errorMessage: errorMessage,\n            preCheckoutQueryId: preCheckoutQueryId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Updates the game score of the specified user in the game; for bots only\n    /// - Parameter chatId: The chat to which the message with the game belongs\n    /// - Parameter editMessage: Pass true to edit the game message to include the current scoreboard\n    /// - Parameter force: Pass true to update the score even if it decreases. If the score is 0, the user will be deleted from the high score table\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter score: The new score\n    /// - Parameter userId: User identifier\n    public final func setGameScore(\n        chatId: Int64?,\n        editMessage: Bool?,\n        force: Bool?,\n        messageId: Int64?,\n        score: Int?,\n        userId: Int64?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = SetGameScore(\n            chatId: chatId,\n            editMessage: editMessage,\n            force: force,\n            messageId: messageId,\n            score: score,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Updates the game score of the specified user in the game; for bots only\n    /// - Parameter chatId: The chat to which the message with the game belongs\n    /// - Parameter editMessage: Pass true to edit the game message to include the current scoreboard\n    /// - Parameter force: Pass true to update the score even if it decreases. If the score is 0, the user will be deleted from the high score table\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter score: The new score\n    /// - Parameter userId: User identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func setGameScore(\n        chatId: Int64?,\n        editMessage: Bool?,\n        force: Bool?,\n        messageId: Int64?,\n        score: Int?,\n        userId: Int64?\n    ) async throws -> Message {\n        let query = SetGameScore(\n            chatId: chatId,\n            editMessage: editMessage,\n            force: force,\n            messageId: messageId,\n            score: score,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Updates the game score of the specified user in a game; for bots only\n    /// - Parameter editMessage: Pass true to edit the game message to include the current scoreboard\n    /// - Parameter force: Pass true to update the score even if it decreases. If the score is 0, the user will be deleted from the high score table\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter score: The new score\n    /// - Parameter userId: User identifier\n    public final func setInlineGameScore(\n        editMessage: Bool?,\n        force: Bool?,\n        inlineMessageId: String?,\n        score: Int?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetInlineGameScore(\n            editMessage: editMessage,\n            force: force,\n            inlineMessageId: inlineMessageId,\n            score: score,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Updates the game score of the specified user in a game; for bots only\n    /// - Parameter editMessage: Pass true to edit the game message to include the current scoreboard\n    /// - Parameter force: Pass true to update the score even if it decreases. If the score is 0, the user will be deleted from the high score table\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter score: The new score\n    /// - Parameter userId: User identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setInlineGameScore(\n        editMessage: Bool?,\n        force: Bool?,\n        inlineMessageId: String?,\n        score: Int?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = SetInlineGameScore(\n            editMessage: editMessage,\n            force: force,\n            inlineMessageId: inlineMessageId,\n            score: score,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the high scores for a game and some part of the high score table in the range of the specified user; for bots only\n    /// - Parameter chatId: The chat that contains the message with the game\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter userId: User identifier\n    /// - Returns: The high scores for a game and some part of the high score table in the range of the specified user\n    public final func getGameHighScores(\n        chatId: Int64?,\n        messageId: Int64?,\n        userId: Int64?,\n        completion: @escaping (Result<GameHighScores, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGameHighScores(\n            chatId: chatId,\n            messageId: messageId,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the high scores for a game and some part of the high score table in the range of the specified user; for bots only\n    /// - Parameter chatId: The chat that contains the message with the game\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter userId: User identifier\n    /// - Returns: The high scores for a game and some part of the high score table in the range of the specified user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getGameHighScores(\n        chatId: Int64?,\n        messageId: Int64?,\n        userId: Int64?\n    ) async throws -> GameHighScores {\n        let query = GetGameHighScores(\n            chatId: chatId,\n            messageId: messageId,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns game high scores and some part of the high score table in the range of the specified user; for bots only\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter userId: User identifier\n    /// - Returns: Game high scores and some part of the high score table in the range of the specified user\n    public final func getInlineGameHighScores(\n        inlineMessageId: String?,\n        userId: Int64?,\n        completion: @escaping (Result<GameHighScores, Swift.Error>) -> Void\n    ) throws {\n        let query = GetInlineGameHighScores(\n            inlineMessageId: inlineMessageId,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns game high scores and some part of the high score table in the range of the specified user; for bots only\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter userId: User identifier\n    /// - Returns: Game high scores and some part of the high score table in the range of the specified user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getInlineGameHighScores(\n        inlineMessageId: String?,\n        userId: Int64?\n    ) async throws -> GameHighScores {\n        let query = GetInlineGameHighScores(\n            inlineMessageId: inlineMessageId,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes the default reply markup from a chat. Must be called after a one-time keyboard or a replyMarkupForceReply reply markup has been used or dismissed\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: The message identifier of the used keyboard\n    public final func deleteChatReplyMarkup(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteChatReplyMarkup(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes the default reply markup from a chat. Must be called after a one-time keyboard or a replyMarkupForceReply reply markup has been used or dismissed\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: The message identifier of the used keyboard\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteChatReplyMarkup(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = DeleteChatReplyMarkup(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends a notification about user activity in a chat\n    /// - Parameter action: The action description; pass null to cancel the currently active action\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request; for bots only\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter topicId: Identifier of the topic in which the action is performed; pass null if none\n    public final func sendChatAction(\n        action: ChatAction?,\n        businessConnectionId: String?,\n        chatId: Int64?,\n        topicId: MessageTopic?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendChatAction(\n            action: action,\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            topicId: topicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends a notification about user activity in a chat\n    /// - Parameter action: The action description; pass null to cancel the currently active action\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request; for bots only\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter topicId: Identifier of the topic in which the action is performed; pass null if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func sendChatAction(\n        action: ChatAction?,\n        businessConnectionId: String?,\n        chatId: Int64?,\n        topicId: MessageTopic?\n    ) async throws -> Ok {\n        let query = SendChatAction(\n            action: action,\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            topicId: topicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends a draft for a being generated text message; for bots only\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter draftId: Unique identifier of the draft\n    /// - Parameter forumTopicId: The forum topic identifier in which the message will be sent; pass 0 if none\n    /// - Parameter text: Draft text of the message; pass null to show a \"Thinking...\" placeholder\n    public final func sendTextMessageDraft(\n        chatId: Int64?,\n        draftId: TdInt64?,\n        forumTopicId: Int?,\n        text: FormattedText?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendTextMessageDraft(\n            chatId: chatId,\n            draftId: draftId,\n            forumTopicId: forumTopicId,\n            text: text\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends a draft for a being generated text message; for bots only\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter draftId: Unique identifier of the draft\n    /// - Parameter forumTopicId: The forum topic identifier in which the message will be sent; pass 0 if none\n    /// - Parameter text: Draft text of the message; pass null to show a \"Thinking...\" placeholder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func sendTextMessageDraft(\n        chatId: Int64?,\n        draftId: TdInt64?,\n        forumTopicId: Int?,\n        text: FormattedText?\n    ) async throws -> Ok {\n        let query = SendTextMessageDraft(\n            chatId: chatId,\n            draftId: draftId,\n            forumTopicId: forumTopicId,\n            text: text\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that the chat is opened by the user. Many useful activities depend on the chat being opened or closed (e.g., in supergroups and channels all updates are received only for opened chats)\n    /// - Parameter chatId: Chat identifier\n    public final func openChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = OpenChat(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that the chat is opened by the user. Many useful activities depend on the chat being opened or closed (e.g., in supergroups and channels all updates are received only for opened chats)\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func openChat(chatId: Int64?) async throws -> Ok {\n        let query = OpenChat(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that the chat is closed by the user. Many useful activities depend on the chat being opened or closed\n    /// - Parameter chatId: Chat identifier\n    public final func closeChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CloseChat(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that the chat is closed by the user. Many useful activities depend on the chat being opened or closed\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func closeChat(chatId: Int64?) async throws -> Ok {\n        let query = CloseChat(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that messages are being viewed by the user. Sponsored messages must be marked as viewed only when the entire text of the message is shown on the screen (excluding the button). Many useful activities depend on whether the messages are currently being viewed or not (e.g., marking messages as read, incrementing a view counter, updating a view counter, removing deleted messages in supergroups and channels)\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forceRead: Pass true to mark as read the specified messages even if the chat is closed\n    /// - Parameter messageIds: The identifiers of the messages being viewed\n    /// - Parameter source: Source of the message view; pass null to guess the source based on chat open state\n    public final func viewMessages(\n        chatId: Int64?,\n        forceRead: Bool?,\n        messageIds: [Int64]?,\n        source: MessageSource?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ViewMessages(\n            chatId: chatId,\n            forceRead: forceRead,\n            messageIds: messageIds,\n            source: source\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that messages are being viewed by the user. Sponsored messages must be marked as viewed only when the entire text of the message is shown on the screen (excluding the button). Many useful activities depend on whether the messages are currently being viewed or not (e.g., marking messages as read, incrementing a view counter, updating a view counter, removing deleted messages in supergroups and channels)\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forceRead: Pass true to mark as read the specified messages even if the chat is closed\n    /// - Parameter messageIds: The identifiers of the messages being viewed\n    /// - Parameter source: Source of the message view; pass null to guess the source based on chat open state\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func viewMessages(\n        chatId: Int64?,\n        forceRead: Bool?,\n        messageIds: [Int64]?,\n        source: MessageSource?\n    ) async throws -> Ok {\n        let query = ViewMessages(\n            chatId: chatId,\n            forceRead: forceRead,\n            messageIds: messageIds,\n            source: source\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that the message content has been opened (e.g., the user has opened a photo, video, document, location or venue, or has listened to an audio file or voice note message). An updateMessageContentOpened update will be generated if something has changed\n    /// - Parameter chatId: Chat identifier of the message\n    /// - Parameter messageId: Identifier of the message with the opened content\n    public final func openMessageContent(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = OpenMessageContent(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that the message content has been opened (e.g., the user has opened a photo, video, document, location or venue, or has listened to an audio file or voice note message). An updateMessageContentOpened update will be generated if something has changed\n    /// - Parameter chatId: Chat identifier of the message\n    /// - Parameter messageId: Identifier of the message with the opened content\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func openMessageContent(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = OpenMessageContent(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that a message with an animated emoji was clicked by the user. Returns a big animated sticker to be played or a 404 error if usual animation needs to be played\n    /// - Parameter chatId: Chat identifier of the message\n    /// - Parameter messageId: Identifier of the clicked message\n    /// - Returns: A big animated sticker to be played or a 404 error if usual animation needs to be played\n    public final func clickAnimatedEmojiMessage(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Sticker, Swift.Error>) -> Void\n    ) throws {\n        let query = ClickAnimatedEmojiMessage(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that a message with an animated emoji was clicked by the user. Returns a big animated sticker to be played or a 404 error if usual animation needs to be played\n    /// - Parameter chatId: Chat identifier of the message\n    /// - Parameter messageId: Identifier of the clicked message\n    /// - Returns: A big animated sticker to be played or a 404 error if usual animation needs to be played\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func clickAnimatedEmojiMessage(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Sticker {\n        let query = ClickAnimatedEmojiMessage(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that an audio was listened by the user\n    /// - Parameter audioFileId: Identifier of the file with an audio\n    /// - Parameter duration: Duration of the listening to the audio, in seconds\n    public final func listenToAudio(\n        audioFileId: Int?,\n        duration: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ListenToAudio(\n            audioFileId: audioFileId,\n            duration: duration\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that an audio was listened by the user\n    /// - Parameter audioFileId: Identifier of the file with an audio\n    /// - Parameter duration: Duration of the listening to the audio, in seconds\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func listenToAudio(\n        audioFileId: Int?,\n        duration: Int?\n    ) async throws -> Ok {\n        let query = ListenToAudio(\n            audioFileId: audioFileId,\n            duration: duration\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib about details of a message view by the user from a chat, a message thread or a forum topic history. The method must be called if the message wasn't seen for more than 300 milliseconds, the viewport was destroyed, or the total view duration exceeded 5 minutes\n    /// - Parameter activeTimeInViewMs: The amount of time the message was seen by at least 1 pixel within 15 seconds after any action from the user; in milliseconds\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter heightToViewportRatioPerMille: The ratio of the post height to the viewport height in 1/1000 fractions\n    /// - Parameter messageId: The identifier of the message being viewed\n    /// - Parameter seenRangeRatioPerMille: The ratio of the viewed post height to the full post height in 1/1000 fractions; 0-1000\n    /// - Parameter timeInViewMs: The amount of time the message was seen by at least 1 pixel; in milliseconds\n    public final func sendMessageViewMetrics(\n        activeTimeInViewMs: Int?,\n        chatId: Int64?,\n        heightToViewportRatioPerMille: Int?,\n        messageId: Int64?,\n        seenRangeRatioPerMille: Int?,\n        timeInViewMs: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendMessageViewMetrics(\n            activeTimeInViewMs: activeTimeInViewMs,\n            chatId: chatId,\n            heightToViewportRatioPerMille: heightToViewportRatioPerMille,\n            messageId: messageId,\n            seenRangeRatioPerMille: seenRangeRatioPerMille,\n            timeInViewMs: timeInViewMs\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib about details of a message view by the user from a chat, a message thread or a forum topic history. The method must be called if the message wasn't seen for more than 300 milliseconds, the viewport was destroyed, or the total view duration exceeded 5 minutes\n    /// - Parameter activeTimeInViewMs: The amount of time the message was seen by at least 1 pixel within 15 seconds after any action from the user; in milliseconds\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter heightToViewportRatioPerMille: The ratio of the post height to the viewport height in 1/1000 fractions\n    /// - Parameter messageId: The identifier of the message being viewed\n    /// - Parameter seenRangeRatioPerMille: The ratio of the viewed post height to the full post height in 1/1000 fractions; 0-1000\n    /// - Parameter timeInViewMs: The amount of time the message was seen by at least 1 pixel; in milliseconds\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func sendMessageViewMetrics(\n        activeTimeInViewMs: Int?,\n        chatId: Int64?,\n        heightToViewportRatioPerMille: Int?,\n        messageId: Int64?,\n        seenRangeRatioPerMille: Int?,\n        timeInViewMs: Int?\n    ) async throws -> Ok {\n        let query = SendMessageViewMetrics(\n            activeTimeInViewMs: activeTimeInViewMs,\n            chatId: chatId,\n            heightToViewportRatioPerMille: heightToViewportRatioPerMille,\n            messageId: messageId,\n            seenRangeRatioPerMille: seenRangeRatioPerMille,\n            timeInViewMs: timeInViewMs\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an HTTPS or a tg: link with the given type. Can be called before authorization\n    /// - Parameter isHttp: Pass true to create an HTTPS link (only available for some link types); pass false to create a tg: link\n    /// - Parameter type: Expected type of the link\n    /// - Returns: An HTTPS or a tg: link with the given type\n    public final func getInternalLink(\n        isHttp: Bool?,\n        type: InternalLinkType?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetInternalLink(\n            isHttp: isHttp,\n            type: type\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an HTTPS or a tg: link with the given type. Can be called before authorization\n    /// - Parameter isHttp: Pass true to create an HTTPS link (only available for some link types); pass false to create a tg: link\n    /// - Parameter type: Expected type of the link\n    /// - Returns: An HTTPS or a tg: link with the given type\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getInternalLink(\n        isHttp: Bool?,\n        type: InternalLinkType?\n    ) async throws -> HttpUrl {\n        let query = GetInternalLink(\n            isHttp: isHttp,\n            type: type\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about the type of internal link. Returns a 404 error if the link is not internal. Can be called before authorization\n    /// - Parameter link: The link\n    /// - Returns: Information about the type of internal link. Returns a 404 error if the link is not internal\n    public final func getInternalLinkType(\n        link: String?,\n        completion: @escaping (Result<InternalLinkType, Swift.Error>) -> Void\n    ) throws {\n        let query = GetInternalLinkType(\n            link: link\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about the type of internal link. Returns a 404 error if the link is not internal. Can be called before authorization\n    /// - Parameter link: The link\n    /// - Returns: Information about the type of internal link. Returns a 404 error if the link is not internal\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getInternalLinkType(link: String?) async throws -> InternalLinkType {\n        let query = GetInternalLinkType(\n            link: link\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about an action to be done when the current user clicks an external link. Don't use this method for links from secret chats if link preview is disabled in secret chats\n    /// - Parameter link: The link\n    /// - Returns: Information about an action to be done when the current user clicks an external link\n    public final func getExternalLinkInfo(\n        link: String?,\n        completion: @escaping (Result<LoginUrlInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetExternalLinkInfo(\n            link: link\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about an action to be done when the current user clicks an external link. Don't use this method for links from secret chats if link preview is disabled in secret chats\n    /// - Parameter link: The link\n    /// - Returns: Information about an action to be done when the current user clicks an external link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getExternalLinkInfo(link: String?) async throws -> LoginUrlInfo {\n        let query = GetExternalLinkInfo(\n            link: link\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an HTTP URL which can be used to automatically authorize the current user on a website after clicking an HTTP link. Use the method getExternalLinkInfo to find whether a prior user confirmation is needed. May return an empty link if just a toast about successful login has to be shown\n    /// - Parameter allowWriteAccess: Pass true if the current user allowed the bot that was returned in getExternalLinkInfo, to send them messages\n    /// - Parameter link: The HTTP link\n    /// - Returns: An HTTP URL which can be used to automatically authorize the current user on a website after clicking an HTTP link. May return an empty link if just a toast about successful login has to be shown\n    public final func getExternalLink(\n        allowWriteAccess: Bool?,\n        link: String?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetExternalLink(\n            allowWriteAccess: allowWriteAccess,\n            link: link\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an HTTP URL which can be used to automatically authorize the current user on a website after clicking an HTTP link. Use the method getExternalLinkInfo to find whether a prior user confirmation is needed. May return an empty link if just a toast about successful login has to be shown\n    /// - Parameter allowWriteAccess: Pass true if the current user allowed the bot that was returned in getExternalLinkInfo, to send them messages\n    /// - Parameter link: The HTTP link\n    /// - Returns: An HTTP URL which can be used to automatically authorize the current user on a website after clicking an HTTP link. May return an empty link if just a toast about successful login has to be shown\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getExternalLink(\n        allowWriteAccess: Bool?,\n        link: String?\n    ) async throws -> HttpUrl {\n        let query = GetExternalLink(\n            allowWriteAccess: allowWriteAccess,\n            link: link\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about an OAuth deep link. Use checkOauthRequestMatchCode, acceptOauthRequest or declineOauthRequest to process the link\n    /// - Parameter inAppOrigin: Origin of the OAuth request if the request was received from the in-app browser; pass an empty string otherwise\n    /// - Parameter url: URL of the link\n    /// - Returns: Information about an OAuth deep link\n    public final func getOauthLinkInfo(\n        inAppOrigin: String?,\n        url: String?,\n        completion: @escaping (Result<OauthLinkInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetOauthLinkInfo(\n            inAppOrigin: inAppOrigin,\n            url: url\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about an OAuth deep link. Use checkOauthRequestMatchCode, acceptOauthRequest or declineOauthRequest to process the link\n    /// - Parameter inAppOrigin: Origin of the OAuth request if the request was received from the in-app browser; pass an empty string otherwise\n    /// - Parameter url: URL of the link\n    /// - Returns: Information about an OAuth deep link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getOauthLinkInfo(\n        inAppOrigin: String?,\n        url: String?\n    ) async throws -> OauthLinkInfo {\n        let query = GetOauthLinkInfo(\n            inAppOrigin: inAppOrigin,\n            url: url\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks a match-code for an OAuth authorization request. If fails, then the authorization request has failed. Otherwise, authorization confirmation dialog must be shown and the link must be processed using acceptOauthRequest or declineOauthRequest\n    /// - Parameter matchCode: The matching code chosen by the user\n    /// - Parameter url: URL of the OAuth deep link\n    public final func checkOauthRequestMatchCode(\n        matchCode: String?,\n        url: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckOauthRequestMatchCode(\n            matchCode: matchCode,\n            url: url\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks a match-code for an OAuth authorization request. If fails, then the authorization request has failed. Otherwise, authorization confirmation dialog must be shown and the link must be processed using acceptOauthRequest or declineOauthRequest\n    /// - Parameter matchCode: The matching code chosen by the user\n    /// - Parameter url: URL of the OAuth deep link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func checkOauthRequestMatchCode(\n        matchCode: String?,\n        url: String?\n    ) async throws -> Ok {\n        let query = CheckOauthRequestMatchCode(\n            matchCode: matchCode,\n            url: url\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Accepts an OAuth authorization request. Returns an HTTP URL to open after successful authorization. May return an empty link if just a toast about successful login has to be shown\n    /// - Parameter allowPhoneNumberAccess: Pass true if the current user allowed the bot that was returned in getOauthLinkInfo, to access their phone number\n    /// - Parameter allowWriteAccess: Pass true if the current user allowed the bot that was returned in getOauthLinkInfo, to send them messages\n    /// - Parameter matchCode: The matching code chosen by the user\n    /// - Parameter url: URL of the OAuth deep link\n    /// - Returns: An HTTP URL to open after successful authorization. May return an empty link if just a toast about successful login has to be shown\n    public final func acceptOauthRequest(\n        allowPhoneNumberAccess: Bool?,\n        allowWriteAccess: Bool?,\n        matchCode: String?,\n        url: String?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = AcceptOauthRequest(\n            allowPhoneNumberAccess: allowPhoneNumberAccess,\n            allowWriteAccess: allowWriteAccess,\n            matchCode: matchCode,\n            url: url\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Accepts an OAuth authorization request. Returns an HTTP URL to open after successful authorization. May return an empty link if just a toast about successful login has to be shown\n    /// - Parameter allowPhoneNumberAccess: Pass true if the current user allowed the bot that was returned in getOauthLinkInfo, to access their phone number\n    /// - Parameter allowWriteAccess: Pass true if the current user allowed the bot that was returned in getOauthLinkInfo, to send them messages\n    /// - Parameter matchCode: The matching code chosen by the user\n    /// - Parameter url: URL of the OAuth deep link\n    /// - Returns: An HTTP URL to open after successful authorization. May return an empty link if just a toast about successful login has to be shown\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func acceptOauthRequest(\n        allowPhoneNumberAccess: Bool?,\n        allowWriteAccess: Bool?,\n        matchCode: String?,\n        url: String?\n    ) async throws -> HttpUrl {\n        let query = AcceptOauthRequest(\n            allowPhoneNumberAccess: allowPhoneNumberAccess,\n            allowWriteAccess: allowWriteAccess,\n            matchCode: matchCode,\n            url: url\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Declines an OAuth authorization request\n    /// - Parameter url: URL of the OAuth deep link\n    public final func declineOauthRequest(\n        url: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeclineOauthRequest(\n            url: url\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Declines an OAuth authorization request\n    /// - Parameter url: URL of the OAuth deep link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func declineOauthRequest(url: String?) async throws -> Ok {\n        let query = DeclineOauthRequest(\n            url: url\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Marks all mentions in a chat as read\n    /// - Parameter chatId: Chat identifier\n    public final func readAllChatMentions(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReadAllChatMentions(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Marks all mentions in a chat as read\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func readAllChatMentions(chatId: Int64?) async throws -> Ok {\n        let query = ReadAllChatMentions(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Marks all reactions in a chat as read\n    /// - Parameter chatId: Chat identifier\n    public final func readAllChatReactions(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReadAllChatReactions(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Marks all reactions in a chat as read\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func readAllChatReactions(chatId: Int64?) async throws -> Ok {\n        let query = ReadAllChatReactions(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Marks all poll votes in a chat as read\n    /// - Parameter chatId: Chat identifier\n    public final func readAllChatPollVotes(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReadAllChatPollVotes(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Marks all poll votes in a chat as read\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func readAllChatPollVotes(chatId: Int64?) async throws -> Ok {\n        let query = ReadAllChatPollVotes(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an existing chat corresponding to a given user\n    /// - Parameter force: Pass true to create the chat without a network request. In this case all information about the chat except its type, title and photo can be incorrect\n    /// - Parameter userId: User identifier\n    /// - Returns: An existing chat corresponding to a given user\n    public final func createPrivateChat(\n        force: Bool?,\n        userId: Int64?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = CreatePrivateChat(\n            force: force,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an existing chat corresponding to a given user\n    /// - Parameter force: Pass true to create the chat without a network request. In this case all information about the chat except its type, title and photo can be incorrect\n    /// - Parameter userId: User identifier\n    /// - Returns: An existing chat corresponding to a given user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createPrivateChat(\n        force: Bool?,\n        userId: Int64?\n    ) async throws -> Chat {\n        let query = CreatePrivateChat(\n            force: force,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an existing chat corresponding to a known basic group\n    /// - Parameter basicGroupId: Basic group identifier\n    /// - Parameter force: Pass true to create the chat without a network request. In this case all information about the chat except its type, title and photo can be incorrect\n    /// - Returns: An existing chat corresponding to a known basic group\n    public final func createBasicGroupChat(\n        basicGroupId: Int64?,\n        force: Bool?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateBasicGroupChat(\n            basicGroupId: basicGroupId,\n            force: force\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an existing chat corresponding to a known basic group\n    /// - Parameter basicGroupId: Basic group identifier\n    /// - Parameter force: Pass true to create the chat without a network request. In this case all information about the chat except its type, title and photo can be incorrect\n    /// - Returns: An existing chat corresponding to a known basic group\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createBasicGroupChat(\n        basicGroupId: Int64?,\n        force: Bool?\n    ) async throws -> Chat {\n        let query = CreateBasicGroupChat(\n            basicGroupId: basicGroupId,\n            force: force\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an existing chat corresponding to a known supergroup or channel\n    /// - Parameter force: Pass true to create the chat without a network request. In this case all information about the chat except its type, title and photo can be incorrect\n    /// - Parameter supergroupId: Supergroup or channel identifier\n    /// - Returns: An existing chat corresponding to a known supergroup or channel\n    public final func createSupergroupChat(\n        force: Bool?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateSupergroupChat(\n            force: force,\n            supergroupId: supergroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an existing chat corresponding to a known supergroup or channel\n    /// - Parameter force: Pass true to create the chat without a network request. In this case all information about the chat except its type, title and photo can be incorrect\n    /// - Parameter supergroupId: Supergroup or channel identifier\n    /// - Returns: An existing chat corresponding to a known supergroup or channel\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createSupergroupChat(\n        force: Bool?,\n        supergroupId: Int64?\n    ) async throws -> Chat {\n        let query = CreateSupergroupChat(\n            force: force,\n            supergroupId: supergroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an existing chat corresponding to a known secret chat\n    /// - Parameter secretChatId: Secret chat identifier\n    /// - Returns: An existing chat corresponding to a known secret chat\n    public final func createSecretChat(\n        secretChatId: Int?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateSecretChat(\n            secretChatId: secretChatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an existing chat corresponding to a known secret chat\n    /// - Parameter secretChatId: Secret chat identifier\n    /// - Returns: An existing chat corresponding to a known secret chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createSecretChat(secretChatId: Int?) async throws -> Chat {\n        let query = CreateSecretChat(\n            secretChatId: secretChatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Creates a new basic group and sends a corresponding messageBasicGroupChatCreate. Returns information about the newly created chat\n    /// - Parameter messageAutoDeleteTime: Message auto-delete time value, in seconds; must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically\n    /// - Parameter title: Title of the new basic group; 1-128 characters\n    /// - Parameter userIds: Identifiers of users to be added to the basic group; may be empty to create a basic group without other members\n    /// - Returns: Information about the newly created chat\n    public final func createNewBasicGroupChat(\n        messageAutoDeleteTime: Int?,\n        title: String?,\n        userIds: [Int64]?,\n        completion: @escaping (Result<CreatedBasicGroupChat, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateNewBasicGroupChat(\n            messageAutoDeleteTime: messageAutoDeleteTime,\n            title: title,\n            userIds: userIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Creates a new basic group and sends a corresponding messageBasicGroupChatCreate. Returns information about the newly created chat\n    /// - Parameter messageAutoDeleteTime: Message auto-delete time value, in seconds; must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically\n    /// - Parameter title: Title of the new basic group; 1-128 characters\n    /// - Parameter userIds: Identifiers of users to be added to the basic group; may be empty to create a basic group without other members\n    /// - Returns: Information about the newly created chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createNewBasicGroupChat(\n        messageAutoDeleteTime: Int?,\n        title: String?,\n        userIds: [Int64]?\n    ) async throws -> CreatedBasicGroupChat {\n        let query = CreateNewBasicGroupChat(\n            messageAutoDeleteTime: messageAutoDeleteTime,\n            title: title,\n            userIds: userIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Creates a new supergroup or channel and sends a corresponding messageSupergroupChatCreate. Returns the newly created chat\n    /// - Parameter description: \n    /// - Parameter forImport: Pass true to create a supergroup for importing messages using importMessages\n    /// - Parameter isChannel: Pass true to create a channel chat; ignored if a forum is created\n    /// - Parameter isForum: Pass true to create a forum supergroup chat\n    /// - Parameter location: Chat location if a location-based supergroup is being created; pass null to create an ordinary supergroup chat\n    /// - Parameter messageAutoDeleteTime: Message auto-delete time value, in seconds; must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically\n    /// - Parameter title: Title of the new chat; 1-128 characters\n    /// - Returns: The newly created chat\n    public final func createNewSupergroupChat(\n        description: String?,\n        forImport: Bool?,\n        isChannel: Bool?,\n        isForum: Bool?,\n        location: ChatLocation?,\n        messageAutoDeleteTime: Int?,\n        title: String?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateNewSupergroupChat(\n            description: description,\n            forImport: forImport,\n            isChannel: isChannel,\n            isForum: isForum,\n            location: location,\n            messageAutoDeleteTime: messageAutoDeleteTime,\n            title: title\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Creates a new supergroup or channel and sends a corresponding messageSupergroupChatCreate. Returns the newly created chat\n    /// - Parameter description: \n    /// - Parameter forImport: Pass true to create a supergroup for importing messages using importMessages\n    /// - Parameter isChannel: Pass true to create a channel chat; ignored if a forum is created\n    /// - Parameter isForum: Pass true to create a forum supergroup chat\n    /// - Parameter location: Chat location if a location-based supergroup is being created; pass null to create an ordinary supergroup chat\n    /// - Parameter messageAutoDeleteTime: Message auto-delete time value, in seconds; must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically\n    /// - Parameter title: Title of the new chat; 1-128 characters\n    /// - Returns: The newly created chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createNewSupergroupChat(\n        description: String?,\n        forImport: Bool?,\n        isChannel: Bool?,\n        isForum: Bool?,\n        location: ChatLocation?,\n        messageAutoDeleteTime: Int?,\n        title: String?\n    ) async throws -> Chat {\n        let query = CreateNewSupergroupChat(\n            description: description,\n            forImport: forImport,\n            isChannel: isChannel,\n            isForum: isForum,\n            location: location,\n            messageAutoDeleteTime: messageAutoDeleteTime,\n            title: title\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Creates a new secret chat. Returns the newly created chat\n    /// - Parameter userId: Identifier of the target user\n    /// - Returns: The newly created chat\n    public final func createNewSecretChat(\n        userId: Int64?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateNewSecretChat(\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Creates a new secret chat. Returns the newly created chat\n    /// - Parameter userId: Identifier of the target user\n    /// - Returns: The newly created chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createNewSecretChat(userId: Int64?) async throws -> Chat {\n        let query = CreateNewSecretChat(\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Creates a new supergroup from an existing basic group and sends a corresponding messageChatUpgradeTo and messageChatUpgradeFrom; requires owner privileges. Deactivates the original basic group\n    /// - Parameter chatId: Identifier of the chat to upgrade\n    public final func upgradeBasicGroupChatToSupergroupChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = UpgradeBasicGroupChatToSupergroupChat(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Creates a new supergroup from an existing basic group and sends a corresponding messageChatUpgradeTo and messageChatUpgradeFrom; requires owner privileges. Deactivates the original basic group\n    /// - Parameter chatId: Identifier of the chat to upgrade\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func upgradeBasicGroupChatToSupergroupChat(chatId: Int64?) async throws -> Chat {\n        let query = UpgradeBasicGroupChatToSupergroupChat(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns chat lists to which the chat can be added. This is an offline method\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: Chat lists to which the chat can be added\n    public final func getChatListsToAddChat(\n        chatId: Int64?,\n        completion: @escaping (Result<ChatLists, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatListsToAddChat(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns chat lists to which the chat can be added. This is an offline method\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: Chat lists to which the chat can be added\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatListsToAddChat(chatId: Int64?) async throws -> ChatLists {\n        let query = GetChatListsToAddChat(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds a chat to a chat list. A chat can't be simultaneously in Main and Archive chat lists, so it is automatically removed from another one if needed\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter chatList: The chat list. Use getChatListsToAddChat to get suitable chat lists\n    public final func addChatToList(\n        chatId: Int64?,\n        chatList: ChatList?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddChatToList(\n            chatId: chatId,\n            chatList: chatList\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds a chat to a chat list. A chat can't be simultaneously in Main and Archive chat lists, so it is automatically removed from another one if needed\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter chatList: The chat list. Use getChatListsToAddChat to get suitable chat lists\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func addChatToList(\n        chatId: Int64?,\n        chatList: ChatList?\n    ) async throws -> Ok {\n        let query = AddChatToList(\n            chatId: chatId,\n            chatList: chatList\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a chat folder by its identifier\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Returns: Information about a chat folder by its identifier\n    public final func getChatFolder(\n        chatFolderId: Int?,\n        completion: @escaping (Result<ChatFolder, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatFolder(\n            chatFolderId: chatFolderId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a chat folder by its identifier\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Returns: Information about a chat folder by its identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatFolder(chatFolderId: Int?) async throws -> ChatFolder {\n        let query = GetChatFolder(\n            chatFolderId: chatFolderId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Creates new chat folder. Returns information about the created chat folder. There can be up to getOption(\"chat_folder_count_max\") chat folders, but the limit can be increased with Telegram Premium\n    /// - Parameter folder: The new chat folder\n    /// - Returns: Information about the created chat folder\n    public final func createChatFolder(\n        folder: ChatFolder?,\n        completion: @escaping (Result<ChatFolderInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateChatFolder(\n            folder: folder\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Creates new chat folder. Returns information about the created chat folder. There can be up to getOption(\"chat_folder_count_max\") chat folders, but the limit can be increased with Telegram Premium\n    /// - Parameter folder: The new chat folder\n    /// - Returns: Information about the created chat folder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createChatFolder(folder: ChatFolder?) async throws -> ChatFolderInfo {\n        let query = CreateChatFolder(\n            folder: folder\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits existing chat folder. Returns information about the edited chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Parameter folder: The edited chat folder\n    /// - Returns: Information about the edited chat folder\n    public final func editChatFolder(\n        chatFolderId: Int?,\n        folder: ChatFolder?,\n        completion: @escaping (Result<ChatFolderInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = EditChatFolder(\n            chatFolderId: chatFolderId,\n            folder: folder\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits existing chat folder. Returns information about the edited chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Parameter folder: The edited chat folder\n    /// - Returns: Information about the edited chat folder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func editChatFolder(\n        chatFolderId: Int?,\n        folder: ChatFolder?\n    ) async throws -> ChatFolderInfo {\n        let query = EditChatFolder(\n            chatFolderId: chatFolderId,\n            folder: folder\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes existing chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Parameter leaveChatIds: Identifiers of the chats to leave. The chats must be pinned or always included in the folder\n    public final func deleteChatFolder(\n        chatFolderId: Int?,\n        leaveChatIds: [Int64]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteChatFolder(\n            chatFolderId: chatFolderId,\n            leaveChatIds: leaveChatIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes existing chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Parameter leaveChatIds: Identifiers of the chats to leave. The chats must be pinned or always included in the folder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteChatFolder(\n        chatFolderId: Int?,\n        leaveChatIds: [Int64]?\n    ) async throws -> Ok {\n        let query = DeleteChatFolder(\n            chatFolderId: chatFolderId,\n            leaveChatIds: leaveChatIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns identifiers of pinned or always included chats from a chat folder, which are suggested to be left when the chat folder is deleted\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Returns: Identifiers of pinned or always included chats from a chat folder, which are suggested to be left when the chat folder is deleted\n    public final func getChatFolderChatsToLeave(\n        chatFolderId: Int?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatFolderChatsToLeave(\n            chatFolderId: chatFolderId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns identifiers of pinned or always included chats from a chat folder, which are suggested to be left when the chat folder is deleted\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Returns: Identifiers of pinned or always included chats from a chat folder, which are suggested to be left when the chat folder is deleted\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatFolderChatsToLeave(chatFolderId: Int?) async throws -> Chats {\n        let query = GetChatFolderChatsToLeave(\n            chatFolderId: chatFolderId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns approximate number of chats in a being created chat folder. Main and archive chat lists must be fully preloaded for this function to work correctly\n    /// - Parameter folder: The new chat folder\n    /// - Returns: Approximate number of chats in a being created chat folder\n    public final func getChatFolderChatCount(\n        folder: ChatFolder?,\n        completion: @escaping (Result<Count, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatFolderChatCount(\n            folder: folder\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns approximate number of chats in a being created chat folder. Main and archive chat lists must be fully preloaded for this function to work correctly\n    /// - Parameter folder: The new chat folder\n    /// - Returns: Approximate number of chats in a being created chat folder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatFolderChatCount(folder: ChatFolder?) async throws -> Count {\n        let query = GetChatFolderChatCount(\n            folder: folder\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the order of chat folders\n    /// - Parameter chatFolderIds: Identifiers of chat folders in the new correct order\n    /// - Parameter mainChatListPosition: Position of the main chat list among chat folders, 0-based. Can be non-zero only for Premium users\n    public final func reorderChatFolders(\n        chatFolderIds: [Int]?,\n        mainChatListPosition: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderChatFolders(\n            chatFolderIds: chatFolderIds,\n            mainChatListPosition: mainChatListPosition\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the order of chat folders\n    /// - Parameter chatFolderIds: Identifiers of chat folders in the new correct order\n    /// - Parameter mainChatListPosition: Position of the main chat list among chat folders, 0-based. Can be non-zero only for Premium users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func reorderChatFolders(\n        chatFolderIds: [Int]?,\n        mainChatListPosition: Int?\n    ) async throws -> Ok {\n        let query = ReorderChatFolders(\n            chatFolderIds: chatFolderIds,\n            mainChatListPosition: mainChatListPosition\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether chat folder tags are enabled\n    /// - Parameter areTagsEnabled: Pass true to enable folder tags; pass false to disable them\n    public final func toggleChatFolderTags(\n        areTagsEnabled: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleChatFolderTags(\n            areTagsEnabled: areTagsEnabled\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether chat folder tags are enabled\n    /// - Parameter areTagsEnabled: Pass true to enable folder tags; pass false to disable them\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleChatFolderTags(areTagsEnabled: Bool?) async throws -> Ok {\n        let query = ToggleChatFolderTags(\n            areTagsEnabled: areTagsEnabled\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns recommended chat folders for the current user\n    /// - Returns: Recommended chat folders for the current user\n    public final func getRecommendedChatFolders(completion: @escaping (Result<RecommendedChatFolders, Swift.Error>) -> Void) throws {\n        let query = GetRecommendedChatFolders()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns recommended chat folders for the current user\n    /// - Returns: Recommended chat folders for the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getRecommendedChatFolders() async throws -> RecommendedChatFolders {\n        let query = GetRecommendedChatFolders()\n        return try await self.run(query: query)\n    }\n\n    /// Returns default icon name for a folder. Can be called synchronously\n    /// - Parameter folder: Chat folder\n    /// - Returns: Default icon name for a folder\n    public final func getChatFolderDefaultIconName(\n        folder: ChatFolder?,\n        completion: @escaping (Result<ChatFolderIcon, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatFolderDefaultIconName(\n            folder: folder\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns default icon name for a folder. Can be called synchronously\n    /// - Parameter folder: Chat folder\n    /// - Returns: Default icon name for a folder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatFolderDefaultIconName(folder: ChatFolder?) async throws -> ChatFolderIcon {\n        let query = GetChatFolderDefaultIconName(\n            folder: folder\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns identifiers of chats from a chat folder, suitable for adding to a chat folder invite link\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Returns: Identifiers of chats from a chat folder, suitable for adding to a chat folder invite link\n    public final func getChatsForChatFolderInviteLink(\n        chatFolderId: Int?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatsForChatFolderInviteLink(\n            chatFolderId: chatFolderId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns identifiers of chats from a chat folder, suitable for adding to a chat folder invite link\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Returns: Identifiers of chats from a chat folder, suitable for adding to a chat folder invite link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatsForChatFolderInviteLink(chatFolderId: Int?) async throws -> Chats {\n        let query = GetChatsForChatFolderInviteLink(\n            chatFolderId: chatFolderId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Creates a new invite link for a chat folder. A link can be created for a chat folder if it has only pinned and included chats\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Parameter chatIds: Identifiers of chats to be accessible by the invite link. Use getChatsForChatFolderInviteLink to get suitable chats. Basic groups will be automatically converted to supergroups before link creation\n    /// - Parameter name: Name of the link; 0-32 characters\n    public final func createChatFolderInviteLink(\n        chatFolderId: Int?,\n        chatIds: [Int64]?,\n        name: String?,\n        completion: @escaping (Result<ChatFolderInviteLink, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateChatFolderInviteLink(\n            chatFolderId: chatFolderId,\n            chatIds: chatIds,\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Creates a new invite link for a chat folder. A link can be created for a chat folder if it has only pinned and included chats\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Parameter chatIds: Identifiers of chats to be accessible by the invite link. Use getChatsForChatFolderInviteLink to get suitable chats. Basic groups will be automatically converted to supergroups before link creation\n    /// - Parameter name: Name of the link; 0-32 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createChatFolderInviteLink(\n        chatFolderId: Int?,\n        chatIds: [Int64]?,\n        name: String?\n    ) async throws -> ChatFolderInviteLink {\n        let query = CreateChatFolderInviteLink(\n            chatFolderId: chatFolderId,\n            chatIds: chatIds,\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns invite links created by the current user for a shareable chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Returns: Invite links created by the current user for a shareable chat folder\n    public final func getChatFolderInviteLinks(\n        chatFolderId: Int?,\n        completion: @escaping (Result<ChatFolderInviteLinks, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatFolderInviteLinks(\n            chatFolderId: chatFolderId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns invite links created by the current user for a shareable chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Returns: Invite links created by the current user for a shareable chat folder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatFolderInviteLinks(chatFolderId: Int?) async throws -> ChatFolderInviteLinks {\n        let query = GetChatFolderInviteLinks(\n            chatFolderId: chatFolderId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits an invite link for a chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Parameter chatIds: New identifiers of chats to be accessible by the invite link. Use getChatsForChatFolderInviteLink to get suitable chats. Basic groups will be automatically converted to supergroups before link editing\n    /// - Parameter inviteLink: Invite link to be edited\n    /// - Parameter name: New name of the link; 0-32 characters\n    public final func editChatFolderInviteLink(\n        chatFolderId: Int?,\n        chatIds: [Int64]?,\n        inviteLink: String?,\n        name: String?,\n        completion: @escaping (Result<ChatFolderInviteLink, Swift.Error>) -> Void\n    ) throws {\n        let query = EditChatFolderInviteLink(\n            chatFolderId: chatFolderId,\n            chatIds: chatIds,\n            inviteLink: inviteLink,\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits an invite link for a chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Parameter chatIds: New identifiers of chats to be accessible by the invite link. Use getChatsForChatFolderInviteLink to get suitable chats. Basic groups will be automatically converted to supergroups before link editing\n    /// - Parameter inviteLink: Invite link to be edited\n    /// - Parameter name: New name of the link; 0-32 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func editChatFolderInviteLink(\n        chatFolderId: Int?,\n        chatIds: [Int64]?,\n        inviteLink: String?,\n        name: String?\n    ) async throws -> ChatFolderInviteLink {\n        let query = EditChatFolderInviteLink(\n            chatFolderId: chatFolderId,\n            chatIds: chatIds,\n            inviteLink: inviteLink,\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes an invite link for a chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Parameter inviteLink: Invite link to be deleted\n    public final func deleteChatFolderInviteLink(\n        chatFolderId: Int?,\n        inviteLink: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteChatFolderInviteLink(\n            chatFolderId: chatFolderId,\n            inviteLink: inviteLink\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes an invite link for a chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Parameter inviteLink: Invite link to be deleted\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteChatFolderInviteLink(\n        chatFolderId: Int?,\n        inviteLink: String?\n    ) async throws -> Ok {\n        let query = DeleteChatFolderInviteLink(\n            chatFolderId: chatFolderId,\n            inviteLink: inviteLink\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks the validity of an invite link for a chat folder and returns information about the corresponding chat folder\n    /// - Parameter inviteLink: Invite link to be checked\n    /// - Returns: Checks the validity of an invite link for a chat folder and returns information about the corresponding chat folder\n    public final func checkChatFolderInviteLink(\n        inviteLink: String?,\n        completion: @escaping (Result<ChatFolderInviteLinkInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckChatFolderInviteLink(\n            inviteLink: inviteLink\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks the validity of an invite link for a chat folder and returns information about the corresponding chat folder\n    /// - Parameter inviteLink: Invite link to be checked\n    /// - Returns: Checks the validity of an invite link for a chat folder and returns information about the corresponding chat folder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func checkChatFolderInviteLink(inviteLink: String?) async throws -> ChatFolderInviteLinkInfo {\n        let query = CheckChatFolderInviteLink(\n            inviteLink: inviteLink\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds a chat folder by an invite link\n    /// - Parameter chatIds: Identifiers of the chats added to the chat folder. The chats are automatically joined if they aren't joined yet\n    /// - Parameter inviteLink: Invite link for the chat folder\n    public final func addChatFolderByInviteLink(\n        chatIds: [Int64]?,\n        inviteLink: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddChatFolderByInviteLink(\n            chatIds: chatIds,\n            inviteLink: inviteLink\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds a chat folder by an invite link\n    /// - Parameter chatIds: Identifiers of the chats added to the chat folder. The chats are automatically joined if they aren't joined yet\n    /// - Parameter inviteLink: Invite link for the chat folder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func addChatFolderByInviteLink(\n        chatIds: [Int64]?,\n        inviteLink: String?\n    ) async throws -> Ok {\n        let query = AddChatFolderByInviteLink(\n            chatIds: chatIds,\n            inviteLink: inviteLink\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns new chats added to a shareable chat folder by its owner. The method must be called at most once in getOption(\"chat_folder_new_chats_update_period\") for the given chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Returns: New chats added to a shareable chat folder by its owner\n    public final func getChatFolderNewChats(\n        chatFolderId: Int?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatFolderNewChats(\n            chatFolderId: chatFolderId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns new chats added to a shareable chat folder by its owner. The method must be called at most once in getOption(\"chat_folder_new_chats_update_period\") for the given chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Returns: New chats added to a shareable chat folder by its owner\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatFolderNewChats(chatFolderId: Int?) async throws -> Chats {\n        let query = GetChatFolderNewChats(\n            chatFolderId: chatFolderId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Process new chats added to a shareable chat folder by its owner\n    /// - Parameter addedChatIds: Identifiers of the new chats, which are added to the chat folder. The chats are automatically joined if they aren't joined yet\n    /// - Parameter chatFolderId: Chat folder identifier\n    public final func processChatFolderNewChats(\n        addedChatIds: [Int64]?,\n        chatFolderId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ProcessChatFolderNewChats(\n            addedChatIds: addedChatIds,\n            chatFolderId: chatFolderId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Process new chats added to a shareable chat folder by its owner\n    /// - Parameter addedChatIds: Identifiers of the new chats, which are added to the chat folder. The chats are automatically joined if they aren't joined yet\n    /// - Parameter chatFolderId: Chat folder identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func processChatFolderNewChats(\n        addedChatIds: [Int64]?,\n        chatFolderId: Int?\n    ) async throws -> Ok {\n        let query = ProcessChatFolderNewChats(\n            addedChatIds: addedChatIds,\n            chatFolderId: chatFolderId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns settings for automatic moving of chats to and from the Archive chat lists\n    /// - Returns: Settings for automatic moving of chats to and from the Archive chat lists\n    public final func getArchiveChatListSettings(completion: @escaping (Result<ArchiveChatListSettings, Swift.Error>) -> Void) throws {\n        let query = GetArchiveChatListSettings()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns settings for automatic moving of chats to and from the Archive chat lists\n    /// - Returns: Settings for automatic moving of chats to and from the Archive chat lists\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getArchiveChatListSettings() async throws -> ArchiveChatListSettings {\n        let query = GetArchiveChatListSettings()\n        return try await self.run(query: query)\n    }\n\n    /// Changes settings for automatic moving of chats to and from the Archive chat lists\n    /// - Parameter settings: New settings\n    public final func setArchiveChatListSettings(\n        settings: ArchiveChatListSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetArchiveChatListSettings(\n            settings: settings\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes settings for automatic moving of chats to and from the Archive chat lists\n    /// - Parameter settings: New settings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setArchiveChatListSettings(settings: ArchiveChatListSettings?) async throws -> Ok {\n        let query = SetArchiveChatListSettings(\n            settings: settings\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the chat title. Supported only for basic groups, supergroups and channels. Requires can_change_info member right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter title: New title of the chat; 1-128 characters\n    public final func setChatTitle(\n        chatId: Int64?,\n        title: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatTitle(\n            chatId: chatId,\n            title: title\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the chat title. Supported only for basic groups, supergroups and channels. Requires can_change_info member right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter title: New title of the chat; 1-128 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatTitle(\n        chatId: Int64?,\n        title: String?\n    ) async throws -> Ok {\n        let query = SetChatTitle(\n            chatId: chatId,\n            title: title\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the photo of a chat. Supported only for basic groups, supergroups and channels. Requires can_change_info member right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter photo: New chat photo; pass null to delete the chat photo\n    public final func setChatPhoto(\n        chatId: Int64?,\n        photo: InputChatPhoto?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatPhoto(\n            chatId: chatId,\n            photo: photo\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the photo of a chat. Supported only for basic groups, supergroups and channels. Requires can_change_info member right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter photo: New chat photo; pass null to delete the chat photo\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatPhoto(\n        chatId: Int64?,\n        photo: InputChatPhoto?\n    ) async throws -> Ok {\n        let query = SetChatPhoto(\n            chatId: chatId,\n            photo: photo\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes accent color and background custom emoji of a channel chat. Requires can_change_info administrator right\n    /// - Parameter accentColorId: Identifier of the accent color to use. The chat must have at least accentColor.min_channel_chat_boost_level boost level to pass the corresponding color\n    /// - Parameter backgroundCustomEmojiId: Identifier of a custom emoji to be shown on the reply header and link preview background; 0 if none. Use chatBoostLevelFeatures.can_set_background_custom_emoji to check whether a custom emoji can be set\n    /// - Parameter chatId: Chat identifier\n    public final func setChatAccentColor(\n        accentColorId: Int?,\n        backgroundCustomEmojiId: TdInt64?,\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatAccentColor(\n            accentColorId: accentColorId,\n            backgroundCustomEmojiId: backgroundCustomEmojiId,\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes accent color and background custom emoji of a channel chat. Requires can_change_info administrator right\n    /// - Parameter accentColorId: Identifier of the accent color to use. The chat must have at least accentColor.min_channel_chat_boost_level boost level to pass the corresponding color\n    /// - Parameter backgroundCustomEmojiId: Identifier of a custom emoji to be shown on the reply header and link preview background; 0 if none. Use chatBoostLevelFeatures.can_set_background_custom_emoji to check whether a custom emoji can be set\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatAccentColor(\n        accentColorId: Int?,\n        backgroundCustomEmojiId: TdInt64?,\n        chatId: Int64?\n    ) async throws -> Ok {\n        let query = SetChatAccentColor(\n            accentColorId: accentColorId,\n            backgroundCustomEmojiId: backgroundCustomEmojiId,\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes accent color and background custom emoji for profile of a supergroup or channel chat. Requires can_change_info administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter profileAccentColorId: Identifier of the accent color to use for profile; pass -1 if none. The chat must have at least profileAccentColor.min_supergroup_chat_boost_level for supergroups or profileAccentColor.min_channel_chat_boost_level for channels boost level to pass the corresponding color\n    /// - Parameter profileBackgroundCustomEmojiId: Identifier of a custom emoji to be shown on the chat's profile photo background; 0 if none. Use chatBoostLevelFeatures.can_set_profile_background_custom_emoji to check whether a custom emoji can be set\n    public final func setChatProfileAccentColor(\n        chatId: Int64?,\n        profileAccentColorId: Int?,\n        profileBackgroundCustomEmojiId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatProfileAccentColor(\n            chatId: chatId,\n            profileAccentColorId: profileAccentColorId,\n            profileBackgroundCustomEmojiId: profileBackgroundCustomEmojiId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes accent color and background custom emoji for profile of a supergroup or channel chat. Requires can_change_info administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter profileAccentColorId: Identifier of the accent color to use for profile; pass -1 if none. The chat must have at least profileAccentColor.min_supergroup_chat_boost_level for supergroups or profileAccentColor.min_channel_chat_boost_level for channels boost level to pass the corresponding color\n    /// - Parameter profileBackgroundCustomEmojiId: Identifier of a custom emoji to be shown on the chat's profile photo background; 0 if none. Use chatBoostLevelFeatures.can_set_profile_background_custom_emoji to check whether a custom emoji can be set\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatProfileAccentColor(\n        chatId: Int64?,\n        profileAccentColorId: Int?,\n        profileBackgroundCustomEmojiId: TdInt64?\n    ) async throws -> Ok {\n        let query = SetChatProfileAccentColor(\n            chatId: chatId,\n            profileAccentColorId: profileAccentColorId,\n            profileBackgroundCustomEmojiId: profileBackgroundCustomEmojiId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the message auto-delete or self-destruct (for secret chats) time in a chat. Requires change_info administrator right in basic groups, supergroups and channels. Message auto-delete time can't be changed in a chat with the current user (Saved Messages) and the chat 777000 (Telegram).\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageAutoDeleteTime: New time value, in seconds; unless the chat is secret, it must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically\n    public final func setChatMessageAutoDeleteTime(\n        chatId: Int64?,\n        messageAutoDeleteTime: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatMessageAutoDeleteTime(\n            chatId: chatId,\n            messageAutoDeleteTime: messageAutoDeleteTime\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the message auto-delete or self-destruct (for secret chats) time in a chat. Requires change_info administrator right in basic groups, supergroups and channels. Message auto-delete time can't be changed in a chat with the current user (Saved Messages) and the chat 777000 (Telegram).\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageAutoDeleteTime: New time value, in seconds; unless the chat is secret, it must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatMessageAutoDeleteTime(\n        chatId: Int64?,\n        messageAutoDeleteTime: Int?\n    ) async throws -> Ok {\n        let query = SetChatMessageAutoDeleteTime(\n            chatId: chatId,\n            messageAutoDeleteTime: messageAutoDeleteTime\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the emoji status of a chat. Use chatBoostLevelFeatures.can_set_emoji_status to check whether an emoji status can be set. Requires can_change_info administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter emojiStatus: New emoji status; pass null to remove emoji status\n    public final func setChatEmojiStatus(\n        chatId: Int64?,\n        emojiStatus: EmojiStatus?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatEmojiStatus(\n            chatId: chatId,\n            emojiStatus: emojiStatus\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the emoji status of a chat. Use chatBoostLevelFeatures.can_set_emoji_status to check whether an emoji status can be set. Requires can_change_info administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter emojiStatus: New emoji status; pass null to remove emoji status\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatEmojiStatus(\n        chatId: Int64?,\n        emojiStatus: EmojiStatus?\n    ) async throws -> Ok {\n        let query = SetChatEmojiStatus(\n            chatId: chatId,\n            emojiStatus: emojiStatus\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the chat members permissions. Supported only for basic groups and supergroups. Requires can_restrict_members administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter permissions: New non-administrator members permissions in the chat\n    public final func setChatPermissions(\n        chatId: Int64?,\n        permissions: ChatPermissions?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatPermissions(\n            chatId: chatId,\n            permissions: permissions\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the chat members permissions. Supported only for basic groups and supergroups. Requires can_restrict_members administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter permissions: New non-administrator members permissions in the chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatPermissions(\n        chatId: Int64?,\n        permissions: ChatPermissions?\n    ) async throws -> Ok {\n        let query = SetChatPermissions(\n            chatId: chatId,\n            permissions: permissions\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets the background in a specific chat. Supported only in private and secret chats with non-deleted users, and in chats with sufficient boost level and can_change_info administrator right\n    /// - Parameter background: The input background to use; pass null to create a new filled or chat theme background\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter darkThemeDimming: Dimming of the background in dark themes, as a percentage; 0-100. Applied only to Wallpaper and Fill types of background\n    /// - Parameter onlyForSelf: Pass true to set background only for self; pass false to set background for all chat users. Always false for backgrounds set in boosted chats. Background can be set for both users only by Telegram Premium users and if set background isn't of the type inputBackgroundPrevious\n    /// - Parameter type: Background type; pass null to use default background type for the chosen background; backgroundTypeChatTheme isn't supported for private and secret chats. Use chatBoostLevelFeatures.chat_theme_background_count and chatBoostLevelFeatures.can_set_custom_background to check whether the background type can be set in the boosted chat\n    public final func setChatBackground(\n        background: InputBackground?,\n        chatId: Int64?,\n        darkThemeDimming: Int?,\n        onlyForSelf: Bool?,\n        type: BackgroundType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatBackground(\n            background: background,\n            chatId: chatId,\n            darkThemeDimming: darkThemeDimming,\n            onlyForSelf: onlyForSelf,\n            type: type\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets the background in a specific chat. Supported only in private and secret chats with non-deleted users, and in chats with sufficient boost level and can_change_info administrator right\n    /// - Parameter background: The input background to use; pass null to create a new filled or chat theme background\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter darkThemeDimming: Dimming of the background in dark themes, as a percentage; 0-100. Applied only to Wallpaper and Fill types of background\n    /// - Parameter onlyForSelf: Pass true to set background only for self; pass false to set background for all chat users. Always false for backgrounds set in boosted chats. Background can be set for both users only by Telegram Premium users and if set background isn't of the type inputBackgroundPrevious\n    /// - Parameter type: Background type; pass null to use default background type for the chosen background; backgroundTypeChatTheme isn't supported for private and secret chats. Use chatBoostLevelFeatures.chat_theme_background_count and chatBoostLevelFeatures.can_set_custom_background to check whether the background type can be set in the boosted chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatBackground(\n        background: InputBackground?,\n        chatId: Int64?,\n        darkThemeDimming: Int?,\n        onlyForSelf: Bool?,\n        type: BackgroundType?\n    ) async throws -> Ok {\n        let query = SetChatBackground(\n            background: background,\n            chatId: chatId,\n            darkThemeDimming: darkThemeDimming,\n            onlyForSelf: onlyForSelf,\n            type: type\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes background in a specific chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter restorePrevious: Pass true to restore previously set background. Can be used only in private and secret chats with non-deleted users if userFullInfo.set_chat_background == true. Supposed to be used from messageChatSetBackground messages with the currently set background that was set for both sides by the other user\n    public final func deleteChatBackground(\n        chatId: Int64?,\n        restorePrevious: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteChatBackground(\n            chatId: chatId,\n            restorePrevious: restorePrevious\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes background in a specific chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter restorePrevious: Pass true to restore previously set background. Can be used only in private and secret chats with non-deleted users if userFullInfo.set_chat_background == true. Supposed to be used from messageChatSetBackground messages with the currently set background that was set for both sides by the other user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteChatBackground(\n        chatId: Int64?,\n        restorePrevious: Bool?\n    ) async throws -> Ok {\n        let query = DeleteChatBackground(\n            chatId: chatId,\n            restorePrevious: restorePrevious\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns available to the current user gift chat themes\n    /// - Parameter limit: The maximum number of chat themes to return\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: Available to the current user gift chat themes\n    public final func getGiftChatThemes(\n        limit: Int?,\n        offset: String?,\n        completion: @escaping (Result<GiftChatThemes, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGiftChatThemes(\n            limit: limit,\n            offset: offset\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns available to the current user gift chat themes\n    /// - Parameter limit: The maximum number of chat themes to return\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: Available to the current user gift chat themes\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getGiftChatThemes(\n        limit: Int?,\n        offset: String?\n    ) async throws -> GiftChatThemes {\n        let query = GetGiftChatThemes(\n            limit: limit,\n            offset: offset\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the chat theme. Supported only in private and secret chats\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter theme: New chat theme; pass null to return the default theme\n    public final func setChatTheme(\n        chatId: Int64?,\n        theme: InputChatTheme?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatTheme(\n            chatId: chatId,\n            theme: theme\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the chat theme. Supported only in private and secret chats\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter theme: New chat theme; pass null to return the default theme\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatTheme(\n        chatId: Int64?,\n        theme: InputChatTheme?\n    ) async throws -> Ok {\n        let query = SetChatTheme(\n            chatId: chatId,\n            theme: theme\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the draft message in a chat or a topic\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter draftMessage: New draft message; pass null to remove the draft. All files in draft message content must be of the type inputFileLocal. Media thumbnails and captions are ignored\n    /// - Parameter topicId: Topic in which the draft will be changed; pass null to change the draft for the chat itself\n    public final func setChatDraftMessage(\n        chatId: Int64?,\n        draftMessage: DraftMessage?,\n        topicId: MessageTopic?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatDraftMessage(\n            chatId: chatId,\n            draftMessage: draftMessage,\n            topicId: topicId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the draft message in a chat or a topic\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter draftMessage: New draft message; pass null to remove the draft. All files in draft message content must be of the type inputFileLocal. Media thumbnails and captions are ignored\n    /// - Parameter topicId: Topic in which the draft will be changed; pass null to change the draft for the chat itself\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatDraftMessage(\n        chatId: Int64?,\n        draftMessage: DraftMessage?,\n        topicId: MessageTopic?\n    ) async throws -> Ok {\n        let query = SetChatDraftMessage(\n            chatId: chatId,\n            draftMessage: draftMessage,\n            topicId: topicId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the notification settings of a chat. Notification settings of a chat with the current user (Saved Messages) can't be changed\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter notificationSettings: New notification settings for the chat. If the chat is muted for more than 366 days, it is considered to be muted forever\n    public final func setChatNotificationSettings(\n        chatId: Int64?,\n        notificationSettings: ChatNotificationSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatNotificationSettings(\n            chatId: chatId,\n            notificationSettings: notificationSettings\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the notification settings of a chat. Notification settings of a chat with the current user (Saved Messages) can't be changed\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter notificationSettings: New notification settings for the chat. If the chat is muted for more than 366 days, it is considered to be muted forever\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatNotificationSettings(\n        chatId: Int64?,\n        notificationSettings: ChatNotificationSettings?\n    ) async throws -> Ok {\n        let query = SetChatNotificationSettings(\n            chatId: chatId,\n            notificationSettings: notificationSettings\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the ability of users to save, forward, or copy chat content. Requires owner privileges in basic groups, supergroups and channels. Requires Telegram Premium to enable protected content in private chats. Not available in Saved Messages and private chats with bots or support accounts\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter hasProtectedContent: New value of has_protected_content\n    public final func toggleChatHasProtectedContent(\n        chatId: Int64?,\n        hasProtectedContent: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleChatHasProtectedContent(\n            chatId: chatId,\n            hasProtectedContent: hasProtectedContent\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the ability of users to save, forward, or copy chat content. Requires owner privileges in basic groups, supergroups and channels. Requires Telegram Premium to enable protected content in private chats. Not available in Saved Messages and private chats with bots or support accounts\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter hasProtectedContent: New value of has_protected_content\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleChatHasProtectedContent(\n        chatId: Int64?,\n        hasProtectedContent: Bool?\n    ) async throws -> Ok {\n        let query = ToggleChatHasProtectedContent(\n            chatId: chatId,\n            hasProtectedContent: hasProtectedContent\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Processes request to disable has_protected_content in a chat\n    /// - Parameter approve: Pass true to approve the request; pass false to reject the request\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter requestMessageId: Identifier of the message with the request. The message must be incoming and has content of the type messageChatHasProtectedContentDisableRequested\n    public final func processChatHasProtectedContentDisableRequest(\n        approve: Bool?,\n        chatId: Int64?,\n        requestMessageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ProcessChatHasProtectedContentDisableRequest(\n            approve: approve,\n            chatId: chatId,\n            requestMessageId: requestMessageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Processes request to disable has_protected_content in a chat\n    /// - Parameter approve: Pass true to approve the request; pass false to reject the request\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter requestMessageId: Identifier of the message with the request. The message must be incoming and has content of the type messageChatHasProtectedContentDisableRequested\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func processChatHasProtectedContentDisableRequest(\n        approve: Bool?,\n        chatId: Int64?,\n        requestMessageId: Int64?\n    ) async throws -> Ok {\n        let query = ProcessChatHasProtectedContentDisableRequest(\n            approve: approve,\n            chatId: chatId,\n            requestMessageId: requestMessageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the view_as_topics setting of a forum chat or Saved Messages\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter viewAsTopics: New value of view_as_topics\n    public final func toggleChatViewAsTopics(\n        chatId: Int64?,\n        viewAsTopics: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleChatViewAsTopics(\n            chatId: chatId,\n            viewAsTopics: viewAsTopics\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the view_as_topics setting of a forum chat or Saved Messages\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter viewAsTopics: New value of view_as_topics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleChatViewAsTopics(\n        chatId: Int64?,\n        viewAsTopics: Bool?\n    ) async throws -> Ok {\n        let query = ToggleChatViewAsTopics(\n            chatId: chatId,\n            viewAsTopics: viewAsTopics\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the translatable state of a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isTranslatable: New value of is_translatable\n    public final func toggleChatIsTranslatable(\n        chatId: Int64?,\n        isTranslatable: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleChatIsTranslatable(\n            chatId: chatId,\n            isTranslatable: isTranslatable\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the translatable state of a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isTranslatable: New value of is_translatable\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleChatIsTranslatable(\n        chatId: Int64?,\n        isTranslatable: Bool?\n    ) async throws -> Ok {\n        let query = ToggleChatIsTranslatable(\n            chatId: chatId,\n            isTranslatable: isTranslatable\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the marked as unread state of a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isMarkedAsUnread: New value of is_marked_as_unread\n    public final func toggleChatIsMarkedAsUnread(\n        chatId: Int64?,\n        isMarkedAsUnread: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleChatIsMarkedAsUnread(\n            chatId: chatId,\n            isMarkedAsUnread: isMarkedAsUnread\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the marked as unread state of a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isMarkedAsUnread: New value of is_marked_as_unread\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleChatIsMarkedAsUnread(\n        chatId: Int64?,\n        isMarkedAsUnread: Bool?\n    ) async throws -> Ok {\n        let query = ToggleChatIsMarkedAsUnread(\n            chatId: chatId,\n            isMarkedAsUnread: isMarkedAsUnread\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the value of the default disable_notification parameter, used when a message is sent to a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter defaultDisableNotification: New value of default_disable_notification\n    public final func toggleChatDefaultDisableNotification(\n        chatId: Int64?,\n        defaultDisableNotification: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleChatDefaultDisableNotification(\n            chatId: chatId,\n            defaultDisableNotification: defaultDisableNotification\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the value of the default disable_notification parameter, used when a message is sent to a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter defaultDisableNotification: New value of default_disable_notification\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleChatDefaultDisableNotification(\n        chatId: Int64?,\n        defaultDisableNotification: Bool?\n    ) async throws -> Ok {\n        let query = ToggleChatDefaultDisableNotification(\n            chatId: chatId,\n            defaultDisableNotification: defaultDisableNotification\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes reactions, available in a chat. Available for basic groups, supergroups, and channels. Requires can_change_info member right\n    /// - Parameter availableReactions: Reactions available in the chat. All explicitly specified emoji reactions must be active. In channel chats up to the chat's boost level custom emoji reactions can be explicitly specified\n    /// - Parameter chatId: Identifier of the chat\n    public final func setChatAvailableReactions(\n        availableReactions: ChatAvailableReactions?,\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatAvailableReactions(\n            availableReactions: availableReactions,\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes reactions, available in a chat. Available for basic groups, supergroups, and channels. Requires can_change_info member right\n    /// - Parameter availableReactions: Reactions available in the chat. All explicitly specified emoji reactions must be active. In channel chats up to the chat's boost level custom emoji reactions can be explicitly specified\n    /// - Parameter chatId: Identifier of the chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatAvailableReactions(\n        availableReactions: ChatAvailableReactions?,\n        chatId: Int64?\n    ) async throws -> Ok {\n        let query = SetChatAvailableReactions(\n            availableReactions: availableReactions,\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes application-specific data associated with a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter clientData: New value of client_data\n    public final func setChatClientData(\n        chatId: Int64?,\n        clientData: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatClientData(\n            chatId: chatId,\n            clientData: clientData\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes application-specific data associated with a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter clientData: New value of client_data\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatClientData(\n        chatId: Int64?,\n        clientData: String?\n    ) async throws -> Ok {\n        let query = SetChatClientData(\n            chatId: chatId,\n            clientData: clientData\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes information about a chat. Available for basic groups, supergroups, and channels. Requires can_change_info member right\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter description: \n    public final func setChatDescription(\n        chatId: Int64?,\n        description: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatDescription(\n            chatId: chatId,\n            description: description\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes information about a chat. Available for basic groups, supergroups, and channels. Requires can_change_info member right\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter description: \n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatDescription(\n        chatId: Int64?,\n        description: String?\n    ) async throws -> Ok {\n        let query = SetChatDescription(\n            chatId: chatId,\n            description: description\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the discussion group of a channel chat; requires can_change_info administrator right in the channel if it is specified\n    /// - Parameter chatId: Identifier of the channel chat. Pass 0 to remove a link from the supergroup passed in the second argument to a linked channel chat (requires can_pin_messages member right in the supergroup)\n    /// - Parameter discussionChatId: Identifier of a new channel's discussion group. Use 0 to remove the discussion group. Use the method getSuitableDiscussionChats to find all suitable groups. Basic group chats must be first upgraded to supergroup chats. If new chat members don't have access to old messages in the supergroup, then toggleSupergroupIsAllHistoryAvailable must be used first to change that\n    public final func setChatDiscussionGroup(\n        chatId: Int64?,\n        discussionChatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatDiscussionGroup(\n            chatId: chatId,\n            discussionChatId: discussionChatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the discussion group of a channel chat; requires can_change_info administrator right in the channel if it is specified\n    /// - Parameter chatId: Identifier of the channel chat. Pass 0 to remove a link from the supergroup passed in the second argument to a linked channel chat (requires can_pin_messages member right in the supergroup)\n    /// - Parameter discussionChatId: Identifier of a new channel's discussion group. Use 0 to remove the discussion group. Use the method getSuitableDiscussionChats to find all suitable groups. Basic group chats must be first upgraded to supergroup chats. If new chat members don't have access to old messages in the supergroup, then toggleSupergroupIsAllHistoryAvailable must be used first to change that\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatDiscussionGroup(\n        chatId: Int64?,\n        discussionChatId: Int64?\n    ) async throws -> Ok {\n        let query = SetChatDiscussionGroup(\n            chatId: chatId,\n            discussionChatId: discussionChatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes direct messages group settings for a channel chat; requires owner privileges in the chat\n    /// - Parameter chatId: Identifier of the channel chat\n    /// - Parameter isEnabled: Pass true if the direct messages group is enabled for the channel chat; pass false otherwise\n    /// - Parameter paidMessageStarCount: The new number of Telegram Stars that must be paid for each message that is sent to the direct messages chat unless the sender is an administrator of the channel chat; 0-getOption(\"paid_message_star_count_max\"). The channel will receive getOption(\"paid_message_earnings_per_mille\") Telegram Stars for each 1000 Telegram Stars paid for message sending. Requires supergroupFullInfo.can_enable_paid_messages for positive amounts\n    public final func setChatDirectMessagesGroup(\n        chatId: Int64?,\n        isEnabled: Bool?,\n        paidMessageStarCount: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatDirectMessagesGroup(\n            chatId: chatId,\n            isEnabled: isEnabled,\n            paidMessageStarCount: paidMessageStarCount\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes direct messages group settings for a channel chat; requires owner privileges in the chat\n    /// - Parameter chatId: Identifier of the channel chat\n    /// - Parameter isEnabled: Pass true if the direct messages group is enabled for the channel chat; pass false otherwise\n    /// - Parameter paidMessageStarCount: The new number of Telegram Stars that must be paid for each message that is sent to the direct messages chat unless the sender is an administrator of the channel chat; 0-getOption(\"paid_message_star_count_max\"). The channel will receive getOption(\"paid_message_earnings_per_mille\") Telegram Stars for each 1000 Telegram Stars paid for message sending. Requires supergroupFullInfo.can_enable_paid_messages for positive amounts\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatDirectMessagesGroup(\n        chatId: Int64?,\n        isEnabled: Bool?,\n        paidMessageStarCount: Int64?\n    ) async throws -> Ok {\n        let query = SetChatDirectMessagesGroup(\n            chatId: chatId,\n            isEnabled: isEnabled,\n            paidMessageStarCount: paidMessageStarCount\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the location of a chat. Available only for some location-based supergroups, use supergroupFullInfo.can_set_location to check whether the method is allowed to use\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter location: New location for the chat; must be valid and not null\n    public final func setChatLocation(\n        chatId: Int64?,\n        location: ChatLocation?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatLocation(\n            chatId: chatId,\n            location: location\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the location of a chat. Available only for some location-based supergroups, use supergroupFullInfo.can_set_location to check whether the method is allowed to use\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter location: New location for the chat; must be valid and not null\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatLocation(\n        chatId: Int64?,\n        location: ChatLocation?\n    ) async throws -> Ok {\n        let query = SetChatLocation(\n            chatId: chatId,\n            location: location\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the slow mode delay of a chat. Available only for supergroups; requires can_restrict_members administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter slowModeDelay: New slow mode delay for the chat, in seconds; must be one of 0, 5, 10, 30, 60, 300, 900, 3600\n    public final func setChatSlowModeDelay(\n        chatId: Int64?,\n        slowModeDelay: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatSlowModeDelay(\n            chatId: chatId,\n            slowModeDelay: slowModeDelay\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the slow mode delay of a chat. Available only for supergroups; requires can_restrict_members administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter slowModeDelay: New slow mode delay for the chat, in seconds; must be one of 0, 5, 10, 30, 60, 300, 900, 3600\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatSlowModeDelay(\n        chatId: Int64?,\n        slowModeDelay: Int?\n    ) async throws -> Ok {\n        let query = SetChatSlowModeDelay(\n            chatId: chatId,\n            slowModeDelay: slowModeDelay\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Pins a message in a chat. A message can be pinned only if messageProperties.can_be_pinned\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter disableNotification: Pass true to disable notification about the pinned message. Notifications are always disabled in channels and private chats\n    /// - Parameter messageId: Identifier of the new pinned message\n    /// - Parameter onlyForSelf: Pass true to pin the message only for self; private chats only\n    public final func pinChatMessage(\n        chatId: Int64?,\n        disableNotification: Bool?,\n        messageId: Int64?,\n        onlyForSelf: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = PinChatMessage(\n            chatId: chatId,\n            disableNotification: disableNotification,\n            messageId: messageId,\n            onlyForSelf: onlyForSelf\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Pins a message in a chat. A message can be pinned only if messageProperties.can_be_pinned\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter disableNotification: Pass true to disable notification about the pinned message. Notifications are always disabled in channels and private chats\n    /// - Parameter messageId: Identifier of the new pinned message\n    /// - Parameter onlyForSelf: Pass true to pin the message only for self; private chats only\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func pinChatMessage(\n        chatId: Int64?,\n        disableNotification: Bool?,\n        messageId: Int64?,\n        onlyForSelf: Bool?\n    ) async throws -> Ok {\n        let query = PinChatMessage(\n            chatId: chatId,\n            disableNotification: disableNotification,\n            messageId: messageId,\n            onlyForSelf: onlyForSelf\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes a pinned message from a chat; requires can_pin_messages member right if the chat is a basic group or supergroup, or can_edit_messages administrator right if the chat is a channel\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter messageId: Identifier of the removed pinned message\n    public final func unpinChatMessage(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = UnpinChatMessage(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes a pinned message from a chat; requires can_pin_messages member right if the chat is a basic group or supergroup, or can_edit_messages administrator right if the chat is a channel\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter messageId: Identifier of the removed pinned message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func unpinChatMessage(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = UnpinChatMessage(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes all pinned messages from a chat; requires can_pin_messages member right if the chat is a basic group or supergroup, or can_edit_messages administrator right if the chat is a channel\n    /// - Parameter chatId: Identifier of the chat\n    public final func unpinAllChatMessages(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = UnpinAllChatMessages(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes all pinned messages from a chat; requires can_pin_messages member right if the chat is a basic group or supergroup, or can_edit_messages administrator right if the chat is a channel\n    /// - Parameter chatId: Identifier of the chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func unpinAllChatMessages(chatId: Int64?) async throws -> Ok {\n        let query = UnpinAllChatMessages(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds the current user as a new member to a chat. Private and secret chats can't be joined using this method. May return an error with a message \"INVITE_REQUEST_SENT\" if only a join request was created\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: May return an error with a message \"INVITE_REQUEST_SENT\" if only a join request was created\n    public final func joinChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = JoinChat(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds the current user as a new member to a chat. Private and secret chats can't be joined using this method. May return an error with a message \"INVITE_REQUEST_SENT\" if only a join request was created\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: May return an error with a message \"INVITE_REQUEST_SENT\" if only a join request was created\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func joinChat(chatId: Int64?) async throws -> Ok {\n        let query = JoinChat(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes the current user from chat members. Private and secret chats can't be left using this method\n    /// - Parameter chatId: Chat identifier\n    public final func leaveChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = LeaveChat(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes the current user from chat members. Private and secret chats can't be left using this method\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func leaveChat(chatId: Int64?) async throws -> Ok {\n        let query = LeaveChat(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds a new member to a chat; requires can_invite_users member right. Members can't be added to private or secret chats. Returns information about members that weren't added\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forwardLimit: The number of earlier messages from the chat to be forwarded to the new member; up to 100. Ignored for supergroups and channels, or if the added user is a bot\n    /// - Parameter userId: Identifier of the user\n    /// - Returns: Information about members that weren't added\n    public final func addChatMember(\n        chatId: Int64?,\n        forwardLimit: Int?,\n        userId: Int64?,\n        completion: @escaping (Result<FailedToAddMembers, Swift.Error>) -> Void\n    ) throws {\n        let query = AddChatMember(\n            chatId: chatId,\n            forwardLimit: forwardLimit,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds a new member to a chat; requires can_invite_users member right. Members can't be added to private or secret chats. Returns information about members that weren't added\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forwardLimit: The number of earlier messages from the chat to be forwarded to the new member; up to 100. Ignored for supergroups and channels, or if the added user is a bot\n    /// - Parameter userId: Identifier of the user\n    /// - Returns: Information about members that weren't added\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func addChatMember(\n        chatId: Int64?,\n        forwardLimit: Int?,\n        userId: Int64?\n    ) async throws -> FailedToAddMembers {\n        let query = AddChatMember(\n            chatId: chatId,\n            forwardLimit: forwardLimit,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds multiple new members to a chat; requires can_invite_users member right. Currently, this method is only available for supergroups and channels. This method can't be used to join a chat. Members can't be added to a channel if it has more than 200 members. Returns information about members that weren't added\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter userIds: Identifiers of the users to be added to the chat. The maximum number of added users is 20 for supergroups and 100 for channels\n    /// - Returns: Information about members that weren't added\n    public final func addChatMembers(\n        chatId: Int64?,\n        userIds: [Int64]?,\n        completion: @escaping (Result<FailedToAddMembers, Swift.Error>) -> Void\n    ) throws {\n        let query = AddChatMembers(\n            chatId: chatId,\n            userIds: userIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds multiple new members to a chat; requires can_invite_users member right. Currently, this method is only available for supergroups and channels. This method can't be used to join a chat. Members can't be added to a channel if it has more than 200 members. Returns information about members that weren't added\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter userIds: Identifiers of the users to be added to the chat. The maximum number of added users is 20 for supergroups and 100 for channels\n    /// - Returns: Information about members that weren't added\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func addChatMembers(\n        chatId: Int64?,\n        userIds: [Int64]?\n    ) async throws -> FailedToAddMembers {\n        let query = AddChatMembers(\n            chatId: chatId,\n            userIds: userIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the status of a chat member; requires can_invite_users member right to add a chat member, can_promote_members administrator right to change administrator rights of the member, and can_restrict_members administrator right to change restrictions of a user. This function is currently not suitable for transferring chat ownership; use transferChatOwnership instead. Use addChatMember or banChatMember if some additional parameters needs to be passed\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter memberId: Member identifier. Chats can be only banned and unbanned in supergroups and channels\n    /// - Parameter status: The new status of the member in the chat\n    public final func setChatMemberStatus(\n        chatId: Int64?,\n        memberId: MessageSender?,\n        status: ChatMemberStatus?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatMemberStatus(\n            chatId: chatId,\n            memberId: memberId,\n            status: status\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the status of a chat member; requires can_invite_users member right to add a chat member, can_promote_members administrator right to change administrator rights of the member, and can_restrict_members administrator right to change restrictions of a user. This function is currently not suitable for transferring chat ownership; use transferChatOwnership instead. Use addChatMember or banChatMember if some additional parameters needs to be passed\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter memberId: Member identifier. Chats can be only banned and unbanned in supergroups and channels\n    /// - Parameter status: The new status of the member in the chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatMemberStatus(\n        chatId: Int64?,\n        memberId: MessageSender?,\n        status: ChatMemberStatus?\n    ) async throws -> Ok {\n        let query = SetChatMemberStatus(\n            chatId: chatId,\n            memberId: memberId,\n            status: status\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the tag or custom title of a chat member; requires can_manage_tags administrator right to change tag of other users; for basic groups and supergroups only\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter tag: The new tag of the member in the chat; 0-16 characters without emoji\n    /// - Parameter userId: Identifier of the user, which tag is changed. Chats can't have member tags\n    public final func setChatMemberTag(\n        chatId: Int64?,\n        tag: String?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatMemberTag(\n            chatId: chatId,\n            tag: tag,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the tag or custom title of a chat member; requires can_manage_tags administrator right to change tag of other users; for basic groups and supergroups only\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter tag: The new tag of the member in the chat; 0-16 characters without emoji\n    /// - Parameter userId: Identifier of the user, which tag is changed. Chats can't have member tags\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatMemberTag(\n        chatId: Int64?,\n        tag: String?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = SetChatMemberTag(\n            chatId: chatId,\n            tag: tag,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Bans a member in a chat; requires can_restrict_members administrator right. Members can't be banned in private or secret chats. In supergroups and channels, the user will not be able to return to the group on their own using invite links, etc., unless unbanned first\n    /// - Parameter bannedUntilDate: Point in time (Unix timestamp) when the user will be unbanned; 0 if never. If the user is banned for more than 366 days or for less than 30 seconds from the current time, the user is considered to be banned forever. Ignored in basic groups and if a chat is banned\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter memberId: Member identifier\n    /// - Parameter revokeMessages: Pass true to delete all messages in the chat for the user who is being removed. Always true for supergroups and channels\n    /// - Returns: In supergroups and channels, the user will not be able to return to the group on their own using invite links, etc\n    public final func banChatMember(\n        bannedUntilDate: Int?,\n        chatId: Int64?,\n        memberId: MessageSender?,\n        revokeMessages: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = BanChatMember(\n            bannedUntilDate: bannedUntilDate,\n            chatId: chatId,\n            memberId: memberId,\n            revokeMessages: revokeMessages\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Bans a member in a chat; requires can_restrict_members administrator right. Members can't be banned in private or secret chats. In supergroups and channels, the user will not be able to return to the group on their own using invite links, etc., unless unbanned first\n    /// - Parameter bannedUntilDate: Point in time (Unix timestamp) when the user will be unbanned; 0 if never. If the user is banned for more than 366 days or for less than 30 seconds from the current time, the user is considered to be banned forever. Ignored in basic groups and if a chat is banned\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter memberId: Member identifier\n    /// - Parameter revokeMessages: Pass true to delete all messages in the chat for the user who is being removed. Always true for supergroups and channels\n    /// - Returns: In supergroups and channels, the user will not be able to return to the group on their own using invite links, etc\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func banChatMember(\n        bannedUntilDate: Int?,\n        chatId: Int64?,\n        memberId: MessageSender?,\n        revokeMessages: Bool?\n    ) async throws -> Ok {\n        let query = BanChatMember(\n            bannedUntilDate: bannedUntilDate,\n            chatId: chatId,\n            memberId: memberId,\n            revokeMessages: revokeMessages\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks whether the current session can be used to transfer a chat ownership to another user\n    public final func canTransferOwnership(completion: @escaping (Result<CanTransferOwnershipResult, Swift.Error>) -> Void) throws {\n        let query = CanTransferOwnership()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks whether the current session can be used to transfer a chat ownership to another user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func canTransferOwnership() async throws -> CanTransferOwnershipResult {\n        let query = CanTransferOwnership()\n        return try await self.run(query: query)\n    }\n\n    /// Changes the owner of a chat; for basic groups, supergroups and channel chats only; requires owner privileges in the chat. Use the method canTransferOwnership to check whether the ownership can be transferred from the current session\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Parameter userId: Identifier of the user to which transfer the ownership. The ownership can't be transferred to a bot or to a deleted user\n    public final func transferChatOwnership(\n        chatId: Int64?,\n        password: String?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = TransferChatOwnership(\n            chatId: chatId,\n            password: password,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the owner of a chat; for basic groups, supergroups and channel chats only; requires owner privileges in the chat. Use the method canTransferOwnership to check whether the ownership can be transferred from the current session\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Parameter userId: Identifier of the user to which transfer the ownership. The ownership can't be transferred to a bot or to a deleted user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func transferChatOwnership(\n        chatId: Int64?,\n        password: String?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = TransferChatOwnership(\n            chatId: chatId,\n            password: password,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the user who will become the owner of the chat after 7 days if the current user does not return to the supergroup or channel during that period or immediately for basic groups; requires owner privileges in the chat. Available only for supergroups, basic groups and channel chats\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The user who will become the owner of the chat after 7 days if the current user does not return to the supergroup or channel during that period or immediately for basic groups\n    public final func getChatOwnerAfterLeaving(\n        chatId: Int64?,\n        completion: @escaping (Result<User, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatOwnerAfterLeaving(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the user who will become the owner of the chat after 7 days if the current user does not return to the supergroup or channel during that period or immediately for basic groups; requires owner privileges in the chat. Available only for supergroups, basic groups and channel chats\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The user who will become the owner of the chat after 7 days if the current user does not return to the supergroup or channel during that period or immediately for basic groups\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatOwnerAfterLeaving(chatId: Int64?) async throws -> User {\n        let query = GetChatOwnerAfterLeaving(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a single member of a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter memberId: Member identifier\n    /// - Returns: Information about a single member of a chat\n    public final func getChatMember(\n        chatId: Int64?,\n        memberId: MessageSender?,\n        completion: @escaping (Result<ChatMember, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatMember(\n            chatId: chatId,\n            memberId: memberId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a single member of a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter memberId: Member identifier\n    /// - Returns: Information about a single member of a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatMember(\n        chatId: Int64?,\n        memberId: MessageSender?\n    ) async throws -> ChatMember {\n        let query = GetChatMember(\n            chatId: chatId,\n            memberId: memberId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for a specified query in the first name, last name and usernames of the members of a specified chat. Requires administrator rights if the chat is a channel\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter filter: The type of users to search for; pass null to search among all chat members\n    /// - Parameter limit: The maximum number of users to be returned; up to 200\n    /// - Parameter query: Query to search for\n    public final func searchChatMembers(\n        chatId: Int64?,\n        filter: ChatMembersFilter?,\n        limit: Int?,\n        query: String?,\n        completion: @escaping (Result<ChatMembers, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchChatMembers(\n            chatId: chatId,\n            filter: filter,\n            limit: limit,\n            query: query\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for a specified query in the first name, last name and usernames of the members of a specified chat. Requires administrator rights if the chat is a channel\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter filter: The type of users to search for; pass null to search among all chat members\n    /// - Parameter limit: The maximum number of users to be returned; up to 200\n    /// - Parameter query: Query to search for\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchChatMembers(\n        chatId: Int64?,\n        filter: ChatMembersFilter?,\n        limit: Int?,\n        query: String?\n    ) async throws -> ChatMembers {\n        let query = SearchChatMembers(\n            chatId: chatId,\n            filter: filter,\n            limit: limit,\n            query: query\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a list of administrators of the chat with their custom titles\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: A list of administrators of the chat with their custom titles\n    public final func getChatAdministrators(\n        chatId: Int64?,\n        completion: @escaping (Result<ChatAdministrators, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatAdministrators(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a list of administrators of the chat with their custom titles\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: A list of administrators of the chat with their custom titles\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatAdministrators(chatId: Int64?) async throws -> ChatAdministrators {\n        let query = GetChatAdministrators(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Clears message drafts in all chats\n    /// - Parameter excludeSecretChats: Pass true to keep local message drafts in secret chats\n    public final func clearAllDraftMessages(\n        excludeSecretChats: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ClearAllDraftMessages(\n            excludeSecretChats: excludeSecretChats\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Clears message drafts in all chats\n    /// - Parameter excludeSecretChats: Pass true to keep local message drafts in secret chats\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func clearAllDraftMessages(excludeSecretChats: Bool?) async throws -> Ok {\n        let query = ClearAllDraftMessages(\n            excludeSecretChats: excludeSecretChats\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the current state of stake dice\n    /// - Returns: The current state of stake dice\n    public final func getStakeDiceState(completion: @escaping (Result<StakeDiceState, Swift.Error>) -> Void) throws {\n        let query = GetStakeDiceState()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the current state of stake dice\n    /// - Returns: The current state of stake dice\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStakeDiceState() async throws -> StakeDiceState {\n        let query = GetStakeDiceState()\n        return try await self.run(query: query)\n    }\n\n    /// Returns saved notification sound by its identifier. Returns a 404 error if there is no saved notification sound with the specified identifier\n    /// - Parameter notificationSoundId: Identifier of the notification sound\n    /// - Returns: Saved notification sound by its identifier. Returns a 404 error if there is no saved notification sound with the specified identifier\n    public final func getSavedNotificationSound(\n        notificationSoundId: TdInt64?,\n        completion: @escaping (Result<NotificationSound, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSavedNotificationSound(\n            notificationSoundId: notificationSoundId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns saved notification sound by its identifier. Returns a 404 error if there is no saved notification sound with the specified identifier\n    /// - Parameter notificationSoundId: Identifier of the notification sound\n    /// - Returns: Saved notification sound by its identifier. Returns a 404 error if there is no saved notification sound with the specified identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getSavedNotificationSound(notificationSoundId: TdInt64?) async throws -> NotificationSound {\n        let query = GetSavedNotificationSound(\n            notificationSoundId: notificationSoundId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of saved notification sounds. If a sound isn't in the list, then default sound needs to be used\n    /// - Returns: The list of saved notification sounds\n    public final func getSavedNotificationSounds(completion: @escaping (Result<NotificationSounds, Swift.Error>) -> Void) throws {\n        let query = GetSavedNotificationSounds()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of saved notification sounds. If a sound isn't in the list, then default sound needs to be used\n    /// - Returns: The list of saved notification sounds\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getSavedNotificationSounds() async throws -> NotificationSounds {\n        let query = GetSavedNotificationSounds()\n        return try await self.run(query: query)\n    }\n\n    /// Adds a new notification sound to the list of saved notification sounds. The new notification sound is added to the top of the list. If it is already in the list, its position isn't changed\n    /// - Parameter sound: Notification sound file to add\n    public final func addSavedNotificationSound(\n        sound: InputFile?,\n        completion: @escaping (Result<NotificationSound, Swift.Error>) -> Void\n    ) throws {\n        let query = AddSavedNotificationSound(\n            sound: sound\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds a new notification sound to the list of saved notification sounds. The new notification sound is added to the top of the list. If it is already in the list, its position isn't changed\n    /// - Parameter sound: Notification sound file to add\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func addSavedNotificationSound(sound: InputFile?) async throws -> NotificationSound {\n        let query = AddSavedNotificationSound(\n            sound: sound\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes a notification sound from the list of saved notification sounds\n    /// - Parameter notificationSoundId: Identifier of the notification sound\n    public final func removeSavedNotificationSound(\n        notificationSoundId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveSavedNotificationSound(\n            notificationSoundId: notificationSoundId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes a notification sound from the list of saved notification sounds\n    /// - Parameter notificationSoundId: Identifier of the notification sound\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeSavedNotificationSound(notificationSoundId: TdInt64?) async throws -> Ok {\n        let query = RemoveSavedNotificationSound(\n            notificationSoundId: notificationSoundId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of chats with non-default notification settings for new messages\n    /// - Parameter compareSound: Pass true to include in the response chats with only non-default sound\n    /// - Parameter scope: If specified, only chats from the scope will be returned; pass null to return chats from all scopes\n    /// - Returns: The list of chats with non-default notification settings for new messages\n    public final func getChatNotificationSettingsExceptions(\n        compareSound: Bool?,\n        scope: NotificationSettingsScope?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatNotificationSettingsExceptions(\n            compareSound: compareSound,\n            scope: scope\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of chats with non-default notification settings for new messages\n    /// - Parameter compareSound: Pass true to include in the response chats with only non-default sound\n    /// - Parameter scope: If specified, only chats from the scope will be returned; pass null to return chats from all scopes\n    /// - Returns: The list of chats with non-default notification settings for new messages\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatNotificationSettingsExceptions(\n        compareSound: Bool?,\n        scope: NotificationSettingsScope?\n    ) async throws -> Chats {\n        let query = GetChatNotificationSettingsExceptions(\n            compareSound: compareSound,\n            scope: scope\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the notification settings for chats of a given type\n    /// - Parameter scope: Types of chats for which to return the notification settings information\n    /// - Returns: The notification settings for chats of a given type\n    public final func getScopeNotificationSettings(\n        scope: NotificationSettingsScope?,\n        completion: @escaping (Result<ScopeNotificationSettings, Swift.Error>) -> Void\n    ) throws {\n        let query = GetScopeNotificationSettings(\n            scope: scope\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the notification settings for chats of a given type\n    /// - Parameter scope: Types of chats for which to return the notification settings information\n    /// - Returns: The notification settings for chats of a given type\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getScopeNotificationSettings(scope: NotificationSettingsScope?) async throws -> ScopeNotificationSettings {\n        let query = GetScopeNotificationSettings(\n            scope: scope\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes notification settings for chats of a given type\n    /// - Parameter notificationSettings: The new notification settings for the given scope\n    /// - Parameter scope: Types of chats for which to change the notification settings\n    public final func setScopeNotificationSettings(\n        notificationSettings: ScopeNotificationSettings?,\n        scope: NotificationSettingsScope?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetScopeNotificationSettings(\n            notificationSettings: notificationSettings,\n            scope: scope\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes notification settings for chats of a given type\n    /// - Parameter notificationSettings: The new notification settings for the given scope\n    /// - Parameter scope: Types of chats for which to change the notification settings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setScopeNotificationSettings(\n        notificationSettings: ScopeNotificationSettings?,\n        scope: NotificationSettingsScope?\n    ) async throws -> Ok {\n        let query = SetScopeNotificationSettings(\n            notificationSettings: notificationSettings,\n            scope: scope\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes notification settings for reactions\n    /// - Parameter notificationSettings: The new notification settings for reactions\n    public final func setReactionNotificationSettings(\n        notificationSettings: ReactionNotificationSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetReactionNotificationSettings(\n            notificationSettings: notificationSettings\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes notification settings for reactions\n    /// - Parameter notificationSettings: The new notification settings for reactions\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setReactionNotificationSettings(notificationSettings: ReactionNotificationSettings?) async throws -> Ok {\n        let query = SetReactionNotificationSettings(\n            notificationSettings: notificationSettings\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Resets all chat and scope notification settings to their default values. By default, all chats are unmuted and message previews are shown\n    public final func resetAllNotificationSettings(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ResetAllNotificationSettings()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Resets all chat and scope notification settings to their default values. By default, all chats are unmuted and message previews are shown\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func resetAllNotificationSettings() async throws -> Ok {\n        let query = ResetAllNotificationSettings()\n        return try await self.run(query: query)\n    }\n\n    /// Changes the pinned state of a chat. There can be up to getOption(\"pinned_chat_count_max\")/getOption(\"pinned_archived_chat_count_max\") pinned non-secret chats and the same number of secret chats in the main/archive chat list. The limit can be increased with Telegram Premium\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter chatList: Chat list in which to change the pinned state of the chat\n    /// - Parameter isPinned: Pass true to pin the chat; pass false to unpin it\n    public final func toggleChatIsPinned(\n        chatId: Int64?,\n        chatList: ChatList?,\n        isPinned: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleChatIsPinned(\n            chatId: chatId,\n            chatList: chatList,\n            isPinned: isPinned\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the pinned state of a chat. There can be up to getOption(\"pinned_chat_count_max\")/getOption(\"pinned_archived_chat_count_max\") pinned non-secret chats and the same number of secret chats in the main/archive chat list. The limit can be increased with Telegram Premium\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter chatList: Chat list in which to change the pinned state of the chat\n    /// - Parameter isPinned: Pass true to pin the chat; pass false to unpin it\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleChatIsPinned(\n        chatId: Int64?,\n        chatList: ChatList?,\n        isPinned: Bool?\n    ) async throws -> Ok {\n        let query = ToggleChatIsPinned(\n            chatId: chatId,\n            chatList: chatList,\n            isPinned: isPinned\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the order of pinned chats\n    /// - Parameter chatIds: The new list of pinned chats\n    /// - Parameter chatList: Chat list in which to change the order of pinned chats\n    public final func setPinnedChats(\n        chatIds: [Int64]?,\n        chatList: ChatList?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetPinnedChats(\n            chatIds: chatIds,\n            chatList: chatList\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the order of pinned chats\n    /// - Parameter chatIds: The new list of pinned chats\n    /// - Parameter chatList: Chat list in which to change the order of pinned chats\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setPinnedChats(\n        chatIds: [Int64]?,\n        chatList: ChatList?\n    ) async throws -> Ok {\n        let query = SetPinnedChats(\n            chatIds: chatIds,\n            chatList: chatList\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Traverses all chats in a chat list and marks all messages in the chats as read\n    /// - Parameter chatList: Chat list in which to mark all chats as read\n    public final func readChatList(\n        chatList: ChatList?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReadChatList(\n            chatList: chatList\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Traverses all chats in a chat list and marks all messages in the chats as read\n    /// - Parameter chatList: Chat list in which to mark all chats as read\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func readChatList(chatList: ChatList?) async throws -> Ok {\n        let query = ReadChatList(\n            chatList: chatList\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the current weather in the given location\n    /// - Parameter location: The location\n    /// - Returns: The current weather in the given location\n    public final func getCurrentWeather(\n        location: Location?,\n        completion: @escaping (Result<CurrentWeather, Swift.Error>) -> Void\n    ) throws {\n        let query = GetCurrentWeather(\n            location: location\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the current weather in the given location\n    /// - Parameter location: The location\n    /// - Returns: The current weather in the given location\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getCurrentWeather(location: Location?) async throws -> CurrentWeather {\n        let query = GetCurrentWeather(\n            location: location\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a story\n    /// - Parameter onlyLocal: Pass true to get only locally available information without sending network requests\n    /// - Parameter storyId: Story identifier\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    /// - Returns: A story\n    public final func getStory(\n        onlyLocal: Bool?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<Story, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStory(\n            onlyLocal: onlyLocal,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a story\n    /// - Parameter onlyLocal: Pass true to get only locally available information without sending network requests\n    /// - Parameter storyId: Story identifier\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    /// - Returns: A story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStory(\n        onlyLocal: Bool?,\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) async throws -> Story {\n        let query = GetStory(\n            onlyLocal: onlyLocal,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns supergroup and channel chats in which the current user has the right to post stories. The chats must be rechecked with canPostStory before actually trying to post a story there\n    /// - Returns: Supergroup and channel chats in which the current user has the right to post stories\n    public final func getChatsToPostStories(completion: @escaping (Result<Chats, Swift.Error>) -> Void) throws {\n        let query = GetChatsToPostStories()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns supergroup and channel chats in which the current user has the right to post stories. The chats must be rechecked with canPostStory before actually trying to post a story there\n    /// - Returns: Supergroup and channel chats in which the current user has the right to post stories\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatsToPostStories() async throws -> Chats {\n        let query = GetChatsToPostStories()\n        return try await self.run(query: query)\n    }\n\n    /// Checks whether the current user can post a story on behalf of a chat; requires can_post_stories administrator right for supergroup and channel chats\n    /// - Parameter chatId: Chat identifier. Pass Saved Messages chat identifier when posting a story on behalf of the current user\n    public final func canPostStory(\n        chatId: Int64?,\n        completion: @escaping (Result<CanPostStoryResult, Swift.Error>) -> Void\n    ) throws {\n        let query = CanPostStory(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks whether the current user can post a story on behalf of a chat; requires can_post_stories administrator right for supergroup and channel chats\n    /// - Parameter chatId: Chat identifier. Pass Saved Messages chat identifier when posting a story on behalf of the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func canPostStory(chatId: Int64?) async throws -> CanPostStoryResult {\n        let query = CanPostStory(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Posts a new story on behalf of a chat; requires can_post_stories administrator right for supergroup and channel chats. Returns a temporary story\n    /// - Parameter activePeriod: Period after which the story is moved to archive, in seconds; must be one of 6 * 3600, 12 * 3600, 86400, or 2 * 86400 for Telegram Premium users, and 86400 otherwise\n    /// - Parameter albumIds: Identifiers of story albums to which the story will be added upon posting. An album can have up to getOption(\"story_album_size_max\") stories\n    /// - Parameter areas: Clickable rectangle areas to be shown on the story media; pass null if none\n    /// - Parameter caption: Story caption; pass null to use an empty caption; 0-getOption(\"story_caption_length_max\") characters; can have entities only if getOption(\"can_use_text_entities_in_story_caption\")\n    /// - Parameter chatId: Identifier of the chat that will post the story. Pass Saved Messages chat identifier when posting a story on behalf of the current user\n    /// - Parameter content: Content of the story\n    /// - Parameter fromStoryFullId: Full identifier of the original story, which content was used to create the story; pass null if the story isn't repost of another story\n    /// - Parameter isPostedToChatPage: Pass true to keep the story accessible after expiration\n    /// - Parameter privacySettings: The privacy settings for the story; ignored for stories posted on behalf of supergroup and channel chats\n    /// - Parameter protectContent: Pass true if the content of the story must be protected from forwarding and screenshotting\n    /// - Returns: A temporary story\n    public final func postStory(\n        activePeriod: Int?,\n        albumIds: [Int]?,\n        areas: InputStoryAreas?,\n        caption: FormattedText?,\n        chatId: Int64?,\n        content: InputStoryContent?,\n        fromStoryFullId: StoryFullId?,\n        isPostedToChatPage: Bool?,\n        privacySettings: StoryPrivacySettings?,\n        protectContent: Bool?,\n        completion: @escaping (Result<Story, Swift.Error>) -> Void\n    ) throws {\n        let query = PostStory(\n            activePeriod: activePeriod,\n            albumIds: albumIds,\n            areas: areas,\n            caption: caption,\n            chatId: chatId,\n            content: content,\n            fromStoryFullId: fromStoryFullId,\n            isPostedToChatPage: isPostedToChatPage,\n            privacySettings: privacySettings,\n            protectContent: protectContent\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Posts a new story on behalf of a chat; requires can_post_stories administrator right for supergroup and channel chats. Returns a temporary story\n    /// - Parameter activePeriod: Period after which the story is moved to archive, in seconds; must be one of 6 * 3600, 12 * 3600, 86400, or 2 * 86400 for Telegram Premium users, and 86400 otherwise\n    /// - Parameter albumIds: Identifiers of story albums to which the story will be added upon posting. An album can have up to getOption(\"story_album_size_max\") stories\n    /// - Parameter areas: Clickable rectangle areas to be shown on the story media; pass null if none\n    /// - Parameter caption: Story caption; pass null to use an empty caption; 0-getOption(\"story_caption_length_max\") characters; can have entities only if getOption(\"can_use_text_entities_in_story_caption\")\n    /// - Parameter chatId: Identifier of the chat that will post the story. Pass Saved Messages chat identifier when posting a story on behalf of the current user\n    /// - Parameter content: Content of the story\n    /// - Parameter fromStoryFullId: Full identifier of the original story, which content was used to create the story; pass null if the story isn't repost of another story\n    /// - Parameter isPostedToChatPage: Pass true to keep the story accessible after expiration\n    /// - Parameter privacySettings: The privacy settings for the story; ignored for stories posted on behalf of supergroup and channel chats\n    /// - Parameter protectContent: Pass true if the content of the story must be protected from forwarding and screenshotting\n    /// - Returns: A temporary story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func postStory(\n        activePeriod: Int?,\n        albumIds: [Int]?,\n        areas: InputStoryAreas?,\n        caption: FormattedText?,\n        chatId: Int64?,\n        content: InputStoryContent?,\n        fromStoryFullId: StoryFullId?,\n        isPostedToChatPage: Bool?,\n        privacySettings: StoryPrivacySettings?,\n        protectContent: Bool?\n    ) async throws -> Story {\n        let query = PostStory(\n            activePeriod: activePeriod,\n            albumIds: albumIds,\n            areas: areas,\n            caption: caption,\n            chatId: chatId,\n            content: content,\n            fromStoryFullId: fromStoryFullId,\n            isPostedToChatPage: isPostedToChatPage,\n            privacySettings: privacySettings,\n            protectContent: protectContent\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Starts a new live story on behalf of a chat; requires can_post_stories administrator right for channel chats\n    /// - Parameter chatId: Identifier of the chat that will start the live story. Pass Saved Messages chat identifier when starting a live story on behalf of the current user, or a channel chat identifier\n    /// - Parameter enableMessages: Pass true to allow viewers of the story to send messages\n    /// - Parameter isRtmpStream: Pass true to create an RTMP stream instead of an ordinary group call\n    /// - Parameter paidMessageStarCount: The minimum number of Telegram Stars that must be paid by viewers for each sent message to the call; 0-getOption(\"paid_group_call_message_star_count_max\")\n    /// - Parameter privacySettings: The privacy settings for the story; ignored for stories posted on behalf of channel chats\n    /// - Parameter protectContent: Pass true if the content of the story must be protected from screenshotting\n    public final func startLiveStory(\n        chatId: Int64?,\n        enableMessages: Bool?,\n        isRtmpStream: Bool?,\n        paidMessageStarCount: Int64?,\n        privacySettings: StoryPrivacySettings?,\n        protectContent: Bool?,\n        completion: @escaping (Result<StartLiveStoryResult, Swift.Error>) -> Void\n    ) throws {\n        let query = StartLiveStory(\n            chatId: chatId,\n            enableMessages: enableMessages,\n            isRtmpStream: isRtmpStream,\n            paidMessageStarCount: paidMessageStarCount,\n            privacySettings: privacySettings,\n            protectContent: protectContent\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Starts a new live story on behalf of a chat; requires can_post_stories administrator right for channel chats\n    /// - Parameter chatId: Identifier of the chat that will start the live story. Pass Saved Messages chat identifier when starting a live story on behalf of the current user, or a channel chat identifier\n    /// - Parameter enableMessages: Pass true to allow viewers of the story to send messages\n    /// - Parameter isRtmpStream: Pass true to create an RTMP stream instead of an ordinary group call\n    /// - Parameter paidMessageStarCount: The minimum number of Telegram Stars that must be paid by viewers for each sent message to the call; 0-getOption(\"paid_group_call_message_star_count_max\")\n    /// - Parameter privacySettings: The privacy settings for the story; ignored for stories posted on behalf of channel chats\n    /// - Parameter protectContent: Pass true if the content of the story must be protected from screenshotting\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func startLiveStory(\n        chatId: Int64?,\n        enableMessages: Bool?,\n        isRtmpStream: Bool?,\n        paidMessageStarCount: Int64?,\n        privacySettings: StoryPrivacySettings?,\n        protectContent: Bool?\n    ) async throws -> StartLiveStoryResult {\n        let query = StartLiveStory(\n            chatId: chatId,\n            enableMessages: enableMessages,\n            isRtmpStream: isRtmpStream,\n            paidMessageStarCount: paidMessageStarCount,\n            privacySettings: privacySettings,\n            protectContent: protectContent\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes content and caption of a story. Can be called only if story.can_be_edited == true\n    /// - Parameter areas: New clickable rectangle areas to be shown on the story media; pass null to keep the current areas. Areas can't be edited if story content isn't changed\n    /// - Parameter caption: New story caption; pass null to keep the current caption\n    /// - Parameter content: New content of the story; pass null to keep the current content\n    /// - Parameter storyId: Identifier of the story to edit\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    public final func editStory(\n        areas: InputStoryAreas?,\n        caption: FormattedText?,\n        content: InputStoryContent?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditStory(\n            areas: areas,\n            caption: caption,\n            content: content,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes content and caption of a story. Can be called only if story.can_be_edited == true\n    /// - Parameter areas: New clickable rectangle areas to be shown on the story media; pass null to keep the current areas. Areas can't be edited if story content isn't changed\n    /// - Parameter caption: New story caption; pass null to keep the current caption\n    /// - Parameter content: New content of the story; pass null to keep the current content\n    /// - Parameter storyId: Identifier of the story to edit\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func editStory(\n        areas: InputStoryAreas?,\n        caption: FormattedText?,\n        content: InputStoryContent?,\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) async throws -> Ok {\n        let query = EditStory(\n            areas: areas,\n            caption: caption,\n            content: content,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes cover of a video story. Can be called only if story.can_be_edited == true and the story isn't being edited now\n    /// - Parameter coverFrameTimestamp: New timestamp of the frame, which will be used as video thumbnail\n    /// - Parameter storyId: Identifier of the story to edit\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    public final func editStoryCover(\n        coverFrameTimestamp: Double?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditStoryCover(\n            coverFrameTimestamp: coverFrameTimestamp,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes cover of a video story. Can be called only if story.can_be_edited == true and the story isn't being edited now\n    /// - Parameter coverFrameTimestamp: New timestamp of the frame, which will be used as video thumbnail\n    /// - Parameter storyId: Identifier of the story to edit\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func editStoryCover(\n        coverFrameTimestamp: Double?,\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) async throws -> Ok {\n        let query = EditStoryCover(\n            coverFrameTimestamp: coverFrameTimestamp,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes privacy settings of a story. The method can be called only for stories posted on behalf of the current user and if story.can_set_privacy_settings == true\n    /// - Parameter privacySettings: The new privacy settings for the story\n    /// - Parameter storyId: Identifier of the story\n    public final func setStoryPrivacySettings(\n        privacySettings: StoryPrivacySettings?,\n        storyId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetStoryPrivacySettings(\n            privacySettings: privacySettings,\n            storyId: storyId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes privacy settings of a story. The method can be called only for stories posted on behalf of the current user and if story.can_set_privacy_settings == true\n    /// - Parameter privacySettings: The new privacy settings for the story\n    /// - Parameter storyId: Identifier of the story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setStoryPrivacySettings(\n        privacySettings: StoryPrivacySettings?,\n        storyId: Int?\n    ) async throws -> Ok {\n        let query = SetStoryPrivacySettings(\n            privacySettings: privacySettings,\n            storyId: storyId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether a story is accessible after expiration. Can be called only if story.can_toggle_is_posted_to_chat_page == true\n    /// - Parameter isPostedToChatPage: Pass true to make the story accessible after expiration; pass false to make it private\n    /// - Parameter storyId: Identifier of the story\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    public final func toggleStoryIsPostedToChatPage(\n        isPostedToChatPage: Bool?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleStoryIsPostedToChatPage(\n            isPostedToChatPage: isPostedToChatPage,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether a story is accessible after expiration. Can be called only if story.can_toggle_is_posted_to_chat_page == true\n    /// - Parameter isPostedToChatPage: Pass true to make the story accessible after expiration; pass false to make it private\n    /// - Parameter storyId: Identifier of the story\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleStoryIsPostedToChatPage(\n        isPostedToChatPage: Bool?,\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleStoryIsPostedToChatPage(\n            isPostedToChatPage: isPostedToChatPage,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes a previously posted story. Can be called only if story.can_be_deleted == true\n    /// - Parameter storyId: Identifier of the story to delete\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    public final func deleteStory(\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteStory(\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes a previously posted story. Can be called only if story.can_be_deleted == true\n    /// - Parameter storyId: Identifier of the story to delete\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteStory(\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) async throws -> Ok {\n        let query = DeleteStory(\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of chats with non-default notification settings for stories\n    /// - Returns: The list of chats with non-default notification settings for stories\n    public final func getStoryNotificationSettingsExceptions(completion: @escaping (Result<Chats, Swift.Error>) -> Void) throws {\n        let query = GetStoryNotificationSettingsExceptions()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of chats with non-default notification settings for stories\n    /// - Returns: The list of chats with non-default notification settings for stories\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStoryNotificationSettingsExceptions() async throws -> Chats {\n        let query = GetStoryNotificationSettingsExceptions()\n        return try await self.run(query: query)\n    }\n\n    /// Loads more active stories from a story list. The loaded stories will be sent through updates. Active stories are sorted by the pair (active_stories.order, active_stories.story_poster_chat_id) in descending order. Returns a 404 error if all active stories have been loaded\n    /// - Parameter storyList: The story list in which to load active stories\n    /// - Returns: A 404 error if all active stories have been loaded\n    public final func loadActiveStories(\n        storyList: StoryList?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = LoadActiveStories(\n            storyList: storyList\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Loads more active stories from a story list. The loaded stories will be sent through updates. Active stories are sorted by the pair (active_stories.order, active_stories.story_poster_chat_id) in descending order. Returns a 404 error if all active stories have been loaded\n    /// - Parameter storyList: The story list in which to load active stories\n    /// - Returns: A 404 error if all active stories have been loaded\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func loadActiveStories(storyList: StoryList?) async throws -> Ok {\n        let query = LoadActiveStories(\n            storyList: storyList\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes story list in which stories from the chat are shown\n    /// - Parameter chatId: Identifier of the chat that posted stories\n    /// - Parameter storyList: New list for active stories posted by the chat\n    public final func setChatActiveStoriesList(\n        chatId: Int64?,\n        storyList: StoryList?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatActiveStoriesList(\n            chatId: chatId,\n            storyList: storyList\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes story list in which stories from the chat are shown\n    /// - Parameter chatId: Identifier of the chat that posted stories\n    /// - Parameter storyList: New list for active stories posted by the chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatActiveStoriesList(\n        chatId: Int64?,\n        storyList: StoryList?\n    ) async throws -> Ok {\n        let query = SetChatActiveStoriesList(\n            chatId: chatId,\n            storyList: storyList\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of active stories posted by the given chat\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of active stories posted by the given chat\n    public final func getChatActiveStories(\n        chatId: Int64?,\n        completion: @escaping (Result<ChatActiveStories, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatActiveStories(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of active stories posted by the given chat\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of active stories posted by the given chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatActiveStories(chatId: Int64?) async throws -> ChatActiveStories {\n        let query = GetChatActiveStories(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of stories that posted by the given chat to its chat page. If from_story_id == 0, then pinned stories are returned first. Then, stories are returned in reverse chronological order (i.e., in order of decreasing story_id). For optimal performance, the number of returned stories is chosen by TDLib\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter fromStoryId: Identifier of the story starting from which stories must be returned; use 0 to get results from pinned and the newest story\n    /// - Parameter limit: The maximum number of stories to be returned. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Returns: The list of stories that posted by the given chat to its chat page. If from_story_id == 0, then pinned stories are returned first. Then, stories are returned in reverse chronological order (i.e., in order of decreasing story_id). For optimal performance, the number of returned stories is chosen by TDLib\n    public final func getChatPostedToChatPageStories(\n        chatId: Int64?,\n        fromStoryId: Int?,\n        limit: Int?,\n        completion: @escaping (Result<Stories, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatPostedToChatPageStories(\n            chatId: chatId,\n            fromStoryId: fromStoryId,\n            limit: limit\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of stories that posted by the given chat to its chat page. If from_story_id == 0, then pinned stories are returned first. Then, stories are returned in reverse chronological order (i.e., in order of decreasing story_id). For optimal performance, the number of returned stories is chosen by TDLib\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter fromStoryId: Identifier of the story starting from which stories must be returned; use 0 to get results from pinned and the newest story\n    /// - Parameter limit: The maximum number of stories to be returned. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Returns: The list of stories that posted by the given chat to its chat page. If from_story_id == 0, then pinned stories are returned first. Then, stories are returned in reverse chronological order (i.e., in order of decreasing story_id). For optimal performance, the number of returned stories is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatPostedToChatPageStories(\n        chatId: Int64?,\n        fromStoryId: Int?,\n        limit: Int?\n    ) async throws -> Stories {\n        let query = GetChatPostedToChatPageStories(\n            chatId: chatId,\n            fromStoryId: fromStoryId,\n            limit: limit\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of all stories posted by the given chat; requires can_edit_stories administrator right in the chat. The stories are returned in reverse chronological order (i.e., in order of decreasing story_id). For optimal performance, the number of returned stories is chosen by TDLib\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter fromStoryId: Identifier of the story starting from which stories must be returned; use 0 to get results from the last story\n    /// - Parameter limit: The maximum number of stories to be returned. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Returns: The list of all stories posted by the given chat. The stories are returned in reverse chronological order (i.e., in order of decreasing story_id). For optimal performance, the number of returned stories is chosen by TDLib\n    public final func getChatArchivedStories(\n        chatId: Int64?,\n        fromStoryId: Int?,\n        limit: Int?,\n        completion: @escaping (Result<Stories, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatArchivedStories(\n            chatId: chatId,\n            fromStoryId: fromStoryId,\n            limit: limit\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of all stories posted by the given chat; requires can_edit_stories administrator right in the chat. The stories are returned in reverse chronological order (i.e., in order of decreasing story_id). For optimal performance, the number of returned stories is chosen by TDLib\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter fromStoryId: Identifier of the story starting from which stories must be returned; use 0 to get results from the last story\n    /// - Parameter limit: The maximum number of stories to be returned. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Returns: The list of all stories posted by the given chat. The stories are returned in reverse chronological order (i.e., in order of decreasing story_id). For optimal performance, the number of returned stories is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatArchivedStories(\n        chatId: Int64?,\n        fromStoryId: Int?,\n        limit: Int?\n    ) async throws -> Stories {\n        let query = GetChatArchivedStories(\n            chatId: chatId,\n            fromStoryId: fromStoryId,\n            limit: limit\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the list of pinned stories on a chat page; requires can_edit_stories administrator right in the chat\n    /// - Parameter chatId: Identifier of the chat that posted the stories\n    /// - Parameter storyIds: New list of pinned stories. All stories must be posted to the chat page first. There can be up to getOption(\"pinned_story_count_max\") pinned stories on a chat page\n    public final func setChatPinnedStories(\n        chatId: Int64?,\n        storyIds: [Int]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatPinnedStories(\n            chatId: chatId,\n            storyIds: storyIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the list of pinned stories on a chat page; requires can_edit_stories administrator right in the chat\n    /// - Parameter chatId: Identifier of the chat that posted the stories\n    /// - Parameter storyIds: New list of pinned stories. All stories must be posted to the chat page first. There can be up to getOption(\"pinned_story_count_max\") pinned stories on a chat page\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatPinnedStories(\n        chatId: Int64?,\n        storyIds: [Int]?\n    ) async throws -> Ok {\n        let query = SetChatPinnedStories(\n            chatId: chatId,\n            storyIds: storyIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that a story is opened and is being viewed by the user\n    /// - Parameter storyId: The identifier of the story\n    /// - Parameter storyPosterChatId: The identifier of the chat that posted the opened story\n    public final func openStory(\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = OpenStory(\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that a story is opened and is being viewed by the user\n    /// - Parameter storyId: The identifier of the story\n    /// - Parameter storyPosterChatId: The identifier of the chat that posted the opened story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func openStory(\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) async throws -> Ok {\n        let query = OpenStory(\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that a story is closed by the user\n    /// - Parameter storyId: The identifier of the story\n    /// - Parameter storyPosterChatId: The identifier of the poster of the story to close\n    public final func closeStory(\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CloseStory(\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that a story is closed by the user\n    /// - Parameter storyId: The identifier of the story\n    /// - Parameter storyPosterChatId: The identifier of the poster of the story to close\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func closeStory(\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) async throws -> Ok {\n        let query = CloseStory(\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns reactions, which can be chosen for a story\n    /// - Parameter rowSize: Number of reaction per row, 5-25\n    /// - Returns: Reactions, which can be chosen for a story\n    public final func getStoryAvailableReactions(\n        rowSize: Int?,\n        completion: @escaping (Result<AvailableReactions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStoryAvailableReactions(\n            rowSize: rowSize\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns reactions, which can be chosen for a story\n    /// - Parameter rowSize: Number of reaction per row, 5-25\n    /// - Returns: Reactions, which can be chosen for a story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStoryAvailableReactions(rowSize: Int?) async throws -> AvailableReactions {\n        let query = GetStoryAvailableReactions(\n            rowSize: rowSize\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes chosen reaction on a story that has already been sent; not supported for live stories\n    /// - Parameter reactionType: Type of the reaction to set; pass null to remove the reaction. Custom emoji reactions can be used only by Telegram Premium users. Paid reactions can't be set\n    /// - Parameter storyId: The identifier of the story\n    /// - Parameter storyPosterChatId: The identifier of the poster of the story\n    /// - Parameter updateRecentReactions: Pass true if the reaction needs to be added to recent reactions\n    public final func setStoryReaction(\n        reactionType: ReactionType?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        updateRecentReactions: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetStoryReaction(\n            reactionType: reactionType,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId,\n            updateRecentReactions: updateRecentReactions\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes chosen reaction on a story that has already been sent; not supported for live stories\n    /// - Parameter reactionType: Type of the reaction to set; pass null to remove the reaction. Custom emoji reactions can be used only by Telegram Premium users. Paid reactions can't be set\n    /// - Parameter storyId: The identifier of the story\n    /// - Parameter storyPosterChatId: The identifier of the poster of the story\n    /// - Parameter updateRecentReactions: Pass true if the reaction needs to be added to recent reactions\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setStoryReaction(\n        reactionType: ReactionType?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        updateRecentReactions: Bool?\n    ) async throws -> Ok {\n        let query = SetStoryReaction(\n            reactionType: reactionType,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId,\n            updateRecentReactions: updateRecentReactions\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns interactions with a story. The method can be called only for stories posted on behalf of the current user\n    /// - Parameter limit: The maximum number of story interactions to return\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter onlyContacts: Pass true to get only interactions by contacts; pass false to get all relevant interactions\n    /// - Parameter preferForwards: Pass true to get forwards and reposts first, then reactions, then other views; pass false to get interactions sorted just by interaction date\n    /// - Parameter preferWithReaction: Pass true to get interactions with reaction first; pass false to get interactions sorted just by interaction date. Ignored if prefer_forwards == true\n    /// - Parameter query: Query to search for in names, usernames and titles; may be empty to get all relevant interactions\n    /// - Parameter storyId: Story identifier\n    /// - Returns: Interactions with a story\n    public final func getStoryInteractions(\n        limit: Int?,\n        offset: String?,\n        onlyContacts: Bool?,\n        preferForwards: Bool?,\n        preferWithReaction: Bool?,\n        query: String?,\n        storyId: Int?,\n        completion: @escaping (Result<StoryInteractions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStoryInteractions(\n            limit: limit,\n            offset: offset,\n            onlyContacts: onlyContacts,\n            preferForwards: preferForwards,\n            preferWithReaction: preferWithReaction,\n            query: query,\n            storyId: storyId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns interactions with a story. The method can be called only for stories posted on behalf of the current user\n    /// - Parameter limit: The maximum number of story interactions to return\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter onlyContacts: Pass true to get only interactions by contacts; pass false to get all relevant interactions\n    /// - Parameter preferForwards: Pass true to get forwards and reposts first, then reactions, then other views; pass false to get interactions sorted just by interaction date\n    /// - Parameter preferWithReaction: Pass true to get interactions with reaction first; pass false to get interactions sorted just by interaction date. Ignored if prefer_forwards == true\n    /// - Parameter query: Query to search for in names, usernames and titles; may be empty to get all relevant interactions\n    /// - Parameter storyId: Story identifier\n    /// - Returns: Interactions with a story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStoryInteractions(\n        limit: Int?,\n        offset: String?,\n        onlyContacts: Bool?,\n        preferForwards: Bool?,\n        preferWithReaction: Bool?,\n        query: String?,\n        storyId: Int?\n    ) async throws -> StoryInteractions {\n        let query = GetStoryInteractions(\n            limit: limit,\n            offset: offset,\n            onlyContacts: onlyContacts,\n            preferForwards: preferForwards,\n            preferWithReaction: preferWithReaction,\n            query: query,\n            storyId: storyId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns interactions with a story posted in a chat. Can be used only if story is posted on behalf of a chat and the user is an administrator in the chat\n    /// - Parameter limit: The maximum number of story interactions to return\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter preferForwards: Pass true to get forwards and reposts first, then reactions, then other views; pass false to get interactions sorted just by interaction date\n    /// - Parameter reactionType: Pass the default heart reaction or a suggested reaction type to receive only interactions with the specified reaction type; pass null to receive all interactions; reactionTypePaid isn't supported\n    /// - Parameter storyId: Story identifier\n    /// - Parameter storyPosterChatId: The identifier of the poster of the story\n    /// - Returns: Interactions with a story posted in a chat\n    public final func getChatStoryInteractions(\n        limit: Int?,\n        offset: String?,\n        preferForwards: Bool?,\n        reactionType: ReactionType?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<StoryInteractions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatStoryInteractions(\n            limit: limit,\n            offset: offset,\n            preferForwards: preferForwards,\n            reactionType: reactionType,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns interactions with a story posted in a chat. Can be used only if story is posted on behalf of a chat and the user is an administrator in the chat\n    /// - Parameter limit: The maximum number of story interactions to return\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter preferForwards: Pass true to get forwards and reposts first, then reactions, then other views; pass false to get interactions sorted just by interaction date\n    /// - Parameter reactionType: Pass the default heart reaction or a suggested reaction type to receive only interactions with the specified reaction type; pass null to receive all interactions; reactionTypePaid isn't supported\n    /// - Parameter storyId: Story identifier\n    /// - Parameter storyPosterChatId: The identifier of the poster of the story\n    /// - Returns: Interactions with a story posted in a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatStoryInteractions(\n        limit: Int?,\n        offset: String?,\n        preferForwards: Bool?,\n        reactionType: ReactionType?,\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) async throws -> StoryInteractions {\n        let query = GetChatStoryInteractions(\n            limit: limit,\n            offset: offset,\n            preferForwards: preferForwards,\n            reactionType: reactionType,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Reports a story to the Telegram moderators\n    /// - Parameter optionId: Option identifier chosen by the user; leave empty for the initial request\n    /// - Parameter storyId: The identifier of the story to report\n    /// - Parameter storyPosterChatId: The identifier of the poster of the story to report\n    /// - Parameter text: Additional report details; 0-1024 characters; leave empty for the initial request\n    public final func reportStory(\n        optionId: Data?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        text: String?,\n        completion: @escaping (Result<ReportStoryResult, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportStory(\n            optionId: optionId,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId,\n            text: text\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Reports a story to the Telegram moderators\n    /// - Parameter optionId: Option identifier chosen by the user; leave empty for the initial request\n    /// - Parameter storyId: The identifier of the story to report\n    /// - Parameter storyPosterChatId: The identifier of the poster of the story to report\n    /// - Parameter text: Additional report details; 0-1024 characters; leave empty for the initial request\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func reportStory(\n        optionId: Data?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        text: String?\n    ) async throws -> ReportStoryResult {\n        let query = ReportStory(\n            optionId: optionId,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId,\n            text: text\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Activates stealth mode for stories, which hides all views of stories from the current user in the last \"story_stealth_mode_past_period\" seconds and for the next \"story_stealth_mode_future_period\" seconds; for Telegram Premium users only\n    public final func activateStoryStealthMode(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ActivateStoryStealthMode()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Activates stealth mode for stories, which hides all views of stories from the current user in the last \"story_stealth_mode_past_period\" seconds and for the next \"story_stealth_mode_future_period\" seconds; for Telegram Premium users only\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func activateStoryStealthMode() async throws -> Ok {\n        let query = ActivateStoryStealthMode()\n        return try await self.run(query: query)\n    }\n\n    /// Returns forwards of a story as a message to public chats and reposts by public channels. Can be used only if the story is posted on behalf of the current user or story.can_get_statistics == true. For optimal performance, the number of returned messages and stories is chosen by TDLib\n    /// - Parameter limit: The maximum number of messages and stories to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter storyId: The identifier of the story\n    /// - Parameter storyPosterChatId: The identifier of the poster of the story\n    /// - Returns: Forwards of a story as a message to public chats and reposts by public channels. For optimal performance, the number of returned messages and stories is chosen by TDLib\n    public final func getStoryPublicForwards(\n        limit: Int?,\n        offset: String?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<PublicForwards, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStoryPublicForwards(\n            limit: limit,\n            offset: offset,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns forwards of a story as a message to public chats and reposts by public channels. Can be used only if the story is posted on behalf of the current user or story.can_get_statistics == true. For optimal performance, the number of returned messages and stories is chosen by TDLib\n    /// - Parameter limit: The maximum number of messages and stories to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter storyId: The identifier of the story\n    /// - Parameter storyPosterChatId: The identifier of the poster of the story\n    /// - Returns: Forwards of a story as a message to public chats and reposts by public channels. For optimal performance, the number of returned messages and stories is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStoryPublicForwards(\n        limit: Int?,\n        offset: String?,\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) async throws -> PublicForwards {\n        let query = GetStoryPublicForwards(\n            limit: limit,\n            offset: offset,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of story albums owned by the given chat\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of story albums owned by the given chat\n    public final func getChatStoryAlbums(\n        chatId: Int64?,\n        completion: @escaping (Result<StoryAlbums, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatStoryAlbums(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of story albums owned by the given chat\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of story albums owned by the given chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatStoryAlbums(chatId: Int64?) async throws -> StoryAlbums {\n        let query = GetChatStoryAlbums(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of stories added to the given story album. For optimal performance, the number of returned stories is chosen by TDLib\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter limit: The maximum number of stories to be returned. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return; use 0 to get results from the first album story\n    /// - Parameter storyAlbumId: Story album identifier\n    /// - Returns: The list of stories added to the given story album. For optimal performance, the number of returned stories is chosen by TDLib\n    public final func getStoryAlbumStories(\n        chatId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        storyAlbumId: Int?,\n        completion: @escaping (Result<Stories, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStoryAlbumStories(\n            chatId: chatId,\n            limit: limit,\n            offset: offset,\n            storyAlbumId: storyAlbumId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of stories added to the given story album. For optimal performance, the number of returned stories is chosen by TDLib\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter limit: The maximum number of stories to be returned. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return; use 0 to get results from the first album story\n    /// - Parameter storyAlbumId: Story album identifier\n    /// - Returns: The list of stories added to the given story album. For optimal performance, the number of returned stories is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStoryAlbumStories(\n        chatId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        storyAlbumId: Int?\n    ) async throws -> Stories {\n        let query = GetStoryAlbumStories(\n            chatId: chatId,\n            limit: limit,\n            offset: offset,\n            storyAlbumId: storyAlbumId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Creates an album of stories; requires can_edit_stories administrator right for supergroup and channel chats\n    /// - Parameter name: Name of the album; 1-12 characters\n    /// - Parameter storyIds: Identifiers of stories to add to the album; 0-getOption(\"story_album_size_max\") identifiers\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the stories\n    public final func createStoryAlbum(\n        name: String?,\n        storyIds: [Int]?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<StoryAlbum, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateStoryAlbum(\n            name: name,\n            storyIds: storyIds,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Creates an album of stories; requires can_edit_stories administrator right for supergroup and channel chats\n    /// - Parameter name: Name of the album; 1-12 characters\n    /// - Parameter storyIds: Identifiers of stories to add to the album; 0-getOption(\"story_album_size_max\") identifiers\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the stories\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createStoryAlbum(\n        name: String?,\n        storyIds: [Int]?,\n        storyPosterChatId: Int64?\n    ) async throws -> StoryAlbum {\n        let query = CreateStoryAlbum(\n            name: name,\n            storyIds: storyIds,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes order of story albums. If the albums are owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter storyAlbumIds: New order of story albums\n    public final func reorderStoryAlbums(\n        chatId: Int64?,\n        storyAlbumIds: [Int]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderStoryAlbums(\n            chatId: chatId,\n            storyAlbumIds: storyAlbumIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes order of story albums. If the albums are owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter storyAlbumIds: New order of story albums\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func reorderStoryAlbums(\n        chatId: Int64?,\n        storyAlbumIds: [Int]?\n    ) async throws -> Ok {\n        let query = ReorderStoryAlbums(\n            chatId: chatId,\n            storyAlbumIds: storyAlbumIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes a story album. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter storyAlbumId: Identifier of the story album\n    public final func deleteStoryAlbum(\n        chatId: Int64?,\n        storyAlbumId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteStoryAlbum(\n            chatId: chatId,\n            storyAlbumId: storyAlbumId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes a story album. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter storyAlbumId: Identifier of the story album\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteStoryAlbum(\n        chatId: Int64?,\n        storyAlbumId: Int?\n    ) async throws -> Ok {\n        let query = DeleteStoryAlbum(\n            chatId: chatId,\n            storyAlbumId: storyAlbumId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes name of an album of stories. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat. Returns the changed album\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter name: New name of the album; 1-12 characters\n    /// - Parameter storyAlbumId: Identifier of the story album\n    /// - Returns: The changed album\n    public final func setStoryAlbumName(\n        chatId: Int64?,\n        name: String?,\n        storyAlbumId: Int?,\n        completion: @escaping (Result<StoryAlbum, Swift.Error>) -> Void\n    ) throws {\n        let query = SetStoryAlbumName(\n            chatId: chatId,\n            name: name,\n            storyAlbumId: storyAlbumId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes name of an album of stories. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat. Returns the changed album\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter name: New name of the album; 1-12 characters\n    /// - Parameter storyAlbumId: Identifier of the story album\n    /// - Returns: The changed album\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func setStoryAlbumName(\n        chatId: Int64?,\n        name: String?,\n        storyAlbumId: Int?\n    ) async throws -> StoryAlbum {\n        let query = SetStoryAlbumName(\n            chatId: chatId,\n            name: name,\n            storyAlbumId: storyAlbumId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds stories to the beginning of a previously created story album. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat. Returns the changed album\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter storyAlbumId: Identifier of the story album\n    /// - Parameter storyIds: Identifier of the stories to add to the album; 1-getOption(\"story_album_size_max\") identifiers. If after addition the album has more than getOption(\"story_album_size_max\") stories, then the last one are removed from the album\n    /// - Returns: The changed album\n    public final func addStoryAlbumStories(\n        chatId: Int64?,\n        storyAlbumId: Int?,\n        storyIds: [Int]?,\n        completion: @escaping (Result<StoryAlbum, Swift.Error>) -> Void\n    ) throws {\n        let query = AddStoryAlbumStories(\n            chatId: chatId,\n            storyAlbumId: storyAlbumId,\n            storyIds: storyIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds stories to the beginning of a previously created story album. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat. Returns the changed album\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter storyAlbumId: Identifier of the story album\n    /// - Parameter storyIds: Identifier of the stories to add to the album; 1-getOption(\"story_album_size_max\") identifiers. If after addition the album has more than getOption(\"story_album_size_max\") stories, then the last one are removed from the album\n    /// - Returns: The changed album\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func addStoryAlbumStories(\n        chatId: Int64?,\n        storyAlbumId: Int?,\n        storyIds: [Int]?\n    ) async throws -> StoryAlbum {\n        let query = AddStoryAlbumStories(\n            chatId: chatId,\n            storyAlbumId: storyAlbumId,\n            storyIds: storyIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes stories from an album. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat. Returns the changed album\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter storyAlbumId: Identifier of the story album\n    /// - Parameter storyIds: Identifier of the stories to remove from the album\n    /// - Returns: The changed album\n    public final func removeStoryAlbumStories(\n        chatId: Int64?,\n        storyAlbumId: Int?,\n        storyIds: [Int]?,\n        completion: @escaping (Result<StoryAlbum, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveStoryAlbumStories(\n            chatId: chatId,\n            storyAlbumId: storyAlbumId,\n            storyIds: storyIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes stories from an album. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat. Returns the changed album\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter storyAlbumId: Identifier of the story album\n    /// - Parameter storyIds: Identifier of the stories to remove from the album\n    /// - Returns: The changed album\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func removeStoryAlbumStories(\n        chatId: Int64?,\n        storyAlbumId: Int?,\n        storyIds: [Int]?\n    ) async throws -> StoryAlbum {\n        let query = RemoveStoryAlbumStories(\n            chatId: chatId,\n            storyAlbumId: storyAlbumId,\n            storyIds: storyIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes order of stories in an album. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat. Returns the changed album\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter storyAlbumId: Identifier of the story album\n    /// - Parameter storyIds: Identifier of the stories to move to the beginning of the album. All other stories are placed in the current order after the specified stories\n    /// - Returns: The changed album\n    public final func reorderStoryAlbumStories(\n        chatId: Int64?,\n        storyAlbumId: Int?,\n        storyIds: [Int]?,\n        completion: @escaping (Result<StoryAlbum, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderStoryAlbumStories(\n            chatId: chatId,\n            storyAlbumId: storyAlbumId,\n            storyIds: storyIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes order of stories in an album. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat. Returns the changed album\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter storyAlbumId: Identifier of the story album\n    /// - Parameter storyIds: Identifier of the stories to move to the beginning of the album. All other stories are placed in the current order after the specified stories\n    /// - Returns: The changed album\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func reorderStoryAlbumStories(\n        chatId: Int64?,\n        storyAlbumId: Int?,\n        storyIds: [Int]?\n    ) async throws -> StoryAlbum {\n        let query = ReorderStoryAlbumStories(\n            chatId: chatId,\n            storyAlbumId: storyAlbumId,\n            storyIds: storyIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of features available on the specific chat boost level. This is an offline method\n    /// - Parameter isChannel: Pass true to get the list of features for channels; pass false to get the list of features for supergroups\n    /// - Parameter level: Chat boost level\n    /// - Returns: The list of features available on the specific chat boost level\n    public final func getChatBoostLevelFeatures(\n        isChannel: Bool?,\n        level: Int?,\n        completion: @escaping (Result<ChatBoostLevelFeatures, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatBoostLevelFeatures(\n            isChannel: isChannel,\n            level: level\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of features available on the specific chat boost level. This is an offline method\n    /// - Parameter isChannel: Pass true to get the list of features for channels; pass false to get the list of features for supergroups\n    /// - Parameter level: Chat boost level\n    /// - Returns: The list of features available on the specific chat boost level\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatBoostLevelFeatures(\n        isChannel: Bool?,\n        level: Int?\n    ) async throws -> ChatBoostLevelFeatures {\n        let query = GetChatBoostLevelFeatures(\n            isChannel: isChannel,\n            level: level\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of features available for different chat boost levels. This is an offline method\n    /// - Parameter isChannel: Pass true to get the list of features for channels; pass false to get the list of features for supergroups\n    /// - Returns: The list of features available for different chat boost levels\n    public final func getChatBoostFeatures(\n        isChannel: Bool?,\n        completion: @escaping (Result<ChatBoostFeatures, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatBoostFeatures(\n            isChannel: isChannel\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of features available for different chat boost levels. This is an offline method\n    /// - Parameter isChannel: Pass true to get the list of features for channels; pass false to get the list of features for supergroups\n    /// - Returns: The list of features available for different chat boost levels\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatBoostFeatures(isChannel: Bool?) async throws -> ChatBoostFeatures {\n        let query = GetChatBoostFeatures(\n            isChannel: isChannel\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of available chat boost slots for the current user\n    /// - Returns: The list of available chat boost slots for the current user\n    public final func getAvailableChatBoostSlots(completion: @escaping (Result<ChatBoostSlots, Swift.Error>) -> Void) throws {\n        let query = GetAvailableChatBoostSlots()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of available chat boost slots for the current user\n    /// - Returns: The list of available chat boost slots for the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getAvailableChatBoostSlots() async throws -> ChatBoostSlots {\n        let query = GetAvailableChatBoostSlots()\n        return try await self.run(query: query)\n    }\n\n    /// Returns the current boost status for a supergroup or a channel chat\n    /// - Parameter chatId: Identifier of the chat\n    /// - Returns: The current boost status for a supergroup or a channel chat\n    public final func getChatBoostStatus(\n        chatId: Int64?,\n        completion: @escaping (Result<ChatBoostStatus, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatBoostStatus(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the current boost status for a supergroup or a channel chat\n    /// - Parameter chatId: Identifier of the chat\n    /// - Returns: The current boost status for a supergroup or a channel chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatBoostStatus(chatId: Int64?) async throws -> ChatBoostStatus {\n        let query = GetChatBoostStatus(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Boosts a chat and returns the list of available chat boost slots for the current user after the boost\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter slotIds: Identifiers of boost slots of the current user from which to apply boosts to the chat\n    /// - Returns: Boosts a chat and returns the list of available chat boost slots for the current user after the boost\n    public final func boostChat(\n        chatId: Int64?,\n        slotIds: [Int]?,\n        completion: @escaping (Result<ChatBoostSlots, Swift.Error>) -> Void\n    ) throws {\n        let query = BoostChat(\n            chatId: chatId,\n            slotIds: slotIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Boosts a chat and returns the list of available chat boost slots for the current user after the boost\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter slotIds: Identifiers of boost slots of the current user from which to apply boosts to the chat\n    /// - Returns: Boosts a chat and returns the list of available chat boost slots for the current user after the boost\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func boostChat(\n        chatId: Int64?,\n        slotIds: [Int]?\n    ) async throws -> ChatBoostSlots {\n        let query = BoostChat(\n            chatId: chatId,\n            slotIds: slotIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an HTTPS link to boost the specified supergroup or channel chat\n    /// - Parameter chatId: Identifier of the chat\n    /// - Returns: An HTTPS link to boost the specified supergroup or channel chat\n    public final func getChatBoostLink(\n        chatId: Int64?,\n        completion: @escaping (Result<ChatBoostLink, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatBoostLink(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an HTTPS link to boost the specified supergroup or channel chat\n    /// - Parameter chatId: Identifier of the chat\n    /// - Returns: An HTTPS link to boost the specified supergroup or channel chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatBoostLink(chatId: Int64?) async throws -> ChatBoostLink {\n        let query = GetChatBoostLink(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a link to boost a chat. Can be called for any internal link of the type internalLinkTypeChatBoost\n    /// - Parameter url: The link to boost a chat\n    /// - Returns: Information about a link to boost a chat\n    public final func getChatBoostLinkInfo(\n        url: String?,\n        completion: @escaping (Result<ChatBoostLinkInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatBoostLinkInfo(\n            url: url\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a link to boost a chat. Can be called for any internal link of the type internalLinkTypeChatBoost\n    /// - Parameter url: The link to boost a chat\n    /// - Returns: Information about a link to boost a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatBoostLinkInfo(url: String?) async throws -> ChatBoostLinkInfo {\n        let query = GetChatBoostLinkInfo(\n            url: url\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of boosts applied to a chat; requires administrator rights in the chat\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter limit: The maximum number of boosts to be returned; up to 100. For optimal performance, the number of returned boosts can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter onlyGiftCodes: Pass true to receive only boosts received from gift codes and giveaways created by the chat\n    /// - Returns: The list of boosts applied to a chat\n    public final func getChatBoosts(\n        chatId: Int64?,\n        limit: Int?,\n        offset: String?,\n        onlyGiftCodes: Bool?,\n        completion: @escaping (Result<FoundChatBoosts, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatBoosts(\n            chatId: chatId,\n            limit: limit,\n            offset: offset,\n            onlyGiftCodes: onlyGiftCodes\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of boosts applied to a chat; requires administrator rights in the chat\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter limit: The maximum number of boosts to be returned; up to 100. For optimal performance, the number of returned boosts can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter onlyGiftCodes: Pass true to receive only boosts received from gift codes and giveaways created by the chat\n    /// - Returns: The list of boosts applied to a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatBoosts(\n        chatId: Int64?,\n        limit: Int?,\n        offset: String?,\n        onlyGiftCodes: Bool?\n    ) async throws -> FoundChatBoosts {\n        let query = GetChatBoosts(\n            chatId: chatId,\n            limit: limit,\n            offset: offset,\n            onlyGiftCodes: onlyGiftCodes\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of boosts applied to a chat by a given user; requires administrator rights in the chat; for bots only\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter userId: Identifier of the user\n    /// - Returns: The list of boosts applied to a chat by a given user\n    public final func getUserChatBoosts(\n        chatId: Int64?,\n        userId: Int64?,\n        completion: @escaping (Result<FoundChatBoosts, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUserChatBoosts(\n            chatId: chatId,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of boosts applied to a chat by a given user; requires administrator rights in the chat; for bots only\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter userId: Identifier of the user\n    /// - Returns: The list of boosts applied to a chat by a given user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getUserChatBoosts(\n        chatId: Int64?,\n        userId: Int64?\n    ) async throws -> FoundChatBoosts {\n        let query = GetUserChatBoosts(\n            chatId: chatId,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a bot that can be added to attachment or side menu\n    /// - Parameter botUserId: Bot's user identifier\n    /// - Returns: Information about a bot that can be added to attachment or side menu\n    public final func getAttachmentMenuBot(\n        botUserId: Int64?,\n        completion: @escaping (Result<AttachmentMenuBot, Swift.Error>) -> Void\n    ) throws {\n        let query = GetAttachmentMenuBot(\n            botUserId: botUserId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a bot that can be added to attachment or side menu\n    /// - Parameter botUserId: Bot's user identifier\n    /// - Returns: Information about a bot that can be added to attachment or side menu\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getAttachmentMenuBot(botUserId: Int64?) async throws -> AttachmentMenuBot {\n        let query = GetAttachmentMenuBot(\n            botUserId: botUserId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds or removes a bot to attachment and side menu. Bot can be added to the menu, only if userTypeBot.can_be_added_to_attachment_menu == true\n    /// - Parameter allowWriteAccess: Pass true if the current user allowed the bot to send them messages. Ignored if is_added is false\n    /// - Parameter botUserId: Bot's user identifier\n    /// - Parameter isAdded: Pass true to add the bot to attachment menu; pass false to remove the bot from attachment menu\n    public final func toggleBotIsAddedToAttachmentMenu(\n        allowWriteAccess: Bool?,\n        botUserId: Int64?,\n        isAdded: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleBotIsAddedToAttachmentMenu(\n            allowWriteAccess: allowWriteAccess,\n            botUserId: botUserId,\n            isAdded: isAdded\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds or removes a bot to attachment and side menu. Bot can be added to the menu, only if userTypeBot.can_be_added_to_attachment_menu == true\n    /// - Parameter allowWriteAccess: Pass true if the current user allowed the bot to send them messages. Ignored if is_added is false\n    /// - Parameter botUserId: Bot's user identifier\n    /// - Parameter isAdded: Pass true to add the bot to attachment menu; pass false to remove the bot from attachment menu\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleBotIsAddedToAttachmentMenu(\n        allowWriteAccess: Bool?,\n        botUserId: Int64?,\n        isAdded: Bool?\n    ) async throws -> Ok {\n        let query = ToggleBotIsAddedToAttachmentMenu(\n            allowWriteAccess: allowWriteAccess,\n            botUserId: botUserId,\n            isAdded: isAdded\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns up to 8 emoji statuses, which must be shown right after the default Premium Badge in the emoji status list for self status\n    /// - Returns: Up to 8 emoji statuses, which must be shown right after the default Premium Badge in the emoji status list for self status\n    public final func getThemedEmojiStatuses(completion: @escaping (Result<EmojiStatusCustomEmojis, Swift.Error>) -> Void) throws {\n        let query = GetThemedEmojiStatuses()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns up to 8 emoji statuses, which must be shown right after the default Premium Badge in the emoji status list for self status\n    /// - Returns: Up to 8 emoji statuses, which must be shown right after the default Premium Badge in the emoji status list for self status\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getThemedEmojiStatuses() async throws -> EmojiStatusCustomEmojis {\n        let query = GetThemedEmojiStatuses()\n        return try await self.run(query: query)\n    }\n\n    /// Returns recent emoji statuses for self status\n    /// - Returns: Recent emoji statuses for self status\n    public final func getRecentEmojiStatuses(completion: @escaping (Result<EmojiStatuses, Swift.Error>) -> Void) throws {\n        let query = GetRecentEmojiStatuses()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns recent emoji statuses for self status\n    /// - Returns: Recent emoji statuses for self status\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getRecentEmojiStatuses() async throws -> EmojiStatuses {\n        let query = GetRecentEmojiStatuses()\n        return try await self.run(query: query)\n    }\n\n    /// Returns available upgraded gift emoji statuses for self status\n    /// - Returns: Available upgraded gift emoji statuses for self status\n    public final func getUpgradedGiftEmojiStatuses(completion: @escaping (Result<EmojiStatuses, Swift.Error>) -> Void) throws {\n        let query = GetUpgradedGiftEmojiStatuses()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns available upgraded gift emoji statuses for self status\n    /// - Returns: Available upgraded gift emoji statuses for self status\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getUpgradedGiftEmojiStatuses() async throws -> EmojiStatuses {\n        let query = GetUpgradedGiftEmojiStatuses()\n        return try await self.run(query: query)\n    }\n\n    /// Returns default emoji statuses for self status\n    /// - Returns: Default emoji statuses for self status\n    public final func getDefaultEmojiStatuses(completion: @escaping (Result<EmojiStatusCustomEmojis, Swift.Error>) -> Void) throws {\n        let query = GetDefaultEmojiStatuses()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns default emoji statuses for self status\n    /// - Returns: Default emoji statuses for self status\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getDefaultEmojiStatuses() async throws -> EmojiStatusCustomEmojis {\n        let query = GetDefaultEmojiStatuses()\n        return try await self.run(query: query)\n    }\n\n    /// Clears the list of recently used emoji statuses for self status\n    public final func clearRecentEmojiStatuses(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ClearRecentEmojiStatuses()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Clears the list of recently used emoji statuses for self status\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func clearRecentEmojiStatuses() async throws -> Ok {\n        let query = ClearRecentEmojiStatuses()\n        return try await self.run(query: query)\n    }\n\n    /// Returns up to 8 emoji statuses, which must be shown in the emoji status list for chats\n    /// - Returns: Up to 8 emoji statuses, which must be shown in the emoji status list for chats\n    public final func getThemedChatEmojiStatuses(completion: @escaping (Result<EmojiStatusCustomEmojis, Swift.Error>) -> Void) throws {\n        let query = GetThemedChatEmojiStatuses()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns up to 8 emoji statuses, which must be shown in the emoji status list for chats\n    /// - Returns: Up to 8 emoji statuses, which must be shown in the emoji status list for chats\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getThemedChatEmojiStatuses() async throws -> EmojiStatusCustomEmojis {\n        let query = GetThemedChatEmojiStatuses()\n        return try await self.run(query: query)\n    }\n\n    /// Returns default emoji statuses for chats\n    /// - Returns: Default emoji statuses for chats\n    public final func getDefaultChatEmojiStatuses(completion: @escaping (Result<EmojiStatusCustomEmojis, Swift.Error>) -> Void) throws {\n        let query = GetDefaultChatEmojiStatuses()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns default emoji statuses for chats\n    /// - Returns: Default emoji statuses for chats\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getDefaultChatEmojiStatuses() async throws -> EmojiStatusCustomEmojis {\n        let query = GetDefaultChatEmojiStatuses()\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of emoji statuses, which can't be used as chat emoji status, even if they are from a sticker set with is_allowed_as_chat_emoji_status == true\n    /// - Returns: The list of emoji statuses, which can't be used as chat emoji status, even if they are from a sticker set with is_allowed_as_chat_emoji_status == true\n    public final func getDisallowedChatEmojiStatuses(completion: @escaping (Result<EmojiStatusCustomEmojis, Swift.Error>) -> Void) throws {\n        let query = GetDisallowedChatEmojiStatuses()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of emoji statuses, which can't be used as chat emoji status, even if they are from a sticker set with is_allowed_as_chat_emoji_status == true\n    /// - Returns: The list of emoji statuses, which can't be used as chat emoji status, even if they are from a sticker set with is_allowed_as_chat_emoji_status == true\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getDisallowedChatEmojiStatuses() async throws -> EmojiStatusCustomEmojis {\n        let query = GetDisallowedChatEmojiStatuses()\n        return try await self.run(query: query)\n    }\n\n    /// Downloads a file from the cloud. Download progress and completion of the download will be notified through updateFile updates\n    /// - Parameter fileId: Identifier of the file to download\n    /// - Parameter limit: Number of bytes which need to be downloaded starting from the \"offset\" position before the download will automatically be canceled; use 0 to download without a limit\n    /// - Parameter offset: The starting position from which the file needs to be downloaded\n    /// - Parameter priority: Priority of the download (1-32). The higher the priority, the earlier the file will be downloaded. If the priorities of two files are equal, then the last one for which downloadFile/addFileToDownloads was called will be downloaded first\n    /// - Parameter synchronous: Pass true to return response only after the file download has succeeded, has failed, has been canceled, or a new downloadFile request with different offset/limit parameters was sent; pass false to return file state immediately, just after the download has been started\n    public final func downloadFile(\n        fileId: Int?,\n        limit: Int64?,\n        offset: Int64?,\n        priority: Int?,\n        synchronous: Bool?,\n        completion: @escaping (Result<File, Swift.Error>) -> Void\n    ) throws {\n        let query = DownloadFile(\n            fileId: fileId,\n            limit: limit,\n            offset: offset,\n            priority: priority,\n            synchronous: synchronous\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Downloads a file from the cloud. Download progress and completion of the download will be notified through updateFile updates\n    /// - Parameter fileId: Identifier of the file to download\n    /// - Parameter limit: Number of bytes which need to be downloaded starting from the \"offset\" position before the download will automatically be canceled; use 0 to download without a limit\n    /// - Parameter offset: The starting position from which the file needs to be downloaded\n    /// - Parameter priority: Priority of the download (1-32). The higher the priority, the earlier the file will be downloaded. If the priorities of two files are equal, then the last one for which downloadFile/addFileToDownloads was called will be downloaded first\n    /// - Parameter synchronous: Pass true to return response only after the file download has succeeded, has failed, has been canceled, or a new downloadFile request with different offset/limit parameters was sent; pass false to return file state immediately, just after the download has been started\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func downloadFile(\n        fileId: Int?,\n        limit: Int64?,\n        offset: Int64?,\n        priority: Int?,\n        synchronous: Bool?\n    ) async throws -> File {\n        let query = DownloadFile(\n            fileId: fileId,\n            limit: limit,\n            offset: offset,\n            priority: priority,\n            synchronous: synchronous\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns file downloaded prefix size from a given offset, in bytes\n    /// - Parameter fileId: Identifier of the file\n    /// - Parameter offset: Offset from which downloaded prefix size needs to be calculated\n    /// - Returns: File downloaded prefix size from a given offset, in bytes\n    public final func getFileDownloadedPrefixSize(\n        fileId: Int?,\n        offset: Int64?,\n        completion: @escaping (Result<FileDownloadedPrefixSize, Swift.Error>) -> Void\n    ) throws {\n        let query = GetFileDownloadedPrefixSize(\n            fileId: fileId,\n            offset: offset\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns file downloaded prefix size from a given offset, in bytes\n    /// - Parameter fileId: Identifier of the file\n    /// - Parameter offset: Offset from which downloaded prefix size needs to be calculated\n    /// - Returns: File downloaded prefix size from a given offset, in bytes\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getFileDownloadedPrefixSize(\n        fileId: Int?,\n        offset: Int64?\n    ) async throws -> FileDownloadedPrefixSize {\n        let query = GetFileDownloadedPrefixSize(\n            fileId: fileId,\n            offset: offset\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Stops the downloading of a file. If a file has already been downloaded, does nothing\n    /// - Parameter fileId: Identifier of a file to stop downloading\n    /// - Parameter onlyIfPending: Pass true to stop downloading only if it hasn't been started, i.e. request hasn't been sent to server\n    public final func cancelDownloadFile(\n        fileId: Int?,\n        onlyIfPending: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CancelDownloadFile(\n            fileId: fileId,\n            onlyIfPending: onlyIfPending\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Stops the downloading of a file. If a file has already been downloaded, does nothing\n    /// - Parameter fileId: Identifier of a file to stop downloading\n    /// - Parameter onlyIfPending: Pass true to stop downloading only if it hasn't been started, i.e. request hasn't been sent to server\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func cancelDownloadFile(\n        fileId: Int?,\n        onlyIfPending: Bool?\n    ) async throws -> Ok {\n        let query = CancelDownloadFile(\n            fileId: fileId,\n            onlyIfPending: onlyIfPending\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns suggested name for saving a file in a given directory\n    /// - Parameter directory: Directory in which the file is expected to be saved\n    /// - Parameter fileId: Identifier of the file\n    /// - Returns: Suggested name for saving a file in a given directory\n    public final func getSuggestedFileName(\n        directory: String?,\n        fileId: Int?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSuggestedFileName(\n            directory: directory,\n            fileId: fileId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns suggested name for saving a file in a given directory\n    /// - Parameter directory: Directory in which the file is expected to be saved\n    /// - Parameter fileId: Identifier of the file\n    /// - Returns: Suggested name for saving a file in a given directory\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getSuggestedFileName(\n        directory: String?,\n        fileId: Int?\n    ) async throws -> Text {\n        let query = GetSuggestedFileName(\n            directory: directory,\n            fileId: fileId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Preliminarily uploads a file to the cloud before sending it in a message, which can be useful for uploading of being recorded voice and video notes. In all other cases there is no need to preliminary upload a file. Updates updateFile will be used to notify about upload progress. The upload will not be completed until the file is sent in a message\n    /// - Parameter file: File to upload\n    /// - Parameter fileType: File type; pass null if unknown\n    /// - Parameter priority: Priority of the upload (1-32). The higher the priority, the earlier the file will be uploaded. If the priorities of two files are equal, then the first one for which preliminaryUploadFile was called will be uploaded first\n    public final func preliminaryUploadFile(\n        file: InputFile?,\n        fileType: FileType?,\n        priority: Int?,\n        completion: @escaping (Result<File, Swift.Error>) -> Void\n    ) throws {\n        let query = PreliminaryUploadFile(\n            file: file,\n            fileType: fileType,\n            priority: priority\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Preliminarily uploads a file to the cloud before sending it in a message, which can be useful for uploading of being recorded voice and video notes. In all other cases there is no need to preliminary upload a file. Updates updateFile will be used to notify about upload progress. The upload will not be completed until the file is sent in a message\n    /// - Parameter file: File to upload\n    /// - Parameter fileType: File type; pass null if unknown\n    /// - Parameter priority: Priority of the upload (1-32). The higher the priority, the earlier the file will be uploaded. If the priorities of two files are equal, then the first one for which preliminaryUploadFile was called will be uploaded first\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func preliminaryUploadFile(\n        file: InputFile?,\n        fileType: FileType?,\n        priority: Int?\n    ) async throws -> File {\n        let query = PreliminaryUploadFile(\n            file: file,\n            fileType: fileType,\n            priority: priority\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Stops the preliminary uploading of a file. Supported only for files uploaded by using preliminaryUploadFile\n    /// - Parameter fileId: Identifier of the file to stop uploading\n    public final func cancelPreliminaryUploadFile(\n        fileId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CancelPreliminaryUploadFile(\n            fileId: fileId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Stops the preliminary uploading of a file. Supported only for files uploaded by using preliminaryUploadFile\n    /// - Parameter fileId: Identifier of the file to stop uploading\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func cancelPreliminaryUploadFile(fileId: Int?) async throws -> Ok {\n        let query = CancelPreliminaryUploadFile(\n            fileId: fileId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Writes a part of a generated file. This method is intended to be used only if the application has no direct access to TDLib's file system, because it is usually slower than a direct write to the destination file\n    /// - Parameter data: The data to write\n    /// - Parameter generationId: The identifier of the generation process\n    /// - Parameter offset: The offset from which to write the data to the file\n    public final func writeGeneratedFilePart(\n        data: Data?,\n        generationId: TdInt64?,\n        offset: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = WriteGeneratedFilePart(\n            data: data,\n            generationId: generationId,\n            offset: offset\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Writes a part of a generated file. This method is intended to be used only if the application has no direct access to TDLib's file system, because it is usually slower than a direct write to the destination file\n    /// - Parameter data: The data to write\n    /// - Parameter generationId: The identifier of the generation process\n    /// - Parameter offset: The offset from which to write the data to the file\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func writeGeneratedFilePart(\n        data: Data?,\n        generationId: TdInt64?,\n        offset: Int64?\n    ) async throws -> Ok {\n        let query = WriteGeneratedFilePart(\n            data: data,\n            generationId: generationId,\n            offset: offset\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib on a file generation progress\n    /// - Parameter expectedSize: Expected size of the generated file, in bytes; 0 if unknown\n    /// - Parameter generationId: The identifier of the generation process\n    /// - Parameter localPrefixSize: The number of bytes already generated\n    public final func setFileGenerationProgress(\n        expectedSize: Int64?,\n        generationId: TdInt64?,\n        localPrefixSize: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetFileGenerationProgress(\n            expectedSize: expectedSize,\n            generationId: generationId,\n            localPrefixSize: localPrefixSize\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib on a file generation progress\n    /// - Parameter expectedSize: Expected size of the generated file, in bytes; 0 if unknown\n    /// - Parameter generationId: The identifier of the generation process\n    /// - Parameter localPrefixSize: The number of bytes already generated\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setFileGenerationProgress(\n        expectedSize: Int64?,\n        generationId: TdInt64?,\n        localPrefixSize: Int64?\n    ) async throws -> Ok {\n        let query = SetFileGenerationProgress(\n            expectedSize: expectedSize,\n            generationId: generationId,\n            localPrefixSize: localPrefixSize\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Finishes the file generation\n    /// - Parameter error: If passed, the file generation has failed and must be terminated; pass null if the file generation succeeded\n    /// - Parameter generationId: The identifier of the generation process\n    public final func finishFileGeneration(\n        error: Error?,\n        generationId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = FinishFileGeneration(\n            error: error,\n            generationId: generationId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Finishes the file generation\n    /// - Parameter error: If passed, the file generation has failed and must be terminated; pass null if the file generation succeeded\n    /// - Parameter generationId: The identifier of the generation process\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func finishFileGeneration(\n        error: Error?,\n        generationId: TdInt64?\n    ) async throws -> Ok {\n        let query = FinishFileGeneration(\n            error: error,\n            generationId: generationId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Reads a part of a file from the TDLib file cache and returns read bytes. This method is intended to be used only if the application has no direct access to TDLib's file system, because it is usually slower than a direct read from the file\n    /// - Parameter count: Number of bytes to read. An error will be returned if there are not enough bytes available in the file from the specified position. Pass 0 to read all available data from the specified position\n    /// - Parameter fileId: Identifier of the file. The file must be located in the TDLib file cache\n    /// - Parameter offset: The offset from which to read the file\n    /// - Returns: Reads a part of a file from the TDLib file cache and returns read bytes\n    public final func readFilePart(\n        count: Int64?,\n        fileId: Int?,\n        offset: Int64?,\n        completion: @escaping (Result<TdData, Swift.Error>) -> Void\n    ) throws {\n        let query = ReadFilePart(\n            count: count,\n            fileId: fileId,\n            offset: offset\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Reads a part of a file from the TDLib file cache and returns read bytes. This method is intended to be used only if the application has no direct access to TDLib's file system, because it is usually slower than a direct read from the file\n    /// - Parameter count: Number of bytes to read. An error will be returned if there are not enough bytes available in the file from the specified position. Pass 0 to read all available data from the specified position\n    /// - Parameter fileId: Identifier of the file. The file must be located in the TDLib file cache\n    /// - Parameter offset: The offset from which to read the file\n    /// - Returns: Reads a part of a file from the TDLib file cache and returns read bytes\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func readFilePart(\n        count: Int64?,\n        fileId: Int?,\n        offset: Int64?\n    ) async throws -> TdData {\n        let query = ReadFilePart(\n            count: count,\n            fileId: fileId,\n            offset: offset\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes a file from the TDLib file cache\n    /// - Parameter fileId: Identifier of the file to delete\n    public final func deleteFile(\n        fileId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteFile(\n            fileId: fileId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes a file from the TDLib file cache\n    /// - Parameter fileId: Identifier of the file to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteFile(fileId: Int?) async throws -> Ok {\n        let query = DeleteFile(\n            fileId: fileId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds a file from a message to the list of file downloads. Download progress and completion of the download will be notified through updateFile updates. If message database is used, the list of file downloads is persistent across application restarts. The downloading is independent of download using downloadFile, i.e. it continues if downloadFile is canceled or is used to download a part of the file\n    /// - Parameter chatId: Chat identifier of the message with the file\n    /// - Parameter fileId: Identifier of the file to download\n    /// - Parameter messageId: Message identifier\n    /// - Parameter priority: Priority of the download (1-32). The higher the priority, the earlier the file will be downloaded. If the priorities of two files are equal, then the last one for which downloadFile/addFileToDownloads was called will be downloaded first\n    public final func addFileToDownloads(\n        chatId: Int64?,\n        fileId: Int?,\n        messageId: Int64?,\n        priority: Int?,\n        completion: @escaping (Result<File, Swift.Error>) -> Void\n    ) throws {\n        let query = AddFileToDownloads(\n            chatId: chatId,\n            fileId: fileId,\n            messageId: messageId,\n            priority: priority\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds a file from a message to the list of file downloads. Download progress and completion of the download will be notified through updateFile updates. If message database is used, the list of file downloads is persistent across application restarts. The downloading is independent of download using downloadFile, i.e. it continues if downloadFile is canceled or is used to download a part of the file\n    /// - Parameter chatId: Chat identifier of the message with the file\n    /// - Parameter fileId: Identifier of the file to download\n    /// - Parameter messageId: Message identifier\n    /// - Parameter priority: Priority of the download (1-32). The higher the priority, the earlier the file will be downloaded. If the priorities of two files are equal, then the last one for which downloadFile/addFileToDownloads was called will be downloaded first\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func addFileToDownloads(\n        chatId: Int64?,\n        fileId: Int?,\n        messageId: Int64?,\n        priority: Int?\n    ) async throws -> File {\n        let query = AddFileToDownloads(\n            chatId: chatId,\n            fileId: fileId,\n            messageId: messageId,\n            priority: priority\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes pause state of a file in the file download list\n    /// - Parameter fileId: Identifier of the downloaded file\n    /// - Parameter isPaused: Pass true if the download is paused\n    public final func toggleDownloadIsPaused(\n        fileId: Int?,\n        isPaused: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleDownloadIsPaused(\n            fileId: fileId,\n            isPaused: isPaused\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes pause state of a file in the file download list\n    /// - Parameter fileId: Identifier of the downloaded file\n    /// - Parameter isPaused: Pass true if the download is paused\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleDownloadIsPaused(\n        fileId: Int?,\n        isPaused: Bool?\n    ) async throws -> Ok {\n        let query = ToggleDownloadIsPaused(\n            fileId: fileId,\n            isPaused: isPaused\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes pause state of all files in the file download list\n    /// - Parameter arePaused: Pass true to pause all downloads; pass false to unpause them\n    public final func toggleAllDownloadsArePaused(\n        arePaused: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleAllDownloadsArePaused(\n            arePaused: arePaused\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes pause state of all files in the file download list\n    /// - Parameter arePaused: Pass true to pause all downloads; pass false to unpause them\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleAllDownloadsArePaused(arePaused: Bool?) async throws -> Ok {\n        let query = ToggleAllDownloadsArePaused(\n            arePaused: arePaused\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes a file from the file download list\n    /// - Parameter deleteFromCache: Pass true to delete the file from the TDLib file cache\n    /// - Parameter fileId: Identifier of the downloaded file\n    public final func removeFileFromDownloads(\n        deleteFromCache: Bool?,\n        fileId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveFileFromDownloads(\n            deleteFromCache: deleteFromCache,\n            fileId: fileId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes a file from the file download list\n    /// - Parameter deleteFromCache: Pass true to delete the file from the TDLib file cache\n    /// - Parameter fileId: Identifier of the downloaded file\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeFileFromDownloads(\n        deleteFromCache: Bool?,\n        fileId: Int?\n    ) async throws -> Ok {\n        let query = RemoveFileFromDownloads(\n            deleteFromCache: deleteFromCache,\n            fileId: fileId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes all files from the file download list\n    /// - Parameter deleteFromCache: Pass true to delete the file from the TDLib file cache\n    /// - Parameter onlyActive: Pass true to remove only active downloads, including paused\n    /// - Parameter onlyCompleted: Pass true to remove only completed downloads\n    public final func removeAllFilesFromDownloads(\n        deleteFromCache: Bool?,\n        onlyActive: Bool?,\n        onlyCompleted: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveAllFilesFromDownloads(\n            deleteFromCache: deleteFromCache,\n            onlyActive: onlyActive,\n            onlyCompleted: onlyCompleted\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes all files from the file download list\n    /// - Parameter deleteFromCache: Pass true to delete the file from the TDLib file cache\n    /// - Parameter onlyActive: Pass true to remove only active downloads, including paused\n    /// - Parameter onlyCompleted: Pass true to remove only completed downloads\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeAllFilesFromDownloads(\n        deleteFromCache: Bool?,\n        onlyActive: Bool?,\n        onlyCompleted: Bool?\n    ) async throws -> Ok {\n        let query = RemoveAllFilesFromDownloads(\n            deleteFromCache: deleteFromCache,\n            onlyActive: onlyActive,\n            onlyCompleted: onlyCompleted\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for files in the file download list or recently downloaded files from the list\n    /// - Parameter limit: The maximum number of files to be returned\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter onlyActive: Pass true to search only for active downloads, including paused\n    /// - Parameter onlyCompleted: Pass true to search only for completed downloads\n    /// - Parameter query: Query to search for; may be empty to return all downloaded files\n    public final func searchFileDownloads(\n        limit: Int?,\n        offset: String?,\n        onlyActive: Bool?,\n        onlyCompleted: Bool?,\n        query: String?,\n        completion: @escaping (Result<FoundFileDownloads, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchFileDownloads(\n            limit: limit,\n            offset: offset,\n            onlyActive: onlyActive,\n            onlyCompleted: onlyCompleted,\n            query: query\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for files in the file download list or recently downloaded files from the list\n    /// - Parameter limit: The maximum number of files to be returned\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter onlyActive: Pass true to search only for active downloads, including paused\n    /// - Parameter onlyCompleted: Pass true to search only for completed downloads\n    /// - Parameter query: Query to search for; may be empty to return all downloaded files\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchFileDownloads(\n        limit: Int?,\n        offset: String?,\n        onlyActive: Bool?,\n        onlyCompleted: Bool?,\n        query: String?\n    ) async throws -> FoundFileDownloads {\n        let query = SearchFileDownloads(\n            limit: limit,\n            offset: offset,\n            onlyActive: onlyActive,\n            onlyCompleted: onlyCompleted,\n            query: query\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that application or reCAPTCHA verification has been completed. Can be called before authorization\n    /// - Parameter token: Play Integrity API token for the Android application, or secret from push notification for the iOS application for application verification, or reCAPTCHA token for reCAPTCHA verifications; pass an empty string to abort verification and receive the error \"VERIFICATION_FAILED\" for the request\n    /// - Parameter verificationId: Unique identifier for the verification process as received from updateApplicationVerificationRequired or updateApplicationRecaptchaVerificationRequired\n    public final func setApplicationVerificationToken(\n        token: String?,\n        verificationId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetApplicationVerificationToken(\n            token: token,\n            verificationId: verificationId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that application or reCAPTCHA verification has been completed. Can be called before authorization\n    /// - Parameter token: Play Integrity API token for the Android application, or secret from push notification for the iOS application for application verification, or reCAPTCHA token for reCAPTCHA verifications; pass an empty string to abort verification and receive the error \"VERIFICATION_FAILED\" for the request\n    /// - Parameter verificationId: Unique identifier for the verification process as received from updateApplicationVerificationRequired or updateApplicationRecaptchaVerificationRequired\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setApplicationVerificationToken(\n        token: String?,\n        verificationId: Int64?\n    ) async throws -> Ok {\n        let query = SetApplicationVerificationToken(\n            token: token,\n            verificationId: verificationId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a file with messages exported from another application\n    /// - Parameter messageFileHead: Beginning of the message file; up to 100 first lines\n    /// - Returns: Information about a file with messages exported from another application\n    public final func getMessageFileType(\n        messageFileHead: String?,\n        completion: @escaping (Result<MessageFileType, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageFileType(\n            messageFileHead: messageFileHead\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a file with messages exported from another application\n    /// - Parameter messageFileHead: Beginning of the message file; up to 100 first lines\n    /// - Returns: Information about a file with messages exported from another application\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMessageFileType(messageFileHead: String?) async throws -> MessageFileType {\n        let query = GetMessageFileType(\n            messageFileHead: messageFileHead\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a confirmation text to be shown to the user before starting message import\n    /// - Parameter chatId: Identifier of a chat to which the messages will be imported. It must be an identifier of a private chat with a mutual contact or an identifier of a supergroup chat with can_change_info member right\n    /// - Returns: A confirmation text to be shown to the user before starting message import\n    public final func getMessageImportConfirmationText(\n        chatId: Int64?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageImportConfirmationText(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a confirmation text to be shown to the user before starting message import\n    /// - Parameter chatId: Identifier of a chat to which the messages will be imported. It must be an identifier of a private chat with a mutual contact or an identifier of a supergroup chat with can_change_info member right\n    /// - Returns: A confirmation text to be shown to the user before starting message import\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMessageImportConfirmationText(chatId: Int64?) async throws -> Text {\n        let query = GetMessageImportConfirmationText(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Imports messages exported from another application\n    /// - Parameter attachedFiles: Files used in the imported messages. Only inputFileLocal and inputFileGenerated are supported. The files must not be previously uploaded\n    /// - Parameter chatId: Identifier of a chat to which the messages will be imported. It must be an identifier of a private chat with a mutual contact or an identifier of a supergroup chat with can_change_info member right\n    /// - Parameter messageFile: File with messages to import. Only inputFileLocal and inputFileGenerated are supported. The file must not be previously uploaded\n    public final func importMessages(\n        attachedFiles: [InputFile]?,\n        chatId: Int64?,\n        messageFile: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ImportMessages(\n            attachedFiles: attachedFiles,\n            chatId: chatId,\n            messageFile: messageFile\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Imports messages exported from another application\n    /// - Parameter attachedFiles: Files used in the imported messages. Only inputFileLocal and inputFileGenerated are supported. The files must not be previously uploaded\n    /// - Parameter chatId: Identifier of a chat to which the messages will be imported. It must be an identifier of a private chat with a mutual contact or an identifier of a supergroup chat with can_change_info member right\n    /// - Parameter messageFile: File with messages to import. Only inputFileLocal and inputFileGenerated are supported. The file must not be previously uploaded\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func importMessages(\n        attachedFiles: [InputFile]?,\n        chatId: Int64?,\n        messageFile: InputFile?\n    ) async throws -> Ok {\n        let query = ImportMessages(\n            attachedFiles: attachedFiles,\n            chatId: chatId,\n            messageFile: messageFile\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Replaces current primary invite link for a chat with a new primary invite link. Available for basic groups, supergroups, and channels. Requires administrator privileges and can_invite_users right\n    /// - Parameter chatId: Chat identifier\n    public final func replacePrimaryChatInviteLink(\n        chatId: Int64?,\n        completion: @escaping (Result<ChatInviteLink, Swift.Error>) -> Void\n    ) throws {\n        let query = ReplacePrimaryChatInviteLink(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Replaces current primary invite link for a chat with a new primary invite link. Available for basic groups, supergroups, and channels. Requires administrator privileges and can_invite_users right\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func replacePrimaryChatInviteLink(chatId: Int64?) async throws -> ChatInviteLink {\n        let query = ReplacePrimaryChatInviteLink(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Creates a new invite link for a chat. Available for basic groups, supergroups, and channels. Requires administrator privileges and can_invite_users right in the chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter createsJoinRequest: Pass true if users joining the chat via the link need to be approved by chat administrators. In this case, member_limit must be 0\n    /// - Parameter expirationDate: Point in time (Unix timestamp) when the link will expire; pass 0 if never\n    /// - Parameter memberLimit: The maximum number of chat members that can join the chat via the link simultaneously; 0-99999; pass 0 if not limited\n    /// - Parameter name: Invite link name; 0-32 characters\n    public final func createChatInviteLink(\n        chatId: Int64?,\n        createsJoinRequest: Bool?,\n        expirationDate: Int?,\n        memberLimit: Int?,\n        name: String?,\n        completion: @escaping (Result<ChatInviteLink, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateChatInviteLink(\n            chatId: chatId,\n            createsJoinRequest: createsJoinRequest,\n            expirationDate: expirationDate,\n            memberLimit: memberLimit,\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Creates a new invite link for a chat. Available for basic groups, supergroups, and channels. Requires administrator privileges and can_invite_users right in the chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter createsJoinRequest: Pass true if users joining the chat via the link need to be approved by chat administrators. In this case, member_limit must be 0\n    /// - Parameter expirationDate: Point in time (Unix timestamp) when the link will expire; pass 0 if never\n    /// - Parameter memberLimit: The maximum number of chat members that can join the chat via the link simultaneously; 0-99999; pass 0 if not limited\n    /// - Parameter name: Invite link name; 0-32 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createChatInviteLink(\n        chatId: Int64?,\n        createsJoinRequest: Bool?,\n        expirationDate: Int?,\n        memberLimit: Int?,\n        name: String?\n    ) async throws -> ChatInviteLink {\n        let query = CreateChatInviteLink(\n            chatId: chatId,\n            createsJoinRequest: createsJoinRequest,\n            expirationDate: expirationDate,\n            memberLimit: memberLimit,\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Creates a new subscription invite link for a channel chat. Requires can_invite_users right in the chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter name: Invite link name; 0-32 characters\n    /// - Parameter subscriptionPricing: Information about subscription plan that will be applied to the users joining the chat via the link. Subscription period must be 2592000 in production environment, and 60 or 300 if Telegram test environment is used\n    public final func createChatSubscriptionInviteLink(\n        chatId: Int64?,\n        name: String?,\n        subscriptionPricing: StarSubscriptionPricing?,\n        completion: @escaping (Result<ChatInviteLink, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateChatSubscriptionInviteLink(\n            chatId: chatId,\n            name: name,\n            subscriptionPricing: subscriptionPricing\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Creates a new subscription invite link for a channel chat. Requires can_invite_users right in the chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter name: Invite link name; 0-32 characters\n    /// - Parameter subscriptionPricing: Information about subscription plan that will be applied to the users joining the chat via the link. Subscription period must be 2592000 in production environment, and 60 or 300 if Telegram test environment is used\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createChatSubscriptionInviteLink(\n        chatId: Int64?,\n        name: String?,\n        subscriptionPricing: StarSubscriptionPricing?\n    ) async throws -> ChatInviteLink {\n        let query = CreateChatSubscriptionInviteLink(\n            chatId: chatId,\n            name: name,\n            subscriptionPricing: subscriptionPricing\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits a non-primary invite link for a chat. Available for basic groups, supergroups, and channels. If the link creates a subscription, then expiration_date, member_limit and creates_join_request must not be used. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter createsJoinRequest: Pass true if users joining the chat via the link need to be approved by chat administrators. In this case, member_limit must be 0\n    /// - Parameter expirationDate: Point in time (Unix timestamp) when the link will expire; pass 0 if never\n    /// - Parameter inviteLink: Invite link to be edited\n    /// - Parameter memberLimit: The maximum number of chat members that can join the chat via the link simultaneously; 0-99999; pass 0 if not limited\n    /// - Parameter name: Invite link name; 0-32 characters\n    public final func editChatInviteLink(\n        chatId: Int64?,\n        createsJoinRequest: Bool?,\n        expirationDate: Int?,\n        inviteLink: String?,\n        memberLimit: Int?,\n        name: String?,\n        completion: @escaping (Result<ChatInviteLink, Swift.Error>) -> Void\n    ) throws {\n        let query = EditChatInviteLink(\n            chatId: chatId,\n            createsJoinRequest: createsJoinRequest,\n            expirationDate: expirationDate,\n            inviteLink: inviteLink,\n            memberLimit: memberLimit,\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits a non-primary invite link for a chat. Available for basic groups, supergroups, and channels. If the link creates a subscription, then expiration_date, member_limit and creates_join_request must not be used. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter createsJoinRequest: Pass true if users joining the chat via the link need to be approved by chat administrators. In this case, member_limit must be 0\n    /// - Parameter expirationDate: Point in time (Unix timestamp) when the link will expire; pass 0 if never\n    /// - Parameter inviteLink: Invite link to be edited\n    /// - Parameter memberLimit: The maximum number of chat members that can join the chat via the link simultaneously; 0-99999; pass 0 if not limited\n    /// - Parameter name: Invite link name; 0-32 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func editChatInviteLink(\n        chatId: Int64?,\n        createsJoinRequest: Bool?,\n        expirationDate: Int?,\n        inviteLink: String?,\n        memberLimit: Int?,\n        name: String?\n    ) async throws -> ChatInviteLink {\n        let query = EditChatInviteLink(\n            chatId: chatId,\n            createsJoinRequest: createsJoinRequest,\n            expirationDate: expirationDate,\n            inviteLink: inviteLink,\n            memberLimit: memberLimit,\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits a subscription invite link for a channel chat. Requires can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link to be edited\n    /// - Parameter name: Invite link name; 0-32 characters\n    public final func editChatSubscriptionInviteLink(\n        chatId: Int64?,\n        inviteLink: String?,\n        name: String?,\n        completion: @escaping (Result<ChatInviteLink, Swift.Error>) -> Void\n    ) throws {\n        let query = EditChatSubscriptionInviteLink(\n            chatId: chatId,\n            inviteLink: inviteLink,\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits a subscription invite link for a channel chat. Requires can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link to be edited\n    /// - Parameter name: Invite link name; 0-32 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func editChatSubscriptionInviteLink(\n        chatId: Int64?,\n        inviteLink: String?,\n        name: String?\n    ) async throws -> ChatInviteLink {\n        let query = EditChatSubscriptionInviteLink(\n            chatId: chatId,\n            inviteLink: inviteLink,\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about an invite link. Requires administrator privileges and can_invite_users right in the chat to get own links and owner privileges to get other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link to get\n    /// - Returns: Information about an invite link\n    public final func getChatInviteLink(\n        chatId: Int64?,\n        inviteLink: String?,\n        completion: @escaping (Result<ChatInviteLink, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatInviteLink(\n            chatId: chatId,\n            inviteLink: inviteLink\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about an invite link. Requires administrator privileges and can_invite_users right in the chat to get own links and owner privileges to get other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link to get\n    /// - Returns: Information about an invite link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatInviteLink(\n        chatId: Int64?,\n        inviteLink: String?\n    ) async throws -> ChatInviteLink {\n        let query = GetChatInviteLink(\n            chatId: chatId,\n            inviteLink: inviteLink\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of chat administrators with number of their invite links. Requires owner privileges in the chat\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of chat administrators with number of their invite links\n    public final func getChatInviteLinkCounts(\n        chatId: Int64?,\n        completion: @escaping (Result<ChatInviteLinkCounts, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatInviteLinkCounts(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of chat administrators with number of their invite links. Requires owner privileges in the chat\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of chat administrators with number of their invite links\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatInviteLinkCounts(chatId: Int64?) async throws -> ChatInviteLinkCounts {\n        let query = GetChatInviteLinkCounts(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns invite links for a chat created by specified administrator. Requires administrator privileges and can_invite_users right in the chat to get own links and owner privileges to get other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter creatorUserId: User identifier of a chat administrator. Must be an identifier of the current user for non-owner\n    /// - Parameter isRevoked: Pass true if revoked links needs to be returned instead of active or expired\n    /// - Parameter limit: The maximum number of invite links to return; up to 100\n    /// - Parameter offsetDate: Creation date of an invite link starting after which to return invite links; use 0 to get results from the beginning\n    /// - Parameter offsetInviteLink: Invite link starting after which to return invite links; use empty string to get results from the beginning\n    /// - Returns: Invite links for a chat created by specified administrator\n    public final func getChatInviteLinks(\n        chatId: Int64?,\n        creatorUserId: Int64?,\n        isRevoked: Bool?,\n        limit: Int?,\n        offsetDate: Int?,\n        offsetInviteLink: String?,\n        completion: @escaping (Result<ChatInviteLinks, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatInviteLinks(\n            chatId: chatId,\n            creatorUserId: creatorUserId,\n            isRevoked: isRevoked,\n            limit: limit,\n            offsetDate: offsetDate,\n            offsetInviteLink: offsetInviteLink\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns invite links for a chat created by specified administrator. Requires administrator privileges and can_invite_users right in the chat to get own links and owner privileges to get other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter creatorUserId: User identifier of a chat administrator. Must be an identifier of the current user for non-owner\n    /// - Parameter isRevoked: Pass true if revoked links needs to be returned instead of active or expired\n    /// - Parameter limit: The maximum number of invite links to return; up to 100\n    /// - Parameter offsetDate: Creation date of an invite link starting after which to return invite links; use 0 to get results from the beginning\n    /// - Parameter offsetInviteLink: Invite link starting after which to return invite links; use empty string to get results from the beginning\n    /// - Returns: Invite links for a chat created by specified administrator\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatInviteLinks(\n        chatId: Int64?,\n        creatorUserId: Int64?,\n        isRevoked: Bool?,\n        limit: Int?,\n        offsetDate: Int?,\n        offsetInviteLink: String?\n    ) async throws -> ChatInviteLinks {\n        let query = GetChatInviteLinks(\n            chatId: chatId,\n            creatorUserId: creatorUserId,\n            isRevoked: isRevoked,\n            limit: limit,\n            offsetDate: offsetDate,\n            offsetInviteLink: offsetInviteLink\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns chat members joined a chat via an invite link. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link for which to return chat members\n    /// - Parameter limit: The maximum number of chat members to return; up to 100\n    /// - Parameter offsetMember: A chat member from which to return next chat members; pass null to get results from the beginning\n    /// - Parameter onlyWithExpiredSubscription: Pass true if the link is a subscription link and only members with expired subscription must be returned\n    /// - Returns: Chat members joined a chat via an invite link\n    public final func getChatInviteLinkMembers(\n        chatId: Int64?,\n        inviteLink: String?,\n        limit: Int?,\n        offsetMember: ChatInviteLinkMember?,\n        onlyWithExpiredSubscription: Bool?,\n        completion: @escaping (Result<ChatInviteLinkMembers, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatInviteLinkMembers(\n            chatId: chatId,\n            inviteLink: inviteLink,\n            limit: limit,\n            offsetMember: offsetMember,\n            onlyWithExpiredSubscription: onlyWithExpiredSubscription\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns chat members joined a chat via an invite link. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link for which to return chat members\n    /// - Parameter limit: The maximum number of chat members to return; up to 100\n    /// - Parameter offsetMember: A chat member from which to return next chat members; pass null to get results from the beginning\n    /// - Parameter onlyWithExpiredSubscription: Pass true if the link is a subscription link and only members with expired subscription must be returned\n    /// - Returns: Chat members joined a chat via an invite link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatInviteLinkMembers(\n        chatId: Int64?,\n        inviteLink: String?,\n        limit: Int?,\n        offsetMember: ChatInviteLinkMember?,\n        onlyWithExpiredSubscription: Bool?\n    ) async throws -> ChatInviteLinkMembers {\n        let query = GetChatInviteLinkMembers(\n            chatId: chatId,\n            inviteLink: inviteLink,\n            limit: limit,\n            offsetMember: offsetMember,\n            onlyWithExpiredSubscription: onlyWithExpiredSubscription\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Revokes invite link for a chat. Available for basic groups, supergroups, and channels. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links. If a primary link is revoked, then additionally to the revoked link returns new primary link\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link to be revoked\n    /// - Returns: If a primary link is revoked, then additionally to the revoked link returns new primary link\n    public final func revokeChatInviteLink(\n        chatId: Int64?,\n        inviteLink: String?,\n        completion: @escaping (Result<ChatInviteLinks, Swift.Error>) -> Void\n    ) throws {\n        let query = RevokeChatInviteLink(\n            chatId: chatId,\n            inviteLink: inviteLink\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Revokes invite link for a chat. Available for basic groups, supergroups, and channels. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links. If a primary link is revoked, then additionally to the revoked link returns new primary link\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link to be revoked\n    /// - Returns: If a primary link is revoked, then additionally to the revoked link returns new primary link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func revokeChatInviteLink(\n        chatId: Int64?,\n        inviteLink: String?\n    ) async throws -> ChatInviteLinks {\n        let query = RevokeChatInviteLink(\n            chatId: chatId,\n            inviteLink: inviteLink\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes revoked chat invite links. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link to revoke\n    public final func deleteRevokedChatInviteLink(\n        chatId: Int64?,\n        inviteLink: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteRevokedChatInviteLink(\n            chatId: chatId,\n            inviteLink: inviteLink\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes revoked chat invite links. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link to revoke\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteRevokedChatInviteLink(\n        chatId: Int64?,\n        inviteLink: String?\n    ) async throws -> Ok {\n        let query = DeleteRevokedChatInviteLink(\n            chatId: chatId,\n            inviteLink: inviteLink\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes all revoked chat invite links created by a given chat administrator. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter creatorUserId: User identifier of a chat administrator, which links will be deleted. Must be an identifier of the current user for non-owner\n    public final func deleteAllRevokedChatInviteLinks(\n        chatId: Int64?,\n        creatorUserId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteAllRevokedChatInviteLinks(\n            chatId: chatId,\n            creatorUserId: creatorUserId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes all revoked chat invite links created by a given chat administrator. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter creatorUserId: User identifier of a chat administrator, which links will be deleted. Must be an identifier of the current user for non-owner\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteAllRevokedChatInviteLinks(\n        chatId: Int64?,\n        creatorUserId: Int64?\n    ) async throws -> Ok {\n        let query = DeleteAllRevokedChatInviteLinks(\n            chatId: chatId,\n            creatorUserId: creatorUserId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks the validity of an invite link for a chat and returns information about the corresponding chat\n    /// - Parameter inviteLink: Invite link to be checked\n    /// - Returns: Checks the validity of an invite link for a chat and returns information about the corresponding chat\n    public final func checkChatInviteLink(\n        inviteLink: String?,\n        completion: @escaping (Result<ChatInviteLinkInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckChatInviteLink(\n            inviteLink: inviteLink\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks the validity of an invite link for a chat and returns information about the corresponding chat\n    /// - Parameter inviteLink: Invite link to be checked\n    /// - Returns: Checks the validity of an invite link for a chat and returns information about the corresponding chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func checkChatInviteLink(inviteLink: String?) async throws -> ChatInviteLinkInfo {\n        let query = CheckChatInviteLink(\n            inviteLink: inviteLink\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Uses an invite link to add the current user to the chat if possible. May return an error with a message \"INVITE_REQUEST_SENT\" if only a join request was created\n    /// - Parameter inviteLink: Invite link to use\n    /// - Returns: May return an error with a message \"INVITE_REQUEST_SENT\" if only a join request was created\n    public final func joinChatByInviteLink(\n        inviteLink: String?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = JoinChatByInviteLink(\n            inviteLink: inviteLink\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Uses an invite link to add the current user to the chat if possible. May return an error with a message \"INVITE_REQUEST_SENT\" if only a join request was created\n    /// - Parameter inviteLink: Invite link to use\n    /// - Returns: May return an error with a message \"INVITE_REQUEST_SENT\" if only a join request was created\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func joinChatByInviteLink(inviteLink: String?) async throws -> Chat {\n        let query = JoinChatByInviteLink(\n            inviteLink: inviteLink\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns pending join requests in a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link for which to return join requests. If empty, all join requests will be returned. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter limit: The maximum number of requests to join the chat to return\n    /// - Parameter offsetRequest: A chat join request from which to return next requests; pass null to get results from the beginning\n    /// - Parameter query: A query to search for in the first names, last names and usernames of the users to return\n    /// - Returns: Pending join requests in a chat\n    public final func getChatJoinRequests(\n        chatId: Int64?,\n        inviteLink: String?,\n        limit: Int?,\n        offsetRequest: ChatJoinRequest?,\n        query: String?,\n        completion: @escaping (Result<ChatJoinRequests, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatJoinRequests(\n            chatId: chatId,\n            inviteLink: inviteLink,\n            limit: limit,\n            offsetRequest: offsetRequest,\n            query: query\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns pending join requests in a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link for which to return join requests. If empty, all join requests will be returned. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter limit: The maximum number of requests to join the chat to return\n    /// - Parameter offsetRequest: A chat join request from which to return next requests; pass null to get results from the beginning\n    /// - Parameter query: A query to search for in the first names, last names and usernames of the users to return\n    /// - Returns: Pending join requests in a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatJoinRequests(\n        chatId: Int64?,\n        inviteLink: String?,\n        limit: Int?,\n        offsetRequest: ChatJoinRequest?,\n        query: String?\n    ) async throws -> ChatJoinRequests {\n        let query = GetChatJoinRequests(\n            chatId: chatId,\n            inviteLink: inviteLink,\n            limit: limit,\n            offsetRequest: offsetRequest,\n            query: query\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Handles a pending join request in a chat\n    /// - Parameter approve: Pass true to approve the request; pass false to decline it\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter userId: Identifier of the user who sent the request\n    public final func processChatJoinRequest(\n        approve: Bool?,\n        chatId: Int64?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ProcessChatJoinRequest(\n            approve: approve,\n            chatId: chatId,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Handles a pending join request in a chat\n    /// - Parameter approve: Pass true to approve the request; pass false to decline it\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter userId: Identifier of the user who sent the request\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func processChatJoinRequest(\n        approve: Bool?,\n        chatId: Int64?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = ProcessChatJoinRequest(\n            approve: approve,\n            chatId: chatId,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Handles all pending join requests for a given link in a chat\n    /// - Parameter approve: Pass true to approve all requests; pass false to decline them\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link for which to process join requests. If empty, all join requests will be processed. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    public final func processChatJoinRequests(\n        approve: Bool?,\n        chatId: Int64?,\n        inviteLink: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ProcessChatJoinRequests(\n            approve: approve,\n            chatId: chatId,\n            inviteLink: inviteLink\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Handles all pending join requests for a given link in a chat\n    /// - Parameter approve: Pass true to approve all requests; pass false to decline them\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link for which to process join requests. If empty, all join requests will be processed. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func processChatJoinRequests(\n        approve: Bool?,\n        chatId: Int64?,\n        inviteLink: String?\n    ) async throws -> Ok {\n        let query = ProcessChatJoinRequests(\n            approve: approve,\n            chatId: chatId,\n            inviteLink: inviteLink\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Approves a suggested post in a channel direct messages chat\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter messageId: Identifier of the message with the suggested post. Use messageProperties.can_be_approved to check whether the suggested post can be approved\n    /// - Parameter sendDate: Point in time (Unix timestamp) when the post is expected to be published; pass 0 if the date has already been chosen. If specified, then the date must be in the future, but at most getOption(\"suggested_post_send_delay_max\") seconds in the future\n    public final func approveSuggestedPost(\n        chatId: Int64?,\n        messageId: Int64?,\n        sendDate: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ApproveSuggestedPost(\n            chatId: chatId,\n            messageId: messageId,\n            sendDate: sendDate\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Approves a suggested post in a channel direct messages chat\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter messageId: Identifier of the message with the suggested post. Use messageProperties.can_be_approved to check whether the suggested post can be approved\n    /// - Parameter sendDate: Point in time (Unix timestamp) when the post is expected to be published; pass 0 if the date has already been chosen. If specified, then the date must be in the future, but at most getOption(\"suggested_post_send_delay_max\") seconds in the future\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func approveSuggestedPost(\n        chatId: Int64?,\n        messageId: Int64?,\n        sendDate: Int?\n    ) async throws -> Ok {\n        let query = ApproveSuggestedPost(\n            chatId: chatId,\n            messageId: messageId,\n            sendDate: sendDate\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Declines a suggested post in a channel direct messages chat\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter comment: Comment for the creator of the suggested post; 0-128 characters\n    /// - Parameter messageId: Identifier of the message with the suggested post. Use messageProperties.can_be_declined to check whether the suggested post can be declined\n    public final func declineSuggestedPost(\n        chatId: Int64?,\n        comment: String?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeclineSuggestedPost(\n            chatId: chatId,\n            comment: comment,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Declines a suggested post in a channel direct messages chat\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter comment: Comment for the creator of the suggested post; 0-128 characters\n    /// - Parameter messageId: Identifier of the message with the suggested post. Use messageProperties.can_be_declined to check whether the suggested post can be declined\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func declineSuggestedPost(\n        chatId: Int64?,\n        comment: String?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = DeclineSuggestedPost(\n            chatId: chatId,\n            comment: comment,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends a suggested post based on a previously sent message in a channel direct messages chat. Can be also used to suggest price or time change for an existing suggested post. Returns the sent message\n    /// - Parameter chatId: Identifier of the channel direct messages chat\n    /// - Parameter messageId: Identifier of the message in the chat which will be sent as suggested post. Use messageProperties.can_add_offer to check whether an offer can be added or messageProperties.can_edit_suggested_post_info to check whether price or time of sending of the post can be changed\n    /// - Parameter options: Options to be used to send the message. New information about the suggested post must always be specified\n    /// - Returns: The sent message\n    public final func addOffer(\n        chatId: Int64?,\n        messageId: Int64?,\n        options: MessageSendOptions?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = AddOffer(\n            chatId: chatId,\n            messageId: messageId,\n            options: options\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends a suggested post based on a previously sent message in a channel direct messages chat. Can be also used to suggest price or time change for an existing suggested post. Returns the sent message\n    /// - Parameter chatId: Identifier of the channel direct messages chat\n    /// - Parameter messageId: Identifier of the message in the chat which will be sent as suggested post. Use messageProperties.can_add_offer to check whether an offer can be added or messageProperties.can_edit_suggested_post_info to check whether price or time of sending of the post can be changed\n    /// - Parameter options: Options to be used to send the message. New information about the suggested post must always be specified\n    /// - Returns: The sent message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func addOffer(\n        chatId: Int64?,\n        messageId: Int64?,\n        options: MessageSendOptions?\n    ) async throws -> Message {\n        let query = AddOffer(\n            chatId: chatId,\n            messageId: messageId,\n            options: options\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Creates a new call\n    /// - Parameter isVideo: Pass true to create a video call\n    /// - Parameter `protocol`: The call protocols supported by the application\n    /// - Parameter userId: Identifier of the user to be called\n    public final func createCall(\n        isVideo: Bool?,\n        `protocol`: CallProtocol?,\n        userId: Int64?,\n        completion: @escaping (Result<CallId, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateCall(\n            isVideo: isVideo,\n            protocol: `protocol`,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Creates a new call\n    /// - Parameter isVideo: Pass true to create a video call\n    /// - Parameter `protocol`: The call protocols supported by the application\n    /// - Parameter userId: Identifier of the user to be called\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createCall(\n        isVideo: Bool?,\n        `protocol`: CallProtocol?,\n        userId: Int64?\n    ) async throws -> CallId {\n        let query = CreateCall(\n            isVideo: isVideo,\n            protocol: `protocol`,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Accepts an incoming call\n    /// - Parameter callId: Call identifier\n    /// - Parameter `protocol`: The call protocols supported by the application\n    public final func acceptCall(\n        callId: Int?,\n        `protocol`: CallProtocol?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AcceptCall(\n            callId: callId,\n            protocol: `protocol`\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Accepts an incoming call\n    /// - Parameter callId: Call identifier\n    /// - Parameter `protocol`: The call protocols supported by the application\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func acceptCall(\n        callId: Int?,\n        `protocol`: CallProtocol?\n    ) async throws -> Ok {\n        let query = AcceptCall(\n            callId: callId,\n            protocol: `protocol`\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends call signaling data\n    /// - Parameter callId: Call identifier\n    /// - Parameter data: The data\n    public final func sendCallSignalingData(\n        callId: Int?,\n        data: Data?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendCallSignalingData(\n            callId: callId,\n            data: data\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends call signaling data\n    /// - Parameter callId: Call identifier\n    /// - Parameter data: The data\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func sendCallSignalingData(\n        callId: Int?,\n        data: Data?\n    ) async throws -> Ok {\n        let query = SendCallSignalingData(\n            callId: callId,\n            data: data\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Discards a call\n    /// - Parameter callId: Call identifier\n    /// - Parameter connectionId: Identifier of the connection used during the call\n    /// - Parameter duration: The call duration, in seconds\n    /// - Parameter inviteLink: If the call was upgraded to a group call, pass invite link to the group call\n    /// - Parameter isDisconnected: Pass true if the user was disconnected\n    /// - Parameter isVideo: Pass true if the call was a video call\n    public final func discardCall(\n        callId: Int?,\n        connectionId: TdInt64?,\n        duration: Int?,\n        inviteLink: String?,\n        isDisconnected: Bool?,\n        isVideo: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DiscardCall(\n            callId: callId,\n            connectionId: connectionId,\n            duration: duration,\n            inviteLink: inviteLink,\n            isDisconnected: isDisconnected,\n            isVideo: isVideo\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Discards a call\n    /// - Parameter callId: Call identifier\n    /// - Parameter connectionId: Identifier of the connection used during the call\n    /// - Parameter duration: The call duration, in seconds\n    /// - Parameter inviteLink: If the call was upgraded to a group call, pass invite link to the group call\n    /// - Parameter isDisconnected: Pass true if the user was disconnected\n    /// - Parameter isVideo: Pass true if the call was a video call\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func discardCall(\n        callId: Int?,\n        connectionId: TdInt64?,\n        duration: Int?,\n        inviteLink: String?,\n        isDisconnected: Bool?,\n        isVideo: Bool?\n    ) async throws -> Ok {\n        let query = DiscardCall(\n            callId: callId,\n            connectionId: connectionId,\n            duration: duration,\n            inviteLink: inviteLink,\n            isDisconnected: isDisconnected,\n            isVideo: isVideo\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends a call rating\n    /// - Parameter callId: Call identifier\n    /// - Parameter comment: An optional user comment if the rating is less than 5\n    /// - Parameter problems: List of the exact types of problems with the call, specified by the user\n    /// - Parameter rating: Call rating; 1-5\n    public final func sendCallRating(\n        callId: InputCall?,\n        comment: String?,\n        problems: [CallProblem]?,\n        rating: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendCallRating(\n            callId: callId,\n            comment: comment,\n            problems: problems,\n            rating: rating\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends a call rating\n    /// - Parameter callId: Call identifier\n    /// - Parameter comment: An optional user comment if the rating is less than 5\n    /// - Parameter problems: List of the exact types of problems with the call, specified by the user\n    /// - Parameter rating: Call rating; 1-5\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func sendCallRating(\n        callId: InputCall?,\n        comment: String?,\n        problems: [CallProblem]?,\n        rating: Int?\n    ) async throws -> Ok {\n        let query = SendCallRating(\n            callId: callId,\n            comment: comment,\n            problems: problems,\n            rating: rating\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends debug information for a call to Telegram servers\n    /// - Parameter callId: Call identifier\n    /// - Parameter debugInformation: Debug information in application-specific format\n    public final func sendCallDebugInformation(\n        callId: InputCall?,\n        debugInformation: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendCallDebugInformation(\n            callId: callId,\n            debugInformation: debugInformation\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends debug information for a call to Telegram servers\n    /// - Parameter callId: Call identifier\n    /// - Parameter debugInformation: Debug information in application-specific format\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func sendCallDebugInformation(\n        callId: InputCall?,\n        debugInformation: String?\n    ) async throws -> Ok {\n        let query = SendCallDebugInformation(\n            callId: callId,\n            debugInformation: debugInformation\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends log file for a call to Telegram servers\n    /// - Parameter callId: Call identifier\n    /// - Parameter logFile: Call log file. Only inputFileLocal and inputFileGenerated are supported\n    public final func sendCallLog(\n        callId: InputCall?,\n        logFile: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendCallLog(\n            callId: callId,\n            logFile: logFile\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends log file for a call to Telegram servers\n    /// - Parameter callId: Call identifier\n    /// - Parameter logFile: Call log file. Only inputFileLocal and inputFileGenerated are supported\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func sendCallLog(\n        callId: InputCall?,\n        logFile: InputFile?\n    ) async throws -> Ok {\n        let query = SendCallLog(\n            callId: callId,\n            logFile: logFile\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of participant identifiers, on whose behalf a video chat in the chat can be joined\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of participant identifiers, on whose behalf a video chat in the chat can be joined\n    public final func getVideoChatAvailableParticipants(\n        chatId: Int64?,\n        completion: @escaping (Result<MessageSenders, Swift.Error>) -> Void\n    ) throws {\n        let query = GetVideoChatAvailableParticipants(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of participant identifiers, on whose behalf a video chat in the chat can be joined\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of participant identifiers, on whose behalf a video chat in the chat can be joined\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getVideoChatAvailableParticipants(chatId: Int64?) async throws -> MessageSenders {\n        let query = GetVideoChatAvailableParticipants(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes default participant identifier, on whose behalf a video chat in the chat will be joined\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter defaultParticipantId: Default group call participant identifier to join the video chats in the chat\n    public final func setVideoChatDefaultParticipant(\n        chatId: Int64?,\n        defaultParticipantId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetVideoChatDefaultParticipant(\n            chatId: chatId,\n            defaultParticipantId: defaultParticipantId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes default participant identifier, on whose behalf a video chat in the chat will be joined\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter defaultParticipantId: Default group call participant identifier to join the video chats in the chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setVideoChatDefaultParticipant(\n        chatId: Int64?,\n        defaultParticipantId: MessageSender?\n    ) async throws -> Ok {\n        let query = SetVideoChatDefaultParticipant(\n            chatId: chatId,\n            defaultParticipantId: defaultParticipantId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Creates a video chat (a group call bound to a chat); for basic groups, supergroups and channels only; requires can_manage_video_chats administrator right\n    /// - Parameter chatId: Identifier of a chat in which the video chat will be created\n    /// - Parameter isRtmpStream: Pass true to create an RTMP stream instead of an ordinary video chat\n    /// - Parameter startDate: Point in time (Unix timestamp) when the group call is expected to be started by an administrator; 0 to start the video chat immediately. The date must be at least 10 seconds and at most 8 days in the future\n    /// - Parameter title: Group call title; if empty, chat title will be used\n    public final func createVideoChat(\n        chatId: Int64?,\n        isRtmpStream: Bool?,\n        startDate: Int?,\n        title: String?,\n        completion: @escaping (Result<GroupCallId, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateVideoChat(\n            chatId: chatId,\n            isRtmpStream: isRtmpStream,\n            startDate: startDate,\n            title: title\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Creates a video chat (a group call bound to a chat); for basic groups, supergroups and channels only; requires can_manage_video_chats administrator right\n    /// - Parameter chatId: Identifier of a chat in which the video chat will be created\n    /// - Parameter isRtmpStream: Pass true to create an RTMP stream instead of an ordinary video chat\n    /// - Parameter startDate: Point in time (Unix timestamp) when the group call is expected to be started by an administrator; 0 to start the video chat immediately. The date must be at least 10 seconds and at most 8 days in the future\n    /// - Parameter title: Group call title; if empty, chat title will be used\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createVideoChat(\n        chatId: Int64?,\n        isRtmpStream: Bool?,\n        startDate: Int?,\n        title: String?\n    ) async throws -> GroupCallId {\n        let query = CreateVideoChat(\n            chatId: chatId,\n            isRtmpStream: isRtmpStream,\n            startDate: startDate,\n            title: title\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Creates a new group call that isn't bound to a chat\n    /// - Parameter joinParameters: Parameters to join the call; pass null to only create call link without joining the call\n    public final func createGroupCall(\n        joinParameters: GroupCallJoinParameters?,\n        completion: @escaping (Result<GroupCallInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateGroupCall(\n            joinParameters: joinParameters\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Creates a new group call that isn't bound to a chat\n    /// - Parameter joinParameters: Parameters to join the call; pass null to only create call link without joining the call\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createGroupCall(joinParameters: GroupCallJoinParameters?) async throws -> GroupCallInfo {\n        let query = CreateGroupCall(\n            joinParameters: joinParameters\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns RTMP URL for streaming to the video chat of a chat; requires can_manage_video_chats administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: RTMP URL for streaming to the video chat of a chat\n    public final func getVideoChatRtmpUrl(\n        chatId: Int64?,\n        completion: @escaping (Result<RtmpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetVideoChatRtmpUrl(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns RTMP URL for streaming to the video chat of a chat; requires can_manage_video_chats administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: RTMP URL for streaming to the video chat of a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getVideoChatRtmpUrl(chatId: Int64?) async throws -> RtmpUrl {\n        let query = GetVideoChatRtmpUrl(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Replaces the current RTMP URL for streaming to the video chat of a chat; requires owner privileges in the chat\n    /// - Parameter chatId: Chat identifier\n    public final func replaceVideoChatRtmpUrl(\n        chatId: Int64?,\n        completion: @escaping (Result<RtmpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = ReplaceVideoChatRtmpUrl(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Replaces the current RTMP URL for streaming to the video chat of a chat; requires owner privileges in the chat\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func replaceVideoChatRtmpUrl(chatId: Int64?) async throws -> RtmpUrl {\n        let query = ReplaceVideoChatRtmpUrl(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns RTMP URL for streaming to a live story; requires can_post_stories administrator right for channel chats\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: RTMP URL for streaming to a live story\n    public final func getLiveStoryRtmpUrl(\n        chatId: Int64?,\n        completion: @escaping (Result<RtmpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLiveStoryRtmpUrl(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns RTMP URL for streaming to a live story; requires can_post_stories administrator right for channel chats\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: RTMP URL for streaming to a live story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getLiveStoryRtmpUrl(chatId: Int64?) async throws -> RtmpUrl {\n        let query = GetLiveStoryRtmpUrl(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Replaces the current RTMP URL for streaming to a live story; requires owner privileges for channel chats\n    /// - Parameter chatId: Chat identifier\n    public final func replaceLiveStoryRtmpUrl(\n        chatId: Int64?,\n        completion: @escaping (Result<RtmpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = ReplaceLiveStoryRtmpUrl(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Replaces the current RTMP URL for streaming to a live story; requires owner privileges for channel chats\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func replaceLiveStoryRtmpUrl(chatId: Int64?) async throws -> RtmpUrl {\n        let query = ReplaceLiveStoryRtmpUrl(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a group call\n    /// - Parameter groupCallId: Group call identifier\n    /// - Returns: Information about a group call\n    public final func getGroupCall(\n        groupCallId: Int?,\n        completion: @escaping (Result<GroupCall, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGroupCall(\n            groupCallId: groupCallId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a group call\n    /// - Parameter groupCallId: Group call identifier\n    /// - Returns: Information about a group call\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getGroupCall(groupCallId: Int?) async throws -> GroupCall {\n        let query = GetGroupCall(\n            groupCallId: groupCallId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Starts a scheduled video chat\n    /// - Parameter groupCallId: Group call identifier of the video chat\n    public final func startScheduledVideoChat(\n        groupCallId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = StartScheduledVideoChat(\n            groupCallId: groupCallId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Starts a scheduled video chat\n    /// - Parameter groupCallId: Group call identifier of the video chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func startScheduledVideoChat(groupCallId: Int?) async throws -> Ok {\n        let query = StartScheduledVideoChat(\n            groupCallId: groupCallId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether the current user will receive a notification when the video chat starts; for scheduled video chats only\n    /// - Parameter enabledStartNotification: New value of the enabled_start_notification setting\n    /// - Parameter groupCallId: Group call identifier\n    public final func toggleVideoChatEnabledStartNotification(\n        enabledStartNotification: Bool?,\n        groupCallId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleVideoChatEnabledStartNotification(\n            enabledStartNotification: enabledStartNotification,\n            groupCallId: groupCallId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether the current user will receive a notification when the video chat starts; for scheduled video chats only\n    /// - Parameter enabledStartNotification: New value of the enabled_start_notification setting\n    /// - Parameter groupCallId: Group call identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleVideoChatEnabledStartNotification(\n        enabledStartNotification: Bool?,\n        groupCallId: Int?\n    ) async throws -> Ok {\n        let query = ToggleVideoChatEnabledStartNotification(\n            enabledStartNotification: enabledStartNotification,\n            groupCallId: groupCallId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Joins a regular group call that is not bound to a chat\n    /// - Parameter inputGroupCall: The group call to join\n    /// - Parameter joinParameters: Parameters to join the call\n    public final func joinGroupCall(\n        inputGroupCall: InputGroupCall?,\n        joinParameters: GroupCallJoinParameters?,\n        completion: @escaping (Result<GroupCallInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = JoinGroupCall(\n            inputGroupCall: inputGroupCall,\n            joinParameters: joinParameters\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Joins a regular group call that is not bound to a chat\n    /// - Parameter inputGroupCall: The group call to join\n    /// - Parameter joinParameters: Parameters to join the call\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func joinGroupCall(\n        inputGroupCall: InputGroupCall?,\n        joinParameters: GroupCallJoinParameters?\n    ) async throws -> GroupCallInfo {\n        let query = JoinGroupCall(\n            inputGroupCall: inputGroupCall,\n            joinParameters: joinParameters\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Joins an active video chat. Returns join response payload for tgcalls\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter inviteHash: Invite hash as received from internalLinkTypeVideoChat\n    /// - Parameter joinParameters: Parameters to join the call\n    /// - Parameter participantId: Identifier of a group call participant, which will be used to join the call; pass null to join as self\n    /// - Returns: Join response payload for tgcalls\n    public final func joinVideoChat(\n        groupCallId: Int?,\n        inviteHash: String?,\n        joinParameters: GroupCallJoinParameters?,\n        participantId: MessageSender?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = JoinVideoChat(\n            groupCallId: groupCallId,\n            inviteHash: inviteHash,\n            joinParameters: joinParameters,\n            participantId: participantId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Joins an active video chat. Returns join response payload for tgcalls\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter inviteHash: Invite hash as received from internalLinkTypeVideoChat\n    /// - Parameter joinParameters: Parameters to join the call\n    /// - Parameter participantId: Identifier of a group call participant, which will be used to join the call; pass null to join as self\n    /// - Returns: Join response payload for tgcalls\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func joinVideoChat(\n        groupCallId: Int?,\n        inviteHash: String?,\n        joinParameters: GroupCallJoinParameters?,\n        participantId: MessageSender?\n    ) async throws -> Text {\n        let query = JoinVideoChat(\n            groupCallId: groupCallId,\n            inviteHash: inviteHash,\n            joinParameters: joinParameters,\n            participantId: participantId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Joins a group call of an active live story. Returns join response payload for tgcalls\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter joinParameters: Parameters to join the call\n    /// - Returns: Join response payload for tgcalls\n    public final func joinLiveStory(\n        groupCallId: Int?,\n        joinParameters: GroupCallJoinParameters?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = JoinLiveStory(\n            groupCallId: groupCallId,\n            joinParameters: joinParameters\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Joins a group call of an active live story. Returns join response payload for tgcalls\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter joinParameters: Parameters to join the call\n    /// - Returns: Join response payload for tgcalls\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func joinLiveStory(\n        groupCallId: Int?,\n        joinParameters: GroupCallJoinParameters?\n    ) async throws -> Text {\n        let query = JoinLiveStory(\n            groupCallId: groupCallId,\n            joinParameters: joinParameters\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Starts screen sharing in a joined group call; not supported in live stories. Returns join response payload for tgcalls\n    /// - Parameter audioSourceId: Screen sharing audio channel synchronization source identifier; received from tgcalls\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter payload: Group call join payload; received from tgcalls\n    /// - Returns: Join response payload for tgcalls\n    public final func startGroupCallScreenSharing(\n        audioSourceId: Int?,\n        groupCallId: Int?,\n        payload: String?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = StartGroupCallScreenSharing(\n            audioSourceId: audioSourceId,\n            groupCallId: groupCallId,\n            payload: payload\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Starts screen sharing in a joined group call; not supported in live stories. Returns join response payload for tgcalls\n    /// - Parameter audioSourceId: Screen sharing audio channel synchronization source identifier; received from tgcalls\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter payload: Group call join payload; received from tgcalls\n    /// - Returns: Join response payload for tgcalls\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func startGroupCallScreenSharing(\n        audioSourceId: Int?,\n        groupCallId: Int?,\n        payload: String?\n    ) async throws -> Text {\n        let query = StartGroupCallScreenSharing(\n            audioSourceId: audioSourceId,\n            groupCallId: groupCallId,\n            payload: payload\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Pauses or unpauses screen sharing in a joined group call; not supported in live stories\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isPaused: Pass true to pause screen sharing; pass false to unpause it\n    public final func toggleGroupCallScreenSharingIsPaused(\n        groupCallId: Int?,\n        isPaused: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleGroupCallScreenSharingIsPaused(\n            groupCallId: groupCallId,\n            isPaused: isPaused\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Pauses or unpauses screen sharing in a joined group call; not supported in live stories\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isPaused: Pass true to pause screen sharing; pass false to unpause it\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleGroupCallScreenSharingIsPaused(\n        groupCallId: Int?,\n        isPaused: Bool?\n    ) async throws -> Ok {\n        let query = ToggleGroupCallScreenSharingIsPaused(\n            groupCallId: groupCallId,\n            isPaused: isPaused\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Ends screen sharing in a joined group call; not supported in live stories\n    /// - Parameter groupCallId: Group call identifier\n    public final func endGroupCallScreenSharing(\n        groupCallId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EndGroupCallScreenSharing(\n            groupCallId: groupCallId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Ends screen sharing in a joined group call; not supported in live stories\n    /// - Parameter groupCallId: Group call identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func endGroupCallScreenSharing(groupCallId: Int?) async throws -> Ok {\n        let query = EndGroupCallScreenSharing(\n            groupCallId: groupCallId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets title of a video chat; requires groupCall.can_be_managed right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter title: New group call title; 1-64 characters\n    public final func setVideoChatTitle(\n        groupCallId: Int?,\n        title: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetVideoChatTitle(\n            groupCallId: groupCallId,\n            title: title\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets title of a video chat; requires groupCall.can_be_managed right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter title: New group call title; 1-64 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setVideoChatTitle(\n        groupCallId: Int?,\n        title: String?\n    ) async throws -> Ok {\n        let query = SetVideoChatTitle(\n            groupCallId: groupCallId,\n            title: title\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether new participants of a video chat can be unmuted only by administrators of the video chat. Requires groupCall.can_toggle_mute_new_participants right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter muteNewParticipants: New value of the mute_new_participants setting\n    public final func toggleVideoChatMuteNewParticipants(\n        groupCallId: Int?,\n        muteNewParticipants: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleVideoChatMuteNewParticipants(\n            groupCallId: groupCallId,\n            muteNewParticipants: muteNewParticipants\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether new participants of a video chat can be unmuted only by administrators of the video chat. Requires groupCall.can_toggle_mute_new_participants right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter muteNewParticipants: New value of the mute_new_participants setting\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleVideoChatMuteNewParticipants(\n        groupCallId: Int?,\n        muteNewParticipants: Bool?\n    ) async throws -> Ok {\n        let query = ToggleVideoChatMuteNewParticipants(\n            groupCallId: groupCallId,\n            muteNewParticipants: muteNewParticipants\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether participants of a group call can send messages there. Requires groupCall.can_toggle_are_messages_allowed right\n    /// - Parameter areMessagesAllowed: New value of the are_messages_allowed setting\n    /// - Parameter groupCallId: Group call identifier\n    public final func toggleGroupCallAreMessagesAllowed(\n        areMessagesAllowed: Bool?,\n        groupCallId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleGroupCallAreMessagesAllowed(\n            areMessagesAllowed: areMessagesAllowed,\n            groupCallId: groupCallId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether participants of a group call can send messages there. Requires groupCall.can_toggle_are_messages_allowed right\n    /// - Parameter areMessagesAllowed: New value of the are_messages_allowed setting\n    /// - Parameter groupCallId: Group call identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleGroupCallAreMessagesAllowed(\n        areMessagesAllowed: Bool?,\n        groupCallId: Int?\n    ) async throws -> Ok {\n        let query = ToggleGroupCallAreMessagesAllowed(\n            areMessagesAllowed: areMessagesAllowed,\n            groupCallId: groupCallId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about the user or the chat that streams to a live story; for live stories that aren't an RTMP stream only\n    /// - Parameter groupCallId: Group call identifier\n    /// - Returns: Information about the user or the chat that streams to a live story\n    public final func getLiveStoryStreamer(\n        groupCallId: Int?,\n        completion: @escaping (Result<GroupCallParticipant, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLiveStoryStreamer(\n            groupCallId: groupCallId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about the user or the chat that streams to a live story; for live stories that aren't an RTMP stream only\n    /// - Parameter groupCallId: Group call identifier\n    /// - Returns: Information about the user or the chat that streams to a live story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getLiveStoryStreamer(groupCallId: Int?) async throws -> GroupCallParticipant {\n        let query = GetLiveStoryStreamer(\n            groupCallId: groupCallId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of message sender identifiers, on whose behalf messages can be sent to a live story\n    /// - Parameter groupCallId: Group call identifier\n    /// - Returns: The list of message sender identifiers, on whose behalf messages can be sent to a live story\n    public final func getLiveStoryAvailableMessageSenders(\n        groupCallId: Int?,\n        completion: @escaping (Result<ChatMessageSenders, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLiveStoryAvailableMessageSenders(\n            groupCallId: groupCallId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of message sender identifiers, on whose behalf messages can be sent to a live story\n    /// - Parameter groupCallId: Group call identifier\n    /// - Returns: The list of message sender identifiers, on whose behalf messages can be sent to a live story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getLiveStoryAvailableMessageSenders(groupCallId: Int?) async throws -> ChatMessageSenders {\n        let query = GetLiveStoryAvailableMessageSenders(\n            groupCallId: groupCallId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Selects a message sender to send messages in a live story call\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter messageSenderId: New message sender for the group call\n    public final func setLiveStoryMessageSender(\n        groupCallId: Int?,\n        messageSenderId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetLiveStoryMessageSender(\n            groupCallId: groupCallId,\n            messageSenderId: messageSenderId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Selects a message sender to send messages in a live story call\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter messageSenderId: New message sender for the group call\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setLiveStoryMessageSender(\n        groupCallId: Int?,\n        messageSenderId: MessageSender?\n    ) async throws -> Ok {\n        let query = SetLiveStoryMessageSender(\n            groupCallId: groupCallId,\n            messageSenderId: messageSenderId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends a message to other participants of a group call. Requires groupCall.can_send_messages right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter paidMessageStarCount: The number of Telegram Stars the user agreed to pay to send the message; for live stories only; 0-getOption(\"paid_group_call_message_star_count_max\"). Must be 0 for messages sent to live stories posted by the current user\n    /// - Parameter text: Text of the message to send; 1-getOption(\"group_call_message_text_length_max\") characters for non-live-stories; see updateGroupCallMessageLevels for live story restrictions, which depends on paid_message_star_count. Can't contain line feeds for live stories. Can contain only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities for live stories\n    public final func sendGroupCallMessage(\n        groupCallId: Int?,\n        paidMessageStarCount: Int64?,\n        text: FormattedText?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendGroupCallMessage(\n            groupCallId: groupCallId,\n            paidMessageStarCount: paidMessageStarCount,\n            text: text\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends a message to other participants of a group call. Requires groupCall.can_send_messages right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter paidMessageStarCount: The number of Telegram Stars the user agreed to pay to send the message; for live stories only; 0-getOption(\"paid_group_call_message_star_count_max\"). Must be 0 for messages sent to live stories posted by the current user\n    /// - Parameter text: Text of the message to send; 1-getOption(\"group_call_message_text_length_max\") characters for non-live-stories; see updateGroupCallMessageLevels for live story restrictions, which depends on paid_message_star_count. Can't contain line feeds for live stories. Can contain only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities for live stories\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func sendGroupCallMessage(\n        groupCallId: Int?,\n        paidMessageStarCount: Int64?,\n        text: FormattedText?\n    ) async throws -> Ok {\n        let query = SendGroupCallMessage(\n            groupCallId: groupCallId,\n            paidMessageStarCount: paidMessageStarCount,\n            text: text\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds pending paid reaction in a live story group call. Can't be used in live stories posted by the current user. Call commitPendingLiveStoryReactions or removePendingLiveStoryReactions to actually send all pending reactions when the undo timer is over or abort the sending\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter starCount: Number of Telegram Stars to be used for the reaction. The total number of pending paid reactions must not exceed getOption(\"paid_group_call_message_star_count_max\")\n    public final func addPendingLiveStoryReaction(\n        groupCallId: Int?,\n        starCount: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddPendingLiveStoryReaction(\n            groupCallId: groupCallId,\n            starCount: starCount\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds pending paid reaction in a live story group call. Can't be used in live stories posted by the current user. Call commitPendingLiveStoryReactions or removePendingLiveStoryReactions to actually send all pending reactions when the undo timer is over or abort the sending\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter starCount: Number of Telegram Stars to be used for the reaction. The total number of pending paid reactions must not exceed getOption(\"paid_group_call_message_star_count_max\")\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func addPendingLiveStoryReaction(\n        groupCallId: Int?,\n        starCount: Int64?\n    ) async throws -> Ok {\n        let query = AddPendingLiveStoryReaction(\n            groupCallId: groupCallId,\n            starCount: starCount\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Applies all pending paid reactions in a live story group call\n    /// - Parameter groupCallId: Group call identifier\n    public final func commitPendingLiveStoryReactions(\n        groupCallId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CommitPendingLiveStoryReactions(\n            groupCallId: groupCallId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Applies all pending paid reactions in a live story group call\n    /// - Parameter groupCallId: Group call identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func commitPendingLiveStoryReactions(groupCallId: Int?) async throws -> Ok {\n        let query = CommitPendingLiveStoryReactions(\n            groupCallId: groupCallId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes all pending paid reactions in a live story group call\n    /// - Parameter groupCallId: Group call identifier\n    public final func removePendingLiveStoryReactions(\n        groupCallId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemovePendingLiveStoryReactions(\n            groupCallId: groupCallId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes all pending paid reactions in a live story group call\n    /// - Parameter groupCallId: Group call identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removePendingLiveStoryReactions(groupCallId: Int?) async throws -> Ok {\n        let query = RemovePendingLiveStoryReactions(\n            groupCallId: groupCallId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes messages in a group call; for live story calls only. Requires groupCallMessage.can_be_deleted right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter messageIds: Identifiers of the messages to be deleted\n    /// - Parameter reportSpam: Pass true to report the messages as spam\n    public final func deleteGroupCallMessages(\n        groupCallId: Int?,\n        messageIds: [Int]?,\n        reportSpam: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteGroupCallMessages(\n            groupCallId: groupCallId,\n            messageIds: messageIds,\n            reportSpam: reportSpam\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes messages in a group call; for live story calls only. Requires groupCallMessage.can_be_deleted right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter messageIds: Identifiers of the messages to be deleted\n    /// - Parameter reportSpam: Pass true to report the messages as spam\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteGroupCallMessages(\n        groupCallId: Int?,\n        messageIds: [Int]?,\n        reportSpam: Bool?\n    ) async throws -> Ok {\n        let query = DeleteGroupCallMessages(\n            groupCallId: groupCallId,\n            messageIds: messageIds,\n            reportSpam: reportSpam\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes all messages sent by the specified message sender in a group call; for live story calls only. Requires groupCall.can_delete_messages right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter reportSpam: Pass true to report the messages as spam\n    /// - Parameter senderId: Identifier of the sender of messages to delete\n    public final func deleteGroupCallMessagesBySender(\n        groupCallId: Int?,\n        reportSpam: Bool?,\n        senderId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteGroupCallMessagesBySender(\n            groupCallId: groupCallId,\n            reportSpam: reportSpam,\n            senderId: senderId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes all messages sent by the specified message sender in a group call; for live story calls only. Requires groupCall.can_delete_messages right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter reportSpam: Pass true to report the messages as spam\n    /// - Parameter senderId: Identifier of the sender of messages to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteGroupCallMessagesBySender(\n        groupCallId: Int?,\n        reportSpam: Bool?,\n        senderId: MessageSender?\n    ) async throws -> Ok {\n        let query = DeleteGroupCallMessagesBySender(\n            groupCallId: groupCallId,\n            reportSpam: reportSpam,\n            senderId: senderId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of top live story donors\n    /// - Parameter groupCallId: Group call identifier of the live story\n    /// - Returns: The list of top live story donors\n    public final func getLiveStoryTopDonors(\n        groupCallId: Int?,\n        completion: @escaping (Result<LiveStoryDonors, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLiveStoryTopDonors(\n            groupCallId: groupCallId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of top live story donors\n    /// - Parameter groupCallId: Group call identifier of the live story\n    /// - Returns: The list of top live story donors\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getLiveStoryTopDonors(groupCallId: Int?) async throws -> LiveStoryDonors {\n        let query = GetLiveStoryTopDonors(\n            groupCallId: groupCallId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Invites a user to an active group call; for group calls not bound to a chat only. Sends a service message of the type messageGroupCall. The group call can have at most getOption(\"group_call_participant_count_max\") participants\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isVideo: Pass true if the group call is a video call\n    /// - Parameter userId: User identifier\n    public final func inviteGroupCallParticipant(\n        groupCallId: Int?,\n        isVideo: Bool?,\n        userId: Int64?,\n        completion: @escaping (Result<InviteGroupCallParticipantResult, Swift.Error>) -> Void\n    ) throws {\n        let query = InviteGroupCallParticipant(\n            groupCallId: groupCallId,\n            isVideo: isVideo,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Invites a user to an active group call; for group calls not bound to a chat only. Sends a service message of the type messageGroupCall. The group call can have at most getOption(\"group_call_participant_count_max\") participants\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isVideo: Pass true if the group call is a video call\n    /// - Parameter userId: User identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func inviteGroupCallParticipant(\n        groupCallId: Int?,\n        isVideo: Bool?,\n        userId: Int64?\n    ) async throws -> InviteGroupCallParticipantResult {\n        let query = InviteGroupCallParticipant(\n            groupCallId: groupCallId,\n            isVideo: isVideo,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Declines an invitation to an active group call via messageGroupCall. Can be called both by the sender and the receiver of the invitation\n    /// - Parameter chatId: Identifier of the chat with the message\n    /// - Parameter messageId: Identifier of the message of the type messageGroupCall\n    public final func declineGroupCallInvitation(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeclineGroupCallInvitation(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Declines an invitation to an active group call via messageGroupCall. Can be called both by the sender and the receiver of the invitation\n    /// - Parameter chatId: Identifier of the chat with the message\n    /// - Parameter messageId: Identifier of the message of the type messageGroupCall\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func declineGroupCallInvitation(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = DeclineGroupCallInvitation(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Bans users from a group call not bound to a chat; requires groupCall.is_owned. Only the owner of the group call can invite the banned users back\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter userIds: Identifiers of group call participants to ban; identifiers of unknown users from the update updateGroupCallParticipants can be also passed to the method\n    public final func banGroupCallParticipants(\n        groupCallId: Int?,\n        userIds: [TdInt64]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = BanGroupCallParticipants(\n            groupCallId: groupCallId,\n            userIds: userIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Bans users from a group call not bound to a chat; requires groupCall.is_owned. Only the owner of the group call can invite the banned users back\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter userIds: Identifiers of group call participants to ban; identifiers of unknown users from the update updateGroupCallParticipants can be also passed to the method\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func banGroupCallParticipants(\n        groupCallId: Int?,\n        userIds: [TdInt64]?\n    ) async throws -> Ok {\n        let query = BanGroupCallParticipants(\n            groupCallId: groupCallId,\n            userIds: userIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Invites users to an active video chat. Sends a service message of the type messageInviteVideoChatParticipants to the chat bound to the group call\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter userIds: User identifiers. At most 10 users can be invited simultaneously\n    public final func inviteVideoChatParticipants(\n        groupCallId: Int?,\n        userIds: [Int64]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = InviteVideoChatParticipants(\n            groupCallId: groupCallId,\n            userIds: userIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Invites users to an active video chat. Sends a service message of the type messageInviteVideoChatParticipants to the chat bound to the group call\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter userIds: User identifiers. At most 10 users can be invited simultaneously\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func inviteVideoChatParticipants(\n        groupCallId: Int?,\n        userIds: [Int64]?\n    ) async throws -> Ok {\n        let query = InviteVideoChatParticipants(\n            groupCallId: groupCallId,\n            userIds: userIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns invite link to a video chat in a public chat\n    /// - Parameter canSelfUnmute: Pass true if the invite link needs to contain an invite hash, passing which to joinVideoChat would allow the invited user to unmute themselves. Requires groupCall.can_be_managed right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Returns: Invite link to a video chat in a public chat\n    public final func getVideoChatInviteLink(\n        canSelfUnmute: Bool?,\n        groupCallId: Int?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetVideoChatInviteLink(\n            canSelfUnmute: canSelfUnmute,\n            groupCallId: groupCallId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns invite link to a video chat in a public chat\n    /// - Parameter canSelfUnmute: Pass true if the invite link needs to contain an invite hash, passing which to joinVideoChat would allow the invited user to unmute themselves. Requires groupCall.can_be_managed right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Returns: Invite link to a video chat in a public chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getVideoChatInviteLink(\n        canSelfUnmute: Bool?,\n        groupCallId: Int?\n    ) async throws -> HttpUrl {\n        let query = GetVideoChatInviteLink(\n            canSelfUnmute: canSelfUnmute,\n            groupCallId: groupCallId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Revokes invite link for a group call. Requires groupCall.can_be_managed right for video chats or groupCall.is_owned otherwise\n    /// - Parameter groupCallId: Group call identifier\n    public final func revokeGroupCallInviteLink(\n        groupCallId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RevokeGroupCallInviteLink(\n            groupCallId: groupCallId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Revokes invite link for a group call. Requires groupCall.can_be_managed right for video chats or groupCall.is_owned otherwise\n    /// - Parameter groupCallId: Group call identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func revokeGroupCallInviteLink(groupCallId: Int?) async throws -> Ok {\n        let query = RevokeGroupCallInviteLink(\n            groupCallId: groupCallId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Starts recording of an active group call; for video chats only. Requires groupCall.can_be_managed right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter recordVideo: Pass true to record a video file instead of an audio file\n    /// - Parameter title: Group call recording title; 0-64 characters\n    /// - Parameter usePortraitOrientation: Pass true to use portrait orientation for video instead of landscape one\n    public final func startGroupCallRecording(\n        groupCallId: Int?,\n        recordVideo: Bool?,\n        title: String?,\n        usePortraitOrientation: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = StartGroupCallRecording(\n            groupCallId: groupCallId,\n            recordVideo: recordVideo,\n            title: title,\n            usePortraitOrientation: usePortraitOrientation\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Starts recording of an active group call; for video chats only. Requires groupCall.can_be_managed right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter recordVideo: Pass true to record a video file instead of an audio file\n    /// - Parameter title: Group call recording title; 0-64 characters\n    /// - Parameter usePortraitOrientation: Pass true to use portrait orientation for video instead of landscape one\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func startGroupCallRecording(\n        groupCallId: Int?,\n        recordVideo: Bool?,\n        title: String?,\n        usePortraitOrientation: Bool?\n    ) async throws -> Ok {\n        let query = StartGroupCallRecording(\n            groupCallId: groupCallId,\n            recordVideo: recordVideo,\n            title: title,\n            usePortraitOrientation: usePortraitOrientation\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Ends recording of an active group call; for video chats only. Requires groupCall.can_be_managed right\n    /// - Parameter groupCallId: Group call identifier\n    public final func endGroupCallRecording(\n        groupCallId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EndGroupCallRecording(\n            groupCallId: groupCallId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Ends recording of an active group call; for video chats only. Requires groupCall.can_be_managed right\n    /// - Parameter groupCallId: Group call identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func endGroupCallRecording(groupCallId: Int?) async throws -> Ok {\n        let query = EndGroupCallRecording(\n            groupCallId: groupCallId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether current user's video is paused\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isMyVideoPaused: Pass true if the current user's video is paused\n    public final func toggleGroupCallIsMyVideoPaused(\n        groupCallId: Int?,\n        isMyVideoPaused: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleGroupCallIsMyVideoPaused(\n            groupCallId: groupCallId,\n            isMyVideoPaused: isMyVideoPaused\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether current user's video is paused\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isMyVideoPaused: Pass true if the current user's video is paused\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleGroupCallIsMyVideoPaused(\n        groupCallId: Int?,\n        isMyVideoPaused: Bool?\n    ) async throws -> Ok {\n        let query = ToggleGroupCallIsMyVideoPaused(\n            groupCallId: groupCallId,\n            isMyVideoPaused: isMyVideoPaused\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether current user's video is enabled\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isMyVideoEnabled: Pass true if the current user's video is enabled\n    public final func toggleGroupCallIsMyVideoEnabled(\n        groupCallId: Int?,\n        isMyVideoEnabled: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleGroupCallIsMyVideoEnabled(\n            groupCallId: groupCallId,\n            isMyVideoEnabled: isMyVideoEnabled\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether current user's video is enabled\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isMyVideoEnabled: Pass true if the current user's video is enabled\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleGroupCallIsMyVideoEnabled(\n        groupCallId: Int?,\n        isMyVideoEnabled: Bool?\n    ) async throws -> Ok {\n        let query = ToggleGroupCallIsMyVideoEnabled(\n            groupCallId: groupCallId,\n            isMyVideoEnabled: isMyVideoEnabled\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the minimum number of Telegram Stars that must be paid by general participant for each sent message to a live story call. Requires groupCall.can_be_managed right\n    /// - Parameter groupCallId: Group call identifier; must be an identifier of a live story call\n    /// - Parameter paidMessageStarCount: The new minimum number of Telegram Stars; 0-getOption(\"paid_group_call_message_star_count_max\")\n    public final func setGroupCallPaidMessageStarCount(\n        groupCallId: Int?,\n        paidMessageStarCount: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetGroupCallPaidMessageStarCount(\n            groupCallId: groupCallId,\n            paidMessageStarCount: paidMessageStarCount\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the minimum number of Telegram Stars that must be paid by general participant for each sent message to a live story call. Requires groupCall.can_be_managed right\n    /// - Parameter groupCallId: Group call identifier; must be an identifier of a live story call\n    /// - Parameter paidMessageStarCount: The new minimum number of Telegram Stars; 0-getOption(\"paid_group_call_message_star_count_max\")\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setGroupCallPaidMessageStarCount(\n        groupCallId: Int?,\n        paidMessageStarCount: Int64?\n    ) async throws -> Ok {\n        let query = SetGroupCallPaidMessageStarCount(\n            groupCallId: groupCallId,\n            paidMessageStarCount: paidMessageStarCount\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that speaking state of a participant of an active group call has changed. Returns identifier of the participant if it is found\n    /// - Parameter audioSource: Group call participant's synchronization audio source identifier, or 0 for the current user\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isSpeaking: Pass true if the user is speaking\n    /// - Returns: Identifier of the participant if it is found\n    public final func setGroupCallParticipantIsSpeaking(\n        audioSource: Int?,\n        groupCallId: Int?,\n        isSpeaking: Bool?,\n        completion: @escaping (Result<MessageSender, Swift.Error>) -> Void\n    ) throws {\n        let query = SetGroupCallParticipantIsSpeaking(\n            audioSource: audioSource,\n            groupCallId: groupCallId,\n            isSpeaking: isSpeaking\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that speaking state of a participant of an active group call has changed. Returns identifier of the participant if it is found\n    /// - Parameter audioSource: Group call participant's synchronization audio source identifier, or 0 for the current user\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isSpeaking: Pass true if the user is speaking\n    /// - Returns: Identifier of the participant if it is found\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func setGroupCallParticipantIsSpeaking(\n        audioSource: Int?,\n        groupCallId: Int?,\n        isSpeaking: Bool?\n    ) async throws -> MessageSender {\n        let query = SetGroupCallParticipantIsSpeaking(\n            audioSource: audioSource,\n            groupCallId: groupCallId,\n            isSpeaking: isSpeaking\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether a participant of an active group call is muted, unmuted, or allowed to unmute themselves; not supported for live stories\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isMuted: Pass true to mute the user; pass false to unmute them\n    /// - Parameter participantId: Participant identifier\n    public final func toggleGroupCallParticipantIsMuted(\n        groupCallId: Int?,\n        isMuted: Bool?,\n        participantId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleGroupCallParticipantIsMuted(\n            groupCallId: groupCallId,\n            isMuted: isMuted,\n            participantId: participantId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether a participant of an active group call is muted, unmuted, or allowed to unmute themselves; not supported for live stories\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isMuted: Pass true to mute the user; pass false to unmute them\n    /// - Parameter participantId: Participant identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleGroupCallParticipantIsMuted(\n        groupCallId: Int?,\n        isMuted: Bool?,\n        participantId: MessageSender?\n    ) async throws -> Ok {\n        let query = ToggleGroupCallParticipantIsMuted(\n            groupCallId: groupCallId,\n            isMuted: isMuted,\n            participantId: participantId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes volume level of a participant of an active group call; not supported for live stories. If the current user can manage the group call or is the owner of the group call, then the participant's volume level will be changed for all users with the default volume level\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter participantId: Participant identifier\n    /// - Parameter volumeLevel: New participant's volume level; 1-20000 in hundreds of percents\n    public final func setGroupCallParticipantVolumeLevel(\n        groupCallId: Int?,\n        participantId: MessageSender?,\n        volumeLevel: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetGroupCallParticipantVolumeLevel(\n            groupCallId: groupCallId,\n            participantId: participantId,\n            volumeLevel: volumeLevel\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes volume level of a participant of an active group call; not supported for live stories. If the current user can manage the group call or is the owner of the group call, then the participant's volume level will be changed for all users with the default volume level\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter participantId: Participant identifier\n    /// - Parameter volumeLevel: New participant's volume level; 1-20000 in hundreds of percents\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setGroupCallParticipantVolumeLevel(\n        groupCallId: Int?,\n        participantId: MessageSender?,\n        volumeLevel: Int?\n    ) async throws -> Ok {\n        let query = SetGroupCallParticipantVolumeLevel(\n            groupCallId: groupCallId,\n            participantId: participantId,\n            volumeLevel: volumeLevel\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether a group call participant hand is rased; for video chats only\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isHandRaised: Pass true if the user's hand needs to be raised. Only self hand can be raised. Requires groupCall.can_be_managed right to lower other's hand\n    /// - Parameter participantId: Participant identifier\n    public final func toggleGroupCallParticipantIsHandRaised(\n        groupCallId: Int?,\n        isHandRaised: Bool?,\n        participantId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleGroupCallParticipantIsHandRaised(\n            groupCallId: groupCallId,\n            isHandRaised: isHandRaised,\n            participantId: participantId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether a group call participant hand is rased; for video chats only\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isHandRaised: Pass true if the user's hand needs to be raised. Only self hand can be raised. Requires groupCall.can_be_managed right to lower other's hand\n    /// - Parameter participantId: Participant identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleGroupCallParticipantIsHandRaised(\n        groupCallId: Int?,\n        isHandRaised: Bool?,\n        participantId: MessageSender?\n    ) async throws -> Ok {\n        let query = ToggleGroupCallParticipantIsHandRaised(\n            groupCallId: groupCallId,\n            isHandRaised: isHandRaised,\n            participantId: participantId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about participants of a non-joined group call that is not bound to a chat\n    /// - Parameter inputGroupCall: The group call which participants will be returned\n    /// - Parameter limit: The maximum number of participants to return; must be positive\n    /// - Returns: Information about participants of a non-joined group call that is not bound to a chat\n    public final func getGroupCallParticipants(\n        inputGroupCall: InputGroupCall?,\n        limit: Int?,\n        completion: @escaping (Result<GroupCallParticipants, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGroupCallParticipants(\n            inputGroupCall: inputGroupCall,\n            limit: limit\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about participants of a non-joined group call that is not bound to a chat\n    /// - Parameter inputGroupCall: The group call which participants will be returned\n    /// - Parameter limit: The maximum number of participants to return; must be positive\n    /// - Returns: Information about participants of a non-joined group call that is not bound to a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getGroupCallParticipants(\n        inputGroupCall: InputGroupCall?,\n        limit: Int?\n    ) async throws -> GroupCallParticipants {\n        let query = GetGroupCallParticipants(\n            inputGroupCall: inputGroupCall,\n            limit: limit\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Loads more participants of a group call; not supported in live stories. The loaded participants will be received through updates. Use the field groupCall.loaded_all_participants to check whether all participants have already been loaded\n    /// - Parameter groupCallId: Group call identifier. The group call must be previously received through getGroupCall and must be joined or being joined\n    /// - Parameter limit: The maximum number of participants to load; up to 100\n    public final func loadGroupCallParticipants(\n        groupCallId: Int?,\n        limit: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = LoadGroupCallParticipants(\n            groupCallId: groupCallId,\n            limit: limit\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Loads more participants of a group call; not supported in live stories. The loaded participants will be received through updates. Use the field groupCall.loaded_all_participants to check whether all participants have already been loaded\n    /// - Parameter groupCallId: Group call identifier. The group call must be previously received through getGroupCall and must be joined or being joined\n    /// - Parameter limit: The maximum number of participants to load; up to 100\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func loadGroupCallParticipants(\n        groupCallId: Int?,\n        limit: Int?\n    ) async throws -> Ok {\n        let query = LoadGroupCallParticipants(\n            groupCallId: groupCallId,\n            limit: limit\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Leaves a group call\n    /// - Parameter groupCallId: Group call identifier\n    public final func leaveGroupCall(\n        groupCallId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = LeaveGroupCall(\n            groupCallId: groupCallId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Leaves a group call\n    /// - Parameter groupCallId: Group call identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func leaveGroupCall(groupCallId: Int?) async throws -> Ok {\n        let query = LeaveGroupCall(\n            groupCallId: groupCallId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Ends a group call. Requires groupCall.can_be_managed right for video chats and live stories or groupCall.is_owned otherwise\n    /// - Parameter groupCallId: Group call identifier\n    public final func endGroupCall(\n        groupCallId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EndGroupCall(\n            groupCallId: groupCallId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Ends a group call. Requires groupCall.can_be_managed right for video chats and live stories or groupCall.is_owned otherwise\n    /// - Parameter groupCallId: Group call identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func endGroupCall(groupCallId: Int?) async throws -> Ok {\n        let query = EndGroupCall(\n            groupCallId: groupCallId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about available streams in a video chat or a live story\n    /// - Parameter groupCallId: Group call identifier\n    /// - Returns: Information about available streams in a video chat or a live story\n    public final func getGroupCallStreams(\n        groupCallId: Int?,\n        completion: @escaping (Result<GroupCallStreams, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGroupCallStreams(\n            groupCallId: groupCallId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about available streams in a video chat or a live story\n    /// - Parameter groupCallId: Group call identifier\n    /// - Returns: Information about available streams in a video chat or a live story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getGroupCallStreams(groupCallId: Int?) async throws -> GroupCallStreams {\n        let query = GetGroupCallStreams(\n            groupCallId: groupCallId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a file with a segment of a video chat or live story in a modified OGG format for audio or MPEG-4 format for video\n    /// - Parameter channelId: Identifier of an audio/video channel to get as received from tgcalls\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter scale: Segment duration scale; 0-1. Segment's duration is 1000/(2**scale) milliseconds\n    /// - Parameter timeOffset: Point in time when the stream segment begins; Unix timestamp in milliseconds\n    /// - Parameter videoQuality: Video quality as received from tgcalls; pass null to get the worst available quality\n    /// - Returns: A file with a segment of a video chat or live story in a modified OGG format for audio or MPEG-4 format for video\n    public final func getGroupCallStreamSegment(\n        channelId: Int?,\n        groupCallId: Int?,\n        scale: Int?,\n        timeOffset: Int64?,\n        videoQuality: GroupCallVideoQuality?,\n        completion: @escaping (Result<TdData, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGroupCallStreamSegment(\n            channelId: channelId,\n            groupCallId: groupCallId,\n            scale: scale,\n            timeOffset: timeOffset,\n            videoQuality: videoQuality\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a file with a segment of a video chat or live story in a modified OGG format for audio or MPEG-4 format for video\n    /// - Parameter channelId: Identifier of an audio/video channel to get as received from tgcalls\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter scale: Segment duration scale; 0-1. Segment's duration is 1000/(2**scale) milliseconds\n    /// - Parameter timeOffset: Point in time when the stream segment begins; Unix timestamp in milliseconds\n    /// - Parameter videoQuality: Video quality as received from tgcalls; pass null to get the worst available quality\n    /// - Returns: A file with a segment of a video chat or live story in a modified OGG format for audio or MPEG-4 format for video\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getGroupCallStreamSegment(\n        channelId: Int?,\n        groupCallId: Int?,\n        scale: Int?,\n        timeOffset: Int64?,\n        videoQuality: GroupCallVideoQuality?\n    ) async throws -> TdData {\n        let query = GetGroupCallStreamSegment(\n            channelId: channelId,\n            groupCallId: groupCallId,\n            scale: scale,\n            timeOffset: timeOffset,\n            videoQuality: videoQuality\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Encrypts group call data before sending them over network using tgcalls\n    /// - Parameter data: Data to encrypt\n    /// - Parameter dataChannel: Data channel for which data is encrypted\n    /// - Parameter groupCallId: Group call identifier. The call must not be a video chat\n    /// - Parameter unencryptedPrefixSize: Size of data prefix that must be kept unencrypted\n    public final func encryptGroupCallData(\n        data: Data?,\n        dataChannel: GroupCallDataChannel?,\n        groupCallId: Int?,\n        unencryptedPrefixSize: Int?,\n        completion: @escaping (Result<TdData, Swift.Error>) -> Void\n    ) throws {\n        let query = EncryptGroupCallData(\n            data: data,\n            dataChannel: dataChannel,\n            groupCallId: groupCallId,\n            unencryptedPrefixSize: unencryptedPrefixSize\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Encrypts group call data before sending them over network using tgcalls\n    /// - Parameter data: Data to encrypt\n    /// - Parameter dataChannel: Data channel for which data is encrypted\n    /// - Parameter groupCallId: Group call identifier. The call must not be a video chat\n    /// - Parameter unencryptedPrefixSize: Size of data prefix that must be kept unencrypted\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func encryptGroupCallData(\n        data: Data?,\n        dataChannel: GroupCallDataChannel?,\n        groupCallId: Int?,\n        unencryptedPrefixSize: Int?\n    ) async throws -> TdData {\n        let query = EncryptGroupCallData(\n            data: data,\n            dataChannel: dataChannel,\n            groupCallId: groupCallId,\n            unencryptedPrefixSize: unencryptedPrefixSize\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Decrypts group call data received by tgcalls\n    /// - Parameter data: Data to decrypt\n    /// - Parameter dataChannel: Data channel for which data was encrypted; pass null if unknown\n    /// - Parameter groupCallId: Group call identifier. The call must not be a video chat\n    /// - Parameter participantId: Identifier of the group call participant, which sent the data\n    public final func decryptGroupCallData(\n        data: Data?,\n        dataChannel: GroupCallDataChannel?,\n        groupCallId: Int?,\n        participantId: MessageSender?,\n        completion: @escaping (Result<TdData, Swift.Error>) -> Void\n    ) throws {\n        let query = DecryptGroupCallData(\n            data: data,\n            dataChannel: dataChannel,\n            groupCallId: groupCallId,\n            participantId: participantId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Decrypts group call data received by tgcalls\n    /// - Parameter data: Data to decrypt\n    /// - Parameter dataChannel: Data channel for which data was encrypted; pass null if unknown\n    /// - Parameter groupCallId: Group call identifier. The call must not be a video chat\n    /// - Parameter participantId: Identifier of the group call participant, which sent the data\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func decryptGroupCallData(\n        data: Data?,\n        dataChannel: GroupCallDataChannel?,\n        groupCallId: Int?,\n        participantId: MessageSender?\n    ) async throws -> TdData {\n        let query = DecryptGroupCallData(\n            data: data,\n            dataChannel: dataChannel,\n            groupCallId: groupCallId,\n            participantId: participantId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the block list of a message sender. Currently, only users and supergroup chats can be blocked\n    /// - Parameter blockList: New block list for the message sender; pass null to unblock the message sender\n    /// - Parameter senderId: Identifier of a message sender to block/unblock\n    public final func setMessageSenderBlockList(\n        blockList: BlockList?,\n        senderId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetMessageSenderBlockList(\n            blockList: blockList,\n            senderId: senderId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the block list of a message sender. Currently, only users and supergroup chats can be blocked\n    /// - Parameter blockList: New block list for the message sender; pass null to unblock the message sender\n    /// - Parameter senderId: Identifier of a message sender to block/unblock\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setMessageSenderBlockList(\n        blockList: BlockList?,\n        senderId: MessageSender?\n    ) async throws -> Ok {\n        let query = SetMessageSenderBlockList(\n            blockList: blockList,\n            senderId: senderId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Blocks an original sender of a message in the Replies chat\n    /// - Parameter deleteAllMessages: Pass true to delete all messages from the same sender\n    /// - Parameter deleteMessage: Pass true to delete the message\n    /// - Parameter messageId: The identifier of an incoming message in the Replies chat\n    /// - Parameter reportSpam: Pass true to report the sender to the Telegram moderators\n    public final func blockMessageSenderFromReplies(\n        deleteAllMessages: Bool?,\n        deleteMessage: Bool?,\n        messageId: Int64?,\n        reportSpam: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = BlockMessageSenderFromReplies(\n            deleteAllMessages: deleteAllMessages,\n            deleteMessage: deleteMessage,\n            messageId: messageId,\n            reportSpam: reportSpam\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Blocks an original sender of a message in the Replies chat\n    /// - Parameter deleteAllMessages: Pass true to delete all messages from the same sender\n    /// - Parameter deleteMessage: Pass true to delete the message\n    /// - Parameter messageId: The identifier of an incoming message in the Replies chat\n    /// - Parameter reportSpam: Pass true to report the sender to the Telegram moderators\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func blockMessageSenderFromReplies(\n        deleteAllMessages: Bool?,\n        deleteMessage: Bool?,\n        messageId: Int64?,\n        reportSpam: Bool?\n    ) async throws -> Ok {\n        let query = BlockMessageSenderFromReplies(\n            deleteAllMessages: deleteAllMessages,\n            deleteMessage: deleteMessage,\n            messageId: messageId,\n            reportSpam: reportSpam\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns users and chats that were blocked by the current user\n    /// - Parameter blockList: Block list from which to return users\n    /// - Parameter limit: The maximum number of users and chats to return; up to 100\n    /// - Parameter offset: Number of users and chats to skip in the result; must be non-negative\n    /// - Returns: Users and chats that were blocked by the current user\n    public final func getBlockedMessageSenders(\n        blockList: BlockList?,\n        limit: Int?,\n        offset: Int?,\n        completion: @escaping (Result<MessageSenders, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBlockedMessageSenders(\n            blockList: blockList,\n            limit: limit,\n            offset: offset\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns users and chats that were blocked by the current user\n    /// - Parameter blockList: Block list from which to return users\n    /// - Parameter limit: The maximum number of users and chats to return; up to 100\n    /// - Parameter offset: Number of users and chats to skip in the result; must be non-negative\n    /// - Returns: Users and chats that were blocked by the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getBlockedMessageSenders(\n        blockList: BlockList?,\n        limit: Int?,\n        offset: Int?\n    ) async throws -> MessageSenders {\n        let query = GetBlockedMessageSenders(\n            blockList: blockList,\n            limit: limit,\n            offset: offset\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds a user to the contact list or edits an existing contact by their user identifier\n    /// - Parameter contact: The contact to add or edit; phone number may be empty and needs to be specified only if known\n    /// - Parameter sharePhoneNumber: Pass true to share the current user's phone number with the new contact. A corresponding rule to userPrivacySettingShowPhoneNumber will be added if needed. Use the field userFullInfo.need_phone_number_privacy_exception to check whether the current user needs to be asked to share their phone number\n    /// - Parameter userId: Identifier of the user\n    public final func addContact(\n        contact: ImportedContact?,\n        sharePhoneNumber: Bool?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddContact(\n            contact: contact,\n            sharePhoneNumber: sharePhoneNumber,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds a user to the contact list or edits an existing contact by their user identifier\n    /// - Parameter contact: The contact to add or edit; phone number may be empty and needs to be specified only if known\n    /// - Parameter sharePhoneNumber: Pass true to share the current user's phone number with the new contact. A corresponding rule to userPrivacySettingShowPhoneNumber will be added if needed. Use the field userFullInfo.need_phone_number_privacy_exception to check whether the current user needs to be asked to share their phone number\n    /// - Parameter userId: Identifier of the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func addContact(\n        contact: ImportedContact?,\n        sharePhoneNumber: Bool?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = AddContact(\n            contact: contact,\n            sharePhoneNumber: sharePhoneNumber,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds new contacts or edits existing contacts by their phone numbers; contacts' user identifiers are ignored\n    /// - Parameter contacts: The list of contacts to import or edit\n    public final func importContacts(\n        contacts: [ImportedContact]?,\n        completion: @escaping (Result<ImportedContacts, Swift.Error>) -> Void\n    ) throws {\n        let query = ImportContacts(\n            contacts: contacts\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds new contacts or edits existing contacts by their phone numbers; contacts' user identifiers are ignored\n    /// - Parameter contacts: The list of contacts to import or edit\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func importContacts(contacts: [ImportedContact]?) async throws -> ImportedContacts {\n        let query = ImportContacts(\n            contacts: contacts\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns all contacts of the user\n    /// - Returns: All contacts of the user\n    public final func getContacts(completion: @escaping (Result<Users, Swift.Error>) -> Void) throws {\n        let query = GetContacts()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns all contacts of the user\n    /// - Returns: All contacts of the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getContacts() async throws -> Users {\n        let query = GetContacts()\n        return try await self.run(query: query)\n    }\n\n    /// Searches for the specified query in the first names, last names and usernames of the known user contacts\n    /// - Parameter limit: The maximum number of users to be returned\n    /// - Parameter query: Query to search for; may be empty to return all contacts\n    public final func searchContacts(\n        limit: Int?,\n        query: String?,\n        completion: @escaping (Result<Users, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchContacts(\n            limit: limit,\n            query: query\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for the specified query in the first names, last names and usernames of the known user contacts\n    /// - Parameter limit: The maximum number of users to be returned\n    /// - Parameter query: Query to search for; may be empty to return all contacts\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchContacts(\n        limit: Int?,\n        query: String?\n    ) async throws -> Users {\n        let query = SearchContacts(\n            limit: limit,\n            query: query\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes users from the contact list\n    /// - Parameter userIds: Identifiers of users to be deleted\n    public final func removeContacts(\n        userIds: [Int64]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveContacts(\n            userIds: userIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes users from the contact list\n    /// - Parameter userIds: Identifiers of users to be deleted\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeContacts(userIds: [Int64]?) async throws -> Ok {\n        let query = RemoveContacts(\n            userIds: userIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the total number of imported contacts\n    /// - Returns: The total number of imported contacts\n    public final func getImportedContactCount(completion: @escaping (Result<Count, Swift.Error>) -> Void) throws {\n        let query = GetImportedContactCount()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the total number of imported contacts\n    /// - Returns: The total number of imported contacts\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getImportedContactCount() async throws -> Count {\n        let query = GetImportedContactCount()\n        return try await self.run(query: query)\n    }\n\n    /// Changes imported contacts using the list of contacts saved on the device. Imports newly added contacts and, if at least the file database is enabled, deletes recently deleted contacts. Query result depends on the result of the previous query, so only one query is possible at the same time\n    /// - Parameter contacts: The new list of contacts to import\n    public final func changeImportedContacts(\n        contacts: [ImportedContact]?,\n        completion: @escaping (Result<ImportedContacts, Swift.Error>) -> Void\n    ) throws {\n        let query = ChangeImportedContacts(\n            contacts: contacts\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes imported contacts using the list of contacts saved on the device. Imports newly added contacts and, if at least the file database is enabled, deletes recently deleted contacts. Query result depends on the result of the previous query, so only one query is possible at the same time\n    /// - Parameter contacts: The new list of contacts to import\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func changeImportedContacts(contacts: [ImportedContact]?) async throws -> ImportedContacts {\n        let query = ChangeImportedContacts(\n            contacts: contacts\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Clears all imported contacts, contact list remains unchanged\n    public final func clearImportedContacts(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ClearImportedContacts()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Clears all imported contacts, contact list remains unchanged\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func clearImportedContacts() async throws -> Ok {\n        let query = ClearImportedContacts()\n        return try await self.run(query: query)\n    }\n\n    /// Changes the list of close friends of the current user\n    /// - Parameter userIds: User identifiers of close friends; the users must be contacts of the current user\n    public final func setCloseFriends(\n        userIds: [Int64]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetCloseFriends(\n            userIds: userIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the list of close friends of the current user\n    /// - Parameter userIds: User identifiers of close friends; the users must be contacts of the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setCloseFriends(userIds: [Int64]?) async throws -> Ok {\n        let query = SetCloseFriends(\n            userIds: userIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns all close friends of the current user\n    /// - Returns: All close friends of the current user\n    public final func getCloseFriends(completion: @escaping (Result<Users, Swift.Error>) -> Void) throws {\n        let query = GetCloseFriends()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns all close friends of the current user\n    /// - Returns: All close friends of the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getCloseFriends() async throws -> Users {\n        let query = GetCloseFriends()\n        return try await self.run(query: query)\n    }\n\n    /// Changes a personal profile photo of a contact user\n    /// - Parameter photo: Profile photo to set; pass null to delete the photo; inputChatPhotoPrevious isn't supported in this function\n    /// - Parameter userId: User identifier\n    public final func setUserPersonalProfilePhoto(\n        photo: InputChatPhoto?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetUserPersonalProfilePhoto(\n            photo: photo,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes a personal profile photo of a contact user\n    /// - Parameter photo: Profile photo to set; pass null to delete the photo; inputChatPhotoPrevious isn't supported in this function\n    /// - Parameter userId: User identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setUserPersonalProfilePhoto(\n        photo: InputChatPhoto?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = SetUserPersonalProfilePhoto(\n            photo: photo,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes a note of a contact user\n    /// - Parameter note: Note to set for the user; 0-getOption(\"user_note_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed\n    /// - Parameter userId: User identifier\n    public final func setUserNote(\n        note: FormattedText?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetUserNote(\n            note: note,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes a note of a contact user\n    /// - Parameter note: Note to set for the user; 0-getOption(\"user_note_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed\n    /// - Parameter userId: User identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setUserNote(\n        note: FormattedText?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = SetUserNote(\n            note: note,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Suggests a profile photo to another regular user with common messages and allowing non-paid messages\n    /// - Parameter photo: Profile photo to suggest; inputChatPhotoPrevious isn't supported in this function\n    /// - Parameter userId: User identifier\n    public final func suggestUserProfilePhoto(\n        photo: InputChatPhoto?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SuggestUserProfilePhoto(\n            photo: photo,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Suggests a profile photo to another regular user with common messages and allowing non-paid messages\n    /// - Parameter photo: Profile photo to suggest; inputChatPhotoPrevious isn't supported in this function\n    /// - Parameter userId: User identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func suggestUserProfilePhoto(\n        photo: InputChatPhoto?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = SuggestUserProfilePhoto(\n            photo: photo,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Suggests a birthdate to another regular user with common messages and allowing non-paid messages\n    /// - Parameter birthdate: Birthdate to suggest\n    /// - Parameter userId: User identifier\n    public final func suggestUserBirthdate(\n        birthdate: Birthdate?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SuggestUserBirthdate(\n            birthdate: birthdate,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Suggests a birthdate to another regular user with common messages and allowing non-paid messages\n    /// - Parameter birthdate: Birthdate to suggest\n    /// - Parameter userId: User identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func suggestUserBirthdate(\n        birthdate: Birthdate?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = SuggestUserBirthdate(\n            birthdate: birthdate,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether the bot can manage emoji status of the current user\n    /// - Parameter botUserId: User identifier of the bot\n    /// - Parameter canManageEmojiStatus: Pass true if the bot is allowed to change emoji status of the user; pass false otherwise\n    public final func toggleBotCanManageEmojiStatus(\n        botUserId: Int64?,\n        canManageEmojiStatus: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleBotCanManageEmojiStatus(\n            botUserId: botUserId,\n            canManageEmojiStatus: canManageEmojiStatus\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether the bot can manage emoji status of the current user\n    /// - Parameter botUserId: User identifier of the bot\n    /// - Parameter canManageEmojiStatus: Pass true if the bot is allowed to change emoji status of the user; pass false otherwise\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleBotCanManageEmojiStatus(\n        botUserId: Int64?,\n        canManageEmojiStatus: Bool?\n    ) async throws -> Ok {\n        let query = ToggleBotCanManageEmojiStatus(\n            botUserId: botUserId,\n            canManageEmojiStatus: canManageEmojiStatus\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the emoji status of a user; for bots only\n    /// - Parameter emojiStatus: New emoji status; pass null to switch to the default badge\n    /// - Parameter userId: Identifier of the user\n    public final func setUserEmojiStatus(\n        emojiStatus: EmojiStatus?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetUserEmojiStatus(\n            emojiStatus: emojiStatus,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the emoji status of a user; for bots only\n    /// - Parameter emojiStatus: New emoji status; pass null to switch to the default badge\n    /// - Parameter userId: Identifier of the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setUserEmojiStatus(\n        emojiStatus: EmojiStatus?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = SetUserEmojiStatus(\n            emojiStatus: emojiStatus,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns messages in the personal chat of a given user; for bots only\n    /// - Parameter limit: The maximum number of messages to be returned; 1-20\n    /// - Parameter userId: User identifier\n    /// - Returns: Messages in the personal chat of a given user\n    public final func getPersonalChatHistory(\n        limit: Int?,\n        userId: Int64?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPersonalChatHistory(\n            limit: limit,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns messages in the personal chat of a given user; for bots only\n    /// - Parameter limit: The maximum number of messages to be returned; 1-20\n    /// - Parameter userId: User identifier\n    /// - Returns: Messages in the personal chat of a given user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPersonalChatHistory(\n        limit: Int?,\n        userId: Int64?\n    ) async throws -> Messages {\n        let query = GetPersonalChatHistory(\n            limit: limit,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches a user by their phone number. Returns a 404 error if the user can't be found\n    /// - Parameter onlyLocal: Pass true to get only locally available information without sending network requests\n    /// - Parameter phoneNumber: Phone number to search for\n    /// - Returns: A 404 error if the user can't be found\n    public final func searchUserByPhoneNumber(\n        onlyLocal: Bool?,\n        phoneNumber: String?,\n        completion: @escaping (Result<User, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchUserByPhoneNumber(\n            onlyLocal: onlyLocal,\n            phoneNumber: phoneNumber\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches a user by their phone number. Returns a 404 error if the user can't be found\n    /// - Parameter onlyLocal: Pass true to get only locally available information without sending network requests\n    /// - Parameter phoneNumber: Phone number to search for\n    /// - Returns: A 404 error if the user can't be found\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchUserByPhoneNumber(\n        onlyLocal: Bool?,\n        phoneNumber: String?\n    ) async throws -> User {\n        let query = SearchUserByPhoneNumber(\n            onlyLocal: onlyLocal,\n            phoneNumber: phoneNumber\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Shares the phone number of the current user with a mutual contact. Supposed to be called when the user clicks on chatActionBarSharePhoneNumber\n    /// - Parameter userId: Identifier of the user with whom to share the phone number. The user must be a mutual contact\n    public final func sharePhoneNumber(\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SharePhoneNumber(\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Shares the phone number of the current user with a mutual contact. Supposed to be called when the user clicks on chatActionBarSharePhoneNumber\n    /// - Parameter userId: Identifier of the user with whom to share the phone number. The user must be a mutual contact\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func sharePhoneNumber(userId: Int64?) async throws -> Ok {\n        let query = SharePhoneNumber(\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the profile photos of a user. Personal and public photo aren't returned\n    /// - Parameter limit: The maximum number of photos to be returned; up to 100\n    /// - Parameter offset: The number of photos to skip; must be non-negative\n    /// - Parameter userId: User identifier\n    /// - Returns: The profile photos of a user. Personal and public photo aren't returned\n    public final func getUserProfilePhotos(\n        limit: Int?,\n        offset: Int?,\n        userId: Int64?,\n        completion: @escaping (Result<ChatPhotos, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUserProfilePhotos(\n            limit: limit,\n            offset: offset,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the profile photos of a user. Personal and public photo aren't returned\n    /// - Parameter limit: The maximum number of photos to be returned; up to 100\n    /// - Parameter offset: The number of photos to skip; must be non-negative\n    /// - Parameter userId: User identifier\n    /// - Returns: The profile photos of a user. Personal and public photo aren't returned\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getUserProfilePhotos(\n        limit: Int?,\n        offset: Int?,\n        userId: Int64?\n    ) async throws -> ChatPhotos {\n        let query = GetUserProfilePhotos(\n            limit: limit,\n            offset: offset,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of profile audio files of a user\n    /// - Parameter limit: The maximum number of audio files to be returned; up to 100\n    /// - Parameter offset: The number of audio files to skip; must be non-negative\n    /// - Parameter userId: User identifier\n    /// - Returns: The list of profile audio files of a user\n    public final func getUserProfileAudios(\n        limit: Int?,\n        offset: Int?,\n        userId: Int64?,\n        completion: @escaping (Result<Audios, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUserProfileAudios(\n            limit: limit,\n            offset: offset,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of profile audio files of a user\n    /// - Parameter limit: The maximum number of audio files to be returned; up to 100\n    /// - Parameter offset: The number of audio files to skip; must be non-negative\n    /// - Parameter userId: User identifier\n    /// - Returns: The list of profile audio files of a user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getUserProfileAudios(\n        limit: Int?,\n        offset: Int?,\n        userId: Int64?\n    ) async throws -> Audios {\n        let query = GetUserProfileAudios(\n            limit: limit,\n            offset: offset,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks whether a file is in the profile audio files of the current user. Returns a 404 error if it isn't\n    /// - Parameter fileId: Identifier of the audio file to check\n    /// - Returns: A 404 error if it isn't\n    public final func isProfileAudio(\n        fileId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = IsProfileAudio(\n            fileId: fileId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks whether a file is in the profile audio files of the current user. Returns a 404 error if it isn't\n    /// - Parameter fileId: Identifier of the audio file to check\n    /// - Returns: A 404 error if it isn't\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func isProfileAudio(fileId: Int?) async throws -> Ok {\n        let query = IsProfileAudio(\n            fileId: fileId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds an audio file to the beginning of the profile audio files of the current user\n    /// - Parameter audio: The audio file to be added\n    /// - Parameter duration: Duration of the audio, in seconds; may be replaced by the server; ignored for already uploaded files\n    /// - Parameter performer: Performer of the audio; 0-64 characters, may be replaced by the server; ignored for already uploaded files\n    /// - Parameter title: Title of the audio; 0-64 characters; may be replaced by the server; ignored for already uploaded files\n    public final func addProfileAudio(\n        audio: InputFile?,\n        duration: Int?,\n        performer: String?,\n        title: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddProfileAudio(\n            audio: audio,\n            duration: duration,\n            performer: performer,\n            title: title\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds an audio file to the beginning of the profile audio files of the current user\n    /// - Parameter audio: The audio file to be added\n    /// - Parameter duration: Duration of the audio, in seconds; may be replaced by the server; ignored for already uploaded files\n    /// - Parameter performer: Performer of the audio; 0-64 characters, may be replaced by the server; ignored for already uploaded files\n    /// - Parameter title: Title of the audio; 0-64 characters; may be replaced by the server; ignored for already uploaded files\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func addProfileAudio(\n        audio: InputFile?,\n        duration: Int?,\n        performer: String?,\n        title: String?\n    ) async throws -> Ok {\n        let query = AddProfileAudio(\n            audio: audio,\n            duration: duration,\n            performer: performer,\n            title: title\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes position of an audio file in the profile audio files of the current user\n    /// - Parameter afterFileId: Identifier of the file from profile audio files after which the file will be positioned; pass 0 to move the file to the beginning of the list\n    /// - Parameter fileId: Identifier of the file from profile audio files, which position will be changed\n    public final func setProfileAudioPosition(\n        afterFileId: Int?,\n        fileId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetProfileAudioPosition(\n            afterFileId: afterFileId,\n            fileId: fileId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes position of an audio file in the profile audio files of the current user\n    /// - Parameter afterFileId: Identifier of the file from profile audio files after which the file will be positioned; pass 0 to move the file to the beginning of the list\n    /// - Parameter fileId: Identifier of the file from profile audio files, which position will be changed\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setProfileAudioPosition(\n        afterFileId: Int?,\n        fileId: Int?\n    ) async throws -> Ok {\n        let query = SetProfileAudioPosition(\n            afterFileId: afterFileId,\n            fileId: fileId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes an audio file from the profile audio files of the current user\n    /// - Parameter fileId: Identifier of the audio file to be removed\n    public final func removeProfileAudio(\n        fileId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveProfileAudio(\n            fileId: fileId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes an audio file from the profile audio files of the current user\n    /// - Parameter fileId: Identifier of the audio file to be removed\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeProfileAudio(fileId: Int?) async throws -> Ok {\n        let query = RemoveProfileAudio(\n            fileId: fileId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns outline of a sticker. This is an offline method. Returns a 404 error if the outline isn't known\n    /// - Parameter forAnimatedEmoji: Pass true to get the outline scaled for animated emoji\n    /// - Parameter forClickedAnimatedEmojiMessage: Pass true to get the outline scaled for clicked animated emoji message\n    /// - Parameter stickerFileId: File identifier of the sticker\n    /// - Returns: Outline of a sticker. Returns a 404 error if the outline isn't known\n    public final func getStickerOutline(\n        forAnimatedEmoji: Bool?,\n        forClickedAnimatedEmojiMessage: Bool?,\n        stickerFileId: Int?,\n        completion: @escaping (Result<Outline, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStickerOutline(\n            forAnimatedEmoji: forAnimatedEmoji,\n            forClickedAnimatedEmojiMessage: forClickedAnimatedEmojiMessage,\n            stickerFileId: stickerFileId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns outline of a sticker. This is an offline method. Returns a 404 error if the outline isn't known\n    /// - Parameter forAnimatedEmoji: Pass true to get the outline scaled for animated emoji\n    /// - Parameter forClickedAnimatedEmojiMessage: Pass true to get the outline scaled for clicked animated emoji message\n    /// - Parameter stickerFileId: File identifier of the sticker\n    /// - Returns: Outline of a sticker. Returns a 404 error if the outline isn't known\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStickerOutline(\n        forAnimatedEmoji: Bool?,\n        forClickedAnimatedEmojiMessage: Bool?,\n        stickerFileId: Int?\n    ) async throws -> Outline {\n        let query = GetStickerOutline(\n            forAnimatedEmoji: forAnimatedEmoji,\n            forClickedAnimatedEmojiMessage: forClickedAnimatedEmojiMessage,\n            stickerFileId: stickerFileId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns outline of a sticker as an SVG path. This is an offline method. Returns an empty string if the outline isn't known\n    /// - Parameter forAnimatedEmoji: Pass true to get the outline scaled for animated emoji\n    /// - Parameter forClickedAnimatedEmojiMessage: Pass true to get the outline scaled for clicked animated emoji message\n    /// - Parameter stickerFileId: File identifier of the sticker\n    /// - Returns: Outline of a sticker as an SVG path. Returns an empty string if the outline isn't known\n    public final func getStickerOutlineSvgPath(\n        forAnimatedEmoji: Bool?,\n        forClickedAnimatedEmojiMessage: Bool?,\n        stickerFileId: Int?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStickerOutlineSvgPath(\n            forAnimatedEmoji: forAnimatedEmoji,\n            forClickedAnimatedEmojiMessage: forClickedAnimatedEmojiMessage,\n            stickerFileId: stickerFileId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns outline of a sticker as an SVG path. This is an offline method. Returns an empty string if the outline isn't known\n    /// - Parameter forAnimatedEmoji: Pass true to get the outline scaled for animated emoji\n    /// - Parameter forClickedAnimatedEmojiMessage: Pass true to get the outline scaled for clicked animated emoji message\n    /// - Parameter stickerFileId: File identifier of the sticker\n    /// - Returns: Outline of a sticker as an SVG path. Returns an empty string if the outline isn't known\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStickerOutlineSvgPath(\n        forAnimatedEmoji: Bool?,\n        forClickedAnimatedEmojiMessage: Bool?,\n        stickerFileId: Int?\n    ) async throws -> Text {\n        let query = GetStickerOutlineSvgPath(\n            forAnimatedEmoji: forAnimatedEmoji,\n            forClickedAnimatedEmojiMessage: forClickedAnimatedEmojiMessage,\n            stickerFileId: stickerFileId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns stickers from the installed sticker sets that correspond to any of the given emoji or can be found by sticker-specific keywords. If the query is non-empty, then favorite, recently used or trending stickers may also be returned\n    /// - Parameter chatId: Chat identifier for which to return stickers. Available custom emoji stickers may be different for different chats\n    /// - Parameter limit: The maximum number of stickers to be returned\n    /// - Parameter query: Search query; a space-separated list of emojis or a keyword prefix. If empty, returns all known installed stickers\n    /// - Parameter stickerType: Type of the stickers to return\n    /// - Returns: Stickers from the installed sticker sets that correspond to any of the given emoji or can be found by sticker-specific keywords. If the query is non-empty, then favorite, recently used or trending stickers may also be returned\n    public final func getStickers(\n        chatId: Int64?,\n        limit: Int?,\n        query: String?,\n        stickerType: StickerType?,\n        completion: @escaping (Result<Stickers, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStickers(\n            chatId: chatId,\n            limit: limit,\n            query: query,\n            stickerType: stickerType\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns stickers from the installed sticker sets that correspond to any of the given emoji or can be found by sticker-specific keywords. If the query is non-empty, then favorite, recently used or trending stickers may also be returned\n    /// - Parameter chatId: Chat identifier for which to return stickers. Available custom emoji stickers may be different for different chats\n    /// - Parameter limit: The maximum number of stickers to be returned\n    /// - Parameter query: Search query; a space-separated list of emojis or a keyword prefix. If empty, returns all known installed stickers\n    /// - Parameter stickerType: Type of the stickers to return\n    /// - Returns: Stickers from the installed sticker sets that correspond to any of the given emoji or can be found by sticker-specific keywords. If the query is non-empty, then favorite, recently used or trending stickers may also be returned\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStickers(\n        chatId: Int64?,\n        limit: Int?,\n        query: String?,\n        stickerType: StickerType?\n    ) async throws -> Stickers {\n        let query = GetStickers(\n            chatId: chatId,\n            limit: limit,\n            query: query,\n            stickerType: stickerType\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns unique emoji that correspond to stickers to be found by the getStickers(sticker_type, query, 1000000, chat_id)\n    /// - Parameter chatId: Chat identifier for which to find stickers\n    /// - Parameter query: Search query\n    /// - Parameter returnOnlyMainEmoji: Pass true if only main emoji for each found sticker must be included in the result\n    /// - Parameter stickerType: Type of the stickers to search for\n    /// - Returns: Unique emoji that correspond to stickers to be found by the getStickers(sticker_type, query, 1000000, chat_id)\n    public final func getAllStickerEmojis(\n        chatId: Int64?,\n        query: String?,\n        returnOnlyMainEmoji: Bool?,\n        stickerType: StickerType?,\n        completion: @escaping (Result<Emojis, Swift.Error>) -> Void\n    ) throws {\n        let query = GetAllStickerEmojis(\n            chatId: chatId,\n            query: query,\n            returnOnlyMainEmoji: returnOnlyMainEmoji,\n            stickerType: stickerType\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns unique emoji that correspond to stickers to be found by the getStickers(sticker_type, query, 1000000, chat_id)\n    /// - Parameter chatId: Chat identifier for which to find stickers\n    /// - Parameter query: Search query\n    /// - Parameter returnOnlyMainEmoji: Pass true if only main emoji for each found sticker must be included in the result\n    /// - Parameter stickerType: Type of the stickers to search for\n    /// - Returns: Unique emoji that correspond to stickers to be found by the getStickers(sticker_type, query, 1000000, chat_id)\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getAllStickerEmojis(\n        chatId: Int64?,\n        query: String?,\n        returnOnlyMainEmoji: Bool?,\n        stickerType: StickerType?\n    ) async throws -> Emojis {\n        let query = GetAllStickerEmojis(\n            chatId: chatId,\n            query: query,\n            returnOnlyMainEmoji: returnOnlyMainEmoji,\n            stickerType: stickerType\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for stickers from public sticker sets that correspond to any of the given emoji\n    /// - Parameter emojis: Space-separated list of emojis to search for\n    /// - Parameter inputLanguageCodes: List of possible IETF language tags of the user's input language; may be empty if unknown\n    /// - Parameter limit: The maximum number of stickers to be returned; 0-100\n    /// - Parameter offset: The offset from which to return the stickers; must be non-negative\n    /// - Parameter query: Query to search for; may be empty to search for emoji only\n    /// - Parameter stickerType: Type of the stickers to return\n    public final func searchStickers(\n        emojis: String?,\n        inputLanguageCodes: [String]?,\n        limit: Int?,\n        offset: Int?,\n        query: String?,\n        stickerType: StickerType?,\n        completion: @escaping (Result<Stickers, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchStickers(\n            emojis: emojis,\n            inputLanguageCodes: inputLanguageCodes,\n            limit: limit,\n            offset: offset,\n            query: query,\n            stickerType: stickerType\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for stickers from public sticker sets that correspond to any of the given emoji\n    /// - Parameter emojis: Space-separated list of emojis to search for\n    /// - Parameter inputLanguageCodes: List of possible IETF language tags of the user's input language; may be empty if unknown\n    /// - Parameter limit: The maximum number of stickers to be returned; 0-100\n    /// - Parameter offset: The offset from which to return the stickers; must be non-negative\n    /// - Parameter query: Query to search for; may be empty to search for emoji only\n    /// - Parameter stickerType: Type of the stickers to return\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchStickers(\n        emojis: String?,\n        inputLanguageCodes: [String]?,\n        limit: Int?,\n        offset: Int?,\n        query: String?,\n        stickerType: StickerType?\n    ) async throws -> Stickers {\n        let query = SearchStickers(\n            emojis: emojis,\n            inputLanguageCodes: inputLanguageCodes,\n            limit: limit,\n            offset: offset,\n            query: query,\n            stickerType: stickerType\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns greeting stickers from regular sticker sets that can be used for the start page of other users\n    /// - Returns: Greeting stickers from regular sticker sets that can be used for the start page of other users\n    public final func getGreetingStickers(completion: @escaping (Result<Stickers, Swift.Error>) -> Void) throws {\n        let query = GetGreetingStickers()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns greeting stickers from regular sticker sets that can be used for the start page of other users\n    /// - Returns: Greeting stickers from regular sticker sets that can be used for the start page of other users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getGreetingStickers() async throws -> Stickers {\n        let query = GetGreetingStickers()\n        return try await self.run(query: query)\n    }\n\n    /// Returns premium stickers from regular sticker sets\n    /// - Parameter limit: The maximum number of stickers to be returned; 0-100\n    /// - Returns: Premium stickers from regular sticker sets\n    public final func getPremiumStickers(\n        limit: Int?,\n        completion: @escaping (Result<Stickers, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPremiumStickers(\n            limit: limit\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns premium stickers from regular sticker sets\n    /// - Parameter limit: The maximum number of stickers to be returned; 0-100\n    /// - Returns: Premium stickers from regular sticker sets\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPremiumStickers(limit: Int?) async throws -> Stickers {\n        let query = GetPremiumStickers(\n            limit: limit\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a list of installed sticker sets\n    /// - Parameter stickerType: Type of the sticker sets to return\n    /// - Returns: A list of installed sticker sets\n    public final func getInstalledStickerSets(\n        stickerType: StickerType?,\n        completion: @escaping (Result<StickerSets, Swift.Error>) -> Void\n    ) throws {\n        let query = GetInstalledStickerSets(\n            stickerType: stickerType\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a list of installed sticker sets\n    /// - Parameter stickerType: Type of the sticker sets to return\n    /// - Returns: A list of installed sticker sets\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getInstalledStickerSets(stickerType: StickerType?) async throws -> StickerSets {\n        let query = GetInstalledStickerSets(\n            stickerType: stickerType\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a list of archived sticker sets\n    /// - Parameter limit: The maximum number of sticker sets to return; up to 100\n    /// - Parameter offsetStickerSetId: Identifier of the sticker set from which to return the result; use 0 to get results from the beginning\n    /// - Parameter stickerType: Type of the sticker sets to return\n    /// - Returns: A list of archived sticker sets\n    public final func getArchivedStickerSets(\n        limit: Int?,\n        offsetStickerSetId: TdInt64?,\n        stickerType: StickerType?,\n        completion: @escaping (Result<StickerSets, Swift.Error>) -> Void\n    ) throws {\n        let query = GetArchivedStickerSets(\n            limit: limit,\n            offsetStickerSetId: offsetStickerSetId,\n            stickerType: stickerType\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a list of archived sticker sets\n    /// - Parameter limit: The maximum number of sticker sets to return; up to 100\n    /// - Parameter offsetStickerSetId: Identifier of the sticker set from which to return the result; use 0 to get results from the beginning\n    /// - Parameter stickerType: Type of the sticker sets to return\n    /// - Returns: A list of archived sticker sets\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getArchivedStickerSets(\n        limit: Int?,\n        offsetStickerSetId: TdInt64?,\n        stickerType: StickerType?\n    ) async throws -> StickerSets {\n        let query = GetArchivedStickerSets(\n            limit: limit,\n            offsetStickerSetId: offsetStickerSetId,\n            stickerType: stickerType\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a list of trending sticker sets. For optimal performance, the number of returned sticker sets is chosen by TDLib\n    /// - Parameter limit: The maximum number of sticker sets to be returned; up to 100. For optimal performance, the number of returned sticker sets is chosen by TDLib and can be smaller than the specified limit, even if the end of the list has not been reached\n    /// - Parameter offset: The offset from which to return the sticker sets; must be non-negative\n    /// - Parameter stickerType: Type of the sticker sets to return\n    /// - Returns: A list of trending sticker sets. For optimal performance, the number of returned sticker sets is chosen by TDLib\n    public final func getTrendingStickerSets(\n        limit: Int?,\n        offset: Int?,\n        stickerType: StickerType?,\n        completion: @escaping (Result<TrendingStickerSets, Swift.Error>) -> Void\n    ) throws {\n        let query = GetTrendingStickerSets(\n            limit: limit,\n            offset: offset,\n            stickerType: stickerType\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a list of trending sticker sets. For optimal performance, the number of returned sticker sets is chosen by TDLib\n    /// - Parameter limit: The maximum number of sticker sets to be returned; up to 100. For optimal performance, the number of returned sticker sets is chosen by TDLib and can be smaller than the specified limit, even if the end of the list has not been reached\n    /// - Parameter offset: The offset from which to return the sticker sets; must be non-negative\n    /// - Parameter stickerType: Type of the sticker sets to return\n    /// - Returns: A list of trending sticker sets. For optimal performance, the number of returned sticker sets is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getTrendingStickerSets(\n        limit: Int?,\n        offset: Int?,\n        stickerType: StickerType?\n    ) async throws -> TrendingStickerSets {\n        let query = GetTrendingStickerSets(\n            limit: limit,\n            offset: offset,\n            stickerType: stickerType\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a list of sticker sets attached to a file, including regular, mask, and emoji sticker sets. Currently, only animations, photos, and videos can have attached sticker sets\n    /// - Parameter fileId: File identifier\n    /// - Returns: A list of sticker sets attached to a file, including regular, mask, and emoji sticker sets\n    public final func getAttachedStickerSets(\n        fileId: Int?,\n        completion: @escaping (Result<StickerSets, Swift.Error>) -> Void\n    ) throws {\n        let query = GetAttachedStickerSets(\n            fileId: fileId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a list of sticker sets attached to a file, including regular, mask, and emoji sticker sets. Currently, only animations, photos, and videos can have attached sticker sets\n    /// - Parameter fileId: File identifier\n    /// - Returns: A list of sticker sets attached to a file, including regular, mask, and emoji sticker sets\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getAttachedStickerSets(fileId: Int?) async throws -> StickerSets {\n        let query = GetAttachedStickerSets(\n            fileId: fileId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a sticker set by its identifier\n    /// - Parameter setId: Identifier of the sticker set\n    /// - Returns: Information about a sticker set by its identifier\n    public final func getStickerSet(\n        setId: TdInt64?,\n        completion: @escaping (Result<StickerSet, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStickerSet(\n            setId: setId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a sticker set by its identifier\n    /// - Parameter setId: Identifier of the sticker set\n    /// - Returns: Information about a sticker set by its identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStickerSet(setId: TdInt64?) async throws -> StickerSet {\n        let query = GetStickerSet(\n            setId: setId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns name of a sticker set by its identifier\n    /// - Parameter setId: Identifier of the sticker set\n    /// - Returns: Name of a sticker set by its identifier\n    public final func getStickerSetName(\n        setId: TdInt64?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStickerSetName(\n            setId: setId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns name of a sticker set by its identifier\n    /// - Parameter setId: Identifier of the sticker set\n    /// - Returns: Name of a sticker set by its identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStickerSetName(setId: TdInt64?) async throws -> Text {\n        let query = GetStickerSetName(\n            setId: setId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for a sticker set by its name\n    /// - Parameter ignoreCache: Pass true to ignore local cache of sticker sets and always send a network request\n    /// - Parameter name: Name of the sticker set\n    public final func searchStickerSet(\n        ignoreCache: Bool?,\n        name: String?,\n        completion: @escaping (Result<StickerSet, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchStickerSet(\n            ignoreCache: ignoreCache,\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for a sticker set by its name\n    /// - Parameter ignoreCache: Pass true to ignore local cache of sticker sets and always send a network request\n    /// - Parameter name: Name of the sticker set\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchStickerSet(\n        ignoreCache: Bool?,\n        name: String?\n    ) async throws -> StickerSet {\n        let query = SearchStickerSet(\n            ignoreCache: ignoreCache,\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for installed sticker sets by looking for specified query in their title and name\n    /// - Parameter limit: The maximum number of sticker sets to return\n    /// - Parameter query: Query to search for\n    /// - Parameter stickerType: Type of the sticker sets to search for\n    public final func searchInstalledStickerSets(\n        limit: Int?,\n        query: String?,\n        stickerType: StickerType?,\n        completion: @escaping (Result<StickerSets, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchInstalledStickerSets(\n            limit: limit,\n            query: query,\n            stickerType: stickerType\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for installed sticker sets by looking for specified query in their title and name\n    /// - Parameter limit: The maximum number of sticker sets to return\n    /// - Parameter query: Query to search for\n    /// - Parameter stickerType: Type of the sticker sets to search for\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchInstalledStickerSets(\n        limit: Int?,\n        query: String?,\n        stickerType: StickerType?\n    ) async throws -> StickerSets {\n        let query = SearchInstalledStickerSets(\n            limit: limit,\n            query: query,\n            stickerType: stickerType\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for sticker sets by looking for specified query in their title and name. Excludes installed sticker sets from the results\n    /// - Parameter query: Query to search for\n    /// - Parameter stickerType: Type of the sticker sets to return\n    public final func searchStickerSets(\n        query: String?,\n        stickerType: StickerType?,\n        completion: @escaping (Result<StickerSets, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchStickerSets(\n            query: query,\n            stickerType: stickerType\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for sticker sets by looking for specified query in their title and name. Excludes installed sticker sets from the results\n    /// - Parameter query: Query to search for\n    /// - Parameter stickerType: Type of the sticker sets to return\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchStickerSets(\n        query: String?,\n        stickerType: StickerType?\n    ) async throws -> StickerSets {\n        let query = SearchStickerSets(\n            query: query,\n            stickerType: stickerType\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Installs/uninstalls or activates/archives a sticker set\n    /// - Parameter isArchived: The new value of is_archived. A sticker set can't be installed and archived simultaneously\n    /// - Parameter isInstalled: The new value of is_installed\n    /// - Parameter setId: Identifier of the sticker set\n    public final func changeStickerSet(\n        isArchived: Bool?,\n        isInstalled: Bool?,\n        setId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ChangeStickerSet(\n            isArchived: isArchived,\n            isInstalled: isInstalled,\n            setId: setId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Installs/uninstalls or activates/archives a sticker set\n    /// - Parameter isArchived: The new value of is_archived. A sticker set can't be installed and archived simultaneously\n    /// - Parameter isInstalled: The new value of is_installed\n    /// - Parameter setId: Identifier of the sticker set\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func changeStickerSet(\n        isArchived: Bool?,\n        isInstalled: Bool?,\n        setId: TdInt64?\n    ) async throws -> Ok {\n        let query = ChangeStickerSet(\n            isArchived: isArchived,\n            isInstalled: isInstalled,\n            setId: setId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs the server that some trending sticker sets have been viewed by the user\n    /// - Parameter stickerSetIds: Identifiers of viewed trending sticker sets\n    public final func viewTrendingStickerSets(\n        stickerSetIds: [TdInt64]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ViewTrendingStickerSets(\n            stickerSetIds: stickerSetIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs the server that some trending sticker sets have been viewed by the user\n    /// - Parameter stickerSetIds: Identifiers of viewed trending sticker sets\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func viewTrendingStickerSets(stickerSetIds: [TdInt64]?) async throws -> Ok {\n        let query = ViewTrendingStickerSets(\n            stickerSetIds: stickerSetIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the order of installed sticker sets\n    /// - Parameter stickerSetIds: Identifiers of installed sticker sets in the new correct order\n    /// - Parameter stickerType: Type of the sticker sets to reorder\n    public final func reorderInstalledStickerSets(\n        stickerSetIds: [TdInt64]?,\n        stickerType: StickerType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderInstalledStickerSets(\n            stickerSetIds: stickerSetIds,\n            stickerType: stickerType\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the order of installed sticker sets\n    /// - Parameter stickerSetIds: Identifiers of installed sticker sets in the new correct order\n    /// - Parameter stickerType: Type of the sticker sets to reorder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func reorderInstalledStickerSets(\n        stickerSetIds: [TdInt64]?,\n        stickerType: StickerType?\n    ) async throws -> Ok {\n        let query = ReorderInstalledStickerSets(\n            stickerSetIds: stickerSetIds,\n            stickerType: stickerType\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a list of recently used stickers\n    /// - Parameter isAttached: Pass true to return stickers and masks that were recently attached to photos or video files; pass false to return recently sent stickers\n    /// - Returns: A list of recently used stickers\n    public final func getRecentStickers(\n        isAttached: Bool?,\n        completion: @escaping (Result<Stickers, Swift.Error>) -> Void\n    ) throws {\n        let query = GetRecentStickers(\n            isAttached: isAttached\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a list of recently used stickers\n    /// - Parameter isAttached: Pass true to return stickers and masks that were recently attached to photos or video files; pass false to return recently sent stickers\n    /// - Returns: A list of recently used stickers\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getRecentStickers(isAttached: Bool?) async throws -> Stickers {\n        let query = GetRecentStickers(\n            isAttached: isAttached\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Manually adds a new sticker to the list of recently used stickers. The new sticker is added to the top of the list. If the sticker was already in the list, it is removed from the list first. Only stickers belonging to a sticker set or in WEBP or WEBM format can be added to this list. Emoji stickers can't be added to recent stickers\n    /// - Parameter isAttached: Pass true to add the sticker to the list of stickers recently attached to photo or video files; pass false to add the sticker to the list of recently sent stickers\n    /// - Parameter sticker: Sticker file to add\n    public final func addRecentSticker(\n        isAttached: Bool?,\n        sticker: InputFile?,\n        completion: @escaping (Result<Stickers, Swift.Error>) -> Void\n    ) throws {\n        let query = AddRecentSticker(\n            isAttached: isAttached,\n            sticker: sticker\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Manually adds a new sticker to the list of recently used stickers. The new sticker is added to the top of the list. If the sticker was already in the list, it is removed from the list first. Only stickers belonging to a sticker set or in WEBP or WEBM format can be added to this list. Emoji stickers can't be added to recent stickers\n    /// - Parameter isAttached: Pass true to add the sticker to the list of stickers recently attached to photo or video files; pass false to add the sticker to the list of recently sent stickers\n    /// - Parameter sticker: Sticker file to add\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func addRecentSticker(\n        isAttached: Bool?,\n        sticker: InputFile?\n    ) async throws -> Stickers {\n        let query = AddRecentSticker(\n            isAttached: isAttached,\n            sticker: sticker\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes a sticker from the list of recently used stickers\n    /// - Parameter isAttached: Pass true to remove the sticker from the list of stickers recently attached to photo or video files; pass false to remove the sticker from the list of recently sent stickers\n    /// - Parameter sticker: Sticker file to delete\n    public final func removeRecentSticker(\n        isAttached: Bool?,\n        sticker: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveRecentSticker(\n            isAttached: isAttached,\n            sticker: sticker\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes a sticker from the list of recently used stickers\n    /// - Parameter isAttached: Pass true to remove the sticker from the list of stickers recently attached to photo or video files; pass false to remove the sticker from the list of recently sent stickers\n    /// - Parameter sticker: Sticker file to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeRecentSticker(\n        isAttached: Bool?,\n        sticker: InputFile?\n    ) async throws -> Ok {\n        let query = RemoveRecentSticker(\n            isAttached: isAttached,\n            sticker: sticker\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Clears the list of recently used stickers\n    /// - Parameter isAttached: Pass true to clear the list of stickers recently attached to photo or video files; pass false to clear the list of recently sent stickers\n    public final func clearRecentStickers(\n        isAttached: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ClearRecentStickers(\n            isAttached: isAttached\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Clears the list of recently used stickers\n    /// - Parameter isAttached: Pass true to clear the list of stickers recently attached to photo or video files; pass false to clear the list of recently sent stickers\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func clearRecentStickers(isAttached: Bool?) async throws -> Ok {\n        let query = ClearRecentStickers(\n            isAttached: isAttached\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns favorite stickers\n    /// - Returns: Favorite stickers\n    public final func getFavoriteStickers(completion: @escaping (Result<Stickers, Swift.Error>) -> Void) throws {\n        let query = GetFavoriteStickers()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns favorite stickers\n    /// - Returns: Favorite stickers\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getFavoriteStickers() async throws -> Stickers {\n        let query = GetFavoriteStickers()\n        return try await self.run(query: query)\n    }\n\n    /// Adds a new sticker to the list of favorite stickers. The new sticker is added to the top of the list. If the sticker was already in the list, it is removed from the list first. Only stickers belonging to a sticker set or in WEBP or WEBM format can be added to this list. Emoji stickers can't be added to favorite stickers\n    /// - Parameter sticker: Sticker file to add\n    public final func addFavoriteSticker(\n        sticker: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddFavoriteSticker(\n            sticker: sticker\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds a new sticker to the list of favorite stickers. The new sticker is added to the top of the list. If the sticker was already in the list, it is removed from the list first. Only stickers belonging to a sticker set or in WEBP or WEBM format can be added to this list. Emoji stickers can't be added to favorite stickers\n    /// - Parameter sticker: Sticker file to add\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func addFavoriteSticker(sticker: InputFile?) async throws -> Ok {\n        let query = AddFavoriteSticker(\n            sticker: sticker\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes a sticker from the list of favorite stickers\n    /// - Parameter sticker: Sticker file to delete from the list\n    public final func removeFavoriteSticker(\n        sticker: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveFavoriteSticker(\n            sticker: sticker\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes a sticker from the list of favorite stickers\n    /// - Parameter sticker: Sticker file to delete from the list\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeFavoriteSticker(sticker: InputFile?) async throws -> Ok {\n        let query = RemoveFavoriteSticker(\n            sticker: sticker\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns emoji corresponding to a sticker. The list is only for informational purposes, because a sticker is always sent with a fixed emoji from the corresponding Sticker object\n    /// - Parameter sticker: Sticker file identifier\n    /// - Returns: Emoji corresponding to a sticker\n    public final func getStickerEmojis(\n        sticker: InputFile?,\n        completion: @escaping (Result<Emojis, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStickerEmojis(\n            sticker: sticker\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns emoji corresponding to a sticker. The list is only for informational purposes, because a sticker is always sent with a fixed emoji from the corresponding Sticker object\n    /// - Parameter sticker: Sticker file identifier\n    /// - Returns: Emoji corresponding to a sticker\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStickerEmojis(sticker: InputFile?) async throws -> Emojis {\n        let query = GetStickerEmojis(\n            sticker: sticker\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for emojis by keywords. Supported only if the file database is enabled. Order of results is unspecified\n    /// - Parameter inputLanguageCodes: List of possible IETF language tags of the user's input language; may be empty if unknown\n    /// - Parameter text: Text to search for\n    public final func searchEmojis(\n        inputLanguageCodes: [String]?,\n        text: String?,\n        completion: @escaping (Result<EmojiKeywords, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchEmojis(\n            inputLanguageCodes: inputLanguageCodes,\n            text: text\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for emojis by keywords. Supported only if the file database is enabled. Order of results is unspecified\n    /// - Parameter inputLanguageCodes: List of possible IETF language tags of the user's input language; may be empty if unknown\n    /// - Parameter text: Text to search for\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchEmojis(\n        inputLanguageCodes: [String]?,\n        text: String?\n    ) async throws -> EmojiKeywords {\n        let query = SearchEmojis(\n            inputLanguageCodes: inputLanguageCodes,\n            text: text\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns emojis matching the keyword. Supported only if the file database is enabled. Order of results is unspecified\n    /// - Parameter inputLanguageCodes: List of possible IETF language tags of the user's input language; may be empty if unknown\n    /// - Parameter text: Text to search for\n    /// - Returns: Emojis matching the keyword\n    public final func getKeywordEmojis(\n        inputLanguageCodes: [String]?,\n        text: String?,\n        completion: @escaping (Result<Emojis, Swift.Error>) -> Void\n    ) throws {\n        let query = GetKeywordEmojis(\n            inputLanguageCodes: inputLanguageCodes,\n            text: text\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns emojis matching the keyword. Supported only if the file database is enabled. Order of results is unspecified\n    /// - Parameter inputLanguageCodes: List of possible IETF language tags of the user's input language; may be empty if unknown\n    /// - Parameter text: Text to search for\n    /// - Returns: Emojis matching the keyword\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getKeywordEmojis(\n        inputLanguageCodes: [String]?,\n        text: String?\n    ) async throws -> Emojis {\n        let query = GetKeywordEmojis(\n            inputLanguageCodes: inputLanguageCodes,\n            text: text\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns available emoji categories\n    /// - Parameter type: Type of emoji categories to return; pass null to get default emoji categories\n    /// - Returns: Available emoji categories\n    public final func getEmojiCategories(\n        type: EmojiCategoryType?,\n        completion: @escaping (Result<EmojiCategories, Swift.Error>) -> Void\n    ) throws {\n        let query = GetEmojiCategories(\n            type: type\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns available emoji categories\n    /// - Parameter type: Type of emoji categories to return; pass null to get default emoji categories\n    /// - Returns: Available emoji categories\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getEmojiCategories(type: EmojiCategoryType?) async throws -> EmojiCategories {\n        let query = GetEmojiCategories(\n            type: type\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an animated emoji corresponding to a given emoji. Returns a 404 error if the emoji has no animated emoji\n    /// - Parameter emoji: The emoji\n    /// - Returns: An animated emoji corresponding to a given emoji. Returns a 404 error if the emoji has no animated emoji\n    public final func getAnimatedEmoji(\n        emoji: String?,\n        completion: @escaping (Result<AnimatedEmoji, Swift.Error>) -> Void\n    ) throws {\n        let query = GetAnimatedEmoji(\n            emoji: emoji\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an animated emoji corresponding to a given emoji. Returns a 404 error if the emoji has no animated emoji\n    /// - Parameter emoji: The emoji\n    /// - Returns: An animated emoji corresponding to a given emoji. Returns a 404 error if the emoji has no animated emoji\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getAnimatedEmoji(emoji: String?) async throws -> AnimatedEmoji {\n        let query = GetAnimatedEmoji(\n            emoji: emoji\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an HTTP URL which can be used to automatically log in to the translation platform and suggest new emoji replacements. The URL will be valid for 30 seconds after generation\n    /// - Parameter languageCode: Language code for which the emoji replacements will be suggested\n    /// - Returns: An HTTP URL which can be used to automatically log in to the translation platform and suggest new emoji replacements\n    public final func getEmojiSuggestionsUrl(\n        languageCode: String?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetEmojiSuggestionsUrl(\n            languageCode: languageCode\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an HTTP URL which can be used to automatically log in to the translation platform and suggest new emoji replacements. The URL will be valid for 30 seconds after generation\n    /// - Parameter languageCode: Language code for which the emoji replacements will be suggested\n    /// - Returns: An HTTP URL which can be used to automatically log in to the translation platform and suggest new emoji replacements\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getEmojiSuggestionsUrl(languageCode: String?) async throws -> HttpUrl {\n        let query = GetEmojiSuggestionsUrl(\n            languageCode: languageCode\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of custom emoji stickers by their identifiers. Stickers are returned in arbitrary order. Only found stickers are returned\n    /// - Parameter customEmojiIds: Identifiers of custom emoji stickers. At most 200 custom emoji stickers can be received simultaneously\n    /// - Returns: The list of custom emoji stickers by their identifiers. Stickers are returned in arbitrary order. Only found stickers are returned\n    public final func getCustomEmojiStickers(\n        customEmojiIds: [TdInt64]?,\n        completion: @escaping (Result<Stickers, Swift.Error>) -> Void\n    ) throws {\n        let query = GetCustomEmojiStickers(\n            customEmojiIds: customEmojiIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of custom emoji stickers by their identifiers. Stickers are returned in arbitrary order. Only found stickers are returned\n    /// - Parameter customEmojiIds: Identifiers of custom emoji stickers. At most 200 custom emoji stickers can be received simultaneously\n    /// - Returns: The list of custom emoji stickers by their identifiers. Stickers are returned in arbitrary order. Only found stickers are returned\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getCustomEmojiStickers(customEmojiIds: [TdInt64]?) async throws -> Stickers {\n        let query = GetCustomEmojiStickers(\n            customEmojiIds: customEmojiIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns default list of custom emoji stickers for placing on a chat photo\n    /// - Returns: Default list of custom emoji stickers for placing on a chat photo\n    public final func getDefaultChatPhotoCustomEmojiStickers(completion: @escaping (Result<Stickers, Swift.Error>) -> Void) throws {\n        let query = GetDefaultChatPhotoCustomEmojiStickers()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns default list of custom emoji stickers for placing on a chat photo\n    /// - Returns: Default list of custom emoji stickers for placing on a chat photo\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getDefaultChatPhotoCustomEmojiStickers() async throws -> Stickers {\n        let query = GetDefaultChatPhotoCustomEmojiStickers()\n        return try await self.run(query: query)\n    }\n\n    /// Returns default list of custom emoji stickers for placing on a profile photo\n    /// - Returns: Default list of custom emoji stickers for placing on a profile photo\n    public final func getDefaultProfilePhotoCustomEmojiStickers(completion: @escaping (Result<Stickers, Swift.Error>) -> Void) throws {\n        let query = GetDefaultProfilePhotoCustomEmojiStickers()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns default list of custom emoji stickers for placing on a profile photo\n    /// - Returns: Default list of custom emoji stickers for placing on a profile photo\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getDefaultProfilePhotoCustomEmojiStickers() async throws -> Stickers {\n        let query = GetDefaultProfilePhotoCustomEmojiStickers()\n        return try await self.run(query: query)\n    }\n\n    /// Returns default list of custom emoji stickers for reply background\n    /// - Returns: Default list of custom emoji stickers for reply background\n    public final func getDefaultBackgroundCustomEmojiStickers(completion: @escaping (Result<Stickers, Swift.Error>) -> Void) throws {\n        let query = GetDefaultBackgroundCustomEmojiStickers()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns default list of custom emoji stickers for reply background\n    /// - Returns: Default list of custom emoji stickers for reply background\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getDefaultBackgroundCustomEmojiStickers() async throws -> Stickers {\n        let query = GetDefaultBackgroundCustomEmojiStickers()\n        return try await self.run(query: query)\n    }\n\n    /// Returns saved animations\n    /// - Returns: Saved animations\n    public final func getSavedAnimations(completion: @escaping (Result<Animations, Swift.Error>) -> Void) throws {\n        let query = GetSavedAnimations()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns saved animations\n    /// - Returns: Saved animations\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getSavedAnimations() async throws -> Animations {\n        let query = GetSavedAnimations()\n        return try await self.run(query: query)\n    }\n\n    /// Manually adds a new animation to the list of saved animations. The new animation is added to the beginning of the list. If the animation was already in the list, it is removed first. Only non-secret video animations with MIME type \"video/mp4\" can be added to the list\n    /// - Parameter animation: The animation file to be added. Only animations known to the server (i.e., successfully sent via a message) can be added to the list\n    public final func addSavedAnimation(\n        animation: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddSavedAnimation(\n            animation: animation\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Manually adds a new animation to the list of saved animations. The new animation is added to the beginning of the list. If the animation was already in the list, it is removed first. Only non-secret video animations with MIME type \"video/mp4\" can be added to the list\n    /// - Parameter animation: The animation file to be added. Only animations known to the server (i.e., successfully sent via a message) can be added to the list\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func addSavedAnimation(animation: InputFile?) async throws -> Ok {\n        let query = AddSavedAnimation(\n            animation: animation\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes an animation from the list of saved animations\n    /// - Parameter animation: Animation file to be removed\n    public final func removeSavedAnimation(\n        animation: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveSavedAnimation(\n            animation: animation\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes an animation from the list of saved animations\n    /// - Parameter animation: Animation file to be removed\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeSavedAnimation(animation: InputFile?) async throws -> Ok {\n        let query = RemoveSavedAnimation(\n            animation: animation\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns up to 20 recently used inline bots in the order of their last usage\n    /// - Returns: Up to 20 recently used inline bots in the order of their last usage\n    public final func getRecentInlineBots(completion: @escaping (Result<Users, Swift.Error>) -> Void) throws {\n        let query = GetRecentInlineBots()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns up to 20 recently used inline bots in the order of their last usage\n    /// - Returns: Up to 20 recently used inline bots in the order of their last usage\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getRecentInlineBots() async throws -> Users {\n        let query = GetRecentInlineBots()\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of bots owned by the current user\n    /// - Returns: The list of bots owned by the current user\n    public final func getOwnedBots(completion: @escaping (Result<Users, Swift.Error>) -> Void) throws {\n        let query = GetOwnedBots()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of bots owned by the current user\n    /// - Returns: The list of bots owned by the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getOwnedBots() async throws -> Users {\n        let query = GetOwnedBots()\n        return try await self.run(query: query)\n    }\n\n    /// Searches for recently used hashtags by their prefix\n    /// - Parameter limit: The maximum number of hashtags to be returned\n    /// - Parameter prefix: Hashtag prefix to search for\n    public final func searchHashtags(\n        limit: Int?,\n        prefix: String?,\n        completion: @escaping (Result<Hashtags, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchHashtags(\n            limit: limit,\n            prefix: prefix\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for recently used hashtags by their prefix\n    /// - Parameter limit: The maximum number of hashtags to be returned\n    /// - Parameter prefix: Hashtag prefix to search for\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchHashtags(\n        limit: Int?,\n        prefix: String?\n    ) async throws -> Hashtags {\n        let query = SearchHashtags(\n            limit: limit,\n            prefix: prefix\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes a hashtag from the list of recently used hashtags\n    /// - Parameter hashtag: Hashtag to delete\n    public final func removeRecentHashtag(\n        hashtag: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveRecentHashtag(\n            hashtag: hashtag\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes a hashtag from the list of recently used hashtags\n    /// - Parameter hashtag: Hashtag to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeRecentHashtag(hashtag: String?) async throws -> Ok {\n        let query = RemoveRecentHashtag(\n            hashtag: hashtag\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a link preview by the text of a message. Do not call this function too often. Returns a 404 error if the text has no link preview\n    /// - Parameter linkPreviewOptions: Options to be used for generation of the link preview; pass null to use default link preview options\n    /// - Parameter text: Message text with formatting\n    /// - Returns: A link preview by the text of a message. Returns a 404 error if the text has no link preview\n    public final func getLinkPreview(\n        linkPreviewOptions: LinkPreviewOptions?,\n        text: FormattedText?,\n        completion: @escaping (Result<LinkPreview, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLinkPreview(\n            linkPreviewOptions: linkPreviewOptions,\n            text: text\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a link preview by the text of a message. Do not call this function too often. Returns a 404 error if the text has no link preview\n    /// - Parameter linkPreviewOptions: Options to be used for generation of the link preview; pass null to use default link preview options\n    /// - Parameter text: Message text with formatting\n    /// - Returns: A link preview by the text of a message. Returns a 404 error if the text has no link preview\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getLinkPreview(\n        linkPreviewOptions: LinkPreviewOptions?,\n        text: FormattedText?\n    ) async throws -> LinkPreview {\n        let query = GetLinkPreview(\n            linkPreviewOptions: linkPreviewOptions,\n            text: text\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an instant view version of a web page if available. This is an offline method if only_local is true. Returns a 404 error if the web page has no instant view page\n    /// - Parameter onlyLocal: Pass true to get only locally available information without sending network requests\n    /// - Parameter url: The web page URL\n    /// - Returns: An instant view version of a web page if available. Returns a 404 error if the web page has no instant view page\n    public final func getWebPageInstantView(\n        onlyLocal: Bool?,\n        url: String?,\n        completion: @escaping (Result<WebPageInstantView, Swift.Error>) -> Void\n    ) throws {\n        let query = GetWebPageInstantView(\n            onlyLocal: onlyLocal,\n            url: url\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an instant view version of a web page if available. This is an offline method if only_local is true. Returns a 404 error if the web page has no instant view page\n    /// - Parameter onlyLocal: Pass true to get only locally available information without sending network requests\n    /// - Parameter url: The web page URL\n    /// - Returns: An instant view version of a web page if available. Returns a 404 error if the web page has no instant view page\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getWebPageInstantView(\n        onlyLocal: Bool?,\n        url: String?\n    ) async throws -> WebPageInstantView {\n        let query = GetWebPageInstantView(\n            onlyLocal: onlyLocal,\n            url: url\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes a profile photo for the current user\n    /// - Parameter isPublic: Pass true to set the public photo, which will be visible even if the main photo is hidden by privacy settings\n    /// - Parameter photo: Profile photo to set\n    public final func setProfilePhoto(\n        isPublic: Bool?,\n        photo: InputChatPhoto?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetProfilePhoto(\n            isPublic: isPublic,\n            photo: photo\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes a profile photo for the current user\n    /// - Parameter isPublic: Pass true to set the public photo, which will be visible even if the main photo is hidden by privacy settings\n    /// - Parameter photo: Profile photo to set\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setProfilePhoto(\n        isPublic: Bool?,\n        photo: InputChatPhoto?\n    ) async throws -> Ok {\n        let query = SetProfilePhoto(\n            isPublic: isPublic,\n            photo: photo\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes a profile photo\n    /// - Parameter profilePhotoId: Identifier of the profile photo to delete\n    public final func deleteProfilePhoto(\n        profilePhotoId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteProfilePhoto(\n            profilePhotoId: profilePhotoId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes a profile photo\n    /// - Parameter profilePhotoId: Identifier of the profile photo to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteProfilePhoto(profilePhotoId: TdInt64?) async throws -> Ok {\n        let query = DeleteProfilePhoto(\n            profilePhotoId: profilePhotoId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes accent color and background custom emoji for the current user; for Telegram Premium users only\n    /// - Parameter accentColorId: Identifier of the accent color to use\n    /// - Parameter backgroundCustomEmojiId: Identifier of a custom emoji to be shown on the reply header and link preview background; 0 if none\n    public final func setAccentColor(\n        accentColorId: Int?,\n        backgroundCustomEmojiId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetAccentColor(\n            accentColorId: accentColorId,\n            backgroundCustomEmojiId: backgroundCustomEmojiId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes accent color and background custom emoji for the current user; for Telegram Premium users only\n    /// - Parameter accentColorId: Identifier of the accent color to use\n    /// - Parameter backgroundCustomEmojiId: Identifier of a custom emoji to be shown on the reply header and link preview background; 0 if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setAccentColor(\n        accentColorId: Int?,\n        backgroundCustomEmojiId: TdInt64?\n    ) async throws -> Ok {\n        let query = SetAccentColor(\n            accentColorId: accentColorId,\n            backgroundCustomEmojiId: backgroundCustomEmojiId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes color scheme for the current user based on an owned or a hosted upgraded gift; for Telegram Premium users only\n    /// - Parameter upgradedGiftColorsId: Identifier of the upgradedGiftColors scheme to use\n    public final func setUpgradedGiftColors(\n        upgradedGiftColorsId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetUpgradedGiftColors(\n            upgradedGiftColorsId: upgradedGiftColorsId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes color scheme for the current user based on an owned or a hosted upgraded gift; for Telegram Premium users only\n    /// - Parameter upgradedGiftColorsId: Identifier of the upgradedGiftColors scheme to use\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setUpgradedGiftColors(upgradedGiftColorsId: TdInt64?) async throws -> Ok {\n        let query = SetUpgradedGiftColors(\n            upgradedGiftColorsId: upgradedGiftColorsId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes accent color and background custom emoji for profile of the current user; for Telegram Premium users only\n    /// - Parameter profileAccentColorId: Identifier of the accent color to use for profile; pass -1 if none\n    /// - Parameter profileBackgroundCustomEmojiId: Identifier of a custom emoji to be shown on the user's profile photo background; 0 if none\n    public final func setProfileAccentColor(\n        profileAccentColorId: Int?,\n        profileBackgroundCustomEmojiId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetProfileAccentColor(\n            profileAccentColorId: profileAccentColorId,\n            profileBackgroundCustomEmojiId: profileBackgroundCustomEmojiId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes accent color and background custom emoji for profile of the current user; for Telegram Premium users only\n    /// - Parameter profileAccentColorId: Identifier of the accent color to use for profile; pass -1 if none\n    /// - Parameter profileBackgroundCustomEmojiId: Identifier of a custom emoji to be shown on the user's profile photo background; 0 if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setProfileAccentColor(\n        profileAccentColorId: Int?,\n        profileBackgroundCustomEmojiId: TdInt64?\n    ) async throws -> Ok {\n        let query = SetProfileAccentColor(\n            profileAccentColorId: profileAccentColorId,\n            profileBackgroundCustomEmojiId: profileBackgroundCustomEmojiId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the first and last name of the current user\n    /// - Parameter firstName: The new value of the first name for the current user; 1-64 characters\n    /// - Parameter lastName: The new value of the optional last name for the current user; 0-64 characters\n    public final func setName(\n        firstName: String?,\n        lastName: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetName(\n            firstName: firstName,\n            lastName: lastName\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the first and last name of the current user\n    /// - Parameter firstName: The new value of the first name for the current user; 1-64 characters\n    /// - Parameter lastName: The new value of the optional last name for the current user; 0-64 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setName(\n        firstName: String?,\n        lastName: String?\n    ) async throws -> Ok {\n        let query = SetName(\n            firstName: firstName,\n            lastName: lastName\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the bio of the current user\n    /// - Parameter bio: The new value of the user bio; 0-getOption(\"bio_length_max\") characters without line feeds\n    public final func setBio(\n        bio: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBio(\n            bio: bio\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the bio of the current user\n    /// - Parameter bio: The new value of the user bio; 0-getOption(\"bio_length_max\") characters without line feeds\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setBio(bio: String?) async throws -> Ok {\n        let query = SetBio(\n            bio: bio\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the editable username of the current user\n    /// - Parameter username: The new value of the username. Use an empty string to remove the username. The username can't be completely removed if there is another active or disabled username\n    public final func setUsername(\n        username: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetUsername(\n            username: username\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the editable username of the current user\n    /// - Parameter username: The new value of the username. Use an empty string to remove the username. The username can't be completely removed if there is another active or disabled username\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setUsername(username: String?) async throws -> Ok {\n        let query = SetUsername(\n            username: username\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes active state for a username of the current user. The editable username can't be disabled. May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\n    /// - Parameter isActive: Pass true to activate the username; pass false to disable it\n    /// - Parameter username: The username to change\n    /// - Returns: May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\n    public final func toggleUsernameIsActive(\n        isActive: Bool?,\n        username: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleUsernameIsActive(\n            isActive: isActive,\n            username: username\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes active state for a username of the current user. The editable username can't be disabled. May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\n    /// - Parameter isActive: Pass true to activate the username; pass false to disable it\n    /// - Parameter username: The username to change\n    /// - Returns: May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleUsernameIsActive(\n        isActive: Bool?,\n        username: String?\n    ) async throws -> Ok {\n        let query = ToggleUsernameIsActive(\n            isActive: isActive,\n            username: username\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes order of active usernames of the current user\n    /// - Parameter usernames: The new order of active usernames. All currently active usernames must be specified\n    public final func reorderActiveUsernames(\n        usernames: [String]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderActiveUsernames(\n            usernames: usernames\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes order of active usernames of the current user\n    /// - Parameter usernames: The new order of active usernames. All currently active usernames must be specified\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func reorderActiveUsernames(usernames: [String]?) async throws -> Ok {\n        let query = ReorderActiveUsernames(\n            usernames: usernames\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the birthdate of the current user\n    /// - Parameter birthdate: The new value of the current user's birthdate; pass null to remove the birthdate\n    public final func setBirthdate(\n        birthdate: Birthdate?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBirthdate(\n            birthdate: birthdate\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the birthdate of the current user\n    /// - Parameter birthdate: The new value of the current user's birthdate; pass null to remove the birthdate\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setBirthdate(birthdate: Birthdate?) async throws -> Ok {\n        let query = SetBirthdate(\n            birthdate: birthdate\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the main profile tab of the current user\n    /// - Parameter mainProfileTab: The new value of the main profile tab\n    public final func setMainProfileTab(\n        mainProfileTab: ProfileTab?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetMainProfileTab(\n            mainProfileTab: mainProfileTab\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the main profile tab of the current user\n    /// - Parameter mainProfileTab: The new value of the main profile tab\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setMainProfileTab(mainProfileTab: ProfileTab?) async throws -> Ok {\n        let query = SetMainProfileTab(\n            mainProfileTab: mainProfileTab\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the personal chat of the current user\n    /// - Parameter chatId: Identifier of the new personal chat; pass 0 to remove the chat. Use getSuitablePersonalChats to get suitable chats\n    public final func setPersonalChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetPersonalChat(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the personal chat of the current user\n    /// - Parameter chatId: Identifier of the new personal chat; pass 0 to remove the chat. Use getSuitablePersonalChats to get suitable chats\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setPersonalChat(chatId: Int64?) async throws -> Ok {\n        let query = SetPersonalChat(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the emoji status of the current user; for Telegram Premium users only\n    /// - Parameter emojiStatus: New emoji status; pass null to switch to the default badge\n    public final func setEmojiStatus(\n        emojiStatus: EmojiStatus?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetEmojiStatus(\n            emojiStatus: emojiStatus\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the emoji status of the current user; for Telegram Premium users only\n    /// - Parameter emojiStatus: New emoji status; pass null to switch to the default badge\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setEmojiStatus(emojiStatus: EmojiStatus?) async throws -> Ok {\n        let query = SetEmojiStatus(\n            emojiStatus: emojiStatus\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether the current user has sponsored messages enabled. The setting has no effect for users without Telegram Premium for which sponsored messages are always enabled\n    /// - Parameter hasSponsoredMessagesEnabled: Pass true to enable sponsored messages for the current user; false to disable them\n    public final func toggleHasSponsoredMessagesEnabled(\n        hasSponsoredMessagesEnabled: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleHasSponsoredMessagesEnabled(\n            hasSponsoredMessagesEnabled: hasSponsoredMessagesEnabled\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether the current user has sponsored messages enabled. The setting has no effect for users without Telegram Premium for which sponsored messages are always enabled\n    /// - Parameter hasSponsoredMessagesEnabled: Pass true to enable sponsored messages for the current user; false to disable them\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleHasSponsoredMessagesEnabled(hasSponsoredMessagesEnabled: Bool?) async throws -> Ok {\n        let query = ToggleHasSponsoredMessagesEnabled(\n            hasSponsoredMessagesEnabled: hasSponsoredMessagesEnabled\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the business location of the current user. Requires Telegram Business subscription\n    /// - Parameter location: The new location of the business; pass null to remove the location\n    public final func setBusinessLocation(\n        location: BusinessLocation?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessLocation(\n            location: location\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the business location of the current user. Requires Telegram Business subscription\n    /// - Parameter location: The new location of the business; pass null to remove the location\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setBusinessLocation(location: BusinessLocation?) async throws -> Ok {\n        let query = SetBusinessLocation(\n            location: location\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the business opening hours of the current user. Requires Telegram Business subscription\n    /// - Parameter openingHours: The new opening hours of the business; pass null to remove the opening hours; up to 28 time intervals can be specified\n    public final func setBusinessOpeningHours(\n        openingHours: BusinessOpeningHours?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessOpeningHours(\n            openingHours: openingHours\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the business opening hours of the current user. Requires Telegram Business subscription\n    /// - Parameter openingHours: The new opening hours of the business; pass null to remove the opening hours; up to 28 time intervals can be specified\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setBusinessOpeningHours(openingHours: BusinessOpeningHours?) async throws -> Ok {\n        let query = SetBusinessOpeningHours(\n            openingHours: openingHours\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the business greeting message settings of the current user. Requires Telegram Business subscription\n    /// - Parameter greetingMessageSettings: The new settings for the greeting message of the business; pass null to disable the greeting message\n    public final func setBusinessGreetingMessageSettings(\n        greetingMessageSettings: BusinessGreetingMessageSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessGreetingMessageSettings(\n            greetingMessageSettings: greetingMessageSettings\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the business greeting message settings of the current user. Requires Telegram Business subscription\n    /// - Parameter greetingMessageSettings: The new settings for the greeting message of the business; pass null to disable the greeting message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setBusinessGreetingMessageSettings(greetingMessageSettings: BusinessGreetingMessageSettings?) async throws -> Ok {\n        let query = SetBusinessGreetingMessageSettings(\n            greetingMessageSettings: greetingMessageSettings\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the business away message settings of the current user. Requires Telegram Business subscription\n    /// - Parameter awayMessageSettings: The new settings for the away message of the business; pass null to disable the away message\n    public final func setBusinessAwayMessageSettings(\n        awayMessageSettings: BusinessAwayMessageSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessAwayMessageSettings(\n            awayMessageSettings: awayMessageSettings\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the business away message settings of the current user. Requires Telegram Business subscription\n    /// - Parameter awayMessageSettings: The new settings for the away message of the business; pass null to disable the away message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setBusinessAwayMessageSettings(awayMessageSettings: BusinessAwayMessageSettings?) async throws -> Ok {\n        let query = SetBusinessAwayMessageSettings(\n            awayMessageSettings: awayMessageSettings\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the business start page of the current user. Requires Telegram Business subscription\n    /// - Parameter startPage: The new start page of the business; pass null to remove custom start page\n    public final func setBusinessStartPage(\n        startPage: InputBusinessStartPage?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessStartPage(\n            startPage: startPage\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the business start page of the current user. Requires Telegram Business subscription\n    /// - Parameter startPage: The new start page of the business; pass null to remove custom start page\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setBusinessStartPage(startPage: InputBusinessStartPage?) async throws -> Ok {\n        let query = SetBusinessStartPage(\n            startPage: startPage\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends a code to the specified phone number. Aborts previous phone number verification if there was one. On success, returns information about the sent code\n    /// - Parameter phoneNumber: The phone number, in international format\n    /// - Parameter settings: Settings for the authentication of the user's phone number; pass null to use default settings\n    /// - Parameter type: Type of the request for which the code is sent\n    /// - Returns: On success, returns information about the sent code\n    public final func sendPhoneNumberCode(\n        phoneNumber: String?,\n        settings: PhoneNumberAuthenticationSettings?,\n        type: PhoneNumberCodeType?,\n        completion: @escaping (Result<AuthenticationCodeInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = SendPhoneNumberCode(\n            phoneNumber: phoneNumber,\n            settings: settings,\n            type: type\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends a code to the specified phone number. Aborts previous phone number verification if there was one. On success, returns information about the sent code\n    /// - Parameter phoneNumber: The phone number, in international format\n    /// - Parameter settings: Settings for the authentication of the user's phone number; pass null to use default settings\n    /// - Parameter type: Type of the request for which the code is sent\n    /// - Returns: On success, returns information about the sent code\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func sendPhoneNumberCode(\n        phoneNumber: String?,\n        settings: PhoneNumberAuthenticationSettings?,\n        type: PhoneNumberCodeType?\n    ) async throws -> AuthenticationCodeInfo {\n        let query = SendPhoneNumberCode(\n            phoneNumber: phoneNumber,\n            settings: settings,\n            type: type\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends Firebase Authentication SMS to the specified phone number. Works only when received a code of the type authenticationCodeTypeFirebaseAndroid or authenticationCodeTypeFirebaseIos\n    /// - Parameter token: Play Integrity API or SafetyNet Attestation API token for the Android application, or secret from push notification for the iOS application\n    public final func sendPhoneNumberFirebaseSms(\n        token: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendPhoneNumberFirebaseSms(\n            token: token\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends Firebase Authentication SMS to the specified phone number. Works only when received a code of the type authenticationCodeTypeFirebaseAndroid or authenticationCodeTypeFirebaseIos\n    /// - Parameter token: Play Integrity API or SafetyNet Attestation API token for the Android application, or secret from push notification for the iOS application\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func sendPhoneNumberFirebaseSms(token: String?) async throws -> Ok {\n        let query = SendPhoneNumberFirebaseSms(\n            token: token\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Reports that authentication code wasn't delivered via SMS to the specified phone number; for official mobile applications only\n    /// - Parameter mobileNetworkCode: Current mobile network code\n    public final func reportPhoneNumberCodeMissing(\n        mobileNetworkCode: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportPhoneNumberCodeMissing(\n            mobileNetworkCode: mobileNetworkCode\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Reports that authentication code wasn't delivered via SMS to the specified phone number; for official mobile applications only\n    /// - Parameter mobileNetworkCode: Current mobile network code\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func reportPhoneNumberCodeMissing(mobileNetworkCode: String?) async throws -> Ok {\n        let query = ReportPhoneNumberCodeMissing(\n            mobileNetworkCode: mobileNetworkCode\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Resends the authentication code sent to a phone number. Works only if the previously received authenticationCodeInfo next_code_type was not null and the server-specified timeout has passed\n    /// - Parameter reason: Reason of code resending; pass null if unknown\n    public final func resendPhoneNumberCode(\n        reason: ResendCodeReason?,\n        completion: @escaping (Result<AuthenticationCodeInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = ResendPhoneNumberCode(\n            reason: reason\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Resends the authentication code sent to a phone number. Works only if the previously received authenticationCodeInfo next_code_type was not null and the server-specified timeout has passed\n    /// - Parameter reason: Reason of code resending; pass null if unknown\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func resendPhoneNumberCode(reason: ResendCodeReason?) async throws -> AuthenticationCodeInfo {\n        let query = ResendPhoneNumberCode(\n            reason: reason\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks the authentication code and completes the request for which the code was sent if appropriate\n    /// - Parameter code: Authentication code to check\n    public final func checkPhoneNumberCode(\n        code: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckPhoneNumberCode(\n            code: code\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks the authentication code and completes the request for which the code was sent if appropriate\n    /// - Parameter code: Authentication code to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func checkPhoneNumberCode(code: String?) async throws -> Ok {\n        let query = CheckPhoneNumberCode(\n            code: code\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the business bot that is connected to the current user account. Returns a 404 error if there is no connected bot\n    /// - Returns: The business bot that is connected to the current user account. Returns a 404 error if there is no connected bot\n    public final func getBusinessConnectedBot(completion: @escaping (Result<BusinessConnectedBot, Swift.Error>) -> Void) throws {\n        let query = GetBusinessConnectedBot()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the business bot that is connected to the current user account. Returns a 404 error if there is no connected bot\n    /// - Returns: The business bot that is connected to the current user account. Returns a 404 error if there is no connected bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getBusinessConnectedBot() async throws -> BusinessConnectedBot {\n        let query = GetBusinessConnectedBot()\n        return try await self.run(query: query)\n    }\n\n    /// Adds or changes business bot that is connected to the current user account\n    /// - Parameter bot: Connection settings for the bot\n    public final func setBusinessConnectedBot(\n        bot: BusinessConnectedBot?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessConnectedBot(\n            bot: bot\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds or changes business bot that is connected to the current user account\n    /// - Parameter bot: Connection settings for the bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setBusinessConnectedBot(bot: BusinessConnectedBot?) async throws -> Ok {\n        let query = SetBusinessConnectedBot(\n            bot: bot\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes the business bot that is connected to the current user account\n    /// - Parameter botUserId: Unique user identifier for the bot\n    public final func deleteBusinessConnectedBot(\n        botUserId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteBusinessConnectedBot(\n            botUserId: botUserId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes the business bot that is connected to the current user account\n    /// - Parameter botUserId: Unique user identifier for the bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteBusinessConnectedBot(botUserId: Int64?) async throws -> Ok {\n        let query = DeleteBusinessConnectedBot(\n            botUserId: botUserId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Pauses or resumes the connected business bot in a specific chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isPaused: Pass true to pause the connected bot in the chat; pass false to resume the bot\n    public final func toggleBusinessConnectedBotChatIsPaused(\n        chatId: Int64?,\n        isPaused: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleBusinessConnectedBotChatIsPaused(\n            chatId: chatId,\n            isPaused: isPaused\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Pauses or resumes the connected business bot in a specific chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isPaused: Pass true to pause the connected bot in the chat; pass false to resume the bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleBusinessConnectedBotChatIsPaused(\n        chatId: Int64?,\n        isPaused: Bool?\n    ) async throws -> Ok {\n        let query = ToggleBusinessConnectedBotChatIsPaused(\n            chatId: chatId,\n            isPaused: isPaused\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes the connected business bot from a specific chat by adding the chat to businessRecipients.excluded_chat_ids\n    /// - Parameter chatId: Chat identifier\n    public final func removeBusinessConnectedBotFromChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveBusinessConnectedBotFromChat(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes the connected business bot from a specific chat by adding the chat to businessRecipients.excluded_chat_ids\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeBusinessConnectedBotFromChat(chatId: Int64?) async throws -> Ok {\n        let query = RemoveBusinessConnectedBotFromChat(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns business chat links created for the current account\n    /// - Returns: Business chat links created for the current account\n    public final func getBusinessChatLinks(completion: @escaping (Result<BusinessChatLinks, Swift.Error>) -> Void) throws {\n        let query = GetBusinessChatLinks()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns business chat links created for the current account\n    /// - Returns: Business chat links created for the current account\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getBusinessChatLinks() async throws -> BusinessChatLinks {\n        let query = GetBusinessChatLinks()\n        return try await self.run(query: query)\n    }\n\n    /// Creates a business chat link for the current account. Requires Telegram Business subscription. There can be up to getOption(\"business_chat_link_count_max\") links created. Returns the created link\n    /// - Parameter linkInfo: Information about the link to create\n    /// - Returns: The created link\n    public final func createBusinessChatLink(\n        linkInfo: InputBusinessChatLink?,\n        completion: @escaping (Result<BusinessChatLink, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateBusinessChatLink(\n            linkInfo: linkInfo\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Creates a business chat link for the current account. Requires Telegram Business subscription. There can be up to getOption(\"business_chat_link_count_max\") links created. Returns the created link\n    /// - Parameter linkInfo: Information about the link to create\n    /// - Returns: The created link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createBusinessChatLink(linkInfo: InputBusinessChatLink?) async throws -> BusinessChatLink {\n        let query = CreateBusinessChatLink(\n            linkInfo: linkInfo\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits a business chat link of the current account. Requires Telegram Business subscription. Returns the edited link\n    /// - Parameter link: The link to edit\n    /// - Parameter linkInfo: New description of the link\n    /// - Returns: The edited link\n    public final func editBusinessChatLink(\n        link: String?,\n        linkInfo: InputBusinessChatLink?,\n        completion: @escaping (Result<BusinessChatLink, Swift.Error>) -> Void\n    ) throws {\n        let query = EditBusinessChatLink(\n            link: link,\n            linkInfo: linkInfo\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits a business chat link of the current account. Requires Telegram Business subscription. Returns the edited link\n    /// - Parameter link: The link to edit\n    /// - Parameter linkInfo: New description of the link\n    /// - Returns: The edited link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func editBusinessChatLink(\n        link: String?,\n        linkInfo: InputBusinessChatLink?\n    ) async throws -> BusinessChatLink {\n        let query = EditBusinessChatLink(\n            link: link,\n            linkInfo: linkInfo\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes a business chat link of the current account\n    /// - Parameter link: The link to delete\n    public final func deleteBusinessChatLink(\n        link: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteBusinessChatLink(\n            link: link\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes a business chat link of the current account\n    /// - Parameter link: The link to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteBusinessChatLink(link: String?) async throws -> Ok {\n        let query = DeleteBusinessChatLink(\n            link: link\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a business chat link\n    /// - Parameter linkName: Name of the link\n    /// - Returns: Information about a business chat link\n    public final func getBusinessChatLinkInfo(\n        linkName: String?,\n        completion: @escaping (Result<BusinessChatLinkInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBusinessChatLinkInfo(\n            linkName: linkName\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a business chat link\n    /// - Parameter linkName: Name of the link\n    /// - Returns: Information about a business chat link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getBusinessChatLinkInfo(linkName: String?) async throws -> BusinessChatLinkInfo {\n        let query = GetBusinessChatLinkInfo(\n            linkName: linkName\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an HTTPS link, which can be used to get information about the current user\n    /// - Returns: An HTTPS link, which can be used to get information about the current user\n    public final func getUserLink(completion: @escaping (Result<UserLink, Swift.Error>) -> Void) throws {\n        let query = GetUserLink()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an HTTPS link, which can be used to get information about the current user\n    /// - Returns: An HTTPS link, which can be used to get information about the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getUserLink() async throws -> UserLink {\n        let query = GetUserLink()\n        return try await self.run(query: query)\n    }\n\n    /// Searches a user by a token from the user's link\n    /// - Parameter token: Token to search for\n    public final func searchUserByToken(\n        token: String?,\n        completion: @escaping (Result<User, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchUserByToken(\n            token: token\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches a user by a token from the user's link\n    /// - Parameter token: Token to search for\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchUserByToken(token: String?) async throws -> User {\n        let query = SearchUserByToken(\n            token: token\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets the list of commands supported by the bot for the given user scope and language; for bots only\n    /// - Parameter commands: List of the bot's commands\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code. If empty, the commands will be applied to all users from the given scope, for which language there are no dedicated commands\n    /// - Parameter scope: The scope to which the commands are relevant; pass null to change commands in the default bot command scope\n    public final func setCommands(\n        commands: [BotCommand]?,\n        languageCode: String?,\n        scope: BotCommandScope?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetCommands(\n            commands: commands,\n            languageCode: languageCode,\n            scope: scope\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets the list of commands supported by the bot for the given user scope and language; for bots only\n    /// - Parameter commands: List of the bot's commands\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code. If empty, the commands will be applied to all users from the given scope, for which language there are no dedicated commands\n    /// - Parameter scope: The scope to which the commands are relevant; pass null to change commands in the default bot command scope\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setCommands(\n        commands: [BotCommand]?,\n        languageCode: String?,\n        scope: BotCommandScope?\n    ) async throws -> Ok {\n        let query = SetCommands(\n            commands: commands,\n            languageCode: languageCode,\n            scope: scope\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes commands supported by the bot for the given user scope and language; for bots only\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code or an empty string\n    /// - Parameter scope: The scope to which the commands are relevant; pass null to delete commands in the default bot command scope\n    public final func deleteCommands(\n        languageCode: String?,\n        scope: BotCommandScope?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteCommands(\n            languageCode: languageCode,\n            scope: scope\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes commands supported by the bot for the given user scope and language; for bots only\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code or an empty string\n    /// - Parameter scope: The scope to which the commands are relevant; pass null to delete commands in the default bot command scope\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteCommands(\n        languageCode: String?,\n        scope: BotCommandScope?\n    ) async throws -> Ok {\n        let query = DeleteCommands(\n            languageCode: languageCode,\n            scope: scope\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of commands supported by the bot for the given user scope and language; for bots only\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code or an empty string\n    /// - Parameter scope: The scope to which the commands are relevant; pass null to get commands in the default bot command scope\n    /// - Returns: The list of commands supported by the bot for the given user scope and language\n    public final func getCommands(\n        languageCode: String?,\n        scope: BotCommandScope?,\n        completion: @escaping (Result<BotCommands, Swift.Error>) -> Void\n    ) throws {\n        let query = GetCommands(\n            languageCode: languageCode,\n            scope: scope\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of commands supported by the bot for the given user scope and language; for bots only\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code or an empty string\n    /// - Parameter scope: The scope to which the commands are relevant; pass null to get commands in the default bot command scope\n    /// - Returns: The list of commands supported by the bot for the given user scope and language\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getCommands(\n        languageCode: String?,\n        scope: BotCommandScope?\n    ) async throws -> BotCommands {\n        let query = GetCommands(\n            languageCode: languageCode,\n            scope: scope\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets menu button for the given user or for all users; for bots only\n    /// - Parameter menuButton: New menu button\n    /// - Parameter userId: Identifier of the user or 0 to set menu button for all users\n    public final func setMenuButton(\n        menuButton: BotMenuButton?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetMenuButton(\n            menuButton: menuButton,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets menu button for the given user or for all users; for bots only\n    /// - Parameter menuButton: New menu button\n    /// - Parameter userId: Identifier of the user or 0 to set menu button for all users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setMenuButton(\n        menuButton: BotMenuButton?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = SetMenuButton(\n            menuButton: menuButton,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns menu button set by the bot for the given user; for bots only\n    /// - Parameter userId: Identifier of the user or 0 to get the default menu button\n    /// - Returns: Menu button set by the bot for the given user\n    public final func getMenuButton(\n        userId: Int64?,\n        completion: @escaping (Result<BotMenuButton, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMenuButton(\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns menu button set by the bot for the given user; for bots only\n    /// - Parameter userId: Identifier of the user or 0 to get the default menu button\n    /// - Returns: Menu button set by the bot for the given user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMenuButton(userId: Int64?) async throws -> BotMenuButton {\n        let query = GetMenuButton(\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets default administrator rights for adding the bot to basic group and supergroup chats; for bots only\n    /// - Parameter defaultGroupAdministratorRights: Default administrator rights for adding the bot to basic group and supergroup chats; pass null to remove default rights\n    public final func setDefaultGroupAdministratorRights(\n        defaultGroupAdministratorRights: ChatAdministratorRights?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetDefaultGroupAdministratorRights(\n            defaultGroupAdministratorRights: defaultGroupAdministratorRights\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets default administrator rights for adding the bot to basic group and supergroup chats; for bots only\n    /// - Parameter defaultGroupAdministratorRights: Default administrator rights for adding the bot to basic group and supergroup chats; pass null to remove default rights\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setDefaultGroupAdministratorRights(defaultGroupAdministratorRights: ChatAdministratorRights?) async throws -> Ok {\n        let query = SetDefaultGroupAdministratorRights(\n            defaultGroupAdministratorRights: defaultGroupAdministratorRights\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets default administrator rights for adding the bot to channel chats; for bots only\n    /// - Parameter defaultChannelAdministratorRights: Default administrator rights for adding the bot to channels; pass null to remove default rights\n    public final func setDefaultChannelAdministratorRights(\n        defaultChannelAdministratorRights: ChatAdministratorRights?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetDefaultChannelAdministratorRights(\n            defaultChannelAdministratorRights: defaultChannelAdministratorRights\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets default administrator rights for adding the bot to channel chats; for bots only\n    /// - Parameter defaultChannelAdministratorRights: Default administrator rights for adding the bot to channels; pass null to remove default rights\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setDefaultChannelAdministratorRights(defaultChannelAdministratorRights: ChatAdministratorRights?) async throws -> Ok {\n        let query = SetDefaultChannelAdministratorRights(\n            defaultChannelAdministratorRights: defaultChannelAdministratorRights\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks whether the specified bot can send messages to the user. Returns a 404 error if can't and the access can be granted by call to allowBotToSendMessages\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Returns: A 404 error if can't and the access can be granted by call to allowBotToSendMessages\n    public final func canBotSendMessages(\n        botUserId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CanBotSendMessages(\n            botUserId: botUserId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks whether the specified bot can send messages to the user. Returns a 404 error if can't and the access can be granted by call to allowBotToSendMessages\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Returns: A 404 error if can't and the access can be granted by call to allowBotToSendMessages\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func canBotSendMessages(botUserId: Int64?) async throws -> Ok {\n        let query = CanBotSendMessages(\n            botUserId: botUserId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Allows the specified bot to send messages to the user\n    /// - Parameter botUserId: Identifier of the target bot\n    public final func allowBotToSendMessages(\n        botUserId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AllowBotToSendMessages(\n            botUserId: botUserId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Allows the specified bot to send messages to the user\n    /// - Parameter botUserId: Identifier of the target bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func allowBotToSendMessages(botUserId: Int64?) async throws -> Ok {\n        let query = AllowBotToSendMessages(\n            botUserId: botUserId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends a custom request from a Web App\n    /// - Parameter botUserId: Identifier of the bot\n    /// - Parameter method: The method name\n    /// - Parameter parameters: JSON-serialized method parameters\n    public final func sendWebAppCustomRequest(\n        botUserId: Int64?,\n        method: String?,\n        parameters: String?,\n        completion: @escaping (Result<CustomRequestResult, Swift.Error>) -> Void\n    ) throws {\n        let query = SendWebAppCustomRequest(\n            botUserId: botUserId,\n            method: method,\n            parameters: parameters\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends a custom request from a Web App\n    /// - Parameter botUserId: Identifier of the bot\n    /// - Parameter method: The method name\n    /// - Parameter parameters: JSON-serialized method parameters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func sendWebAppCustomRequest(\n        botUserId: Int64?,\n        method: String?,\n        parameters: String?\n    ) async throws -> CustomRequestResult {\n        let query = SendWebAppCustomRequest(\n            botUserId: botUserId,\n            method: method,\n            parameters: parameters\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of media previews of a bot\n    /// - Parameter botUserId: Identifier of the target bot. The bot must have the main Web App\n    /// - Returns: The list of media previews of a bot\n    public final func getBotMediaPreviews(\n        botUserId: Int64?,\n        completion: @escaping (Result<BotMediaPreviews, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBotMediaPreviews(\n            botUserId: botUserId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of media previews of a bot\n    /// - Parameter botUserId: Identifier of the target bot. The bot must have the main Web App\n    /// - Returns: The list of media previews of a bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getBotMediaPreviews(botUserId: Int64?) async throws -> BotMediaPreviews {\n        let query = GetBotMediaPreviews(\n            botUserId: botUserId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of media previews for the given language and the list of languages for which the bot has dedicated previews\n    /// - Parameter botUserId: Identifier of the target bot. The bot must be owned and must have the main Web App\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code for which to get previews. If empty, then default previews are returned\n    /// - Returns: The list of media previews for the given language and the list of languages for which the bot has dedicated previews\n    public final func getBotMediaPreviewInfo(\n        botUserId: Int64?,\n        languageCode: String?,\n        completion: @escaping (Result<BotMediaPreviewInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBotMediaPreviewInfo(\n            botUserId: botUserId,\n            languageCode: languageCode\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of media previews for the given language and the list of languages for which the bot has dedicated previews\n    /// - Parameter botUserId: Identifier of the target bot. The bot must be owned and must have the main Web App\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code for which to get previews. If empty, then default previews are returned\n    /// - Returns: The list of media previews for the given language and the list of languages for which the bot has dedicated previews\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getBotMediaPreviewInfo(\n        botUserId: Int64?,\n        languageCode: String?\n    ) async throws -> BotMediaPreviewInfo {\n        let query = GetBotMediaPreviewInfo(\n            botUserId: botUserId,\n            languageCode: languageCode\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds a new media preview to the beginning of the list of media previews of a bot. Returns the added preview after addition is completed server-side. The total number of previews must not exceed getOption(\"bot_media_preview_count_max\") for the given language\n    /// - Parameter botUserId: Identifier of the target bot. The bot must be owned and must have the main Web App\n    /// - Parameter content: Content of the added preview\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code for which preview is added. If empty, then the preview will be shown to all users for whose languages there are no dedicated previews. If non-empty, then there must be an official language pack of the same name, which is returned by getLocalizationTargetInfo\n    /// - Returns: The added preview after addition is completed server-side\n    public final func addBotMediaPreview(\n        botUserId: Int64?,\n        content: InputStoryContent?,\n        languageCode: String?,\n        completion: @escaping (Result<BotMediaPreview, Swift.Error>) -> Void\n    ) throws {\n        let query = AddBotMediaPreview(\n            botUserId: botUserId,\n            content: content,\n            languageCode: languageCode\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds a new media preview to the beginning of the list of media previews of a bot. Returns the added preview after addition is completed server-side. The total number of previews must not exceed getOption(\"bot_media_preview_count_max\") for the given language\n    /// - Parameter botUserId: Identifier of the target bot. The bot must be owned and must have the main Web App\n    /// - Parameter content: Content of the added preview\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code for which preview is added. If empty, then the preview will be shown to all users for whose languages there are no dedicated previews. If non-empty, then there must be an official language pack of the same name, which is returned by getLocalizationTargetInfo\n    /// - Returns: The added preview after addition is completed server-side\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func addBotMediaPreview(\n        botUserId: Int64?,\n        content: InputStoryContent?,\n        languageCode: String?\n    ) async throws -> BotMediaPreview {\n        let query = AddBotMediaPreview(\n            botUserId: botUserId,\n            content: content,\n            languageCode: languageCode\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Replaces media preview in the list of media previews of a bot. Returns the new preview after edit is completed server-side\n    /// - Parameter botUserId: Identifier of the target bot. The bot must be owned and must have the main Web App\n    /// - Parameter content: Content of the new preview\n    /// - Parameter fileId: File identifier of the media to replace\n    /// - Parameter languageCode: Language code of the media preview to edit\n    /// - Returns: The new preview after edit is completed server-side\n    public final func editBotMediaPreview(\n        botUserId: Int64?,\n        content: InputStoryContent?,\n        fileId: Int?,\n        languageCode: String?,\n        completion: @escaping (Result<BotMediaPreview, Swift.Error>) -> Void\n    ) throws {\n        let query = EditBotMediaPreview(\n            botUserId: botUserId,\n            content: content,\n            fileId: fileId,\n            languageCode: languageCode\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Replaces media preview in the list of media previews of a bot. Returns the new preview after edit is completed server-side\n    /// - Parameter botUserId: Identifier of the target bot. The bot must be owned and must have the main Web App\n    /// - Parameter content: Content of the new preview\n    /// - Parameter fileId: File identifier of the media to replace\n    /// - Parameter languageCode: Language code of the media preview to edit\n    /// - Returns: The new preview after edit is completed server-side\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func editBotMediaPreview(\n        botUserId: Int64?,\n        content: InputStoryContent?,\n        fileId: Int?,\n        languageCode: String?\n    ) async throws -> BotMediaPreview {\n        let query = EditBotMediaPreview(\n            botUserId: botUserId,\n            content: content,\n            fileId: fileId,\n            languageCode: languageCode\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes order of media previews in the list of media previews of a bot\n    /// - Parameter botUserId: Identifier of the target bot. The bot must be owned and must have the main Web App\n    /// - Parameter fileIds: File identifiers of the media in the new order\n    /// - Parameter languageCode: Language code of the media previews to reorder\n    public final func reorderBotMediaPreviews(\n        botUserId: Int64?,\n        fileIds: [Int]?,\n        languageCode: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderBotMediaPreviews(\n            botUserId: botUserId,\n            fileIds: fileIds,\n            languageCode: languageCode\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes order of media previews in the list of media previews of a bot\n    /// - Parameter botUserId: Identifier of the target bot. The bot must be owned and must have the main Web App\n    /// - Parameter fileIds: File identifiers of the media in the new order\n    /// - Parameter languageCode: Language code of the media previews to reorder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func reorderBotMediaPreviews(\n        botUserId: Int64?,\n        fileIds: [Int]?,\n        languageCode: String?\n    ) async throws -> Ok {\n        let query = ReorderBotMediaPreviews(\n            botUserId: botUserId,\n            fileIds: fileIds,\n            languageCode: languageCode\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes media previews from the list of media previews of a bot\n    /// - Parameter botUserId: Identifier of the target bot. The bot must be owned and must have the main Web App\n    /// - Parameter fileIds: File identifiers of the media to delete\n    /// - Parameter languageCode: Language code of the media previews to delete\n    public final func deleteBotMediaPreviews(\n        botUserId: Int64?,\n        fileIds: [Int]?,\n        languageCode: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteBotMediaPreviews(\n            botUserId: botUserId,\n            fileIds: fileIds,\n            languageCode: languageCode\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes media previews from the list of media previews of a bot\n    /// - Parameter botUserId: Identifier of the target bot. The bot must be owned and must have the main Web App\n    /// - Parameter fileIds: File identifiers of the media to delete\n    /// - Parameter languageCode: Language code of the media previews to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteBotMediaPreviews(\n        botUserId: Int64?,\n        fileIds: [Int]?,\n        languageCode: String?\n    ) async throws -> Ok {\n        let query = DeleteBotMediaPreviews(\n            botUserId: botUserId,\n            fileIds: fileIds,\n            languageCode: languageCode\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks whether a username can be set for a new bot. Use checkChatUsername to check username for other chat types\n    /// - Parameter username: Username to be checked\n    public final func checkBotUsername(\n        username: String?,\n        completion: @escaping (Result<CheckChatUsernameResult, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckBotUsername(\n            username: username\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks whether a username can be set for a new bot. Use checkChatUsername to check username for other chat types\n    /// - Parameter username: Username to be checked\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func checkBotUsername(username: String?) async throws -> CheckChatUsernameResult {\n        let query = CheckBotUsername(\n            username: username\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Creates a bot which will be managed by another bot. Returns the created bot. May return an error with a message \"BOT_CREATE_LIMIT_EXCEEDED\" if the user already owns the maximum allowed number of bots as per premiumLimitTypeOwnedBotCount. An internal link \"https://t.me/BotFather?start=deletebot\" can be processed to handle the error\n    /// - Parameter managerBotUserId: Identifier of the bot that will manage the created bot\n    /// - Parameter name: Name of the bot; 1-64 characters\n    /// - Parameter username: Username of the bot. The username must end with \"bot\". Use checkBotUsername to find whether the name is suitable\n    /// - Parameter viaLink: Pass true if the bot is created from an internalLinkTypeRequestManagedBot link\n    /// - Returns: The created bot. May return an error with a message \"BOT_CREATE_LIMIT_EXCEEDED\" if the user already owns the maximum allowed number of bots as per premiumLimitTypeOwnedBotCount\n    public final func createBot(\n        managerBotUserId: Int64?,\n        name: String?,\n        username: String?,\n        viaLink: Bool?,\n        completion: @escaping (Result<User, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateBot(\n            managerBotUserId: managerBotUserId,\n            name: name,\n            username: username,\n            viaLink: viaLink\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Creates a bot which will be managed by another bot. Returns the created bot. May return an error with a message \"BOT_CREATE_LIMIT_EXCEEDED\" if the user already owns the maximum allowed number of bots as per premiumLimitTypeOwnedBotCount. An internal link \"https://t.me/BotFather?start=deletebot\" can be processed to handle the error\n    /// - Parameter managerBotUserId: Identifier of the bot that will manage the created bot\n    /// - Parameter name: Name of the bot; 1-64 characters\n    /// - Parameter username: Username of the bot. The username must end with \"bot\". Use checkBotUsername to find whether the name is suitable\n    /// - Parameter viaLink: Pass true if the bot is created from an internalLinkTypeRequestManagedBot link\n    /// - Returns: The created bot. May return an error with a message \"BOT_CREATE_LIMIT_EXCEEDED\" if the user already owns the maximum allowed number of bots as per premiumLimitTypeOwnedBotCount\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createBot(\n        managerBotUserId: Int64?,\n        name: String?,\n        username: String?,\n        viaLink: Bool?\n    ) async throws -> User {\n        let query = CreateBot(\n            managerBotUserId: managerBotUserId,\n            name: name,\n            username: username,\n            viaLink: viaLink\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns token of a managed bot; for bots only\n    /// - Parameter botUserId: Identifier of the managed bot\n    /// - Parameter revoke: Pass true to revoke the current token and create a new one\n    /// - Returns: Token of a managed bot\n    public final func getManagedBotToken(\n        botUserId: Int64?,\n        revoke: Bool?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetManagedBotToken(\n            botUserId: botUserId,\n            revoke: revoke\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns token of a managed bot; for bots only\n    /// - Parameter botUserId: Identifier of the managed bot\n    /// - Parameter revoke: Pass true to revoke the current token and create a new one\n    /// - Returns: Token of a managed bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getManagedBotToken(\n        botUserId: Int64?,\n        revoke: Bool?\n    ) async throws -> Text {\n        let query = GetManagedBotToken(\n            botUserId: botUserId,\n            revoke: revoke\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns access settings of a managed bot; for bots only\n    /// - Parameter botUserId: Identifier of the managed bot\n    /// - Returns: Access settings of a managed bot\n    public final func getManagedBotAccessSettings(\n        botUserId: Int64?,\n        completion: @escaping (Result<BotAccessSettings, Swift.Error>) -> Void\n    ) throws {\n        let query = GetManagedBotAccessSettings(\n            botUserId: botUserId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns access settings of a managed bot; for bots only\n    /// - Parameter botUserId: Identifier of the managed bot\n    /// - Returns: Access settings of a managed bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getManagedBotAccessSettings(botUserId: Int64?) async throws -> BotAccessSettings {\n        let query = GetManagedBotAccessSettings(\n            botUserId: botUserId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets access settings of a managed bot; for bots only\n    /// - Parameter botUserId: Identifier of the managed bot\n    /// - Parameter settings: New access settings\n    public final func setManagedBotAccessSettings(\n        botUserId: Int64?,\n        settings: BotAccessSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetManagedBotAccessSettings(\n            botUserId: botUserId,\n            settings: settings\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets access settings of a managed bot; for bots only\n    /// - Parameter botUserId: Identifier of the managed bot\n    /// - Parameter settings: New access settings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setManagedBotAccessSettings(\n        botUserId: Int64?,\n        settings: BotAccessSettings?\n    ) async throws -> Ok {\n        let query = SetManagedBotAccessSettings(\n            botUserId: botUserId,\n            settings: settings\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets the name of a bot. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code. If empty, the name will be shown to all users for whose languages there is no dedicated name\n    /// - Parameter name: New bot's name on the specified language; 0-64 characters; must be non-empty if language code is empty\n    public final func setBotName(\n        botUserId: Int64?,\n        languageCode: String?,\n        name: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBotName(\n            botUserId: botUserId,\n            languageCode: languageCode,\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets the name of a bot. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code. If empty, the name will be shown to all users for whose languages there is no dedicated name\n    /// - Parameter name: New bot's name on the specified language; 0-64 characters; must be non-empty if language code is empty\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setBotName(\n        botUserId: Int64?,\n        languageCode: String?,\n        name: String?\n    ) async throws -> Ok {\n        let query = SetBotName(\n            botUserId: botUserId,\n            languageCode: languageCode,\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the name of a bot in the given language. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code or an empty string\n    /// - Returns: The name of a bot in the given language\n    public final func getBotName(\n        botUserId: Int64?,\n        languageCode: String?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBotName(\n            botUserId: botUserId,\n            languageCode: languageCode\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the name of a bot in the given language. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code or an empty string\n    /// - Returns: The name of a bot in the given language\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getBotName(\n        botUserId: Int64?,\n        languageCode: String?\n    ) async throws -> Text {\n        let query = GetBotName(\n            botUserId: botUserId,\n            languageCode: languageCode\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes a profile photo for a bot\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter photo: Profile photo to set; pass null to delete the chat photo\n    public final func setBotProfilePhoto(\n        botUserId: Int64?,\n        photo: InputChatPhoto?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBotProfilePhoto(\n            botUserId: botUserId,\n            photo: photo\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes a profile photo for a bot\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter photo: Profile photo to set; pass null to delete the chat photo\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setBotProfilePhoto(\n        botUserId: Int64?,\n        photo: InputChatPhoto?\n    ) async throws -> Ok {\n        let query = SetBotProfilePhoto(\n            botUserId: botUserId,\n            photo: photo\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes active state for a username of a bot. The editable username can be disabled only if there are other active usernames. May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter isActive: Pass true to activate the username; pass false to disable it\n    /// - Parameter username: The username to change\n    /// - Returns: May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\n    public final func toggleBotUsernameIsActive(\n        botUserId: Int64?,\n        isActive: Bool?,\n        username: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleBotUsernameIsActive(\n            botUserId: botUserId,\n            isActive: isActive,\n            username: username\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes active state for a username of a bot. The editable username can be disabled only if there are other active usernames. May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter isActive: Pass true to activate the username; pass false to disable it\n    /// - Parameter username: The username to change\n    /// - Returns: May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleBotUsernameIsActive(\n        botUserId: Int64?,\n        isActive: Bool?,\n        username: String?\n    ) async throws -> Ok {\n        let query = ToggleBotUsernameIsActive(\n            botUserId: botUserId,\n            isActive: isActive,\n            username: username\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes order of active usernames of a bot. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter usernames: The new order of active usernames. All currently active usernames must be specified\n    public final func reorderBotActiveUsernames(\n        botUserId: Int64?,\n        usernames: [String]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderBotActiveUsernames(\n            botUserId: botUserId,\n            usernames: usernames\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes order of active usernames of a bot. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter usernames: The new order of active usernames. All currently active usernames must be specified\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func reorderBotActiveUsernames(\n        botUserId: Int64?,\n        usernames: [String]?\n    ) async throws -> Ok {\n        let query = ReorderBotActiveUsernames(\n            botUserId: botUserId,\n            usernames: usernames\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets the text shown in the chat with a bot if the chat is empty. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter description: \n    /// - Parameter languageCode: A two-letter ISO 639-1 language code. If empty, the description will be shown to all users for whose languages there is no dedicated description\n    public final func setBotInfoDescription(\n        botUserId: Int64?,\n        description: String?,\n        languageCode: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBotInfoDescription(\n            botUserId: botUserId,\n            description: description,\n            languageCode: languageCode\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets the text shown in the chat with a bot if the chat is empty. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter description: \n    /// - Parameter languageCode: A two-letter ISO 639-1 language code. If empty, the description will be shown to all users for whose languages there is no dedicated description\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setBotInfoDescription(\n        botUserId: Int64?,\n        description: String?,\n        languageCode: String?\n    ) async throws -> Ok {\n        let query = SetBotInfoDescription(\n            botUserId: botUserId,\n            description: description,\n            languageCode: languageCode\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the text shown in the chat with a bot if the chat is empty in the given language. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code or an empty string\n    /// - Returns: The text shown in the chat with a bot if the chat is empty in the given language\n    public final func getBotInfoDescription(\n        botUserId: Int64?,\n        languageCode: String?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBotInfoDescription(\n            botUserId: botUserId,\n            languageCode: languageCode\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the text shown in the chat with a bot if the chat is empty in the given language. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code or an empty string\n    /// - Returns: The text shown in the chat with a bot if the chat is empty in the given language\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getBotInfoDescription(\n        botUserId: Int64?,\n        languageCode: String?\n    ) async throws -> Text {\n        let query = GetBotInfoDescription(\n            botUserId: botUserId,\n            languageCode: languageCode\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets the text shown on a bot's profile page and sent together with the link when users share the bot. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code. If empty, the short description will be shown to all users for whose languages there is no dedicated description\n    /// - Parameter shortDescription: New bot's short description on the specified language\n    public final func setBotInfoShortDescription(\n        botUserId: Int64?,\n        languageCode: String?,\n        shortDescription: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBotInfoShortDescription(\n            botUserId: botUserId,\n            languageCode: languageCode,\n            shortDescription: shortDescription\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets the text shown on a bot's profile page and sent together with the link when users share the bot. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code. If empty, the short description will be shown to all users for whose languages there is no dedicated description\n    /// - Parameter shortDescription: New bot's short description on the specified language\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setBotInfoShortDescription(\n        botUserId: Int64?,\n        languageCode: String?,\n        shortDescription: String?\n    ) async throws -> Ok {\n        let query = SetBotInfoShortDescription(\n            botUserId: botUserId,\n            languageCode: languageCode,\n            shortDescription: shortDescription\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the text shown on a bot's profile page and sent together with the link when users share the bot in the given language. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code or an empty string\n    /// - Returns: The text shown on a bot's profile page and sent together with the link when users share the bot in the given language\n    public final func getBotInfoShortDescription(\n        botUserId: Int64?,\n        languageCode: String?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBotInfoShortDescription(\n            botUserId: botUserId,\n            languageCode: languageCode\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the text shown on a bot's profile page and sent together with the link when users share the bot in the given language. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code or an empty string\n    /// - Returns: The text shown on a bot's profile page and sent together with the link when users share the bot in the given language\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getBotInfoShortDescription(\n        botUserId: Int64?,\n        languageCode: String?\n    ) async throws -> Text {\n        let query = GetBotInfoShortDescription(\n            botUserId: botUserId,\n            languageCode: languageCode\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the verification status of a user or a chat by an owned bot\n    /// - Parameter botUserId: Identifier of the owned bot, which will verify the user or the chat\n    /// - Parameter customDescription: Custom description of verification reason; 0-getOption(\"bot_verification_custom_description_length_max\"). If empty, then \"was verified by organization \"organization_name\"\" will be used as description. Can be specified only if the bot is allowed to provide custom description\n    /// - Parameter verifiedId: Identifier of the user or the supergroup or channel chat, which will be verified by the bot\n    public final func setMessageSenderBotVerification(\n        botUserId: Int64?,\n        customDescription: String?,\n        verifiedId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetMessageSenderBotVerification(\n            botUserId: botUserId,\n            customDescription: customDescription,\n            verifiedId: verifiedId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the verification status of a user or a chat by an owned bot\n    /// - Parameter botUserId: Identifier of the owned bot, which will verify the user or the chat\n    /// - Parameter customDescription: Custom description of verification reason; 0-getOption(\"bot_verification_custom_description_length_max\"). If empty, then \"was verified by organization \"organization_name\"\" will be used as description. Can be specified only if the bot is allowed to provide custom description\n    /// - Parameter verifiedId: Identifier of the user or the supergroup or channel chat, which will be verified by the bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setMessageSenderBotVerification(\n        botUserId: Int64?,\n        customDescription: String?,\n        verifiedId: MessageSender?\n    ) async throws -> Ok {\n        let query = SetMessageSenderBotVerification(\n            botUserId: botUserId,\n            customDescription: customDescription,\n            verifiedId: verifiedId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes the verification status of a user or a chat by an owned bot\n    /// - Parameter botUserId: Identifier of the owned bot, which verified the user or the chat\n    /// - Parameter verifiedId: Identifier of the user or the supergroup or channel chat, which verification is removed\n    public final func removeMessageSenderBotVerification(\n        botUserId: Int64?,\n        verifiedId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveMessageSenderBotVerification(\n            botUserId: botUserId,\n            verifiedId: verifiedId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes the verification status of a user or a chat by an owned bot\n    /// - Parameter botUserId: Identifier of the owned bot, which verified the user or the chat\n    /// - Parameter verifiedId: Identifier of the user or the supergroup or channel chat, which verification is removed\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeMessageSenderBotVerification(\n        botUserId: Int64?,\n        verifiedId: MessageSender?\n    ) async throws -> Ok {\n        let query = RemoveMessageSenderBotVerification(\n            botUserId: botUserId,\n            verifiedId: verifiedId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns all active sessions of the current user\n    /// - Returns: All active sessions of the current user\n    public final func getActiveSessions(completion: @escaping (Result<Sessions, Swift.Error>) -> Void) throws {\n        let query = GetActiveSessions()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns all active sessions of the current user\n    /// - Returns: All active sessions of the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getActiveSessions() async throws -> Sessions {\n        let query = GetActiveSessions()\n        return try await self.run(query: query)\n    }\n\n    /// Terminates a session of the current user\n    /// - Parameter sessionId: Session identifier\n    public final func terminateSession(\n        sessionId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = TerminateSession(\n            sessionId: sessionId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Terminates a session of the current user\n    /// - Parameter sessionId: Session identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func terminateSession(sessionId: TdInt64?) async throws -> Ok {\n        let query = TerminateSession(\n            sessionId: sessionId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Terminates all other sessions of the current user\n    public final func terminateAllOtherSessions(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = TerminateAllOtherSessions()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Terminates all other sessions of the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func terminateAllOtherSessions() async throws -> Ok {\n        let query = TerminateAllOtherSessions()\n        return try await self.run(query: query)\n    }\n\n    /// Confirms an unconfirmed session of the current user from another device\n    /// - Parameter sessionId: Session identifier\n    public final func confirmSession(\n        sessionId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ConfirmSession(\n            sessionId: sessionId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Confirms an unconfirmed session of the current user from another device\n    /// - Parameter sessionId: Session identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func confirmSession(sessionId: TdInt64?) async throws -> Ok {\n        let query = ConfirmSession(\n            sessionId: sessionId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether a session can accept incoming calls\n    /// - Parameter canAcceptCalls: Pass true to allow accepting incoming calls by the session; pass false otherwise\n    /// - Parameter sessionId: Session identifier\n    public final func toggleSessionCanAcceptCalls(\n        canAcceptCalls: Bool?,\n        sessionId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSessionCanAcceptCalls(\n            canAcceptCalls: canAcceptCalls,\n            sessionId: sessionId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether a session can accept incoming calls\n    /// - Parameter canAcceptCalls: Pass true to allow accepting incoming calls by the session; pass false otherwise\n    /// - Parameter sessionId: Session identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleSessionCanAcceptCalls(\n        canAcceptCalls: Bool?,\n        sessionId: TdInt64?\n    ) async throws -> Ok {\n        let query = ToggleSessionCanAcceptCalls(\n            canAcceptCalls: canAcceptCalls,\n            sessionId: sessionId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether a session can accept incoming secret chats\n    /// - Parameter canAcceptSecretChats: Pass true to allow accepting secret chats by the session; pass false otherwise\n    /// - Parameter sessionId: Session identifier\n    public final func toggleSessionCanAcceptSecretChats(\n        canAcceptSecretChats: Bool?,\n        sessionId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSessionCanAcceptSecretChats(\n            canAcceptSecretChats: canAcceptSecretChats,\n            sessionId: sessionId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether a session can accept incoming secret chats\n    /// - Parameter canAcceptSecretChats: Pass true to allow accepting secret chats by the session; pass false otherwise\n    /// - Parameter sessionId: Session identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleSessionCanAcceptSecretChats(\n        canAcceptSecretChats: Bool?,\n        sessionId: TdInt64?\n    ) async throws -> Ok {\n        let query = ToggleSessionCanAcceptSecretChats(\n            canAcceptSecretChats: canAcceptSecretChats,\n            sessionId: sessionId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the period of inactivity after which sessions will automatically be terminated\n    /// - Parameter inactiveSessionTtlDays: New number of days of inactivity before sessions will be automatically terminated; 1-366 days\n    public final func setInactiveSessionTtl(\n        inactiveSessionTtlDays: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetInactiveSessionTtl(\n            inactiveSessionTtlDays: inactiveSessionTtlDays\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the period of inactivity after which sessions will automatically be terminated\n    /// - Parameter inactiveSessionTtlDays: New number of days of inactivity before sessions will be automatically terminated; 1-366 days\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setInactiveSessionTtl(inactiveSessionTtlDays: Int?) async throws -> Ok {\n        let query = SetInactiveSessionTtl(\n            inactiveSessionTtlDays: inactiveSessionTtlDays\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns all website where the current user used Telegram to log in\n    /// - Returns: All website where the current user used Telegram to log in\n    public final func getConnectedWebsites(completion: @escaping (Result<ConnectedWebsites, Swift.Error>) -> Void) throws {\n        let query = GetConnectedWebsites()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns all website where the current user used Telegram to log in\n    /// - Returns: All website where the current user used Telegram to log in\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getConnectedWebsites() async throws -> ConnectedWebsites {\n        let query = GetConnectedWebsites()\n        return try await self.run(query: query)\n    }\n\n    /// Disconnects website from the current user's Telegram account\n    /// - Parameter websiteId: Website identifier\n    public final func disconnectWebsite(\n        websiteId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DisconnectWebsite(\n            websiteId: websiteId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Disconnects website from the current user's Telegram account\n    /// - Parameter websiteId: Website identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func disconnectWebsite(websiteId: TdInt64?) async throws -> Ok {\n        let query = DisconnectWebsite(\n            websiteId: websiteId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Disconnects all websites from the current user's Telegram account\n    public final func disconnectAllWebsites(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = DisconnectAllWebsites()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Disconnects all websites from the current user's Telegram account\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func disconnectAllWebsites() async throws -> Ok {\n        let query = DisconnectAllWebsites()\n        return try await self.run(query: query)\n    }\n\n    /// Changes the editable username of a supergroup or channel, requires owner privileges in the supergroup or channel\n    /// - Parameter supergroupId: Identifier of the supergroup or channel\n    /// - Parameter username: New value of the username. Use an empty string to remove the username. The username can't be completely removed if there is another active or disabled username\n    public final func setSupergroupUsername(\n        supergroupId: Int64?,\n        username: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetSupergroupUsername(\n            supergroupId: supergroupId,\n            username: username\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the editable username of a supergroup or channel, requires owner privileges in the supergroup or channel\n    /// - Parameter supergroupId: Identifier of the supergroup or channel\n    /// - Parameter username: New value of the username. Use an empty string to remove the username. The username can't be completely removed if there is another active or disabled username\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setSupergroupUsername(\n        supergroupId: Int64?,\n        username: String?\n    ) async throws -> Ok {\n        let query = SetSupergroupUsername(\n            supergroupId: supergroupId,\n            username: username\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes active state for a username of a supergroup or channel, requires owner privileges in the supergroup or channel. The editable username can't be disabled. May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\n    /// - Parameter isActive: Pass true to activate the username; pass false to disable it\n    /// - Parameter supergroupId: Identifier of the supergroup or channel\n    /// - Parameter username: The username to change\n    /// - Returns: May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\n    public final func toggleSupergroupUsernameIsActive(\n        isActive: Bool?,\n        supergroupId: Int64?,\n        username: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupUsernameIsActive(\n            isActive: isActive,\n            supergroupId: supergroupId,\n            username: username\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes active state for a username of a supergroup or channel, requires owner privileges in the supergroup or channel. The editable username can't be disabled. May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\n    /// - Parameter isActive: Pass true to activate the username; pass false to disable it\n    /// - Parameter supergroupId: Identifier of the supergroup or channel\n    /// - Parameter username: The username to change\n    /// - Returns: May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleSupergroupUsernameIsActive(\n        isActive: Bool?,\n        supergroupId: Int64?,\n        username: String?\n    ) async throws -> Ok {\n        let query = ToggleSupergroupUsernameIsActive(\n            isActive: isActive,\n            supergroupId: supergroupId,\n            username: username\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Disables all active non-editable usernames of a supergroup or channel, requires owner privileges in the supergroup or channel\n    /// - Parameter supergroupId: Identifier of the supergroup or channel\n    public final func disableAllSupergroupUsernames(\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DisableAllSupergroupUsernames(\n            supergroupId: supergroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Disables all active non-editable usernames of a supergroup or channel, requires owner privileges in the supergroup or channel\n    /// - Parameter supergroupId: Identifier of the supergroup or channel\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func disableAllSupergroupUsernames(supergroupId: Int64?) async throws -> Ok {\n        let query = DisableAllSupergroupUsernames(\n            supergroupId: supergroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes order of active usernames of a supergroup or channel, requires owner privileges in the supergroup or channel\n    /// - Parameter supergroupId: Identifier of the supergroup or channel\n    /// - Parameter usernames: The new order of active usernames. All currently active usernames must be specified\n    public final func reorderSupergroupActiveUsernames(\n        supergroupId: Int64?,\n        usernames: [String]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderSupergroupActiveUsernames(\n            supergroupId: supergroupId,\n            usernames: usernames\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes order of active usernames of a supergroup or channel, requires owner privileges in the supergroup or channel\n    /// - Parameter supergroupId: Identifier of the supergroup or channel\n    /// - Parameter usernames: The new order of active usernames. All currently active usernames must be specified\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func reorderSupergroupActiveUsernames(\n        supergroupId: Int64?,\n        usernames: [String]?\n    ) async throws -> Ok {\n        let query = ReorderSupergroupActiveUsernames(\n            supergroupId: supergroupId,\n            usernames: usernames\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the sticker set of a supergroup; requires can_change_info administrator right\n    /// - Parameter stickerSetId: New value of the supergroup sticker set identifier. Use 0 to remove the supergroup sticker set\n    /// - Parameter supergroupId: Identifier of the supergroup\n    public final func setSupergroupStickerSet(\n        stickerSetId: TdInt64?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetSupergroupStickerSet(\n            stickerSetId: stickerSetId,\n            supergroupId: supergroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the sticker set of a supergroup; requires can_change_info administrator right\n    /// - Parameter stickerSetId: New value of the supergroup sticker set identifier. Use 0 to remove the supergroup sticker set\n    /// - Parameter supergroupId: Identifier of the supergroup\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setSupergroupStickerSet(\n        stickerSetId: TdInt64?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = SetSupergroupStickerSet(\n            stickerSetId: stickerSetId,\n            supergroupId: supergroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the custom emoji sticker set of a supergroup; requires can_change_info administrator right. The chat must have at least chatBoostFeatures.min_custom_emoji_sticker_set_boost_level boost level to pass the corresponding color\n    /// - Parameter customEmojiStickerSetId: New value of the custom emoji sticker set identifier for the supergroup. Use 0 to remove the custom emoji sticker set in the supergroup\n    /// - Parameter supergroupId: Identifier of the supergroup\n    public final func setSupergroupCustomEmojiStickerSet(\n        customEmojiStickerSetId: TdInt64?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetSupergroupCustomEmojiStickerSet(\n            customEmojiStickerSetId: customEmojiStickerSetId,\n            supergroupId: supergroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the custom emoji sticker set of a supergroup; requires can_change_info administrator right. The chat must have at least chatBoostFeatures.min_custom_emoji_sticker_set_boost_level boost level to pass the corresponding color\n    /// - Parameter customEmojiStickerSetId: New value of the custom emoji sticker set identifier for the supergroup. Use 0 to remove the custom emoji sticker set in the supergroup\n    /// - Parameter supergroupId: Identifier of the supergroup\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setSupergroupCustomEmojiStickerSet(\n        customEmojiStickerSetId: TdInt64?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = SetSupergroupCustomEmojiStickerSet(\n            customEmojiStickerSetId: customEmojiStickerSetId,\n            supergroupId: supergroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the number of times the supergroup must be boosted by a user to ignore slow mode and chat permission restrictions; requires can_restrict_members administrator right\n    /// - Parameter supergroupId: Identifier of the supergroup\n    /// - Parameter unrestrictBoostCount: New value of the unrestrict_boost_count supergroup setting; 0-8. Use 0 to remove the setting\n    public final func setSupergroupUnrestrictBoostCount(\n        supergroupId: Int64?,\n        unrestrictBoostCount: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetSupergroupUnrestrictBoostCount(\n            supergroupId: supergroupId,\n            unrestrictBoostCount: unrestrictBoostCount\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the number of times the supergroup must be boosted by a user to ignore slow mode and chat permission restrictions; requires can_restrict_members administrator right\n    /// - Parameter supergroupId: Identifier of the supergroup\n    /// - Parameter unrestrictBoostCount: New value of the unrestrict_boost_count supergroup setting; 0-8. Use 0 to remove the setting\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setSupergroupUnrestrictBoostCount(\n        supergroupId: Int64?,\n        unrestrictBoostCount: Int?\n    ) async throws -> Ok {\n        let query = SetSupergroupUnrestrictBoostCount(\n            supergroupId: supergroupId,\n            unrestrictBoostCount: unrestrictBoostCount\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the main profile tab of the channel; requires can_change_info administrator right\n    /// - Parameter mainProfileTab: The new value of the main profile tab\n    /// - Parameter supergroupId: Identifier of the channel\n    public final func setSupergroupMainProfileTab(\n        mainProfileTab: ProfileTab?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetSupergroupMainProfileTab(\n            mainProfileTab: mainProfileTab,\n            supergroupId: supergroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the main profile tab of the channel; requires can_change_info administrator right\n    /// - Parameter mainProfileTab: The new value of the main profile tab\n    /// - Parameter supergroupId: Identifier of the channel\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setSupergroupMainProfileTab(\n        mainProfileTab: ProfileTab?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = SetSupergroupMainProfileTab(\n            mainProfileTab: mainProfileTab,\n            supergroupId: supergroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether sender signature or link to the account is added to sent messages in a channel; requires can_change_info member right\n    /// - Parameter showMessageSender: New value of show_message_sender\n    /// - Parameter signMessages: New value of sign_messages\n    /// - Parameter supergroupId: Identifier of the channel\n    public final func toggleSupergroupSignMessages(\n        showMessageSender: Bool?,\n        signMessages: Bool?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupSignMessages(\n            showMessageSender: showMessageSender,\n            signMessages: signMessages,\n            supergroupId: supergroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether sender signature or link to the account is added to sent messages in a channel; requires can_change_info member right\n    /// - Parameter showMessageSender: New value of show_message_sender\n    /// - Parameter signMessages: New value of sign_messages\n    /// - Parameter supergroupId: Identifier of the channel\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleSupergroupSignMessages(\n        showMessageSender: Bool?,\n        signMessages: Bool?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleSupergroupSignMessages(\n            showMessageSender: showMessageSender,\n            signMessages: signMessages,\n            supergroupId: supergroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether joining is mandatory to send messages to a discussion supergroup; requires can_restrict_members administrator right\n    /// - Parameter joinToSendMessages: New value of join_to_send_messages\n    /// - Parameter supergroupId: Identifier of the supergroup that isn't a broadcast group\n    public final func toggleSupergroupJoinToSendMessages(\n        joinToSendMessages: Bool?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupJoinToSendMessages(\n            joinToSendMessages: joinToSendMessages,\n            supergroupId: supergroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether joining is mandatory to send messages to a discussion supergroup; requires can_restrict_members administrator right\n    /// - Parameter joinToSendMessages: New value of join_to_send_messages\n    /// - Parameter supergroupId: Identifier of the supergroup that isn't a broadcast group\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleSupergroupJoinToSendMessages(\n        joinToSendMessages: Bool?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleSupergroupJoinToSendMessages(\n            joinToSendMessages: joinToSendMessages,\n            supergroupId: supergroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether all users directly joining the supergroup need to be approved by supergroup administrators; requires can_restrict_members administrator right\n    /// - Parameter joinByRequest: New value of join_by_request\n    /// - Parameter supergroupId: Identifier of the supergroup that isn't a broadcast group and isn't a channel direct message group\n    public final func toggleSupergroupJoinByRequest(\n        joinByRequest: Bool?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupJoinByRequest(\n            joinByRequest: joinByRequest,\n            supergroupId: supergroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether all users directly joining the supergroup need to be approved by supergroup administrators; requires can_restrict_members administrator right\n    /// - Parameter joinByRequest: New value of join_by_request\n    /// - Parameter supergroupId: Identifier of the supergroup that isn't a broadcast group and isn't a channel direct message group\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleSupergroupJoinByRequest(\n        joinByRequest: Bool?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleSupergroupJoinByRequest(\n            joinByRequest: joinByRequest,\n            supergroupId: supergroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether the message history of a supergroup is available to new members; requires can_change_info member right\n    /// - Parameter isAllHistoryAvailable: The new value of is_all_history_available\n    /// - Parameter supergroupId: The identifier of the supergroup\n    public final func toggleSupergroupIsAllHistoryAvailable(\n        isAllHistoryAvailable: Bool?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupIsAllHistoryAvailable(\n            isAllHistoryAvailable: isAllHistoryAvailable,\n            supergroupId: supergroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether the message history of a supergroup is available to new members; requires can_change_info member right\n    /// - Parameter isAllHistoryAvailable: The new value of is_all_history_available\n    /// - Parameter supergroupId: The identifier of the supergroup\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleSupergroupIsAllHistoryAvailable(\n        isAllHistoryAvailable: Bool?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleSupergroupIsAllHistoryAvailable(\n            isAllHistoryAvailable: isAllHistoryAvailable,\n            supergroupId: supergroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether sponsored messages are shown in the channel chat; requires owner privileges in the channel. The chat must have at least chatBoostFeatures.min_sponsored_message_disable_boost_level boost level to disable sponsored messages\n    /// - Parameter canHaveSponsoredMessages: The new value of can_have_sponsored_messages\n    /// - Parameter supergroupId: The identifier of the channel\n    public final func toggleSupergroupCanHaveSponsoredMessages(\n        canHaveSponsoredMessages: Bool?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupCanHaveSponsoredMessages(\n            canHaveSponsoredMessages: canHaveSponsoredMessages,\n            supergroupId: supergroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether sponsored messages are shown in the channel chat; requires owner privileges in the channel. The chat must have at least chatBoostFeatures.min_sponsored_message_disable_boost_level boost level to disable sponsored messages\n    /// - Parameter canHaveSponsoredMessages: The new value of can_have_sponsored_messages\n    /// - Parameter supergroupId: The identifier of the channel\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleSupergroupCanHaveSponsoredMessages(\n        canHaveSponsoredMessages: Bool?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleSupergroupCanHaveSponsoredMessages(\n            canHaveSponsoredMessages: canHaveSponsoredMessages,\n            supergroupId: supergroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether messages are automatically translated in the channel chat; requires can_change_info administrator right in the channel. The chat must have at least chatBoostFeatures.min_automatic_translation_boost_level boost level to enable automatic translation\n    /// - Parameter hasAutomaticTranslation: The new value of has_automatic_translation\n    /// - Parameter supergroupId: The identifier of the channel\n    public final func toggleSupergroupHasAutomaticTranslation(\n        hasAutomaticTranslation: Bool?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupHasAutomaticTranslation(\n            hasAutomaticTranslation: hasAutomaticTranslation,\n            supergroupId: supergroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether messages are automatically translated in the channel chat; requires can_change_info administrator right in the channel. The chat must have at least chatBoostFeatures.min_automatic_translation_boost_level boost level to enable automatic translation\n    /// - Parameter hasAutomaticTranslation: The new value of has_automatic_translation\n    /// - Parameter supergroupId: The identifier of the channel\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleSupergroupHasAutomaticTranslation(\n        hasAutomaticTranslation: Bool?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleSupergroupHasAutomaticTranslation(\n            hasAutomaticTranslation: hasAutomaticTranslation,\n            supergroupId: supergroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether non-administrators can receive only administrators and bots using getSupergroupMembers or searchChatMembers. Can be called only if supergroupFullInfo.can_hide_members == true\n    /// - Parameter hasHiddenMembers: New value of has_hidden_members\n    /// - Parameter supergroupId: Identifier of the supergroup\n    public final func toggleSupergroupHasHiddenMembers(\n        hasHiddenMembers: Bool?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupHasHiddenMembers(\n            hasHiddenMembers: hasHiddenMembers,\n            supergroupId: supergroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether non-administrators can receive only administrators and bots using getSupergroupMembers or searchChatMembers. Can be called only if supergroupFullInfo.can_hide_members == true\n    /// - Parameter hasHiddenMembers: New value of has_hidden_members\n    /// - Parameter supergroupId: Identifier of the supergroup\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleSupergroupHasHiddenMembers(\n        hasHiddenMembers: Bool?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleSupergroupHasHiddenMembers(\n            hasHiddenMembers: hasHiddenMembers,\n            supergroupId: supergroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether aggressive anti-spam checks are enabled in the supergroup. Can be called only if supergroupFullInfo.can_toggle_aggressive_anti_spam == true\n    /// - Parameter hasAggressiveAntiSpamEnabled: The new value of has_aggressive_anti_spam_enabled\n    /// - Parameter supergroupId: The identifier of the supergroup, which isn't a broadcast group\n    public final func toggleSupergroupHasAggressiveAntiSpamEnabled(\n        hasAggressiveAntiSpamEnabled: Bool?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupHasAggressiveAntiSpamEnabled(\n            hasAggressiveAntiSpamEnabled: hasAggressiveAntiSpamEnabled,\n            supergroupId: supergroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether aggressive anti-spam checks are enabled in the supergroup. Can be called only if supergroupFullInfo.can_toggle_aggressive_anti_spam == true\n    /// - Parameter hasAggressiveAntiSpamEnabled: The new value of has_aggressive_anti_spam_enabled\n    /// - Parameter supergroupId: The identifier of the supergroup, which isn't a broadcast group\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleSupergroupHasAggressiveAntiSpamEnabled(\n        hasAggressiveAntiSpamEnabled: Bool?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleSupergroupHasAggressiveAntiSpamEnabled(\n            hasAggressiveAntiSpamEnabled: hasAggressiveAntiSpamEnabled,\n            supergroupId: supergroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether the supergroup is a forum; requires owner privileges in the supergroup. Discussion supergroups can't be converted to forums\n    /// - Parameter hasForumTabs: New value of has_forum_tabs; ignored if is_forum is false\n    /// - Parameter isForum: New value of is_forum\n    /// - Parameter supergroupId: Identifier of the supergroup\n    public final func toggleSupergroupIsForum(\n        hasForumTabs: Bool?,\n        isForum: Bool?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupIsForum(\n            hasForumTabs: hasForumTabs,\n            isForum: isForum,\n            supergroupId: supergroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether the supergroup is a forum; requires owner privileges in the supergroup. Discussion supergroups can't be converted to forums\n    /// - Parameter hasForumTabs: New value of has_forum_tabs; ignored if is_forum is false\n    /// - Parameter isForum: New value of is_forum\n    /// - Parameter supergroupId: Identifier of the supergroup\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleSupergroupIsForum(\n        hasForumTabs: Bool?,\n        isForum: Bool?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleSupergroupIsForum(\n            hasForumTabs: hasForumTabs,\n            isForum: isForum,\n            supergroupId: supergroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Upgrades supergroup to a broadcast group; requires owner privileges in the supergroup\n    /// - Parameter supergroupId: Identifier of the supergroup\n    public final func toggleSupergroupIsBroadcastGroup(\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupIsBroadcastGroup(\n            supergroupId: supergroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Upgrades supergroup to a broadcast group; requires owner privileges in the supergroup\n    /// - Parameter supergroupId: Identifier of the supergroup\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleSupergroupIsBroadcastGroup(supergroupId: Int64?) async throws -> Ok {\n        let query = ToggleSupergroupIsBroadcastGroup(\n            supergroupId: supergroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Reports messages in a supergroup as spam; requires administrator rights in the supergroup\n    /// - Parameter messageIds: Identifiers of messages to report. Use messageProperties.can_report_supergroup_spam to check whether the message can be reported\n    /// - Parameter supergroupId: Supergroup identifier\n    public final func reportSupergroupSpam(\n        messageIds: [Int64]?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportSupergroupSpam(\n            messageIds: messageIds,\n            supergroupId: supergroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Reports messages in a supergroup as spam; requires administrator rights in the supergroup\n    /// - Parameter messageIds: Identifiers of messages to report. Use messageProperties.can_report_supergroup_spam to check whether the message can be reported\n    /// - Parameter supergroupId: Supergroup identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func reportSupergroupSpam(\n        messageIds: [Int64]?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ReportSupergroupSpam(\n            messageIds: messageIds,\n            supergroupId: supergroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Reports a false deletion of a message by aggressive anti-spam checks; requires administrator rights in the supergroup. Can be called only for messages from chatEventMessageDeleted with can_report_anti_spam_false_positive == true\n    /// - Parameter messageId: Identifier of the erroneously deleted message from chatEventMessageDeleted\n    /// - Parameter supergroupId: Supergroup identifier\n    public final func reportSupergroupAntiSpamFalsePositive(\n        messageId: Int64?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportSupergroupAntiSpamFalsePositive(\n            messageId: messageId,\n            supergroupId: supergroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Reports a false deletion of a message by aggressive anti-spam checks; requires administrator rights in the supergroup. Can be called only for messages from chatEventMessageDeleted with can_report_anti_spam_false_positive == true\n    /// - Parameter messageId: Identifier of the erroneously deleted message from chatEventMessageDeleted\n    /// - Parameter supergroupId: Supergroup identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func reportSupergroupAntiSpamFalsePositive(\n        messageId: Int64?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ReportSupergroupAntiSpamFalsePositive(\n            messageId: messageId,\n            supergroupId: supergroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about members or banned users in a supergroup or channel. Can be used only if supergroupFullInfo.can_get_members == true; additionally, administrator privileges may be required for some filters\n    /// - Parameter filter: The type of users to return; pass null to use supergroupMembersFilterRecent\n    /// - Parameter limit: The maximum number of users to be returned; up to 200\n    /// - Parameter offset: Number of users to skip\n    /// - Parameter supergroupId: Identifier of the supergroup or channel\n    /// - Returns: Information about members or banned users in a supergroup or channel\n    public final func getSupergroupMembers(\n        filter: SupergroupMembersFilter?,\n        limit: Int?,\n        offset: Int?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<ChatMembers, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSupergroupMembers(\n            filter: filter,\n            limit: limit,\n            offset: offset,\n            supergroupId: supergroupId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about members or banned users in a supergroup or channel. Can be used only if supergroupFullInfo.can_get_members == true; additionally, administrator privileges may be required for some filters\n    /// - Parameter filter: The type of users to return; pass null to use supergroupMembersFilterRecent\n    /// - Parameter limit: The maximum number of users to be returned; up to 200\n    /// - Parameter offset: Number of users to skip\n    /// - Parameter supergroupId: Identifier of the supergroup or channel\n    /// - Returns: Information about members or banned users in a supergroup or channel\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getSupergroupMembers(\n        filter: SupergroupMembersFilter?,\n        limit: Int?,\n        offset: Int?,\n        supergroupId: Int64?\n    ) async throws -> ChatMembers {\n        let query = GetSupergroupMembers(\n            filter: filter,\n            limit: limit,\n            offset: offset,\n            supergroupId: supergroupId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Closes a secret chat, effectively transferring its state to secretChatStateClosed\n    /// - Parameter secretChatId: Secret chat identifier\n    public final func closeSecretChat(\n        secretChatId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CloseSecretChat(\n            secretChatId: secretChatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Closes a secret chat, effectively transferring its state to secretChatStateClosed\n    /// - Parameter secretChatId: Secret chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func closeSecretChat(secretChatId: Int?) async throws -> Ok {\n        let query = CloseSecretChat(\n            secretChatId: secretChatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a list of service actions taken by chat members and administrators in the last 48 hours. Available only for supergroups and channels. Requires administrator rights. Returns results in reverse chronological order (i.e., in order of decreasing event_id)\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter filters: The types of events to return; pass null to get chat events of all types\n    /// - Parameter fromEventId: Identifier of an event from which to return results. Use 0 to get results from the latest events\n    /// - Parameter limit: The maximum number of events to return; up to 100\n    /// - Parameter query: Search query by which to filter events\n    /// - Parameter userIds: User identifiers by which to filter events. By default, events relating to all users will be returned\n    /// - Returns: A list of service actions taken by chat members and administrators in the last 48 hours. Returns results in reverse chronological order (i.e., in order of decreasing event_id)\n    public final func getChatEventLog(\n        chatId: Int64?,\n        filters: ChatEventLogFilters?,\n        fromEventId: TdInt64?,\n        limit: Int?,\n        query: String?,\n        userIds: [Int64]?,\n        completion: @escaping (Result<ChatEvents, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatEventLog(\n            chatId: chatId,\n            filters: filters,\n            fromEventId: fromEventId,\n            limit: limit,\n            query: query,\n            userIds: userIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a list of service actions taken by chat members and administrators in the last 48 hours. Available only for supergroups and channels. Requires administrator rights. Returns results in reverse chronological order (i.e., in order of decreasing event_id)\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter filters: The types of events to return; pass null to get chat events of all types\n    /// - Parameter fromEventId: Identifier of an event from which to return results. Use 0 to get results from the latest events\n    /// - Parameter limit: The maximum number of events to return; up to 100\n    /// - Parameter query: Search query by which to filter events\n    /// - Parameter userIds: User identifiers by which to filter events. By default, events relating to all users will be returned\n    /// - Returns: A list of service actions taken by chat members and administrators in the last 48 hours. Returns results in reverse chronological order (i.e., in order of decreasing event_id)\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatEventLog(\n        chatId: Int64?,\n        filters: ChatEventLogFilters?,\n        fromEventId: TdInt64?,\n        limit: Int?,\n        query: String?,\n        userIds: [Int64]?\n    ) async throws -> ChatEvents {\n        let query = GetChatEventLog(\n            chatId: chatId,\n            filters: filters,\n            fromEventId: fromEventId,\n            limit: limit,\n            query: query,\n            userIds: userIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of supported time zones\n    /// - Returns: The list of supported time zones\n    public final func getTimeZones(completion: @escaping (Result<TimeZones, Swift.Error>) -> Void) throws {\n        let query = GetTimeZones()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of supported time zones\n    /// - Returns: The list of supported time zones\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getTimeZones() async throws -> TimeZones {\n        let query = GetTimeZones()\n        return try await self.run(query: query)\n    }\n\n    /// Returns an invoice payment form. This method must be called when the user presses inline button of the type inlineKeyboardButtonTypeBuy, or wants to buy access to media in a messagePaidMedia message\n    /// - Parameter inputInvoice: The invoice\n    /// - Parameter theme: Preferred payment form theme; pass null to use the default theme\n    /// - Returns: An invoice payment form\n    public final func getPaymentForm(\n        inputInvoice: InputInvoice?,\n        theme: ThemeParameters?,\n        completion: @escaping (Result<PaymentForm, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPaymentForm(\n            inputInvoice: inputInvoice,\n            theme: theme\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an invoice payment form. This method must be called when the user presses inline button of the type inlineKeyboardButtonTypeBuy, or wants to buy access to media in a messagePaidMedia message\n    /// - Parameter inputInvoice: The invoice\n    /// - Parameter theme: Preferred payment form theme; pass null to use the default theme\n    /// - Returns: An invoice payment form\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPaymentForm(\n        inputInvoice: InputInvoice?,\n        theme: ThemeParameters?\n    ) async throws -> PaymentForm {\n        let query = GetPaymentForm(\n            inputInvoice: inputInvoice,\n            theme: theme\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Validates the order information provided by a user and returns the available shipping options for a flexible invoice\n    /// - Parameter allowSave: Pass true to save the order information\n    /// - Parameter inputInvoice: The invoice\n    /// - Parameter orderInfo: The order information, provided by the user; pass null if empty\n    /// - Returns: Validates the order information provided by a user and returns the available shipping options for a flexible invoice\n    public final func validateOrderInfo(\n        allowSave: Bool?,\n        inputInvoice: InputInvoice?,\n        orderInfo: OrderInfo?,\n        completion: @escaping (Result<ValidatedOrderInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = ValidateOrderInfo(\n            allowSave: allowSave,\n            inputInvoice: inputInvoice,\n            orderInfo: orderInfo\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Validates the order information provided by a user and returns the available shipping options for a flexible invoice\n    /// - Parameter allowSave: Pass true to save the order information\n    /// - Parameter inputInvoice: The invoice\n    /// - Parameter orderInfo: The order information, provided by the user; pass null if empty\n    /// - Returns: Validates the order information provided by a user and returns the available shipping options for a flexible invoice\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func validateOrderInfo(\n        allowSave: Bool?,\n        inputInvoice: InputInvoice?,\n        orderInfo: OrderInfo?\n    ) async throws -> ValidatedOrderInfo {\n        let query = ValidateOrderInfo(\n            allowSave: allowSave,\n            inputInvoice: inputInvoice,\n            orderInfo: orderInfo\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends a filled-out payment form to the bot for final verification\n    /// - Parameter credentials: The credentials chosen by user for payment; pass null for a payment in Telegram Stars\n    /// - Parameter inputInvoice: The invoice\n    /// - Parameter orderInfoId: Identifier returned by validateOrderInfo, or an empty string\n    /// - Parameter paymentFormId: Payment form identifier returned by getPaymentForm\n    /// - Parameter shippingOptionId: Identifier of a chosen shipping option, if applicable\n    /// - Parameter tipAmount: Chosen by the user amount of tip in the smallest units of the currency\n    public final func sendPaymentForm(\n        credentials: InputCredentials?,\n        inputInvoice: InputInvoice?,\n        orderInfoId: String?,\n        paymentFormId: TdInt64?,\n        shippingOptionId: String?,\n        tipAmount: Int64?,\n        completion: @escaping (Result<PaymentResult, Swift.Error>) -> Void\n    ) throws {\n        let query = SendPaymentForm(\n            credentials: credentials,\n            inputInvoice: inputInvoice,\n            orderInfoId: orderInfoId,\n            paymentFormId: paymentFormId,\n            shippingOptionId: shippingOptionId,\n            tipAmount: tipAmount\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends a filled-out payment form to the bot for final verification\n    /// - Parameter credentials: The credentials chosen by user for payment; pass null for a payment in Telegram Stars\n    /// - Parameter inputInvoice: The invoice\n    /// - Parameter orderInfoId: Identifier returned by validateOrderInfo, or an empty string\n    /// - Parameter paymentFormId: Payment form identifier returned by getPaymentForm\n    /// - Parameter shippingOptionId: Identifier of a chosen shipping option, if applicable\n    /// - Parameter tipAmount: Chosen by the user amount of tip in the smallest units of the currency\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func sendPaymentForm(\n        credentials: InputCredentials?,\n        inputInvoice: InputInvoice?,\n        orderInfoId: String?,\n        paymentFormId: TdInt64?,\n        shippingOptionId: String?,\n        tipAmount: Int64?\n    ) async throws -> PaymentResult {\n        let query = SendPaymentForm(\n            credentials: credentials,\n            inputInvoice: inputInvoice,\n            orderInfoId: orderInfoId,\n            paymentFormId: paymentFormId,\n            shippingOptionId: shippingOptionId,\n            tipAmount: tipAmount\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a successful payment\n    /// - Parameter chatId: Chat identifier of the messagePaymentSuccessful message\n    /// - Parameter messageId: Message identifier\n    /// - Returns: Information about a successful payment\n    public final func getPaymentReceipt(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<PaymentReceipt, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPaymentReceipt(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a successful payment\n    /// - Parameter chatId: Chat identifier of the messagePaymentSuccessful message\n    /// - Parameter messageId: Message identifier\n    /// - Returns: Information about a successful payment\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPaymentReceipt(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> PaymentReceipt {\n        let query = GetPaymentReceipt(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns saved order information. Returns a 404 error if there is no saved order information\n    /// - Returns: Saved order information. Returns a 404 error if there is no saved order information\n    public final func getSavedOrderInfo(completion: @escaping (Result<OrderInfo, Swift.Error>) -> Void) throws {\n        let query = GetSavedOrderInfo()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns saved order information. Returns a 404 error if there is no saved order information\n    /// - Returns: Saved order information. Returns a 404 error if there is no saved order information\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getSavedOrderInfo() async throws -> OrderInfo {\n        let query = GetSavedOrderInfo()\n        return try await self.run(query: query)\n    }\n\n    /// Deletes saved order information\n    public final func deleteSavedOrderInfo(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = DeleteSavedOrderInfo()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes saved order information\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteSavedOrderInfo() async throws -> Ok {\n        let query = DeleteSavedOrderInfo()\n        return try await self.run(query: query)\n    }\n\n    /// Deletes saved credentials for all payment provider bots\n    public final func deleteSavedCredentials(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = DeleteSavedCredentials()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes saved credentials for all payment provider bots\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteSavedCredentials() async throws -> Ok {\n        let query = DeleteSavedCredentials()\n        return try await self.run(query: query)\n    }\n\n    /// Changes settings for gift receiving for the current user\n    /// - Parameter settings: The new settings\n    public final func setGiftSettings(\n        settings: GiftSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetGiftSettings(\n            settings: settings\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes settings for gift receiving for the current user\n    /// - Parameter settings: The new settings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setGiftSettings(settings: GiftSettings?) async throws -> Ok {\n        let query = SetGiftSettings(\n            settings: settings\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns gifts that can be sent to other users and channel chats\n    /// - Returns: Gifts that can be sent to other users and channel chats\n    public final func getAvailableGifts(completion: @escaping (Result<AvailableGifts, Swift.Error>) -> Void) throws {\n        let query = GetAvailableGifts()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns gifts that can be sent to other users and channel chats\n    /// - Returns: Gifts that can be sent to other users and channel chats\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getAvailableGifts() async throws -> AvailableGifts {\n        let query = GetAvailableGifts()\n        return try await self.run(query: query)\n    }\n\n    /// Checks whether a gift with next_send_date in the future can be sent already\n    /// - Parameter giftId: Identifier of the gift to send\n    public final func canSendGift(\n        giftId: TdInt64?,\n        completion: @escaping (Result<CanSendGiftResult, Swift.Error>) -> Void\n    ) throws {\n        let query = CanSendGift(\n            giftId: giftId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks whether a gift with next_send_date in the future can be sent already\n    /// - Parameter giftId: Identifier of the gift to send\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func canSendGift(giftId: TdInt64?) async throws -> CanSendGiftResult {\n        let query = CanSendGift(\n            giftId: giftId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends a gift to another user or channel chat. May return an error with a message \"STARGIFT_USAGE_LIMITED\" if the gift was sold out\n    /// - Parameter giftId: Identifier of the gift to send\n    /// - Parameter isPrivate: Pass true to show gift text and sender only to the gift receiver; otherwise, everyone will be able to see them\n    /// - Parameter ownerId: Identifier of the user or the channel chat that will receive the gift; limited gifts can't be sent to channel chats\n    /// - Parameter payForUpgrade: Pass true to additionally pay for the gift upgrade and allow the receiver to upgrade it for free\n    /// - Parameter text: Text to show along with the gift; 0-getOption(\"gift_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed. Must be empty if the receiver enabled paid messages\n    /// - Returns: May return an error with a message \"STARGIFT_USAGE_LIMITED\" if the gift was sold out\n    public final func sendGift(\n        giftId: TdInt64?,\n        isPrivate: Bool?,\n        ownerId: MessageSender?,\n        payForUpgrade: Bool?,\n        text: FormattedText?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendGift(\n            giftId: giftId,\n            isPrivate: isPrivate,\n            ownerId: ownerId,\n            payForUpgrade: payForUpgrade,\n            text: text\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends a gift to another user or channel chat. May return an error with a message \"STARGIFT_USAGE_LIMITED\" if the gift was sold out\n    /// - Parameter giftId: Identifier of the gift to send\n    /// - Parameter isPrivate: Pass true to show gift text and sender only to the gift receiver; otherwise, everyone will be able to see them\n    /// - Parameter ownerId: Identifier of the user or the channel chat that will receive the gift; limited gifts can't be sent to channel chats\n    /// - Parameter payForUpgrade: Pass true to additionally pay for the gift upgrade and allow the receiver to upgrade it for free\n    /// - Parameter text: Text to show along with the gift; 0-getOption(\"gift_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed. Must be empty if the receiver enabled paid messages\n    /// - Returns: May return an error with a message \"STARGIFT_USAGE_LIMITED\" if the gift was sold out\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func sendGift(\n        giftId: TdInt64?,\n        isPrivate: Bool?,\n        ownerId: MessageSender?,\n        payForUpgrade: Bool?,\n        text: FormattedText?\n    ) async throws -> Ok {\n        let query = SendGift(\n            giftId: giftId,\n            isPrivate: isPrivate,\n            ownerId: ownerId,\n            payForUpgrade: payForUpgrade,\n            text: text\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns auction state for a gift\n    /// - Parameter auctionId: Unique identifier of the auction\n    /// - Returns: Auction state for a gift\n    public final func getGiftAuctionState(\n        auctionId: String?,\n        completion: @escaping (Result<GiftAuctionState, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGiftAuctionState(\n            auctionId: auctionId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns auction state for a gift\n    /// - Parameter auctionId: Unique identifier of the auction\n    /// - Returns: Auction state for a gift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getGiftAuctionState(auctionId: String?) async throws -> GiftAuctionState {\n        let query = GetGiftAuctionState(\n            auctionId: auctionId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the gifts that were acquired by the current user on a gift auction\n    /// - Parameter giftId: Identifier of the auctioned gift\n    /// - Returns: The gifts that were acquired by the current user on a gift auction\n    public final func getGiftAuctionAcquiredGifts(\n        giftId: TdInt64?,\n        completion: @escaping (Result<GiftAuctionAcquiredGifts, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGiftAuctionAcquiredGifts(\n            giftId: giftId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the gifts that were acquired by the current user on a gift auction\n    /// - Parameter giftId: Identifier of the auctioned gift\n    /// - Returns: The gifts that were acquired by the current user on a gift auction\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getGiftAuctionAcquiredGifts(giftId: TdInt64?) async throws -> GiftAuctionAcquiredGifts {\n        let query = GetGiftAuctionAcquiredGifts(\n            giftId: giftId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that a gift auction was opened by the user\n    /// - Parameter giftId: Identifier of the gift, which auction was opened\n    public final func openGiftAuction(\n        giftId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = OpenGiftAuction(\n            giftId: giftId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that a gift auction was opened by the user\n    /// - Parameter giftId: Identifier of the gift, which auction was opened\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func openGiftAuction(giftId: TdInt64?) async throws -> Ok {\n        let query = OpenGiftAuction(\n            giftId: giftId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that a gift auction was closed by the user\n    /// - Parameter giftId: Identifier of the gift, which auction was closed\n    public final func closeGiftAuction(\n        giftId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CloseGiftAuction(\n            giftId: giftId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that a gift auction was closed by the user\n    /// - Parameter giftId: Identifier of the gift, which auction was closed\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func closeGiftAuction(giftId: TdInt64?) async throws -> Ok {\n        let query = CloseGiftAuction(\n            giftId: giftId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Places a bid on an auction gift\n    /// - Parameter giftId: Identifier of the gift to place the bid on\n    /// - Parameter isPrivate: Pass true to show gift text and sender only to the gift receiver; otherwise, everyone will be able to see them\n    /// - Parameter starCount: The number of Telegram Stars to place in the bid\n    /// - Parameter text: Text to show along with the gift; 0-getOption(\"gift_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed. Must be empty if the receiver enabled paid messages\n    /// - Parameter userId: Identifier of the user who will receive the gift\n    public final func placeGiftAuctionBid(\n        giftId: TdInt64?,\n        isPrivate: Bool?,\n        starCount: Int64?,\n        text: FormattedText?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = PlaceGiftAuctionBid(\n            giftId: giftId,\n            isPrivate: isPrivate,\n            starCount: starCount,\n            text: text,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Places a bid on an auction gift\n    /// - Parameter giftId: Identifier of the gift to place the bid on\n    /// - Parameter isPrivate: Pass true to show gift text and sender only to the gift receiver; otherwise, everyone will be able to see them\n    /// - Parameter starCount: The number of Telegram Stars to place in the bid\n    /// - Parameter text: Text to show along with the gift; 0-getOption(\"gift_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed. Must be empty if the receiver enabled paid messages\n    /// - Parameter userId: Identifier of the user who will receive the gift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func placeGiftAuctionBid(\n        giftId: TdInt64?,\n        isPrivate: Bool?,\n        starCount: Int64?,\n        text: FormattedText?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = PlaceGiftAuctionBid(\n            giftId: giftId,\n            isPrivate: isPrivate,\n            starCount: starCount,\n            text: text,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Increases a bid for an auction gift without changing gift text and receiver\n    /// - Parameter giftId: Identifier of the gift to put the bid on\n    /// - Parameter starCount: The number of Telegram Stars to put in the bid\n    public final func increaseGiftAuctionBid(\n        giftId: TdInt64?,\n        starCount: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = IncreaseGiftAuctionBid(\n            giftId: giftId,\n            starCount: starCount\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Increases a bid for an auction gift without changing gift text and receiver\n    /// - Parameter giftId: Identifier of the gift to put the bid on\n    /// - Parameter starCount: The number of Telegram Stars to put in the bid\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func increaseGiftAuctionBid(\n        giftId: TdInt64?,\n        starCount: Int64?\n    ) async throws -> Ok {\n        let query = IncreaseGiftAuctionBid(\n            giftId: giftId,\n            starCount: starCount\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sells a gift for Telegram Stars; requires owner privileges for gifts owned by a chat\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request; for bots only\n    /// - Parameter receivedGiftId: Identifier of the gift\n    public final func sellGift(\n        businessConnectionId: String?,\n        receivedGiftId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SellGift(\n            businessConnectionId: businessConnectionId,\n            receivedGiftId: receivedGiftId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sells a gift for Telegram Stars; requires owner privileges for gifts owned by a chat\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request; for bots only\n    /// - Parameter receivedGiftId: Identifier of the gift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func sellGift(\n        businessConnectionId: String?,\n        receivedGiftId: String?\n    ) async throws -> Ok {\n        let query = SellGift(\n            businessConnectionId: businessConnectionId,\n            receivedGiftId: receivedGiftId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether a gift is shown on the current user's or the channel's profile page; requires can_post_messages administrator right in the channel chat\n    /// - Parameter isSaved: Pass true to display the gift on the user's or the channel's profile page; pass false to remove it from the profile page\n    /// - Parameter receivedGiftId: Identifier of the gift\n    public final func toggleGiftIsSaved(\n        isSaved: Bool?,\n        receivedGiftId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleGiftIsSaved(\n            isSaved: isSaved,\n            receivedGiftId: receivedGiftId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether a gift is shown on the current user's or the channel's profile page; requires can_post_messages administrator right in the channel chat\n    /// - Parameter isSaved: Pass true to display the gift on the user's or the channel's profile page; pass false to remove it from the profile page\n    /// - Parameter receivedGiftId: Identifier of the gift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleGiftIsSaved(\n        isSaved: Bool?,\n        receivedGiftId: String?\n    ) async throws -> Ok {\n        let query = ToggleGiftIsSaved(\n            isSaved: isSaved,\n            receivedGiftId: receivedGiftId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the list of pinned gifts on the current user's or the channel's profile page; requires can_post_messages administrator right in the channel chat\n    /// - Parameter ownerId: Identifier of the user or the channel chat that received the gifts\n    /// - Parameter receivedGiftIds: New list of pinned gifts. All gifts must be upgraded and saved on the profile page first. There can be up to getOption(\"pinned_gift_count_max\") pinned gifts\n    public final func setPinnedGifts(\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetPinnedGifts(\n            ownerId: ownerId,\n            receivedGiftIds: receivedGiftIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the list of pinned gifts on the current user's or the channel's profile page; requires can_post_messages administrator right in the channel chat\n    /// - Parameter ownerId: Identifier of the user or the channel chat that received the gifts\n    /// - Parameter receivedGiftIds: New list of pinned gifts. All gifts must be upgraded and saved on the profile page first. There can be up to getOption(\"pinned_gift_count_max\") pinned gifts\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setPinnedGifts(\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?\n    ) async throws -> Ok {\n        let query = SetPinnedGifts(\n            ownerId: ownerId,\n            receivedGiftIds: receivedGiftIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Toggles whether notifications for new gifts received by a channel chat are sent to the current user; requires can_post_messages administrator right in the chat\n    /// - Parameter areEnabled: Pass true to enable notifications about new gifts owned by the channel chat; pass false to disable the notifications\n    /// - Parameter chatId: Identifier of the channel chat\n    public final func toggleChatGiftNotifications(\n        areEnabled: Bool?,\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleChatGiftNotifications(\n            areEnabled: areEnabled,\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Toggles whether notifications for new gifts received by a channel chat are sent to the current user; requires can_post_messages administrator right in the chat\n    /// - Parameter areEnabled: Pass true to enable notifications about new gifts owned by the channel chat; pass false to disable the notifications\n    /// - Parameter chatId: Identifier of the channel chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func toggleChatGiftNotifications(\n        areEnabled: Bool?,\n        chatId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleChatGiftNotifications(\n            areEnabled: areEnabled,\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns examples of possible upgraded gifts for a regular gift\n    /// - Parameter regularGiftId: Identifier of the regular gift\n    /// - Returns: Examples of possible upgraded gifts for a regular gift\n    public final func getGiftUpgradePreview(\n        regularGiftId: TdInt64?,\n        completion: @escaping (Result<GiftUpgradePreview, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGiftUpgradePreview(\n            regularGiftId: regularGiftId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns examples of possible upgraded gifts for a regular gift\n    /// - Parameter regularGiftId: Identifier of the regular gift\n    /// - Returns: Examples of possible upgraded gifts for a regular gift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getGiftUpgradePreview(regularGiftId: TdInt64?) async throws -> GiftUpgradePreview {\n        let query = GetGiftUpgradePreview(\n            regularGiftId: regularGiftId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns all possible variants of upgraded gifts for a regular gift\n    /// - Parameter regularGiftId: Identifier of the regular gift\n    /// - Parameter returnCraftModels: Pass true to get models that can be obtained by crafting a gift from upgraded gifts\n    /// - Parameter returnUpgradeModels: Pass true to get models that can be obtained by upgrading a regular gift\n    /// - Returns: All possible variants of upgraded gifts for a regular gift\n    public final func getUpgradedGiftVariants(\n        regularGiftId: TdInt64?,\n        returnCraftModels: Bool?,\n        returnUpgradeModels: Bool?,\n        completion: @escaping (Result<GiftUpgradeVariants, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUpgradedGiftVariants(\n            regularGiftId: regularGiftId,\n            returnCraftModels: returnCraftModels,\n            returnUpgradeModels: returnUpgradeModels\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns all possible variants of upgraded gifts for a regular gift\n    /// - Parameter regularGiftId: Identifier of the regular gift\n    /// - Parameter returnCraftModels: Pass true to get models that can be obtained by crafting a gift from upgraded gifts\n    /// - Parameter returnUpgradeModels: Pass true to get models that can be obtained by upgrading a regular gift\n    /// - Returns: All possible variants of upgraded gifts for a regular gift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getUpgradedGiftVariants(\n        regularGiftId: TdInt64?,\n        returnCraftModels: Bool?,\n        returnUpgradeModels: Bool?\n    ) async throws -> GiftUpgradeVariants {\n        let query = GetUpgradedGiftVariants(\n            regularGiftId: regularGiftId,\n            returnCraftModels: returnCraftModels,\n            returnUpgradeModels: returnUpgradeModels\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Upgrades a regular gift\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request; for bots only\n    /// - Parameter keepOriginalDetails: Pass true to keep the original gift text, sender and receiver in the upgraded gift\n    /// - Parameter receivedGiftId: Identifier of the gift\n    /// - Parameter starCount: The Telegram Star amount required to pay for the upgrade. It the gift has prepaid_upgrade_star_count > 0, then pass 0, otherwise, pass gift.upgrade_star_count\n    public final func upgradeGift(\n        businessConnectionId: String?,\n        keepOriginalDetails: Bool?,\n        receivedGiftId: String?,\n        starCount: Int64?,\n        completion: @escaping (Result<UpgradeGiftResult, Swift.Error>) -> Void\n    ) throws {\n        let query = UpgradeGift(\n            businessConnectionId: businessConnectionId,\n            keepOriginalDetails: keepOriginalDetails,\n            receivedGiftId: receivedGiftId,\n            starCount: starCount\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Upgrades a regular gift\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request; for bots only\n    /// - Parameter keepOriginalDetails: Pass true to keep the original gift text, sender and receiver in the upgraded gift\n    /// - Parameter receivedGiftId: Identifier of the gift\n    /// - Parameter starCount: The Telegram Star amount required to pay for the upgrade. It the gift has prepaid_upgrade_star_count > 0, then pass 0, otherwise, pass gift.upgrade_star_count\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func upgradeGift(\n        businessConnectionId: String?,\n        keepOriginalDetails: Bool?,\n        receivedGiftId: String?,\n        starCount: Int64?\n    ) async throws -> UpgradeGiftResult {\n        let query = UpgradeGift(\n            businessConnectionId: businessConnectionId,\n            keepOriginalDetails: keepOriginalDetails,\n            receivedGiftId: receivedGiftId,\n            starCount: starCount\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Pays for upgrade of a regular gift that is owned by another user or channel chat\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the gift\n    /// - Parameter prepaidUpgradeHash: Prepaid upgrade hash as received along with the gift\n    /// - Parameter starCount: The Telegram Star amount the user agreed to pay for the upgrade; must be equal to gift.upgrade_star_count\n    public final func buyGiftUpgrade(\n        ownerId: MessageSender?,\n        prepaidUpgradeHash: String?,\n        starCount: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = BuyGiftUpgrade(\n            ownerId: ownerId,\n            prepaidUpgradeHash: prepaidUpgradeHash,\n            starCount: starCount\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Pays for upgrade of a regular gift that is owned by another user or channel chat\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the gift\n    /// - Parameter prepaidUpgradeHash: Prepaid upgrade hash as received along with the gift\n    /// - Parameter starCount: The Telegram Star amount the user agreed to pay for the upgrade; must be equal to gift.upgrade_star_count\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func buyGiftUpgrade(\n        ownerId: MessageSender?,\n        prepaidUpgradeHash: String?,\n        starCount: Int64?\n    ) async throws -> Ok {\n        let query = BuyGiftUpgrade(\n            ownerId: ownerId,\n            prepaidUpgradeHash: prepaidUpgradeHash,\n            starCount: starCount\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Crafts a new gift from other gifts that will be permanently lost\n    /// - Parameter receivedGiftIds: Identifier of the gifts to use for crafting. In the case of a successful craft, the resulting gift will have the number of the first gift. Consequently, the first gift must not have been withdrawn to the TON blockchain as an NFT and must have an empty gift_address\n    public final func craftGift(\n        receivedGiftIds: [String]?,\n        completion: @escaping (Result<CraftGiftResult, Swift.Error>) -> Void\n    ) throws {\n        let query = CraftGift(\n            receivedGiftIds: receivedGiftIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Crafts a new gift from other gifts that will be permanently lost\n    /// - Parameter receivedGiftIds: Identifier of the gifts to use for crafting. In the case of a successful craft, the resulting gift will have the number of the first gift. Consequently, the first gift must not have been withdrawn to the TON blockchain as an NFT and must have an empty gift_address\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func craftGift(receivedGiftIds: [String]?) async throws -> CraftGiftResult {\n        let query = CraftGift(\n            receivedGiftIds: receivedGiftIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends an upgraded gift to another user or channel chat\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request; for bots only\n    /// - Parameter newOwnerId: Identifier of the user or the channel chat that will receive the gift\n    /// - Parameter receivedGiftId: Identifier of the gift\n    /// - Parameter starCount: The Telegram Star amount required to pay for the transfer\n    public final func transferGift(\n        businessConnectionId: String?,\n        newOwnerId: MessageSender?,\n        receivedGiftId: String?,\n        starCount: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = TransferGift(\n            businessConnectionId: businessConnectionId,\n            newOwnerId: newOwnerId,\n            receivedGiftId: receivedGiftId,\n            starCount: starCount\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends an upgraded gift to another user or channel chat\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request; for bots only\n    /// - Parameter newOwnerId: Identifier of the user or the channel chat that will receive the gift\n    /// - Parameter receivedGiftId: Identifier of the gift\n    /// - Parameter starCount: The Telegram Star amount required to pay for the transfer\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func transferGift(\n        businessConnectionId: String?,\n        newOwnerId: MessageSender?,\n        receivedGiftId: String?,\n        starCount: Int64?\n    ) async throws -> Ok {\n        let query = TransferGift(\n            businessConnectionId: businessConnectionId,\n            newOwnerId: newOwnerId,\n            receivedGiftId: receivedGiftId,\n            starCount: starCount\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Drops original details for an upgraded gift\n    /// - Parameter receivedGiftId: Identifier of the gift\n    /// - Parameter starCount: The Telegram Star amount required to pay for the operation\n    public final func dropGiftOriginalDetails(\n        receivedGiftId: String?,\n        starCount: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DropGiftOriginalDetails(\n            receivedGiftId: receivedGiftId,\n            starCount: starCount\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Drops original details for an upgraded gift\n    /// - Parameter receivedGiftId: Identifier of the gift\n    /// - Parameter starCount: The Telegram Star amount required to pay for the operation\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func dropGiftOriginalDetails(\n        receivedGiftId: String?,\n        starCount: Int64?\n    ) async throws -> Ok {\n        let query = DropGiftOriginalDetails(\n            receivedGiftId: receivedGiftId,\n            starCount: starCount\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends an upgraded gift that is available for resale to another user or channel chat; gifts already owned by the current user must be transferred using transferGift and can't be passed to the method\n    /// - Parameter giftName: Name of the upgraded gift to send\n    /// - Parameter ownerId: Identifier of the user or the channel chat that will receive the gift\n    /// - Parameter price: The price that the user agreed to pay for the gift\n    public final func sendResoldGift(\n        giftName: String?,\n        ownerId: MessageSender?,\n        price: GiftResalePrice?,\n        completion: @escaping (Result<GiftResaleResult, Swift.Error>) -> Void\n    ) throws {\n        let query = SendResoldGift(\n            giftName: giftName,\n            ownerId: ownerId,\n            price: price\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends an upgraded gift that is available for resale to another user or channel chat; gifts already owned by the current user must be transferred using transferGift and can't be passed to the method\n    /// - Parameter giftName: Name of the upgraded gift to send\n    /// - Parameter ownerId: Identifier of the user or the channel chat that will receive the gift\n    /// - Parameter price: The price that the user agreed to pay for the gift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func sendResoldGift(\n        giftName: String?,\n        ownerId: MessageSender?,\n        price: GiftResalePrice?\n    ) async throws -> GiftResaleResult {\n        let query = SendResoldGift(\n            giftName: giftName,\n            ownerId: ownerId,\n            price: price\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends an offer to purchase an upgraded gift\n    /// - Parameter duration: Duration of the offer, in seconds; must be one of 21600, 43200, 86400, 129600, 172800, or 259200. Can also be 120 if Telegram test environment is used\n    /// - Parameter giftName: Name of the upgraded gift\n    /// - Parameter ownerId: Identifier of the user or the channel chat that currently owns the gift and will receive the offer\n    /// - Parameter paidMessageStarCount: The number of Telegram Stars the user agreed to pay additionally for sending of the offer message to the current gift owner; pass userFullInfo.outgoing_paid_message_star_count for users and 0 otherwise\n    /// - Parameter price: The price that the user agreed to pay for the gift\n    public final func sendGiftPurchaseOffer(\n        duration: Int?,\n        giftName: String?,\n        ownerId: MessageSender?,\n        paidMessageStarCount: Int64?,\n        price: GiftResalePrice?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendGiftPurchaseOffer(\n            duration: duration,\n            giftName: giftName,\n            ownerId: ownerId,\n            paidMessageStarCount: paidMessageStarCount,\n            price: price\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends an offer to purchase an upgraded gift\n    /// - Parameter duration: Duration of the offer, in seconds; must be one of 21600, 43200, 86400, 129600, 172800, or 259200. Can also be 120 if Telegram test environment is used\n    /// - Parameter giftName: Name of the upgraded gift\n    /// - Parameter ownerId: Identifier of the user or the channel chat that currently owns the gift and will receive the offer\n    /// - Parameter paidMessageStarCount: The number of Telegram Stars the user agreed to pay additionally for sending of the offer message to the current gift owner; pass userFullInfo.outgoing_paid_message_star_count for users and 0 otherwise\n    /// - Parameter price: The price that the user agreed to pay for the gift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func sendGiftPurchaseOffer(\n        duration: Int?,\n        giftName: String?,\n        ownerId: MessageSender?,\n        paidMessageStarCount: Int64?,\n        price: GiftResalePrice?\n    ) async throws -> Ok {\n        let query = SendGiftPurchaseOffer(\n            duration: duration,\n            giftName: giftName,\n            ownerId: ownerId,\n            paidMessageStarCount: paidMessageStarCount,\n            price: price\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Handles a pending gift purchase offer\n    /// - Parameter accept: Pass true to accept the request; pass false to reject it\n    /// - Parameter messageId: Identifier of the message with the gift purchase offer\n    public final func processGiftPurchaseOffer(\n        accept: Bool?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ProcessGiftPurchaseOffer(\n            accept: accept,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Handles a pending gift purchase offer\n    /// - Parameter accept: Pass true to accept the request; pass false to reject it\n    /// - Parameter messageId: Identifier of the message with the gift purchase offer\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func processGiftPurchaseOffer(\n        accept: Bool?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = ProcessGiftPurchaseOffer(\n            accept: accept,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns gifts received by the given user or chat\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request; for bots only\n    /// - Parameter collectionId: Pass collection identifier to get gifts only from the specified collection; pass 0 to get gifts regardless of collections\n    /// - Parameter excludeHosted: Pass true to exclude gifts that are just hosted and are not owned by the owner\n    /// - Parameter excludeNonUpgradable: Pass true to exclude gifts that can be purchased limited number of times and can't be upgraded\n    /// - Parameter excludeSaved: Pass true to exclude gifts that are saved to the chat's profile page. Always false for gifts received by other users and channel chats without can_post_messages administrator right\n    /// - Parameter excludeUnlimited: Pass true to exclude gifts that can be purchased unlimited number of times\n    /// - Parameter excludeUnsaved: Pass true to exclude gifts that aren't saved to the chat's profile page. Always true for gifts received by other users and channel chats without can_post_messages administrator right\n    /// - Parameter excludeUpgradable: Pass true to exclude gifts that can be purchased limited number of times and can be upgraded\n    /// - Parameter excludeUpgraded: Pass true to exclude upgraded gifts\n    /// - Parameter excludeWithoutColors: Pass true to exclude gifts that can't be used in setUpgradedGiftColors\n    /// - Parameter limit: The maximum number of gifts to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter ownerId: Identifier of the gift receiver\n    /// - Parameter sortByPrice: Pass true to sort results by gift price instead of send date\n    /// - Returns: Gifts received by the given user or chat\n    public final func getReceivedGifts(\n        businessConnectionId: String?,\n        collectionId: Int?,\n        excludeHosted: Bool?,\n        excludeNonUpgradable: Bool?,\n        excludeSaved: Bool?,\n        excludeUnlimited: Bool?,\n        excludeUnsaved: Bool?,\n        excludeUpgradable: Bool?,\n        excludeUpgraded: Bool?,\n        excludeWithoutColors: Bool?,\n        limit: Int?,\n        offset: String?,\n        ownerId: MessageSender?,\n        sortByPrice: Bool?,\n        completion: @escaping (Result<ReceivedGifts, Swift.Error>) -> Void\n    ) throws {\n        let query = GetReceivedGifts(\n            businessConnectionId: businessConnectionId,\n            collectionId: collectionId,\n            excludeHosted: excludeHosted,\n            excludeNonUpgradable: excludeNonUpgradable,\n            excludeSaved: excludeSaved,\n            excludeUnlimited: excludeUnlimited,\n            excludeUnsaved: excludeUnsaved,\n            excludeUpgradable: excludeUpgradable,\n            excludeUpgraded: excludeUpgraded,\n            excludeWithoutColors: excludeWithoutColors,\n            limit: limit,\n            offset: offset,\n            ownerId: ownerId,\n            sortByPrice: sortByPrice\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns gifts received by the given user or chat\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request; for bots only\n    /// - Parameter collectionId: Pass collection identifier to get gifts only from the specified collection; pass 0 to get gifts regardless of collections\n    /// - Parameter excludeHosted: Pass true to exclude gifts that are just hosted and are not owned by the owner\n    /// - Parameter excludeNonUpgradable: Pass true to exclude gifts that can be purchased limited number of times and can't be upgraded\n    /// - Parameter excludeSaved: Pass true to exclude gifts that are saved to the chat's profile page. Always false for gifts received by other users and channel chats without can_post_messages administrator right\n    /// - Parameter excludeUnlimited: Pass true to exclude gifts that can be purchased unlimited number of times\n    /// - Parameter excludeUnsaved: Pass true to exclude gifts that aren't saved to the chat's profile page. Always true for gifts received by other users and channel chats without can_post_messages administrator right\n    /// - Parameter excludeUpgradable: Pass true to exclude gifts that can be purchased limited number of times and can be upgraded\n    /// - Parameter excludeUpgraded: Pass true to exclude upgraded gifts\n    /// - Parameter excludeWithoutColors: Pass true to exclude gifts that can't be used in setUpgradedGiftColors\n    /// - Parameter limit: The maximum number of gifts to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter ownerId: Identifier of the gift receiver\n    /// - Parameter sortByPrice: Pass true to sort results by gift price instead of send date\n    /// - Returns: Gifts received by the given user or chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getReceivedGifts(\n        businessConnectionId: String?,\n        collectionId: Int?,\n        excludeHosted: Bool?,\n        excludeNonUpgradable: Bool?,\n        excludeSaved: Bool?,\n        excludeUnlimited: Bool?,\n        excludeUnsaved: Bool?,\n        excludeUpgradable: Bool?,\n        excludeUpgraded: Bool?,\n        excludeWithoutColors: Bool?,\n        limit: Int?,\n        offset: String?,\n        ownerId: MessageSender?,\n        sortByPrice: Bool?\n    ) async throws -> ReceivedGifts {\n        let query = GetReceivedGifts(\n            businessConnectionId: businessConnectionId,\n            collectionId: collectionId,\n            excludeHosted: excludeHosted,\n            excludeNonUpgradable: excludeNonUpgradable,\n            excludeSaved: excludeSaved,\n            excludeUnlimited: excludeUnlimited,\n            excludeUnsaved: excludeUnsaved,\n            excludeUpgradable: excludeUpgradable,\n            excludeUpgraded: excludeUpgraded,\n            excludeWithoutColors: excludeWithoutColors,\n            limit: limit,\n            offset: offset,\n            ownerId: ownerId,\n            sortByPrice: sortByPrice\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a received gift\n    /// - Parameter receivedGiftId: Identifier of the gift\n    /// - Returns: Information about a received gift\n    public final func getReceivedGift(\n        receivedGiftId: String?,\n        completion: @escaping (Result<ReceivedGift, Swift.Error>) -> Void\n    ) throws {\n        let query = GetReceivedGift(\n            receivedGiftId: receivedGiftId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a received gift\n    /// - Parameter receivedGiftId: Identifier of the gift\n    /// - Returns: Information about a received gift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getReceivedGift(receivedGiftId: String?) async throws -> ReceivedGift {\n        let query = GetReceivedGift(\n            receivedGiftId: receivedGiftId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns upgraded gifts of the current user who can be used to craft another gifts\n    /// - Parameter limit: The maximum number of gifts to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter regularGiftId: Identifier of the regular gift that will be used for crafting\n    /// - Returns: Upgraded gifts of the current user who can be used to craft another gifts\n    public final func getGiftsForCrafting(\n        limit: Int?,\n        offset: String?,\n        regularGiftId: TdInt64?,\n        completion: @escaping (Result<GiftsForCrafting, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGiftsForCrafting(\n            limit: limit,\n            offset: offset,\n            regularGiftId: regularGiftId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns upgraded gifts of the current user who can be used to craft another gifts\n    /// - Parameter limit: The maximum number of gifts to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter regularGiftId: Identifier of the regular gift that will be used for crafting\n    /// - Returns: Upgraded gifts of the current user who can be used to craft another gifts\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getGiftsForCrafting(\n        limit: Int?,\n        offset: String?,\n        regularGiftId: TdInt64?\n    ) async throws -> GiftsForCrafting {\n        let query = GetGiftsForCrafting(\n            limit: limit,\n            offset: offset,\n            regularGiftId: regularGiftId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about an upgraded gift by its name\n    /// - Parameter name: Unique name of the upgraded gift\n    /// - Returns: Information about an upgraded gift by its name\n    public final func getUpgradedGift(\n        name: String?,\n        completion: @escaping (Result<UpgradedGift, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUpgradedGift(\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about an upgraded gift by its name\n    /// - Parameter name: Unique name of the upgraded gift\n    /// - Returns: Information about an upgraded gift by its name\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getUpgradedGift(name: String?) async throws -> UpgradedGift {\n        let query = GetUpgradedGift(\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about value of an upgraded gift by its name\n    /// - Parameter name: Unique name of the upgraded gift\n    /// - Returns: Information about value of an upgraded gift by its name\n    public final func getUpgradedGiftValueInfo(\n        name: String?,\n        completion: @escaping (Result<UpgradedGiftValueInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUpgradedGiftValueInfo(\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about value of an upgraded gift by its name\n    /// - Parameter name: Unique name of the upgraded gift\n    /// - Returns: Information about value of an upgraded gift by its name\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getUpgradedGiftValueInfo(name: String?) async throws -> UpgradedGiftValueInfo {\n        let query = GetUpgradedGiftValueInfo(\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a URL for upgraded gift withdrawal in the TON blockchain as an NFT; requires owner privileges for gifts owned by a chat\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Parameter receivedGiftId: Identifier of the gift\n    /// - Returns: A URL for upgraded gift withdrawal in the TON blockchain as an NFT\n    public final func getUpgradedGiftWithdrawalUrl(\n        password: String?,\n        receivedGiftId: String?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUpgradedGiftWithdrawalUrl(\n            password: password,\n            receivedGiftId: receivedGiftId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a URL for upgraded gift withdrawal in the TON blockchain as an NFT; requires owner privileges for gifts owned by a chat\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Parameter receivedGiftId: Identifier of the gift\n    /// - Returns: A URL for upgraded gift withdrawal in the TON blockchain as an NFT\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getUpgradedGiftWithdrawalUrl(\n        password: String?,\n        receivedGiftId: String?\n    ) async throws -> HttpUrl {\n        let query = GetUpgradedGiftWithdrawalUrl(\n            password: password,\n            receivedGiftId: receivedGiftId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns promotional animation for upgraded gifts\n    /// - Returns: Promotional animation for upgraded gifts\n    public final func getUpgradedGiftsPromotionalAnimation(completion: @escaping (Result<Animation, Swift.Error>) -> Void) throws {\n        let query = GetUpgradedGiftsPromotionalAnimation()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns promotional animation for upgraded gifts\n    /// - Returns: Promotional animation for upgraded gifts\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getUpgradedGiftsPromotionalAnimation() async throws -> Animation {\n        let query = GetUpgradedGiftsPromotionalAnimation()\n        return try await self.run(query: query)\n    }\n\n    /// Changes resale price of a unique gift owned by the current user\n    /// - Parameter price: The new price for the unique gift; pass null to disallow gift resale. The current user will receive getOption(\"gift_resale_star_earnings_per_mille\") Telegram Stars for each 1000 Telegram Stars paid for the gift if the gift price is in Telegram Stars or getOption(\"gift_resale_ton_earnings_per_mille\") Toncoins for each 1000 Toncoins paid for the gift if the gift price is in Toncoins\n    /// - Parameter receivedGiftId: Identifier of the unique gift\n    public final func setGiftResalePrice(\n        price: GiftResalePrice?,\n        receivedGiftId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetGiftResalePrice(\n            price: price,\n            receivedGiftId: receivedGiftId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes resale price of a unique gift owned by the current user\n    /// - Parameter price: The new price for the unique gift; pass null to disallow gift resale. The current user will receive getOption(\"gift_resale_star_earnings_per_mille\") Telegram Stars for each 1000 Telegram Stars paid for the gift if the gift price is in Telegram Stars or getOption(\"gift_resale_ton_earnings_per_mille\") Toncoins for each 1000 Toncoins paid for the gift if the gift price is in Toncoins\n    /// - Parameter receivedGiftId: Identifier of the unique gift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setGiftResalePrice(\n        price: GiftResalePrice?,\n        receivedGiftId: String?\n    ) async throws -> Ok {\n        let query = SetGiftResalePrice(\n            price: price,\n            receivedGiftId: receivedGiftId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns upgraded gifts that can be bought from other owners using sendResoldGift\n    /// - Parameter attributes: Attributes used to filter received gifts. If multiple attributes of the same type are specified, then all of them are allowed. If none attributes of specific type are specified, then all values for this attribute type are allowed\n    /// - Parameter forCrafting: Pass true to get only gifts suitable for crafting\n    /// - Parameter forStars: Pass true to get only gifts that can be bought using Telegram Stars\n    /// - Parameter giftId: Identifier of the regular gift that was upgraded to a unique gift\n    /// - Parameter limit: The maximum number of gifts to return\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request with the same order and attributes; use empty string to get the first chunk of results\n    /// - Parameter order: Order in which the results will be sorted\n    /// - Returns: Upgraded gifts that can be bought from other owners using sendResoldGift\n    public final func searchGiftsForResale(\n        attributes: [UpgradedGiftAttributeId]?,\n        forCrafting: Bool?,\n        forStars: Bool?,\n        giftId: TdInt64?,\n        limit: Int?,\n        offset: String?,\n        order: GiftForResaleOrder?,\n        completion: @escaping (Result<GiftsForResale, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchGiftsForResale(\n            attributes: attributes,\n            forCrafting: forCrafting,\n            forStars: forStars,\n            giftId: giftId,\n            limit: limit,\n            offset: offset,\n            order: order\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns upgraded gifts that can be bought from other owners using sendResoldGift\n    /// - Parameter attributes: Attributes used to filter received gifts. If multiple attributes of the same type are specified, then all of them are allowed. If none attributes of specific type are specified, then all values for this attribute type are allowed\n    /// - Parameter forCrafting: Pass true to get only gifts suitable for crafting\n    /// - Parameter forStars: Pass true to get only gifts that can be bought using Telegram Stars\n    /// - Parameter giftId: Identifier of the regular gift that was upgraded to a unique gift\n    /// - Parameter limit: The maximum number of gifts to return\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request with the same order and attributes; use empty string to get the first chunk of results\n    /// - Parameter order: Order in which the results will be sorted\n    /// - Returns: Upgraded gifts that can be bought from other owners using sendResoldGift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchGiftsForResale(\n        attributes: [UpgradedGiftAttributeId]?,\n        forCrafting: Bool?,\n        forStars: Bool?,\n        giftId: TdInt64?,\n        limit: Int?,\n        offset: String?,\n        order: GiftForResaleOrder?\n    ) async throws -> GiftsForResale {\n        let query = SearchGiftsForResale(\n            attributes: attributes,\n            forCrafting: forCrafting,\n            forStars: forStars,\n            giftId: giftId,\n            limit: limit,\n            offset: offset,\n            order: order\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns collections of gifts owned by the given user or chat\n    /// - Parameter ownerId: Identifier of the user or the channel chat that received the gifts\n    /// - Returns: Collections of gifts owned by the given user or chat\n    public final func getGiftCollections(\n        ownerId: MessageSender?,\n        completion: @escaping (Result<GiftCollections, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGiftCollections(\n            ownerId: ownerId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns collections of gifts owned by the given user or chat\n    /// - Parameter ownerId: Identifier of the user or the channel chat that received the gifts\n    /// - Returns: Collections of gifts owned by the given user or chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getGiftCollections(ownerId: MessageSender?) async throws -> GiftCollections {\n        let query = GetGiftCollections(\n            ownerId: ownerId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Creates a collection from gifts on the current user's or a channel's profile page; requires can_post_messages administrator right in the channel chat. An owner can have up to getOption(\"gift_collection_count_max\") gift collections. The new collection will be added to the end of the gift collection list of the owner. Returns the created collection\n    /// - Parameter name: Name of the collection; 1-12 characters\n    /// - Parameter ownerId: Identifier of the user or the channel chat that received the gifts\n    /// - Parameter receivedGiftIds: Identifier of the gifts to add to the collection; 0-getOption(\"gift_collection_size_max\") identifiers\n    /// - Returns: The created collection\n    public final func createGiftCollection(\n        name: String?,\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?,\n        completion: @escaping (Result<GiftCollection, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateGiftCollection(\n            name: name,\n            ownerId: ownerId,\n            receivedGiftIds: receivedGiftIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Creates a collection from gifts on the current user's or a channel's profile page; requires can_post_messages administrator right in the channel chat. An owner can have up to getOption(\"gift_collection_count_max\") gift collections. The new collection will be added to the end of the gift collection list of the owner. Returns the created collection\n    /// - Parameter name: Name of the collection; 1-12 characters\n    /// - Parameter ownerId: Identifier of the user or the channel chat that received the gifts\n    /// - Parameter receivedGiftIds: Identifier of the gifts to add to the collection; 0-getOption(\"gift_collection_size_max\") identifiers\n    /// - Returns: The created collection\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createGiftCollection(\n        name: String?,\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?\n    ) async throws -> GiftCollection {\n        let query = CreateGiftCollection(\n            name: name,\n            ownerId: ownerId,\n            receivedGiftIds: receivedGiftIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes order of gift collections. If the collections are owned by a channel chat, then requires can_post_messages administrator right in the channel chat\n    /// - Parameter collectionIds: New order of gift collections\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    public final func reorderGiftCollections(\n        collectionIds: [Int]?,\n        ownerId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderGiftCollections(\n            collectionIds: collectionIds,\n            ownerId: ownerId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes order of gift collections. If the collections are owned by a channel chat, then requires can_post_messages administrator right in the channel chat\n    /// - Parameter collectionIds: New order of gift collections\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func reorderGiftCollections(\n        collectionIds: [Int]?,\n        ownerId: MessageSender?\n    ) async throws -> Ok {\n        let query = ReorderGiftCollections(\n            collectionIds: collectionIds,\n            ownerId: ownerId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes a gift collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat\n    /// - Parameter collectionId: Identifier of the gift collection\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    public final func deleteGiftCollection(\n        collectionId: Int?,\n        ownerId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteGiftCollection(\n            collectionId: collectionId,\n            ownerId: ownerId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes a gift collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat\n    /// - Parameter collectionId: Identifier of the gift collection\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteGiftCollection(\n        collectionId: Int?,\n        ownerId: MessageSender?\n    ) async throws -> Ok {\n        let query = DeleteGiftCollection(\n            collectionId: collectionId,\n            ownerId: ownerId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes name of a gift collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat. Returns the changed collection\n    /// - Parameter collectionId: Identifier of the gift collection\n    /// - Parameter name: New name of the collection; 1-12 characters\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    /// - Returns: The changed collection\n    public final func setGiftCollectionName(\n        collectionId: Int?,\n        name: String?,\n        ownerId: MessageSender?,\n        completion: @escaping (Result<GiftCollection, Swift.Error>) -> Void\n    ) throws {\n        let query = SetGiftCollectionName(\n            collectionId: collectionId,\n            name: name,\n            ownerId: ownerId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes name of a gift collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat. Returns the changed collection\n    /// - Parameter collectionId: Identifier of the gift collection\n    /// - Parameter name: New name of the collection; 1-12 characters\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    /// - Returns: The changed collection\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func setGiftCollectionName(\n        collectionId: Int?,\n        name: String?,\n        ownerId: MessageSender?\n    ) async throws -> GiftCollection {\n        let query = SetGiftCollectionName(\n            collectionId: collectionId,\n            name: name,\n            ownerId: ownerId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds gifts to the beginning of a previously created collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat. Returns the changed collection\n    /// - Parameter collectionId: Identifier of the gift collection\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    /// - Parameter receivedGiftIds: Identifier of the gifts to add to the collection; 1-getOption(\"gift_collection_size_max\") identifiers. If after addition the collection has more than getOption(\"gift_collection_size_max\") gifts, then the last one are removed from the collection\n    /// - Returns: The changed collection\n    public final func addGiftCollectionGifts(\n        collectionId: Int?,\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?,\n        completion: @escaping (Result<GiftCollection, Swift.Error>) -> Void\n    ) throws {\n        let query = AddGiftCollectionGifts(\n            collectionId: collectionId,\n            ownerId: ownerId,\n            receivedGiftIds: receivedGiftIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds gifts to the beginning of a previously created collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat. Returns the changed collection\n    /// - Parameter collectionId: Identifier of the gift collection\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    /// - Parameter receivedGiftIds: Identifier of the gifts to add to the collection; 1-getOption(\"gift_collection_size_max\") identifiers. If after addition the collection has more than getOption(\"gift_collection_size_max\") gifts, then the last one are removed from the collection\n    /// - Returns: The changed collection\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func addGiftCollectionGifts(\n        collectionId: Int?,\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?\n    ) async throws -> GiftCollection {\n        let query = AddGiftCollectionGifts(\n            collectionId: collectionId,\n            ownerId: ownerId,\n            receivedGiftIds: receivedGiftIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes gifts from a collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat. Returns the changed collection\n    /// - Parameter collectionId: Identifier of the gift collection\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    /// - Parameter receivedGiftIds: Identifier of the gifts to remove from the collection\n    /// - Returns: The changed collection\n    public final func removeGiftCollectionGifts(\n        collectionId: Int?,\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?,\n        completion: @escaping (Result<GiftCollection, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveGiftCollectionGifts(\n            collectionId: collectionId,\n            ownerId: ownerId,\n            receivedGiftIds: receivedGiftIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes gifts from a collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat. Returns the changed collection\n    /// - Parameter collectionId: Identifier of the gift collection\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    /// - Parameter receivedGiftIds: Identifier of the gifts to remove from the collection\n    /// - Returns: The changed collection\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func removeGiftCollectionGifts(\n        collectionId: Int?,\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?\n    ) async throws -> GiftCollection {\n        let query = RemoveGiftCollectionGifts(\n            collectionId: collectionId,\n            ownerId: ownerId,\n            receivedGiftIds: receivedGiftIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes order of gifts in a collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat. Returns the changed collection\n    /// - Parameter collectionId: Identifier of the gift collection\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    /// - Parameter receivedGiftIds: Identifier of the gifts to move to the beginning of the collection. All other gifts are placed in the current order after the specified gifts\n    /// - Returns: The changed collection\n    public final func reorderGiftCollectionGifts(\n        collectionId: Int?,\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?,\n        completion: @escaping (Result<GiftCollection, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderGiftCollectionGifts(\n            collectionId: collectionId,\n            ownerId: ownerId,\n            receivedGiftIds: receivedGiftIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes order of gifts in a collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat. Returns the changed collection\n    /// - Parameter collectionId: Identifier of the gift collection\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    /// - Parameter receivedGiftIds: Identifier of the gifts to move to the beginning of the collection. All other gifts are placed in the current order after the specified gifts\n    /// - Returns: The changed collection\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func reorderGiftCollectionGifts(\n        collectionId: Int?,\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?\n    ) async throws -> GiftCollection {\n        let query = ReorderGiftCollectionGifts(\n            collectionId: collectionId,\n            ownerId: ownerId,\n            receivedGiftIds: receivedGiftIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Creates a link for the given invoice; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request\n    /// - Parameter invoice: Information about the invoice of the type inputMessageInvoice\n    public final func createInvoiceLink(\n        businessConnectionId: String?,\n        invoice: InputMessageContent?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateInvoiceLink(\n            businessConnectionId: businessConnectionId,\n            invoice: invoice\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Creates a link for the given invoice; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request\n    /// - Parameter invoice: Information about the invoice of the type inputMessageInvoice\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createInvoiceLink(\n        businessConnectionId: String?,\n        invoice: InputMessageContent?\n    ) async throws -> HttpUrl {\n        let query = CreateInvoiceLink(\n            businessConnectionId: businessConnectionId,\n            invoice: invoice\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Refunds a previously done payment in Telegram Stars; for bots only\n    /// - Parameter telegramPaymentChargeId: Telegram payment identifier\n    /// - Parameter userId: Identifier of the user who did the payment\n    public final func refundStarPayment(\n        telegramPaymentChargeId: String?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RefundStarPayment(\n            telegramPaymentChargeId: telegramPaymentChargeId,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Refunds a previously done payment in Telegram Stars; for bots only\n    /// - Parameter telegramPaymentChargeId: Telegram payment identifier\n    /// - Parameter userId: Identifier of the user who did the payment\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func refundStarPayment(\n        telegramPaymentChargeId: String?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = RefundStarPayment(\n            telegramPaymentChargeId: telegramPaymentChargeId,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a user who can be contacted to get support\n    /// - Returns: A user who can be contacted to get support\n    public final func getSupportUser(completion: @escaping (Result<User, Swift.Error>) -> Void) throws {\n        let query = GetSupportUser()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a user who can be contacted to get support\n    /// - Returns: A user who can be contacted to get support\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getSupportUser() async throws -> User {\n        let query = GetSupportUser()\n        return try await self.run(query: query)\n    }\n\n    /// Constructs a persistent HTTP URL for a background\n    /// - Parameter name: Background name\n    /// - Parameter type: Background type; backgroundTypeChatTheme isn't supported\n    public final func getBackgroundUrl(\n        name: String?,\n        type: BackgroundType?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBackgroundUrl(\n            name: name,\n            type: type\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Constructs a persistent HTTP URL for a background\n    /// - Parameter name: Background name\n    /// - Parameter type: Background type; backgroundTypeChatTheme isn't supported\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getBackgroundUrl(\n        name: String?,\n        type: BackgroundType?\n    ) async throws -> HttpUrl {\n        let query = GetBackgroundUrl(\n            name: name,\n            type: type\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches for a background by its name\n    /// - Parameter name: The name of the background\n    public final func searchBackground(\n        name: String?,\n        completion: @escaping (Result<Background, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchBackground(\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches for a background by its name\n    /// - Parameter name: The name of the background\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchBackground(name: String?) async throws -> Background {\n        let query = SearchBackground(\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets default background for chats; adds the background to the list of installed backgrounds\n    /// - Parameter background: The input background to use; pass null to create a new filled background\n    /// - Parameter forDarkTheme: Pass true if the background is set for a dark theme\n    /// - Parameter type: Background type; pass null to use the default type of the remote background; backgroundTypeChatTheme isn't supported\n    public final func setDefaultBackground(\n        background: InputBackground?,\n        forDarkTheme: Bool?,\n        type: BackgroundType?,\n        completion: @escaping (Result<Background, Swift.Error>) -> Void\n    ) throws {\n        let query = SetDefaultBackground(\n            background: background,\n            forDarkTheme: forDarkTheme,\n            type: type\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets default background for chats; adds the background to the list of installed backgrounds\n    /// - Parameter background: The input background to use; pass null to create a new filled background\n    /// - Parameter forDarkTheme: Pass true if the background is set for a dark theme\n    /// - Parameter type: Background type; pass null to use the default type of the remote background; backgroundTypeChatTheme isn't supported\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func setDefaultBackground(\n        background: InputBackground?,\n        forDarkTheme: Bool?,\n        type: BackgroundType?\n    ) async throws -> Background {\n        let query = SetDefaultBackground(\n            background: background,\n            forDarkTheme: forDarkTheme,\n            type: type\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes default background for chats\n    /// - Parameter forDarkTheme: Pass true if the background is deleted for a dark theme\n    public final func deleteDefaultBackground(\n        forDarkTheme: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteDefaultBackground(\n            forDarkTheme: forDarkTheme\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes default background for chats\n    /// - Parameter forDarkTheme: Pass true if the background is deleted for a dark theme\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteDefaultBackground(forDarkTheme: Bool?) async throws -> Ok {\n        let query = DeleteDefaultBackground(\n            forDarkTheme: forDarkTheme\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns backgrounds installed by the user\n    /// - Parameter forDarkTheme: Pass true to order returned backgrounds for a dark theme\n    /// - Returns: Backgrounds installed by the user\n    public final func getInstalledBackgrounds(\n        forDarkTheme: Bool?,\n        completion: @escaping (Result<Backgrounds, Swift.Error>) -> Void\n    ) throws {\n        let query = GetInstalledBackgrounds(\n            forDarkTheme: forDarkTheme\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns backgrounds installed by the user\n    /// - Parameter forDarkTheme: Pass true to order returned backgrounds for a dark theme\n    /// - Returns: Backgrounds installed by the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getInstalledBackgrounds(forDarkTheme: Bool?) async throws -> Backgrounds {\n        let query = GetInstalledBackgrounds(\n            forDarkTheme: forDarkTheme\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes background from the list of installed backgrounds\n    /// - Parameter backgroundId: The background identifier\n    public final func removeInstalledBackground(\n        backgroundId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveInstalledBackground(\n            backgroundId: backgroundId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes background from the list of installed backgrounds\n    /// - Parameter backgroundId: The background identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeInstalledBackground(backgroundId: TdInt64?) async throws -> Ok {\n        let query = RemoveInstalledBackground(\n            backgroundId: backgroundId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Resets list of installed backgrounds to its default value\n    public final func resetInstalledBackgrounds(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ResetInstalledBackgrounds()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Resets list of installed backgrounds to its default value\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func resetInstalledBackgrounds() async throws -> Ok {\n        let query = ResetInstalledBackgrounds()\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about the current localization target. This is an offline method if only_local is true. Can be called before authorization\n    /// - Parameter onlyLocal: Pass true to get only locally available information without sending network requests\n    /// - Returns: Information about the current localization target\n    public final func getLocalizationTargetInfo(\n        onlyLocal: Bool?,\n        completion: @escaping (Result<LocalizationTargetInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLocalizationTargetInfo(\n            onlyLocal: onlyLocal\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about the current localization target. This is an offline method if only_local is true. Can be called before authorization\n    /// - Parameter onlyLocal: Pass true to get only locally available information without sending network requests\n    /// - Returns: Information about the current localization target\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getLocalizationTargetInfo(onlyLocal: Bool?) async throws -> LocalizationTargetInfo {\n        let query = GetLocalizationTargetInfo(\n            onlyLocal: onlyLocal\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a language pack. Returned language pack identifier may be different from a provided one. Can be called before authorization\n    /// - Parameter languagePackId: Language pack identifier\n    /// - Returns: Information about a language pack. Returned language pack identifier may be different from a provided one\n    public final func getLanguagePackInfo(\n        languagePackId: String?,\n        completion: @escaping (Result<LanguagePackInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLanguagePackInfo(\n            languagePackId: languagePackId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a language pack. Returned language pack identifier may be different from a provided one. Can be called before authorization\n    /// - Parameter languagePackId: Language pack identifier\n    /// - Returns: Information about a language pack. Returned language pack identifier may be different from a provided one\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getLanguagePackInfo(languagePackId: String?) async throws -> LanguagePackInfo {\n        let query = GetLanguagePackInfo(\n            languagePackId: languagePackId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns strings from a language pack in the current localization target by their keys. Can be called before authorization\n    /// - Parameter keys: Language pack keys of the strings to be returned; leave empty to request all available strings\n    /// - Parameter languagePackId: Language pack identifier of the strings to be returned\n    /// - Returns: Strings from a language pack in the current localization target by their keys\n    public final func getLanguagePackStrings(\n        keys: [String]?,\n        languagePackId: String?,\n        completion: @escaping (Result<LanguagePackStrings, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLanguagePackStrings(\n            keys: keys,\n            languagePackId: languagePackId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns strings from a language pack in the current localization target by their keys. Can be called before authorization\n    /// - Parameter keys: Language pack keys of the strings to be returned; leave empty to request all available strings\n    /// - Parameter languagePackId: Language pack identifier of the strings to be returned\n    /// - Returns: Strings from a language pack in the current localization target by their keys\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getLanguagePackStrings(\n        keys: [String]?,\n        languagePackId: String?\n    ) async throws -> LanguagePackStrings {\n        let query = GetLanguagePackStrings(\n            keys: keys,\n            languagePackId: languagePackId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Fetches the latest versions of all strings from a language pack in the current localization target from the server. This method doesn't need to be called explicitly for the current used/base language packs. Can be called before authorization\n    /// - Parameter languagePackId: Language pack identifier\n    public final func synchronizeLanguagePack(\n        languagePackId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SynchronizeLanguagePack(\n            languagePackId: languagePackId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Fetches the latest versions of all strings from a language pack in the current localization target from the server. This method doesn't need to be called explicitly for the current used/base language packs. Can be called before authorization\n    /// - Parameter languagePackId: Language pack identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func synchronizeLanguagePack(languagePackId: String?) async throws -> Ok {\n        let query = SynchronizeLanguagePack(\n            languagePackId: languagePackId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds a custom server language pack to the list of installed language packs in current localization target. Can be called before authorization\n    /// - Parameter languagePackId: Identifier of a language pack to be added\n    public final func addCustomServerLanguagePack(\n        languagePackId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddCustomServerLanguagePack(\n            languagePackId: languagePackId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds a custom server language pack to the list of installed language packs in current localization target. Can be called before authorization\n    /// - Parameter languagePackId: Identifier of a language pack to be added\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func addCustomServerLanguagePack(languagePackId: String?) async throws -> Ok {\n        let query = AddCustomServerLanguagePack(\n            languagePackId: languagePackId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds or changes a custom local language pack to the current localization target\n    /// - Parameter info: Information about the language pack. Language pack identifier must start with 'X', consist only of English letters, digits and hyphens, and must not exceed 64 characters. Can be called before authorization\n    /// - Parameter strings: Strings of the new language pack\n    public final func setCustomLanguagePack(\n        info: LanguagePackInfo?,\n        strings: [LanguagePackString]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetCustomLanguagePack(\n            info: info,\n            strings: strings\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds or changes a custom local language pack to the current localization target\n    /// - Parameter info: Information about the language pack. Language pack identifier must start with 'X', consist only of English letters, digits and hyphens, and must not exceed 64 characters. Can be called before authorization\n    /// - Parameter strings: Strings of the new language pack\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setCustomLanguagePack(\n        info: LanguagePackInfo?,\n        strings: [LanguagePackString]?\n    ) async throws -> Ok {\n        let query = SetCustomLanguagePack(\n            info: info,\n            strings: strings\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits information about a custom local language pack in the current localization target. Can be called before authorization\n    /// - Parameter info: New information about the custom local language pack\n    public final func editCustomLanguagePackInfo(\n        info: LanguagePackInfo?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditCustomLanguagePackInfo(\n            info: info\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits information about a custom local language pack in the current localization target. Can be called before authorization\n    /// - Parameter info: New information about the custom local language pack\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func editCustomLanguagePackInfo(info: LanguagePackInfo?) async throws -> Ok {\n        let query = EditCustomLanguagePackInfo(\n            info: info\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds, edits or deletes a string in a custom local language pack. Can be called before authorization\n    /// - Parameter languagePackId: Identifier of a previously added custom local language pack in the current localization target\n    /// - Parameter newString: New language pack string\n    public final func setCustomLanguagePackString(\n        languagePackId: String?,\n        newString: LanguagePackString?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetCustomLanguagePackString(\n            languagePackId: languagePackId,\n            newString: newString\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds, edits or deletes a string in a custom local language pack. Can be called before authorization\n    /// - Parameter languagePackId: Identifier of a previously added custom local language pack in the current localization target\n    /// - Parameter newString: New language pack string\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setCustomLanguagePackString(\n        languagePackId: String?,\n        newString: LanguagePackString?\n    ) async throws -> Ok {\n        let query = SetCustomLanguagePackString(\n            languagePackId: languagePackId,\n            newString: newString\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes all information about a language pack in the current localization target. The language pack which is currently in use (including base language pack) or is being synchronized can't be deleted. Can be called before authorization\n    /// - Parameter languagePackId: Identifier of the language pack to delete\n    public final func deleteLanguagePack(\n        languagePackId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteLanguagePack(\n            languagePackId: languagePackId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes all information about a language pack in the current localization target. The language pack which is currently in use (including base language pack) or is being synchronized can't be deleted. Can be called before authorization\n    /// - Parameter languagePackId: Identifier of the language pack to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteLanguagePack(languagePackId: String?) async throws -> Ok {\n        let query = DeleteLanguagePack(\n            languagePackId: languagePackId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Registers the currently used device for receiving push notifications. Returns a globally unique identifier of the push notification subscription\n    /// - Parameter deviceToken: Device token\n    /// - Parameter otherUserIds: List of user identifiers of other users currently using the application\n    /// - Returns: A globally unique identifier of the push notification subscription\n    public final func registerDevice(\n        deviceToken: DeviceToken?,\n        otherUserIds: [Int64]?,\n        completion: @escaping (Result<PushReceiverId, Swift.Error>) -> Void\n    ) throws {\n        let query = RegisterDevice(\n            deviceToken: deviceToken,\n            otherUserIds: otherUserIds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Registers the currently used device for receiving push notifications. Returns a globally unique identifier of the push notification subscription\n    /// - Parameter deviceToken: Device token\n    /// - Parameter otherUserIds: List of user identifiers of other users currently using the application\n    /// - Returns: A globally unique identifier of the push notification subscription\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func registerDevice(\n        deviceToken: DeviceToken?,\n        otherUserIds: [Int64]?\n    ) async throws -> PushReceiverId {\n        let query = RegisterDevice(\n            deviceToken: deviceToken,\n            otherUserIds: otherUserIds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Handles a push notification. Returns error with code 406 if the push notification is not supported and connection to the server is required to fetch new data. Can be called before authorization\n    /// - Parameter payload: JSON-encoded push notification payload with all fields sent by the server, and \"google.sent_time\" and \"google.notification.sound\" fields added\n    /// - Returns: Error with code 406 if the push notification is not supported and connection to the server is required to fetch new data\n    public final func processPushNotification(\n        payload: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ProcessPushNotification(\n            payload: payload\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Handles a push notification. Returns error with code 406 if the push notification is not supported and connection to the server is required to fetch new data. Can be called before authorization\n    /// - Parameter payload: JSON-encoded push notification payload with all fields sent by the server, and \"google.sent_time\" and \"google.notification.sound\" fields added\n    /// - Returns: Error with code 406 if the push notification is not supported and connection to the server is required to fetch new data\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func processPushNotification(payload: String?) async throws -> Ok {\n        let query = ProcessPushNotification(\n            payload: payload\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a globally unique push notification subscription identifier for identification of an account, which has received a push notification. Can be called synchronously\n    /// - Parameter payload: JSON-encoded push notification payload\n    /// - Returns: A globally unique push notification subscription identifier for identification of an account, which has received a push notification\n    public final func getPushReceiverId(\n        payload: String?,\n        completion: @escaping (Result<PushReceiverId, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPushReceiverId(\n            payload: payload\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a globally unique push notification subscription identifier for identification of an account, which has received a push notification. Can be called synchronously\n    /// - Parameter payload: JSON-encoded push notification payload\n    /// - Returns: A globally unique push notification subscription identifier for identification of an account, which has received a push notification\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPushReceiverId(payload: String?) async throws -> PushReceiverId {\n        let query = GetPushReceiverId(\n            payload: payload\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns t.me URLs recently visited by a newly registered user\n    /// - Parameter referrer: Google Play referrer to identify the user\n    /// - Returns: T\n    public final func getRecentlyVisitedTMeUrls(\n        referrer: String?,\n        completion: @escaping (Result<TMeUrls, Swift.Error>) -> Void\n    ) throws {\n        let query = GetRecentlyVisitedTMeUrls(\n            referrer: referrer\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns t.me URLs recently visited by a newly registered user\n    /// - Parameter referrer: Google Play referrer to identify the user\n    /// - Returns: T\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getRecentlyVisitedTMeUrls(referrer: String?) async throws -> TMeUrls {\n        let query = GetRecentlyVisitedTMeUrls(\n            referrer: referrer\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes user privacy settings\n    /// - Parameter rules: The new privacy rules\n    /// - Parameter setting: The privacy setting\n    public final func setUserPrivacySettingRules(\n        rules: UserPrivacySettingRules?,\n        setting: UserPrivacySetting?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetUserPrivacySettingRules(\n            rules: rules,\n            setting: setting\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes user privacy settings\n    /// - Parameter rules: The new privacy rules\n    /// - Parameter setting: The privacy setting\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setUserPrivacySettingRules(\n        rules: UserPrivacySettingRules?,\n        setting: UserPrivacySetting?\n    ) async throws -> Ok {\n        let query = SetUserPrivacySettingRules(\n            rules: rules,\n            setting: setting\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the current privacy settings\n    /// - Parameter setting: The privacy setting\n    /// - Returns: The current privacy settings\n    public final func getUserPrivacySettingRules(\n        setting: UserPrivacySetting?,\n        completion: @escaping (Result<UserPrivacySettingRules, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUserPrivacySettingRules(\n            setting: setting\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the current privacy settings\n    /// - Parameter setting: The privacy setting\n    /// - Returns: The current privacy settings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getUserPrivacySettingRules(setting: UserPrivacySetting?) async throws -> UserPrivacySettingRules {\n        let query = GetUserPrivacySettingRules(\n            setting: setting\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes privacy settings for message read date\n    /// - Parameter settings: New settings\n    public final func setReadDatePrivacySettings(\n        settings: ReadDatePrivacySettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetReadDatePrivacySettings(\n            settings: settings\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes privacy settings for message read date\n    /// - Parameter settings: New settings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setReadDatePrivacySettings(settings: ReadDatePrivacySettings?) async throws -> Ok {\n        let query = SetReadDatePrivacySettings(\n            settings: settings\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns privacy settings for message read date\n    /// - Returns: Privacy settings for message read date\n    public final func getReadDatePrivacySettings(completion: @escaping (Result<ReadDatePrivacySettings, Swift.Error>) -> Void) throws {\n        let query = GetReadDatePrivacySettings()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns privacy settings for message read date\n    /// - Returns: Privacy settings for message read date\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getReadDatePrivacySettings() async throws -> ReadDatePrivacySettings {\n        let query = GetReadDatePrivacySettings()\n        return try await self.run(query: query)\n    }\n\n    /// Changes privacy settings for new chat creation; can be used only if getOption(\"can_set_new_chat_privacy_settings\")\n    /// - Parameter settings: New settings\n    public final func setNewChatPrivacySettings(\n        settings: NewChatPrivacySettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetNewChatPrivacySettings(\n            settings: settings\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes privacy settings for new chat creation; can be used only if getOption(\"can_set_new_chat_privacy_settings\")\n    /// - Parameter settings: New settings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setNewChatPrivacySettings(settings: NewChatPrivacySettings?) async throws -> Ok {\n        let query = SetNewChatPrivacySettings(\n            settings: settings\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns privacy settings for new chat creation\n    /// - Returns: Privacy settings for new chat creation\n    public final func getNewChatPrivacySettings(completion: @escaping (Result<NewChatPrivacySettings, Swift.Error>) -> Void) throws {\n        let query = GetNewChatPrivacySettings()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns privacy settings for new chat creation\n    /// - Returns: Privacy settings for new chat creation\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getNewChatPrivacySettings() async throws -> NewChatPrivacySettings {\n        let query = GetNewChatPrivacySettings()\n        return try await self.run(query: query)\n    }\n\n    /// Returns the total number of Telegram Stars received by the current user for paid messages from the given user\n    /// - Parameter userId: Identifier of the user\n    /// - Returns: The total number of Telegram Stars received by the current user for paid messages from the given user\n    public final func getPaidMessageRevenue(\n        userId: Int64?,\n        completion: @escaping (Result<StarCount, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPaidMessageRevenue(\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the total number of Telegram Stars received by the current user for paid messages from the given user\n    /// - Parameter userId: Identifier of the user\n    /// - Returns: The total number of Telegram Stars received by the current user for paid messages from the given user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPaidMessageRevenue(userId: Int64?) async throws -> StarCount {\n        let query = GetPaidMessageRevenue(\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Allows the specified user to send unpaid private messages to the current user by adding a rule to userPrivacySettingAllowUnpaidMessages\n    /// - Parameter refundPayments: Pass true to refund the user previously paid messages\n    /// - Parameter userId: Identifier of the user\n    public final func allowUnpaidMessagesFromUser(\n        refundPayments: Bool?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AllowUnpaidMessagesFromUser(\n            refundPayments: refundPayments,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Allows the specified user to send unpaid private messages to the current user by adding a rule to userPrivacySettingAllowUnpaidMessages\n    /// - Parameter refundPayments: Pass true to refund the user previously paid messages\n    /// - Parameter userId: Identifier of the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func allowUnpaidMessagesFromUser(\n        refundPayments: Bool?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = AllowUnpaidMessagesFromUser(\n            refundPayments: refundPayments,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the Telegram Star amount that must be paid to send a message to a supergroup chat; requires can_restrict_members administrator right and supergroupFullInfo.can_enable_paid_messages\n    /// - Parameter chatId: Identifier of the supergroup chat\n    /// - Parameter paidMessageStarCount: The new number of Telegram Stars that must be paid for each message that is sent to the supergroup chat unless the sender is an administrator of the chat; 0-getOption(\"paid_message_star_count_max\"). The supergroup will receive getOption(\"paid_message_earnings_per_mille\") Telegram Stars for each 1000 Telegram Stars paid for message sending\n    public final func setChatPaidMessageStarCount(\n        chatId: Int64?,\n        paidMessageStarCount: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatPaidMessageStarCount(\n            chatId: chatId,\n            paidMessageStarCount: paidMessageStarCount\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the Telegram Star amount that must be paid to send a message to a supergroup chat; requires can_restrict_members administrator right and supergroupFullInfo.can_enable_paid_messages\n    /// - Parameter chatId: Identifier of the supergroup chat\n    /// - Parameter paidMessageStarCount: The new number of Telegram Stars that must be paid for each message that is sent to the supergroup chat unless the sender is an administrator of the chat; 0-getOption(\"paid_message_star_count_max\"). The supergroup will receive getOption(\"paid_message_earnings_per_mille\") Telegram Stars for each 1000 Telegram Stars paid for message sending\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatPaidMessageStarCount(\n        chatId: Int64?,\n        paidMessageStarCount: Int64?\n    ) async throws -> Ok {\n        let query = SetChatPaidMessageStarCount(\n            chatId: chatId,\n            paidMessageStarCount: paidMessageStarCount\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks whether the current user can message another user or try to create a chat with them\n    /// - Parameter onlyLocal: Pass true to get only locally available information without sending network requests\n    /// - Parameter userId: Identifier of the other user\n    public final func canSendMessageToUser(\n        onlyLocal: Bool?,\n        userId: Int64?,\n        completion: @escaping (Result<CanSendMessageToUserResult, Swift.Error>) -> Void\n    ) throws {\n        let query = CanSendMessageToUser(\n            onlyLocal: onlyLocal,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks whether the current user can message another user or try to create a chat with them\n    /// - Parameter onlyLocal: Pass true to get only locally available information without sending network requests\n    /// - Parameter userId: Identifier of the other user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func canSendMessageToUser(\n        onlyLocal: Bool?,\n        userId: Int64?\n    ) async throws -> CanSendMessageToUserResult {\n        let query = CanSendMessageToUser(\n            onlyLocal: onlyLocal,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the value of an option by its name. (Check the list of available options on https://core.telegram.org/tdlib/options.) Can be called before authorization. Can be called synchronously for options \"version\" and \"commit_hash\"\n    /// - Parameter name: The name of the option\n    /// - Returns: The value of an option by its name\n    public final func getOption(\n        name: String?,\n        completion: @escaping (Result<OptionValue, Swift.Error>) -> Void\n    ) throws {\n        let query = GetOption(\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the value of an option by its name. (Check the list of available options on https://core.telegram.org/tdlib/options.) Can be called before authorization. Can be called synchronously for options \"version\" and \"commit_hash\"\n    /// - Parameter name: The name of the option\n    /// - Returns: The value of an option by its name\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getOption(name: String?) async throws -> OptionValue {\n        let query = GetOption(\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets the value of an option. (Check the list of available options on https://core.telegram.org/tdlib/options.) Only writable options can be set. Can be called before authorization\n    /// - Parameter name: The name of the option\n    /// - Parameter value: The new value of the option; pass null to reset option value to a default value\n    public final func setOption(\n        name: String?,\n        value: OptionValue?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetOption(\n            name: name,\n            value: value\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets the value of an option. (Check the list of available options on https://core.telegram.org/tdlib/options.) Only writable options can be set. Can be called before authorization\n    /// - Parameter name: The name of the option\n    /// - Parameter value: The new value of the option; pass null to reset option value to a default value\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setOption(\n        name: String?,\n        value: OptionValue?\n    ) async throws -> Ok {\n        let query = SetOption(\n            name: name,\n            value: value\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the period of inactivity after which the account of the current user will automatically be deleted\n    /// - Parameter ttl: New account TTL\n    public final func setAccountTtl(\n        ttl: AccountTtl?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetAccountTtl(\n            ttl: ttl\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the period of inactivity after which the account of the current user will automatically be deleted\n    /// - Parameter ttl: New account TTL\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setAccountTtl(ttl: AccountTtl?) async throws -> Ok {\n        let query = SetAccountTtl(\n            ttl: ttl\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the period of inactivity after which the account of the current user will automatically be deleted\n    /// - Returns: The period of inactivity after which the account of the current user will automatically be deleted\n    public final func getAccountTtl(completion: @escaping (Result<AccountTtl, Swift.Error>) -> Void) throws {\n        let query = GetAccountTtl()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the period of inactivity after which the account of the current user will automatically be deleted\n    /// - Returns: The period of inactivity after which the account of the current user will automatically be deleted\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getAccountTtl() async throws -> AccountTtl {\n        let query = GetAccountTtl()\n        return try await self.run(query: query)\n    }\n\n    /// Deletes the account of the current user, deleting all information associated with the user from the server. The phone number of the account can be used to create a new account. Can be called before authorization when the current authorization state is authorizationStateWaitPassword\n    /// - Parameter password: The 2-step verification password of the current user. If the current user isn't authorized, then an empty string can be passed and account deletion can be canceled within one week\n    /// - Parameter reason: The reason why the account was deleted; optional\n    public final func deleteAccount(\n        password: String?,\n        reason: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteAccount(\n            password: password,\n            reason: reason\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes the account of the current user, deleting all information associated with the user from the server. The phone number of the account can be used to create a new account. Can be called before authorization when the current authorization state is authorizationStateWaitPassword\n    /// - Parameter password: The 2-step verification password of the current user. If the current user isn't authorized, then an empty string can be passed and account deletion can be canceled within one week\n    /// - Parameter reason: The reason why the account was deleted; optional\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteAccount(\n        password: String?,\n        reason: String?\n    ) async throws -> Ok {\n        let query = DeleteAccount(\n            password: password,\n            reason: reason\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the default message auto-delete time for new chats\n    /// - Parameter messageAutoDeleteTime: New default message auto-delete time; must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically\n    public final func setDefaultMessageAutoDeleteTime(\n        messageAutoDeleteTime: MessageAutoDeleteTime?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetDefaultMessageAutoDeleteTime(\n            messageAutoDeleteTime: messageAutoDeleteTime\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the default message auto-delete time for new chats\n    /// - Parameter messageAutoDeleteTime: New default message auto-delete time; must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setDefaultMessageAutoDeleteTime(messageAutoDeleteTime: MessageAutoDeleteTime?) async throws -> Ok {\n        let query = SetDefaultMessageAutoDeleteTime(\n            messageAutoDeleteTime: messageAutoDeleteTime\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns default message auto-delete time setting for new chats\n    /// - Returns: Default message auto-delete time setting for new chats\n    public final func getDefaultMessageAutoDeleteTime(completion: @escaping (Result<MessageAutoDeleteTime, Swift.Error>) -> Void) throws {\n        let query = GetDefaultMessageAutoDeleteTime()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns default message auto-delete time setting for new chats\n    /// - Returns: Default message auto-delete time setting for new chats\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getDefaultMessageAutoDeleteTime() async throws -> MessageAutoDeleteTime {\n        let query = GetDefaultMessageAutoDeleteTime()\n        return try await self.run(query: query)\n    }\n\n    /// Removes a chat action bar without any other action\n    /// - Parameter chatId: Chat identifier\n    public final func removeChatActionBar(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveChatActionBar(\n            chatId: chatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes a chat action bar without any other action\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeChatActionBar(chatId: Int64?) async throws -> Ok {\n        let query = RemoveChatActionBar(\n            chatId: chatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Reports a chat to the Telegram moderators. A chat can be reported only from the chat action bar, or if chat.can_be_reported\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageIds: Identifiers of reported messages. Use messageProperties.can_report_chat to check whether the message can be reported\n    /// - Parameter optionId: Option identifier chosen by the user; leave empty for the initial request\n    /// - Parameter text: Additional report details if asked by the server; 0-1024 characters; leave empty for the initial request\n    public final func reportChat(\n        chatId: Int64?,\n        messageIds: [Int64]?,\n        optionId: Data?,\n        text: String?,\n        completion: @escaping (Result<ReportChatResult, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportChat(\n            chatId: chatId,\n            messageIds: messageIds,\n            optionId: optionId,\n            text: text\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Reports a chat to the Telegram moderators. A chat can be reported only from the chat action bar, or if chat.can_be_reported\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageIds: Identifiers of reported messages. Use messageProperties.can_report_chat to check whether the message can be reported\n    /// - Parameter optionId: Option identifier chosen by the user; leave empty for the initial request\n    /// - Parameter text: Additional report details if asked by the server; 0-1024 characters; leave empty for the initial request\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func reportChat(\n        chatId: Int64?,\n        messageIds: [Int64]?,\n        optionId: Data?,\n        text: String?\n    ) async throws -> ReportChatResult {\n        let query = ReportChat(\n            chatId: chatId,\n            messageIds: messageIds,\n            optionId: optionId,\n            text: text\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Reports a chat photo to the Telegram moderators. A chat photo can be reported only if chat.can_be_reported\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter fileId: Identifier of the photo to report. Only full photos from chatPhoto can be reported\n    /// - Parameter reason: The reason for reporting the chat photo\n    /// - Parameter text: Additional report details; 0-1024 characters\n    public final func reportChatPhoto(\n        chatId: Int64?,\n        fileId: Int?,\n        reason: ReportReason?,\n        text: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportChatPhoto(\n            chatId: chatId,\n            fileId: fileId,\n            reason: reason,\n            text: text\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Reports a chat photo to the Telegram moderators. A chat photo can be reported only if chat.can_be_reported\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter fileId: Identifier of the photo to report. Only full photos from chatPhoto can be reported\n    /// - Parameter reason: The reason for reporting the chat photo\n    /// - Parameter text: Additional report details; 0-1024 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func reportChatPhoto(\n        chatId: Int64?,\n        fileId: Int?,\n        reason: ReportReason?,\n        text: String?\n    ) async throws -> Ok {\n        let query = ReportChatPhoto(\n            chatId: chatId,\n            fileId: fileId,\n            reason: reason,\n            text: text\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Reports reactions set on a message to the Telegram moderators. Reactions on a message can be reported only if messageProperties.can_report_reactions\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Message identifier\n    /// - Parameter senderId: Identifier of the sender, which added the reaction\n    public final func reportMessageReactions(\n        chatId: Int64?,\n        messageId: Int64?,\n        senderId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportMessageReactions(\n            chatId: chatId,\n            messageId: messageId,\n            senderId: senderId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Reports reactions set on a message to the Telegram moderators. Reactions on a message can be reported only if messageProperties.can_report_reactions\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Message identifier\n    /// - Parameter senderId: Identifier of the sender, which added the reaction\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func reportMessageReactions(\n        chatId: Int64?,\n        messageId: Int64?,\n        senderId: MessageSender?\n    ) async throws -> Ok {\n        let query = ReportMessageReactions(\n            chatId: chatId,\n            messageId: messageId,\n            senderId: senderId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns detailed revenue statistics about a chat. Currently, this method can be used only for channels if supergroupFullInfo.can_get_revenue_statistics == true or bots if userFullInfo.bot_info.can_get_revenue_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Returns: Detailed revenue statistics about a chat\n    public final func getChatRevenueStatistics(\n        chatId: Int64?,\n        isDark: Bool?,\n        completion: @escaping (Result<ChatRevenueStatistics, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatRevenueStatistics(\n            chatId: chatId,\n            isDark: isDark\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns detailed revenue statistics about a chat. Currently, this method can be used only for channels if supergroupFullInfo.can_get_revenue_statistics == true or bots if userFullInfo.bot_info.can_get_revenue_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Returns: Detailed revenue statistics about a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatRevenueStatistics(\n        chatId: Int64?,\n        isDark: Bool?\n    ) async throws -> ChatRevenueStatistics {\n        let query = GetChatRevenueStatistics(\n            chatId: chatId,\n            isDark: isDark\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a URL for chat revenue withdrawal; requires owner privileges in the channel chat or the bot. Currently, this method can be used only if getOption(\"can_withdraw_chat_revenue\") for channels with supergroupFullInfo.can_get_revenue_statistics == true or bots with userFullInfo.bot_info.can_get_revenue_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Returns: A URL for chat revenue withdrawal\n    public final func getChatRevenueWithdrawalUrl(\n        chatId: Int64?,\n        password: String?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatRevenueWithdrawalUrl(\n            chatId: chatId,\n            password: password\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a URL for chat revenue withdrawal; requires owner privileges in the channel chat or the bot. Currently, this method can be used only if getOption(\"can_withdraw_chat_revenue\") for channels with supergroupFullInfo.can_get_revenue_statistics == true or bots with userFullInfo.bot_info.can_get_revenue_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Returns: A URL for chat revenue withdrawal\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatRevenueWithdrawalUrl(\n        chatId: Int64?,\n        password: String?\n    ) async throws -> HttpUrl {\n        let query = GetChatRevenueWithdrawalUrl(\n            chatId: chatId,\n            password: password\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of revenue transactions for a chat. Currently, this method can be used only for channels if supergroupFullInfo.can_get_revenue_statistics == true or bots if userFullInfo.bot_info.can_get_revenue_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter limit: The maximum number of transactions to be returned; up to 100\n    /// - Parameter offset: Offset of the first transaction to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: The list of revenue transactions for a chat\n    public final func getChatRevenueTransactions(\n        chatId: Int64?,\n        limit: Int?,\n        offset: String?,\n        completion: @escaping (Result<ChatRevenueTransactions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatRevenueTransactions(\n            chatId: chatId,\n            limit: limit,\n            offset: offset\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of revenue transactions for a chat. Currently, this method can be used only for channels if supergroupFullInfo.can_get_revenue_statistics == true or bots if userFullInfo.bot_info.can_get_revenue_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter limit: The maximum number of transactions to be returned; up to 100\n    /// - Parameter offset: Offset of the first transaction to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: The list of revenue transactions for a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatRevenueTransactions(\n        chatId: Int64?,\n        limit: Int?,\n        offset: String?\n    ) async throws -> ChatRevenueTransactions {\n        let query = GetChatRevenueTransactions(\n            chatId: chatId,\n            limit: limit,\n            offset: offset\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of Toncoin transactions of the current user\n    /// - Parameter direction: Direction of the transactions to receive; pass null to get all transactions\n    /// - Parameter limit: The maximum number of transactions to return\n    /// - Parameter offset: Offset of the first transaction to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: The list of Toncoin transactions of the current user\n    public final func getTonTransactions(\n        direction: TransactionDirection?,\n        limit: Int?,\n        offset: String?,\n        completion: @escaping (Result<TonTransactions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetTonTransactions(\n            direction: direction,\n            limit: limit,\n            offset: offset\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of Toncoin transactions of the current user\n    /// - Parameter direction: Direction of the transactions to receive; pass null to get all transactions\n    /// - Parameter limit: The maximum number of transactions to return\n    /// - Parameter offset: Offset of the first transaction to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: The list of Toncoin transactions of the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getTonTransactions(\n        direction: TransactionDirection?,\n        limit: Int?,\n        offset: String?\n    ) async throws -> TonTransactions {\n        let query = GetTonTransactions(\n            direction: direction,\n            limit: limit,\n            offset: offset\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns detailed Telegram Star revenue statistics\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Parameter ownerId: Identifier of the owner of the Telegram Stars; can be identifier of the current user, an owned bot, or a supergroup or a channel chat with supergroupFullInfo.can_get_star_revenue_statistics == true\n    /// - Returns: Detailed Telegram Star revenue statistics\n    public final func getStarRevenueStatistics(\n        isDark: Bool?,\n        ownerId: MessageSender?,\n        completion: @escaping (Result<StarRevenueStatistics, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStarRevenueStatistics(\n            isDark: isDark,\n            ownerId: ownerId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns detailed Telegram Star revenue statistics\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Parameter ownerId: Identifier of the owner of the Telegram Stars; can be identifier of the current user, an owned bot, or a supergroup or a channel chat with supergroupFullInfo.can_get_star_revenue_statistics == true\n    /// - Returns: Detailed Telegram Star revenue statistics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStarRevenueStatistics(\n        isDark: Bool?,\n        ownerId: MessageSender?\n    ) async throws -> StarRevenueStatistics {\n        let query = GetStarRevenueStatistics(\n            isDark: isDark,\n            ownerId: ownerId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a URL for Telegram Star withdrawal\n    /// - Parameter ownerId: Identifier of the owner of the Telegram Stars; can be identifier of the current user, an owned bot, or an owned supergroup or channel chat\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Parameter starCount: The number of Telegram Stars to withdraw; must be between getOption(\"star_withdrawal_count_min\") and getOption(\"star_withdrawal_count_max\")\n    /// - Returns: A URL for Telegram Star withdrawal\n    public final func getStarWithdrawalUrl(\n        ownerId: MessageSender?,\n        password: String?,\n        starCount: Int64?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStarWithdrawalUrl(\n            ownerId: ownerId,\n            password: password,\n            starCount: starCount\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a URL for Telegram Star withdrawal\n    /// - Parameter ownerId: Identifier of the owner of the Telegram Stars; can be identifier of the current user, an owned bot, or an owned supergroup or channel chat\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Parameter starCount: The number of Telegram Stars to withdraw; must be between getOption(\"star_withdrawal_count_min\") and getOption(\"star_withdrawal_count_max\")\n    /// - Returns: A URL for Telegram Star withdrawal\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStarWithdrawalUrl(\n        ownerId: MessageSender?,\n        password: String?,\n        starCount: Int64?\n    ) async throws -> HttpUrl {\n        let query = GetStarWithdrawalUrl(\n            ownerId: ownerId,\n            password: password,\n            starCount: starCount\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a URL for a Telegram Ad platform account that can be used to set up advertisements for the chat paid in the owned Telegram Stars\n    /// - Parameter ownerId: Identifier of the owner of the Telegram Stars; can be identifier of an owned bot, or identifier of an owned channel chat\n    /// - Returns: A URL for a Telegram Ad platform account that can be used to set up advertisements for the chat paid in the owned Telegram Stars\n    public final func getStarAdAccountUrl(\n        ownerId: MessageSender?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStarAdAccountUrl(\n            ownerId: ownerId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a URL for a Telegram Ad platform account that can be used to set up advertisements for the chat paid in the owned Telegram Stars\n    /// - Parameter ownerId: Identifier of the owner of the Telegram Stars; can be identifier of an owned bot, or identifier of an owned channel chat\n    /// - Returns: A URL for a Telegram Ad platform account that can be used to set up advertisements for the chat paid in the owned Telegram Stars\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStarAdAccountUrl(ownerId: MessageSender?) async throws -> HttpUrl {\n        let query = GetStarAdAccountUrl(\n            ownerId: ownerId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns detailed Toncoin revenue statistics of the current user\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Returns: Detailed Toncoin revenue statistics of the current user\n    public final func getTonRevenueStatistics(\n        isDark: Bool?,\n        completion: @escaping (Result<TonRevenueStatistics, Swift.Error>) -> Void\n    ) throws {\n        let query = GetTonRevenueStatistics(\n            isDark: isDark\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns detailed Toncoin revenue statistics of the current user\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Returns: Detailed Toncoin revenue statistics of the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getTonRevenueStatistics(isDark: Bool?) async throws -> TonRevenueStatistics {\n        let query = GetTonRevenueStatistics(\n            isDark: isDark\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a URL for Toncoin withdrawal from the current user's account. The user must have at least 10 toncoins to withdraw and can withdraw up to 100000 Toncoins in one transaction\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Returns: A URL for Toncoin withdrawal from the current user's account\n    public final func getTonWithdrawalUrl(\n        password: String?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetTonWithdrawalUrl(\n            password: password\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a URL for Toncoin withdrawal from the current user's account. The user must have at least 10 toncoins to withdraw and can withdraw up to 100000 Toncoins in one transaction\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Returns: A URL for Toncoin withdrawal from the current user's account\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getTonWithdrawalUrl(password: String?) async throws -> HttpUrl {\n        let query = GetTonWithdrawalUrl(\n            password: password\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns detailed statistics about a chat. Currently, this method can be used only for supergroups and channels. Can be used only if supergroupFullInfo.can_get_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Returns: Detailed statistics about a chat\n    public final func getChatStatistics(\n        chatId: Int64?,\n        isDark: Bool?,\n        completion: @escaping (Result<ChatStatistics, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatStatistics(\n            chatId: chatId,\n            isDark: isDark\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns detailed statistics about a chat. Currently, this method can be used only for supergroups and channels. Can be used only if supergroupFullInfo.can_get_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Returns: Detailed statistics about a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getChatStatistics(\n        chatId: Int64?,\n        isDark: Bool?\n    ) async throws -> ChatStatistics {\n        let query = GetChatStatistics(\n            chatId: chatId,\n            isDark: isDark\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns detailed statistics about a message. Can be used only if messageProperties.can_get_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Parameter messageId: Message identifier\n    /// - Returns: Detailed statistics about a message\n    public final func getMessageStatistics(\n        chatId: Int64?,\n        isDark: Bool?,\n        messageId: Int64?,\n        completion: @escaping (Result<MessageStatistics, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageStatistics(\n            chatId: chatId,\n            isDark: isDark,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns detailed statistics about a message. Can be used only if messageProperties.can_get_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Parameter messageId: Message identifier\n    /// - Returns: Detailed statistics about a message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMessageStatistics(\n        chatId: Int64?,\n        isDark: Bool?,\n        messageId: Int64?\n    ) async throws -> MessageStatistics {\n        let query = GetMessageStatistics(\n            chatId: chatId,\n            isDark: isDark,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns forwarded copies of a channel message to different public channels and public reposts as a story. Can be used only if messageProperties.can_get_statistics == true. For optimal performance, the number of returned messages and stories is chosen by TDLib\n    /// - Parameter chatId: Chat identifier of the message\n    /// - Parameter limit: The maximum number of messages and stories to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter messageId: Message identifier\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: Forwarded copies of a channel message to different public channels and public reposts as a story. For optimal performance, the number of returned messages and stories is chosen by TDLib\n    public final func getMessagePublicForwards(\n        chatId: Int64?,\n        limit: Int?,\n        messageId: Int64?,\n        offset: String?,\n        completion: @escaping (Result<PublicForwards, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessagePublicForwards(\n            chatId: chatId,\n            limit: limit,\n            messageId: messageId,\n            offset: offset\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns forwarded copies of a channel message to different public channels and public reposts as a story. Can be used only if messageProperties.can_get_statistics == true. For optimal performance, the number of returned messages and stories is chosen by TDLib\n    /// - Parameter chatId: Chat identifier of the message\n    /// - Parameter limit: The maximum number of messages and stories to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter messageId: Message identifier\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: Forwarded copies of a channel message to different public channels and public reposts as a story. For optimal performance, the number of returned messages and stories is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMessagePublicForwards(\n        chatId: Int64?,\n        limit: Int?,\n        messageId: Int64?,\n        offset: String?\n    ) async throws -> PublicForwards {\n        let query = GetMessagePublicForwards(\n            chatId: chatId,\n            limit: limit,\n            messageId: messageId,\n            offset: offset\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns detailed statistics about a story. Can be used only if story.can_get_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Parameter storyId: Story identifier\n    /// - Returns: Detailed statistics about a story\n    public final func getStoryStatistics(\n        chatId: Int64?,\n        isDark: Bool?,\n        storyId: Int?,\n        completion: @escaping (Result<StoryStatistics, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStoryStatistics(\n            chatId: chatId,\n            isDark: isDark,\n            storyId: storyId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns detailed statistics about a story. Can be used only if story.can_get_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Parameter storyId: Story identifier\n    /// - Returns: Detailed statistics about a story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStoryStatistics(\n        chatId: Int64?,\n        isDark: Bool?,\n        storyId: Int?\n    ) async throws -> StoryStatistics {\n        let query = GetStoryStatistics(\n            chatId: chatId,\n            isDark: isDark,\n            storyId: storyId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Loads an asynchronous or a zoomed in statistical graph\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter token: The token for graph loading\n    /// - Parameter x: X-value for zoomed in graph or 0 otherwise\n    public final func getStatisticalGraph(\n        chatId: Int64?,\n        token: String?,\n        x: Int64?,\n        completion: @escaping (Result<StatisticalGraph, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStatisticalGraph(\n            chatId: chatId,\n            token: token,\n            x: x\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Loads an asynchronous or a zoomed in statistical graph\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter token: The token for graph loading\n    /// - Parameter x: X-value for zoomed in graph or 0 otherwise\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStatisticalGraph(\n        chatId: Int64?,\n        token: String?,\n        x: Int64?\n    ) async throws -> StatisticalGraph {\n        let query = GetStatisticalGraph(\n            chatId: chatId,\n            token: token,\n            x: x\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns storage usage statistics. Can be called before authorization\n    /// - Parameter chatLimit: The maximum number of chats with the largest storage usage for which separate statistics need to be returned. All other chats will be grouped in entries with chat_id == 0. If the chat info database is not used, the chat_limit is ignored and is always set to 0\n    /// - Returns: Storage usage statistics\n    public final func getStorageStatistics(\n        chatLimit: Int?,\n        completion: @escaping (Result<StorageStatistics, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStorageStatistics(\n            chatLimit: chatLimit\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns storage usage statistics. Can be called before authorization\n    /// - Parameter chatLimit: The maximum number of chats with the largest storage usage for which separate statistics need to be returned. All other chats will be grouped in entries with chat_id == 0. If the chat info database is not used, the chat_limit is ignored and is always set to 0\n    /// - Returns: Storage usage statistics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStorageStatistics(chatLimit: Int?) async throws -> StorageStatistics {\n        let query = GetStorageStatistics(\n            chatLimit: chatLimit\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Quickly returns approximate storage usage statistics. Can be called before authorization\n    /// - Returns: Quickly returns approximate storage usage statistics\n    public final func getStorageStatisticsFast(completion: @escaping (Result<StorageStatisticsFast, Swift.Error>) -> Void) throws {\n        let query = GetStorageStatisticsFast()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Quickly returns approximate storage usage statistics. Can be called before authorization\n    /// - Returns: Quickly returns approximate storage usage statistics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStorageStatisticsFast() async throws -> StorageStatisticsFast {\n        let query = GetStorageStatisticsFast()\n        return try await self.run(query: query)\n    }\n\n    /// Returns database statistics\n    /// - Returns: Database statistics\n    public final func getDatabaseStatistics(completion: @escaping (Result<DatabaseStatistics, Swift.Error>) -> Void) throws {\n        let query = GetDatabaseStatistics()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns database statistics\n    /// - Returns: Database statistics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getDatabaseStatistics() async throws -> DatabaseStatistics {\n        let query = GetDatabaseStatistics()\n        return try await self.run(query: query)\n    }\n\n    /// Optimizes storage usage, i.e. deletes some files and returns new storage usage statistics. Secret thumbnails can't be deleted\n    /// - Parameter chatIds: If non-empty, only files from the given chats are considered. Use 0 as chat identifier to delete files not belonging to any chat (e.g., profile photos)\n    /// - Parameter chatLimit: Same as in getStorageStatistics. Affects only returned statistics\n    /// - Parameter count: Limit on the total number of files after deletion. Pass -1 to use the default limit\n    /// - Parameter excludeChatIds: If non-empty, files from the given chats are excluded. Use 0 as chat identifier to exclude all files not belonging to any chat (e.g., profile photos)\n    /// - Parameter fileTypes: If non-empty, only files with the given types are considered. By default, all types except thumbnails, profile photos, stickers and wallpapers are deleted\n    /// - Parameter immunityDelay: The amount of time after the creation of a file during which it can't be deleted, in seconds. Pass -1 to use the default value\n    /// - Parameter returnDeletedFileStatistics: Pass true if statistics about the files that were deleted must be returned instead of the whole storage usage statistics. Affects only returned statistics\n    /// - Parameter size: Limit on the total size of files after deletion, in bytes. Pass -1 to use the default limit\n    /// - Parameter ttl: Limit on the time that has passed since the last time a file was accessed (or creation time for some filesystems). Pass -1 to use the default limit\n    /// - Returns: Optimizes storage usage, i.e. deletes some files and returns new storage usage statistics\n    public final func optimizeStorage(\n        chatIds: [Int64]?,\n        chatLimit: Int?,\n        count: Int?,\n        excludeChatIds: [Int64]?,\n        fileTypes: [FileType]?,\n        immunityDelay: Int?,\n        returnDeletedFileStatistics: Bool?,\n        size: Int64?,\n        ttl: Int?,\n        completion: @escaping (Result<StorageStatistics, Swift.Error>) -> Void\n    ) throws {\n        let query = OptimizeStorage(\n            chatIds: chatIds,\n            chatLimit: chatLimit,\n            count: count,\n            excludeChatIds: excludeChatIds,\n            fileTypes: fileTypes,\n            immunityDelay: immunityDelay,\n            returnDeletedFileStatistics: returnDeletedFileStatistics,\n            size: size,\n            ttl: ttl\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Optimizes storage usage, i.e. deletes some files and returns new storage usage statistics. Secret thumbnails can't be deleted\n    /// - Parameter chatIds: If non-empty, only files from the given chats are considered. Use 0 as chat identifier to delete files not belonging to any chat (e.g., profile photos)\n    /// - Parameter chatLimit: Same as in getStorageStatistics. Affects only returned statistics\n    /// - Parameter count: Limit on the total number of files after deletion. Pass -1 to use the default limit\n    /// - Parameter excludeChatIds: If non-empty, files from the given chats are excluded. Use 0 as chat identifier to exclude all files not belonging to any chat (e.g., profile photos)\n    /// - Parameter fileTypes: If non-empty, only files with the given types are considered. By default, all types except thumbnails, profile photos, stickers and wallpapers are deleted\n    /// - Parameter immunityDelay: The amount of time after the creation of a file during which it can't be deleted, in seconds. Pass -1 to use the default value\n    /// - Parameter returnDeletedFileStatistics: Pass true if statistics about the files that were deleted must be returned instead of the whole storage usage statistics. Affects only returned statistics\n    /// - Parameter size: Limit on the total size of files after deletion, in bytes. Pass -1 to use the default limit\n    /// - Parameter ttl: Limit on the time that has passed since the last time a file was accessed (or creation time for some filesystems). Pass -1 to use the default limit\n    /// - Returns: Optimizes storage usage, i.e. deletes some files and returns new storage usage statistics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func optimizeStorage(\n        chatIds: [Int64]?,\n        chatLimit: Int?,\n        count: Int?,\n        excludeChatIds: [Int64]?,\n        fileTypes: [FileType]?,\n        immunityDelay: Int?,\n        returnDeletedFileStatistics: Bool?,\n        size: Int64?,\n        ttl: Int?\n    ) async throws -> StorageStatistics {\n        let query = OptimizeStorage(\n            chatIds: chatIds,\n            chatLimit: chatLimit,\n            count: count,\n            excludeChatIds: excludeChatIds,\n            fileTypes: fileTypes,\n            immunityDelay: immunityDelay,\n            returnDeletedFileStatistics: returnDeletedFileStatistics,\n            size: size,\n            ttl: ttl\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets the current network type. Can be called before authorization. Calling this method forces all network connections to reopen, mitigating the delay in switching between different networks, so it must be called whenever the network is changed, even if the network type remains the same. Network type is used to check whether the library can use the network at all and also for collecting detailed network data usage statistics\n    /// - Parameter type: The new network type; pass null to set network type to networkTypeOther\n    public final func setNetworkType(\n        type: NetworkType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetNetworkType(\n            type: type\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets the current network type. Can be called before authorization. Calling this method forces all network connections to reopen, mitigating the delay in switching between different networks, so it must be called whenever the network is changed, even if the network type remains the same. Network type is used to check whether the library can use the network at all and also for collecting detailed network data usage statistics\n    /// - Parameter type: The new network type; pass null to set network type to networkTypeOther\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setNetworkType(type: NetworkType?) async throws -> Ok {\n        let query = SetNetworkType(\n            type: type\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns network data usage statistics. Can be called before authorization\n    /// - Parameter onlyCurrent: Pass true to get statistics only for the current library launch\n    /// - Returns: Network data usage statistics\n    public final func getNetworkStatistics(\n        onlyCurrent: Bool?,\n        completion: @escaping (Result<NetworkStatistics, Swift.Error>) -> Void\n    ) throws {\n        let query = GetNetworkStatistics(\n            onlyCurrent: onlyCurrent\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns network data usage statistics. Can be called before authorization\n    /// - Parameter onlyCurrent: Pass true to get statistics only for the current library launch\n    /// - Returns: Network data usage statistics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getNetworkStatistics(onlyCurrent: Bool?) async throws -> NetworkStatistics {\n        let query = GetNetworkStatistics(\n            onlyCurrent: onlyCurrent\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds the specified data to data usage statistics. Can be called before authorization\n    /// - Parameter entry: The network statistics entry with the data to be added to statistics\n    public final func addNetworkStatistics(\n        entry: NetworkStatisticsEntry?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddNetworkStatistics(\n            entry: entry\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds the specified data to data usage statistics. Can be called before authorization\n    /// - Parameter entry: The network statistics entry with the data to be added to statistics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func addNetworkStatistics(entry: NetworkStatisticsEntry?) async throws -> Ok {\n        let query = AddNetworkStatistics(\n            entry: entry\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Resets all network data usage statistics to zero. Can be called before authorization\n    public final func resetNetworkStatistics(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ResetNetworkStatistics()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Resets all network data usage statistics to zero. Can be called before authorization\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func resetNetworkStatistics() async throws -> Ok {\n        let query = ResetNetworkStatistics()\n        return try await self.run(query: query)\n    }\n\n    /// Returns auto-download settings presets for the current user\n    /// - Returns: Auto-download settings presets for the current user\n    public final func getAutoDownloadSettingsPresets(completion: @escaping (Result<AutoDownloadSettingsPresets, Swift.Error>) -> Void) throws {\n        let query = GetAutoDownloadSettingsPresets()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns auto-download settings presets for the current user\n    /// - Returns: Auto-download settings presets for the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getAutoDownloadSettingsPresets() async throws -> AutoDownloadSettingsPresets {\n        let query = GetAutoDownloadSettingsPresets()\n        return try await self.run(query: query)\n    }\n\n    /// Sets auto-download settings\n    /// - Parameter settings: New user auto-download settings\n    /// - Parameter type: Type of the network for which the new settings are relevant\n    public final func setAutoDownloadSettings(\n        settings: AutoDownloadSettings?,\n        type: NetworkType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetAutoDownloadSettings(\n            settings: settings,\n            type: type\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets auto-download settings\n    /// - Parameter settings: New user auto-download settings\n    /// - Parameter type: Type of the network for which the new settings are relevant\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setAutoDownloadSettings(\n        settings: AutoDownloadSettings?,\n        type: NetworkType?\n    ) async throws -> Ok {\n        let query = SetAutoDownloadSettings(\n            settings: settings,\n            type: type\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns autosave settings for the current user\n    /// - Returns: Autosave settings for the current user\n    public final func getAutosaveSettings(completion: @escaping (Result<AutosaveSettings, Swift.Error>) -> Void) throws {\n        let query = GetAutosaveSettings()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns autosave settings for the current user\n    /// - Returns: Autosave settings for the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getAutosaveSettings() async throws -> AutosaveSettings {\n        let query = GetAutosaveSettings()\n        return try await self.run(query: query)\n    }\n\n    /// Sets autosave settings for the given scope. The method is guaranteed to work only after at least one call to getAutosaveSettings\n    /// - Parameter scope: Autosave settings scope\n    /// - Parameter settings: New autosave settings for the scope; pass null to set autosave settings to default\n    public final func setAutosaveSettings(\n        scope: AutosaveSettingsScope?,\n        settings: ScopeAutosaveSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetAutosaveSettings(\n            scope: scope,\n            settings: settings\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets autosave settings for the given scope. The method is guaranteed to work only after at least one call to getAutosaveSettings\n    /// - Parameter scope: Autosave settings scope\n    /// - Parameter settings: New autosave settings for the scope; pass null to set autosave settings to default\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setAutosaveSettings(\n        scope: AutosaveSettingsScope?,\n        settings: ScopeAutosaveSettings?\n    ) async throws -> Ok {\n        let query = SetAutosaveSettings(\n            scope: scope,\n            settings: settings\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Clears the list of all autosave settings exceptions. The method is guaranteed to work only after at least one call to getAutosaveSettings\n    public final func clearAutosaveSettingsExceptions(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ClearAutosaveSettingsExceptions()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Clears the list of all autosave settings exceptions. The method is guaranteed to work only after at least one call to getAutosaveSettings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func clearAutosaveSettingsExceptions() async throws -> Ok {\n        let query = ClearAutosaveSettingsExceptions()\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a bank card\n    /// - Parameter bankCardNumber: The bank card number\n    /// - Returns: Information about a bank card\n    public final func getBankCardInfo(\n        bankCardNumber: String?,\n        completion: @escaping (Result<BankCardInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBankCardInfo(\n            bankCardNumber: bankCardNumber\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a bank card\n    /// - Parameter bankCardNumber: The bank card number\n    /// - Returns: Information about a bank card\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getBankCardInfo(bankCardNumber: String?) async throws -> BankCardInfo {\n        let query = GetBankCardInfo(\n            bankCardNumber: bankCardNumber\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns one of the available Telegram Passport elements\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Parameter type: Telegram Passport element type\n    /// - Returns: One of the available Telegram Passport elements\n    public final func getPassportElement(\n        password: String?,\n        type: PassportElementType?,\n        completion: @escaping (Result<PassportElement, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPassportElement(\n            password: password,\n            type: type\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns one of the available Telegram Passport elements\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Parameter type: Telegram Passport element type\n    /// - Returns: One of the available Telegram Passport elements\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPassportElement(\n        password: String?,\n        type: PassportElementType?\n    ) async throws -> PassportElement {\n        let query = GetPassportElement(\n            password: password,\n            type: type\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns all available Telegram Passport elements\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Returns: All available Telegram Passport elements\n    public final func getAllPassportElements(\n        password: String?,\n        completion: @escaping (Result<PassportElements, Swift.Error>) -> Void\n    ) throws {\n        let query = GetAllPassportElements(\n            password: password\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns all available Telegram Passport elements\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Returns: All available Telegram Passport elements\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getAllPassportElements(password: String?) async throws -> PassportElements {\n        let query = GetAllPassportElements(\n            password: password\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds an element to the user's Telegram Passport. May return an error with a message \"PHONE_VERIFICATION_NEEDED\" or \"EMAIL_VERIFICATION_NEEDED\" if the chosen phone number or the chosen email address must be verified first\n    /// - Parameter element: Input Telegram Passport element\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Returns: May return an error with a message \"PHONE_VERIFICATION_NEEDED\" or \"EMAIL_VERIFICATION_NEEDED\" if the chosen phone number or the chosen email address must be verified first\n    public final func setPassportElement(\n        element: InputPassportElement?,\n        password: String?,\n        completion: @escaping (Result<PassportElement, Swift.Error>) -> Void\n    ) throws {\n        let query = SetPassportElement(\n            element: element,\n            password: password\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds an element to the user's Telegram Passport. May return an error with a message \"PHONE_VERIFICATION_NEEDED\" or \"EMAIL_VERIFICATION_NEEDED\" if the chosen phone number or the chosen email address must be verified first\n    /// - Parameter element: Input Telegram Passport element\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Returns: May return an error with a message \"PHONE_VERIFICATION_NEEDED\" or \"EMAIL_VERIFICATION_NEEDED\" if the chosen phone number or the chosen email address must be verified first\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func setPassportElement(\n        element: InputPassportElement?,\n        password: String?\n    ) async throws -> PassportElement {\n        let query = SetPassportElement(\n            element: element,\n            password: password\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Deletes a Telegram Passport element\n    /// - Parameter type: Element type\n    public final func deletePassportElement(\n        type: PassportElementType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeletePassportElement(\n            type: type\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Deletes a Telegram Passport element\n    /// - Parameter type: Element type\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deletePassportElement(type: PassportElementType?) async throws -> Ok {\n        let query = DeletePassportElement(\n            type: type\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs the user who some of the elements in their Telegram Passport contain errors; for bots only. The user will not be able to resend the elements, until the errors are fixed\n    /// - Parameter errors: The errors\n    /// - Parameter userId: User identifier\n    public final func setPassportElementErrors(\n        errors: [InputPassportElementError]?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetPassportElementErrors(\n            errors: errors,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs the user who some of the elements in their Telegram Passport contain errors; for bots only. The user will not be able to resend the elements, until the errors are fixed\n    /// - Parameter errors: The errors\n    /// - Parameter userId: User identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setPassportElementErrors(\n        errors: [InputPassportElementError]?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = SetPassportElementErrors(\n            errors: errors,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an IETF language tag of the language preferred in the country, which must be used to fill native fields in Telegram Passport personal details. Returns a 404 error if unknown\n    /// - Parameter countryCode: A two-letter ISO 3166-1 alpha-2 country code\n    /// - Returns: An IETF language tag of the language preferred in the country, which must be used to fill native fields in Telegram Passport personal details. Returns a 404 error if unknown\n    public final func getPreferredCountryLanguage(\n        countryCode: String?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPreferredCountryLanguage(\n            countryCode: countryCode\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an IETF language tag of the language preferred in the country, which must be used to fill native fields in Telegram Passport personal details. Returns a 404 error if unknown\n    /// - Parameter countryCode: A two-letter ISO 3166-1 alpha-2 country code\n    /// - Returns: An IETF language tag of the language preferred in the country, which must be used to fill native fields in Telegram Passport personal details. Returns a 404 error if unknown\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPreferredCountryLanguage(countryCode: String?) async throws -> Text {\n        let query = GetPreferredCountryLanguage(\n            countryCode: countryCode\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends a code to verify an email address to be added to a user's Telegram Passport\n    /// - Parameter emailAddress: Email address\n    public final func sendEmailAddressVerificationCode(\n        emailAddress: String?,\n        completion: @escaping (Result<EmailAddressAuthenticationCodeInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = SendEmailAddressVerificationCode(\n            emailAddress: emailAddress\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends a code to verify an email address to be added to a user's Telegram Passport\n    /// - Parameter emailAddress: Email address\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func sendEmailAddressVerificationCode(emailAddress: String?) async throws -> EmailAddressAuthenticationCodeInfo {\n        let query = SendEmailAddressVerificationCode(\n            emailAddress: emailAddress\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Resends the code to verify an email address to be added to a user's Telegram Passport\n    public final func resendEmailAddressVerificationCode(completion: @escaping (Result<EmailAddressAuthenticationCodeInfo, Swift.Error>) -> Void) throws {\n        let query = ResendEmailAddressVerificationCode()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Resends the code to verify an email address to be added to a user's Telegram Passport\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func resendEmailAddressVerificationCode() async throws -> EmailAddressAuthenticationCodeInfo {\n        let query = ResendEmailAddressVerificationCode()\n        return try await self.run(query: query)\n    }\n\n    /// Checks the email address verification code for Telegram Passport\n    /// - Parameter code: Verification code to check\n    public final func checkEmailAddressVerificationCode(\n        code: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckEmailAddressVerificationCode(\n            code: code\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks the email address verification code for Telegram Passport\n    /// - Parameter code: Verification code to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func checkEmailAddressVerificationCode(code: String?) async throws -> Ok {\n        let query = CheckEmailAddressVerificationCode(\n            code: code\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a Telegram Passport authorization form for sharing data with a service\n    /// - Parameter botUserId: User identifier of the service's bot\n    /// - Parameter nonce: Unique request identifier provided by the service\n    /// - Parameter publicKey: Service's public key\n    /// - Parameter scope: Telegram Passport element types requested by the service\n    /// - Returns: A Telegram Passport authorization form for sharing data with a service\n    public final func getPassportAuthorizationForm(\n        botUserId: Int64?,\n        nonce: String?,\n        publicKey: String?,\n        scope: String?,\n        completion: @escaping (Result<PassportAuthorizationForm, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPassportAuthorizationForm(\n            botUserId: botUserId,\n            nonce: nonce,\n            publicKey: publicKey,\n            scope: scope\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a Telegram Passport authorization form for sharing data with a service\n    /// - Parameter botUserId: User identifier of the service's bot\n    /// - Parameter nonce: Unique request identifier provided by the service\n    /// - Parameter publicKey: Service's public key\n    /// - Parameter scope: Telegram Passport element types requested by the service\n    /// - Returns: A Telegram Passport authorization form for sharing data with a service\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPassportAuthorizationForm(\n        botUserId: Int64?,\n        nonce: String?,\n        publicKey: String?,\n        scope: String?\n    ) async throws -> PassportAuthorizationForm {\n        let query = GetPassportAuthorizationForm(\n            botUserId: botUserId,\n            nonce: nonce,\n            publicKey: publicKey,\n            scope: scope\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns already available Telegram Passport elements suitable for completing a Telegram Passport authorization form. Result can be received only once for each authorization form\n    /// - Parameter authorizationFormId: Authorization form identifier\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Returns: Already available Telegram Passport elements suitable for completing a Telegram Passport authorization form\n    public final func getPassportAuthorizationFormAvailableElements(\n        authorizationFormId: Int?,\n        password: String?,\n        completion: @escaping (Result<PassportElementsWithErrors, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPassportAuthorizationFormAvailableElements(\n            authorizationFormId: authorizationFormId,\n            password: password\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns already available Telegram Passport elements suitable for completing a Telegram Passport authorization form. Result can be received only once for each authorization form\n    /// - Parameter authorizationFormId: Authorization form identifier\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Returns: Already available Telegram Passport elements suitable for completing a Telegram Passport authorization form\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPassportAuthorizationFormAvailableElements(\n        authorizationFormId: Int?,\n        password: String?\n    ) async throws -> PassportElementsWithErrors {\n        let query = GetPassportAuthorizationFormAvailableElements(\n            authorizationFormId: authorizationFormId,\n            password: password\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends a Telegram Passport authorization form, effectively sharing data with the service. This method must be called after getPassportAuthorizationFormAvailableElements if some previously available elements are going to be reused\n    /// - Parameter authorizationFormId: Authorization form identifier\n    /// - Parameter types: Types of Telegram Passport elements chosen by user to complete the authorization form\n    public final func sendPassportAuthorizationForm(\n        authorizationFormId: Int?,\n        types: [PassportElementType]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendPassportAuthorizationForm(\n            authorizationFormId: authorizationFormId,\n            types: types\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends a Telegram Passport authorization form, effectively sharing data with the service. This method must be called after getPassportAuthorizationFormAvailableElements if some previously available elements are going to be reused\n    /// - Parameter authorizationFormId: Authorization form identifier\n    /// - Parameter types: Types of Telegram Passport elements chosen by user to complete the authorization form\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func sendPassportAuthorizationForm(\n        authorizationFormId: Int?,\n        types: [PassportElementType]?\n    ) async throws -> Ok {\n        let query = SendPassportAuthorizationForm(\n            authorizationFormId: authorizationFormId,\n            types: types\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs the server about the number of pending bot updates if they haven't been processed for a long time; for bots only\n    /// - Parameter errorMessage: The last error message\n    /// - Parameter pendingUpdateCount: The number of pending updates\n    public final func setBotUpdatesStatus(\n        errorMessage: String?,\n        pendingUpdateCount: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBotUpdatesStatus(\n            errorMessage: errorMessage,\n            pendingUpdateCount: pendingUpdateCount\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs the server about the number of pending bot updates if they haven't been processed for a long time; for bots only\n    /// - Parameter errorMessage: The last error message\n    /// - Parameter pendingUpdateCount: The number of pending updates\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setBotUpdatesStatus(\n        errorMessage: String?,\n        pendingUpdateCount: Int?\n    ) async throws -> Ok {\n        let query = SetBotUpdatesStatus(\n            errorMessage: errorMessage,\n            pendingUpdateCount: pendingUpdateCount\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Uploads a file with a sticker; returns the uploaded file\n    /// - Parameter sticker: File file to upload; must fit in a 512x512 square. For WEBP stickers the file must be in WEBP or PNG format, which will be converted to WEBP server-side. See https://core.telegram.org/animated_stickers#technical-requirements for technical requirements\n    /// - Parameter stickerFormat: Sticker format\n    /// - Parameter userId: Sticker file owner; ignored for regular users\n    /// - Returns: The uploaded file\n    public final func uploadStickerFile(\n        sticker: InputFile?,\n        stickerFormat: StickerFormat?,\n        userId: Int64?,\n        completion: @escaping (Result<File, Swift.Error>) -> Void\n    ) throws {\n        let query = UploadStickerFile(\n            sticker: sticker,\n            stickerFormat: stickerFormat,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Uploads a file with a sticker; returns the uploaded file\n    /// - Parameter sticker: File file to upload; must fit in a 512x512 square. For WEBP stickers the file must be in WEBP or PNG format, which will be converted to WEBP server-side. See https://core.telegram.org/animated_stickers#technical-requirements for technical requirements\n    /// - Parameter stickerFormat: Sticker format\n    /// - Parameter userId: Sticker file owner; ignored for regular users\n    /// - Returns: The uploaded file\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func uploadStickerFile(\n        sticker: InputFile?,\n        stickerFormat: StickerFormat?,\n        userId: Int64?\n    ) async throws -> File {\n        let query = UploadStickerFile(\n            sticker: sticker,\n            stickerFormat: stickerFormat,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns a suggested name for a new sticker set with a given title\n    /// - Parameter title: Sticker set title; 1-64 characters\n    /// - Returns: A suggested name for a new sticker set with a given title\n    public final func getSuggestedStickerSetName(\n        title: String?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSuggestedStickerSetName(\n            title: title\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns a suggested name for a new sticker set with a given title\n    /// - Parameter title: Sticker set title; 1-64 characters\n    /// - Returns: A suggested name for a new sticker set with a given title\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getSuggestedStickerSetName(title: String?) async throws -> Text {\n        let query = GetSuggestedStickerSetName(\n            title: title\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks whether a name can be used for a new sticker set\n    /// - Parameter name: Name to be checked\n    public final func checkStickerSetName(\n        name: String?,\n        completion: @escaping (Result<CheckStickerSetNameResult, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckStickerSetName(\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks whether a name can be used for a new sticker set\n    /// - Parameter name: Name to be checked\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func checkStickerSetName(name: String?) async throws -> CheckStickerSetNameResult {\n        let query = CheckStickerSetName(\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Creates a new sticker set. Returns the newly created sticker set\n    /// - Parameter name: Sticker set name. Can contain only English letters, digits and underscores. Must end with *\"_by_<bot username>\"* (*<bot_username>* is case insensitive) for bots; 0-64 characters. If empty, then the name returned by getSuggestedStickerSetName will be used automatically\n    /// - Parameter needsRepainting: Pass true if stickers in the sticker set must be repainted; for custom emoji sticker sets only\n    /// - Parameter source: Source of the sticker set; may be empty if unknown\n    /// - Parameter stickerType: Type of the stickers in the set\n    /// - Parameter stickers: List of stickers to be added to the set; 1-200 stickers for custom emoji sticker sets, and 1-120 stickers otherwise. For TGS stickers, uploadStickerFile must be used before the sticker is shown\n    /// - Parameter title: Sticker set title; 1-64 characters\n    /// - Parameter userId: Sticker set owner; ignored for regular users\n    /// - Returns: The newly created sticker set\n    public final func createNewStickerSet(\n        name: String?,\n        needsRepainting: Bool?,\n        source: String?,\n        stickerType: StickerType?,\n        stickers: [InputSticker]?,\n        title: String?,\n        userId: Int64?,\n        completion: @escaping (Result<StickerSet, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateNewStickerSet(\n            name: name,\n            needsRepainting: needsRepainting,\n            source: source,\n            stickerType: stickerType,\n            stickers: stickers,\n            title: title,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Creates a new sticker set. Returns the newly created sticker set\n    /// - Parameter name: Sticker set name. Can contain only English letters, digits and underscores. Must end with *\"_by_<bot username>\"* (*<bot_username>* is case insensitive) for bots; 0-64 characters. If empty, then the name returned by getSuggestedStickerSetName will be used automatically\n    /// - Parameter needsRepainting: Pass true if stickers in the sticker set must be repainted; for custom emoji sticker sets only\n    /// - Parameter source: Source of the sticker set; may be empty if unknown\n    /// - Parameter stickerType: Type of the stickers in the set\n    /// - Parameter stickers: List of stickers to be added to the set; 1-200 stickers for custom emoji sticker sets, and 1-120 stickers otherwise. For TGS stickers, uploadStickerFile must be used before the sticker is shown\n    /// - Parameter title: Sticker set title; 1-64 characters\n    /// - Parameter userId: Sticker set owner; ignored for regular users\n    /// - Returns: The newly created sticker set\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func createNewStickerSet(\n        name: String?,\n        needsRepainting: Bool?,\n        source: String?,\n        stickerType: StickerType?,\n        stickers: [InputSticker]?,\n        title: String?,\n        userId: Int64?\n    ) async throws -> StickerSet {\n        let query = CreateNewStickerSet(\n            name: name,\n            needsRepainting: needsRepainting,\n            source: source,\n            stickerType: stickerType,\n            stickers: stickers,\n            title: title,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds a new sticker to a set\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user, and contain less than 200 stickers for custom emoji sticker sets and less than 120 otherwise\n    /// - Parameter sticker: Sticker to add to the set\n    /// - Parameter userId: Sticker set owner; ignored for regular users\n    public final func addStickerToSet(\n        name: String?,\n        sticker: InputSticker?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddStickerToSet(\n            name: name,\n            sticker: sticker,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds a new sticker to a set\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user, and contain less than 200 stickers for custom emoji sticker sets and less than 120 otherwise\n    /// - Parameter sticker: Sticker to add to the set\n    /// - Parameter userId: Sticker set owner; ignored for regular users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func addStickerToSet(\n        name: String?,\n        sticker: InputSticker?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = AddStickerToSet(\n            name: name,\n            sticker: sticker,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Replaces existing sticker in a set. The function is equivalent to removeStickerFromSet, then addStickerToSet, then setStickerPositionInSet\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user\n    /// - Parameter newSticker: Sticker to add to the set\n    /// - Parameter oldSticker: Sticker to remove from the set\n    /// - Parameter userId: Sticker set owner; ignored for regular users\n    public final func replaceStickerInSet(\n        name: String?,\n        newSticker: InputSticker?,\n        oldSticker: InputFile?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReplaceStickerInSet(\n            name: name,\n            newSticker: newSticker,\n            oldSticker: oldSticker,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Replaces existing sticker in a set. The function is equivalent to removeStickerFromSet, then addStickerToSet, then setStickerPositionInSet\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user\n    /// - Parameter newSticker: Sticker to add to the set\n    /// - Parameter oldSticker: Sticker to remove from the set\n    /// - Parameter userId: Sticker set owner; ignored for regular users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func replaceStickerInSet(\n        name: String?,\n        newSticker: InputSticker?,\n        oldSticker: InputFile?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = ReplaceStickerInSet(\n            name: name,\n            newSticker: newSticker,\n            oldSticker: oldSticker,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets a sticker set thumbnail\n    /// - Parameter format: Format of the thumbnail; pass null if thumbnail is removed\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user\n    /// - Parameter thumbnail: Thumbnail to set; pass null to remove the sticker set thumbnail\n    /// - Parameter userId: Sticker set owner; ignored for regular users\n    public final func setStickerSetThumbnail(\n        format: StickerFormat?,\n        name: String?,\n        thumbnail: InputFile?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetStickerSetThumbnail(\n            format: format,\n            name: name,\n            thumbnail: thumbnail,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets a sticker set thumbnail\n    /// - Parameter format: Format of the thumbnail; pass null if thumbnail is removed\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user\n    /// - Parameter thumbnail: Thumbnail to set; pass null to remove the sticker set thumbnail\n    /// - Parameter userId: Sticker set owner; ignored for regular users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setStickerSetThumbnail(\n        format: StickerFormat?,\n        name: String?,\n        thumbnail: InputFile?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = SetStickerSetThumbnail(\n            format: format,\n            name: name,\n            thumbnail: thumbnail,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets a custom emoji sticker set thumbnail\n    /// - Parameter customEmojiId: Identifier of the custom emoji from the sticker set, which will be set as sticker set thumbnail; pass 0 to remove the sticker set thumbnail\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user\n    public final func setCustomEmojiStickerSetThumbnail(\n        customEmojiId: TdInt64?,\n        name: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetCustomEmojiStickerSetThumbnail(\n            customEmojiId: customEmojiId,\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets a custom emoji sticker set thumbnail\n    /// - Parameter customEmojiId: Identifier of the custom emoji from the sticker set, which will be set as sticker set thumbnail; pass 0 to remove the sticker set thumbnail\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setCustomEmojiStickerSetThumbnail(\n        customEmojiId: TdInt64?,\n        name: String?\n    ) async throws -> Ok {\n        let query = SetCustomEmojiStickerSetThumbnail(\n            customEmojiId: customEmojiId,\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets a sticker set title\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user\n    /// - Parameter title: New sticker set title\n    public final func setStickerSetTitle(\n        name: String?,\n        title: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetStickerSetTitle(\n            name: name,\n            title: title\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets a sticker set title\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user\n    /// - Parameter title: New sticker set title\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setStickerSetTitle(\n        name: String?,\n        title: String?\n    ) async throws -> Ok {\n        let query = SetStickerSetTitle(\n            name: name,\n            title: title\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Completely deletes a sticker set\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user\n    public final func deleteStickerSet(\n        name: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteStickerSet(\n            name: name\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Completely deletes a sticker set\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func deleteStickerSet(name: String?) async throws -> Ok {\n        let query = DeleteStickerSet(\n            name: name\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the position of a sticker in the set to which it belongs. The sticker set must be owned by the current user\n    /// - Parameter position: New position of the sticker in the set, 0-based\n    /// - Parameter sticker: Sticker\n    public final func setStickerPositionInSet(\n        position: Int?,\n        sticker: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetStickerPositionInSet(\n            position: position,\n            sticker: sticker\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the position of a sticker in the set to which it belongs. The sticker set must be owned by the current user\n    /// - Parameter position: New position of the sticker in the set, 0-based\n    /// - Parameter sticker: Sticker\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setStickerPositionInSet(\n        position: Int?,\n        sticker: InputFile?\n    ) async throws -> Ok {\n        let query = SetStickerPositionInSet(\n            position: position,\n            sticker: sticker\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Removes a sticker from the set to which it belongs. The sticker set must be owned by the current user\n    /// - Parameter sticker: Sticker to remove from the set\n    public final func removeStickerFromSet(\n        sticker: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveStickerFromSet(\n            sticker: sticker\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes a sticker from the set to which it belongs. The sticker set must be owned by the current user\n    /// - Parameter sticker: Sticker to remove from the set\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeStickerFromSet(sticker: InputFile?) async throws -> Ok {\n        let query = RemoveStickerFromSet(\n            sticker: sticker\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the list of emojis corresponding to a sticker. The sticker must belong to a regular or custom emoji sticker set that is owned by the current user\n    /// - Parameter emojis: New string with 1-20 emoji corresponding to the sticker\n    /// - Parameter sticker: Sticker\n    public final func setStickerEmojis(\n        emojis: String?,\n        sticker: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetStickerEmojis(\n            emojis: emojis,\n            sticker: sticker\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the list of emojis corresponding to a sticker. The sticker must belong to a regular or custom emoji sticker set that is owned by the current user\n    /// - Parameter emojis: New string with 1-20 emoji corresponding to the sticker\n    /// - Parameter sticker: Sticker\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setStickerEmojis(\n        emojis: String?,\n        sticker: InputFile?\n    ) async throws -> Ok {\n        let query = SetStickerEmojis(\n            emojis: emojis,\n            sticker: sticker\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the list of keywords of a sticker. The sticker must belong to a regular or custom emoji sticker set that is owned by the current user\n    /// - Parameter keywords: List of up to 20 keywords with total length up to 64 characters, which can be used to find the sticker\n    /// - Parameter sticker: Sticker\n    public final func setStickerKeywords(\n        keywords: [String]?,\n        sticker: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetStickerKeywords(\n            keywords: keywords,\n            sticker: sticker\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the list of keywords of a sticker. The sticker must belong to a regular or custom emoji sticker set that is owned by the current user\n    /// - Parameter keywords: List of up to 20 keywords with total length up to 64 characters, which can be used to find the sticker\n    /// - Parameter sticker: Sticker\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setStickerKeywords(\n        keywords: [String]?,\n        sticker: InputFile?\n    ) async throws -> Ok {\n        let query = SetStickerKeywords(\n            keywords: keywords,\n            sticker: sticker\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes the mask position of a mask sticker. The sticker must belong to a mask sticker set that is owned by the current user\n    /// - Parameter maskPosition: Position where the mask is placed; pass null to remove mask position\n    /// - Parameter sticker: Sticker\n    public final func setStickerMaskPosition(\n        maskPosition: MaskPosition?,\n        sticker: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetStickerMaskPosition(\n            maskPosition: maskPosition,\n            sticker: sticker\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes the mask position of a mask sticker. The sticker must belong to a mask sticker set that is owned by the current user\n    /// - Parameter maskPosition: Position where the mask is placed; pass null to remove mask position\n    /// - Parameter sticker: Sticker\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setStickerMaskPosition(\n        maskPosition: MaskPosition?,\n        sticker: InputFile?\n    ) async throws -> Ok {\n        let query = SetStickerMaskPosition(\n            maskPosition: maskPosition,\n            sticker: sticker\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns sticker sets owned by the current user\n    /// - Parameter limit: The maximum number of sticker sets to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offsetStickerSetId: Identifier of the sticker set from which to return owned sticker sets; use 0 to get results from the beginning\n    /// - Returns: Sticker sets owned by the current user\n    public final func getOwnedStickerSets(\n        limit: Int?,\n        offsetStickerSetId: TdInt64?,\n        completion: @escaping (Result<StickerSets, Swift.Error>) -> Void\n    ) throws {\n        let query = GetOwnedStickerSets(\n            limit: limit,\n            offsetStickerSetId: offsetStickerSetId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns sticker sets owned by the current user\n    /// - Parameter limit: The maximum number of sticker sets to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offsetStickerSetId: Identifier of the sticker set from which to return owned sticker sets; use 0 to get results from the beginning\n    /// - Returns: Sticker sets owned by the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getOwnedStickerSets(\n        limit: Int?,\n        offsetStickerSetId: TdInt64?\n    ) async throws -> StickerSets {\n        let query = GetOwnedStickerSets(\n            limit: limit,\n            offsetStickerSetId: offsetStickerSetId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a file with a map thumbnail in PNG format. Only map thumbnail files with size less than 1MB can be downloaded\n    /// - Parameter chatId: Identifier of a chat in which the thumbnail will be shown. Use 0 if unknown\n    /// - Parameter height: Map height in pixels before applying scale; 16-1024\n    /// - Parameter location: Location of the map center\n    /// - Parameter scale: Map scale; 1-3\n    /// - Parameter width: Map width in pixels before applying scale; 16-1024\n    /// - Parameter zoom: Map zoom level; 13-20\n    /// - Returns: Information about a file with a map thumbnail in PNG format\n    public final func getMapThumbnailFile(\n        chatId: Int64?,\n        height: Int?,\n        location: Location?,\n        scale: Int?,\n        width: Int?,\n        zoom: Int?,\n        completion: @escaping (Result<File, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMapThumbnailFile(\n            chatId: chatId,\n            height: height,\n            location: location,\n            scale: scale,\n            width: width,\n            zoom: zoom\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a file with a map thumbnail in PNG format. Only map thumbnail files with size less than 1MB can be downloaded\n    /// - Parameter chatId: Identifier of a chat in which the thumbnail will be shown. Use 0 if unknown\n    /// - Parameter height: Map height in pixels before applying scale; 16-1024\n    /// - Parameter location: Location of the map center\n    /// - Parameter scale: Map scale; 1-3\n    /// - Parameter width: Map width in pixels before applying scale; 16-1024\n    /// - Parameter zoom: Map zoom level; 13-20\n    /// - Returns: Information about a file with a map thumbnail in PNG format\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getMapThumbnailFile(\n        chatId: Int64?,\n        height: Int?,\n        location: Location?,\n        scale: Int?,\n        width: Int?,\n        zoom: Int?\n    ) async throws -> File {\n        let query = GetMapThumbnailFile(\n            chatId: chatId,\n            height: height,\n            location: location,\n            scale: scale,\n            width: width,\n            zoom: zoom\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a limit, increased for Premium users. Returns a 404 error if the limit is unknown\n    /// - Parameter limitType: Type of the limit\n    /// - Returns: Information about a limit, increased for Premium users. Returns a 404 error if the limit is unknown\n    public final func getPremiumLimit(\n        limitType: PremiumLimitType?,\n        completion: @escaping (Result<PremiumLimit, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPremiumLimit(\n            limitType: limitType\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a limit, increased for Premium users. Returns a 404 error if the limit is unknown\n    /// - Parameter limitType: Type of the limit\n    /// - Returns: Information about a limit, increased for Premium users. Returns a 404 error if the limit is unknown\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPremiumLimit(limitType: PremiumLimitType?) async throws -> PremiumLimit {\n        let query = GetPremiumLimit(\n            limitType: limitType\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about features, available to Premium users\n    /// - Parameter source: Source of the request; pass null if the method is called from some non-standard source\n    /// - Returns: Information about features, available to Premium users\n    public final func getPremiumFeatures(\n        source: PremiumSource?,\n        completion: @escaping (Result<PremiumFeatures, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPremiumFeatures(\n            source: source\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about features, available to Premium users\n    /// - Parameter source: Source of the request; pass null if the method is called from some non-standard source\n    /// - Returns: Information about features, available to Premium users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPremiumFeatures(source: PremiumSource?) async throws -> PremiumFeatures {\n        let query = GetPremiumFeatures(\n            source: source\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns examples of premium stickers for demonstration purposes\n    /// - Returns: Examples of premium stickers for demonstration purposes\n    public final func getPremiumStickerExamples(completion: @escaping (Result<Stickers, Swift.Error>) -> Void) throws {\n        let query = GetPremiumStickerExamples()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns examples of premium stickers for demonstration purposes\n    /// - Returns: Examples of premium stickers for demonstration purposes\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPremiumStickerExamples() async throws -> Stickers {\n        let query = GetPremiumStickerExamples()\n        return try await self.run(query: query)\n    }\n\n    /// Returns the sticker to be used as representation of the Telegram Premium subscription\n    /// - Parameter monthCount: Number of months the Telegram Premium subscription will be active\n    /// - Returns: The sticker to be used as representation of the Telegram Premium subscription\n    public final func getPremiumInfoSticker(\n        monthCount: Int?,\n        completion: @escaping (Result<Sticker, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPremiumInfoSticker(\n            monthCount: monthCount\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the sticker to be used as representation of the Telegram Premium subscription\n    /// - Parameter monthCount: Number of months the Telegram Premium subscription will be active\n    /// - Returns: The sticker to be used as representation of the Telegram Premium subscription\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPremiumInfoSticker(monthCount: Int?) async throws -> Sticker {\n        let query = GetPremiumInfoSticker(\n            monthCount: monthCount\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that the user viewed detailed information about a Premium feature on the Premium features screen\n    /// - Parameter feature: The viewed premium feature\n    public final func viewPremiumFeature(\n        feature: PremiumFeature?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ViewPremiumFeature(\n            feature: feature\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that the user viewed detailed information about a Premium feature on the Premium features screen\n    /// - Parameter feature: The viewed premium feature\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func viewPremiumFeature(feature: PremiumFeature?) async throws -> Ok {\n        let query = ViewPremiumFeature(\n            feature: feature\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs TDLib that the user clicked Premium subscription button on the Premium features screen\n    public final func clickPremiumSubscriptionButton(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ClickPremiumSubscriptionButton()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that the user clicked Premium subscription button on the Premium features screen\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func clickPremiumSubscriptionButton() async throws -> Ok {\n        let query = ClickPremiumSubscriptionButton()\n        return try await self.run(query: query)\n    }\n\n    /// Returns state of Telegram Premium subscription and promotion videos for Premium features\n    /// - Returns: State of Telegram Premium subscription and promotion videos for Premium features\n    public final func getPremiumState(completion: @escaping (Result<PremiumState, Swift.Error>) -> Void) throws {\n        let query = GetPremiumState()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns state of Telegram Premium subscription and promotion videos for Premium features\n    /// - Returns: State of Telegram Premium subscription and promotion videos for Premium features\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPremiumState() async throws -> PremiumState {\n        let query = GetPremiumState()\n        return try await self.run(query: query)\n    }\n\n    /// Returns available options for gifting Telegram Premium to a user\n    /// - Returns: Available options for gifting Telegram Premium to a user\n    public final func getPremiumGiftPaymentOptions(completion: @escaping (Result<PremiumGiftPaymentOptions, Swift.Error>) -> Void) throws {\n        let query = GetPremiumGiftPaymentOptions()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns available options for gifting Telegram Premium to a user\n    /// - Returns: Available options for gifting Telegram Premium to a user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPremiumGiftPaymentOptions() async throws -> PremiumGiftPaymentOptions {\n        let query = GetPremiumGiftPaymentOptions()\n        return try await self.run(query: query)\n    }\n\n    /// Returns available options for creating of Telegram Premium giveaway or manual distribution of Telegram Premium among chat members\n    /// - Parameter boostedChatId: Identifier of the supergroup or channel chat, which will be automatically boosted by receivers of the gift codes and which is administered by the user\n    /// - Returns: Available options for creating of Telegram Premium giveaway or manual distribution of Telegram Premium among chat members\n    public final func getPremiumGiveawayPaymentOptions(\n        boostedChatId: Int64?,\n        completion: @escaping (Result<PremiumGiveawayPaymentOptions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPremiumGiveawayPaymentOptions(\n            boostedChatId: boostedChatId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns available options for creating of Telegram Premium giveaway or manual distribution of Telegram Premium among chat members\n    /// - Parameter boostedChatId: Identifier of the supergroup or channel chat, which will be automatically boosted by receivers of the gift codes and which is administered by the user\n    /// - Returns: Available options for creating of Telegram Premium giveaway or manual distribution of Telegram Premium among chat members\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPremiumGiveawayPaymentOptions(boostedChatId: Int64?) async throws -> PremiumGiveawayPaymentOptions {\n        let query = GetPremiumGiveawayPaymentOptions(\n            boostedChatId: boostedChatId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a Telegram Premium gift code\n    /// - Parameter code: The code to check\n    /// - Returns: Information about a Telegram Premium gift code\n    public final func checkPremiumGiftCode(\n        code: String?,\n        completion: @escaping (Result<PremiumGiftCodeInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckPremiumGiftCode(\n            code: code\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a Telegram Premium gift code\n    /// - Parameter code: The code to check\n    /// - Returns: Information about a Telegram Premium gift code\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func checkPremiumGiftCode(code: String?) async throws -> PremiumGiftCodeInfo {\n        let query = CheckPremiumGiftCode(\n            code: code\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Applies a Telegram Premium gift code\n    /// - Parameter code: The code to apply\n    public final func applyPremiumGiftCode(\n        code: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ApplyPremiumGiftCode(\n            code: code\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Applies a Telegram Premium gift code\n    /// - Parameter code: The code to apply\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func applyPremiumGiftCode(code: String?) async throws -> Ok {\n        let query = ApplyPremiumGiftCode(\n            code: code\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Allows to buy a Telegram Premium subscription for another user with payment in Telegram Stars; for bots only\n    /// - Parameter monthCount: Number of months the Telegram Premium subscription will be active for the user\n    /// - Parameter starCount: The number of Telegram Stars to pay for subscription\n    /// - Parameter text: Text to show to the user receiving Telegram Premium; 0-getOption(\"gift_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed\n    /// - Parameter userId: Identifier of the user which will receive Telegram Premium\n    public final func giftPremiumWithStars(\n        monthCount: Int?,\n        starCount: Int64?,\n        text: FormattedText?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = GiftPremiumWithStars(\n            monthCount: monthCount,\n            starCount: starCount,\n            text: text,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Allows to buy a Telegram Premium subscription for another user with payment in Telegram Stars; for bots only\n    /// - Parameter monthCount: Number of months the Telegram Premium subscription will be active for the user\n    /// - Parameter starCount: The number of Telegram Stars to pay for subscription\n    /// - Parameter text: Text to show to the user receiving Telegram Premium; 0-getOption(\"gift_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed\n    /// - Parameter userId: Identifier of the user which will receive Telegram Premium\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func giftPremiumWithStars(\n        monthCount: Int?,\n        starCount: Int64?,\n        text: FormattedText?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = GiftPremiumWithStars(\n            monthCount: monthCount,\n            starCount: starCount,\n            text: text,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Launches a prepaid giveaway\n    /// - Parameter giveawayId: Unique identifier of the prepaid giveaway\n    /// - Parameter parameters: Giveaway parameters\n    /// - Parameter starCount: The number of Telegram Stars to be distributed through the giveaway; pass 0 for Telegram Premium giveaways\n    /// - Parameter winnerCount: The number of users to receive giveaway prize\n    public final func launchPrepaidGiveaway(\n        giveawayId: TdInt64?,\n        parameters: GiveawayParameters?,\n        starCount: Int64?,\n        winnerCount: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = LaunchPrepaidGiveaway(\n            giveawayId: giveawayId,\n            parameters: parameters,\n            starCount: starCount,\n            winnerCount: winnerCount\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Launches a prepaid giveaway\n    /// - Parameter giveawayId: Unique identifier of the prepaid giveaway\n    /// - Parameter parameters: Giveaway parameters\n    /// - Parameter starCount: The number of Telegram Stars to be distributed through the giveaway; pass 0 for Telegram Premium giveaways\n    /// - Parameter winnerCount: The number of users to receive giveaway prize\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func launchPrepaidGiveaway(\n        giveawayId: TdInt64?,\n        parameters: GiveawayParameters?,\n        starCount: Int64?,\n        winnerCount: Int?\n    ) async throws -> Ok {\n        let query = LaunchPrepaidGiveaway(\n            giveawayId: giveawayId,\n            parameters: parameters,\n            starCount: starCount,\n            winnerCount: winnerCount\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a giveaway\n    /// - Parameter chatId: Identifier of the channel chat which started the giveaway\n    /// - Parameter messageId: Identifier of the giveaway or a giveaway winners message in the chat\n    /// - Returns: Information about a giveaway\n    public final func getGiveawayInfo(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<GiveawayInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGiveawayInfo(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a giveaway\n    /// - Parameter chatId: Identifier of the channel chat which started the giveaway\n    /// - Parameter messageId: Identifier of the giveaway or a giveaway winners message in the chat\n    /// - Returns: Information about a giveaway\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getGiveawayInfo(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> GiveawayInfo {\n        let query = GetGiveawayInfo(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns available options for Telegram Stars purchase\n    /// - Returns: Available options for Telegram Stars purchase\n    public final func getStarPaymentOptions(completion: @escaping (Result<StarPaymentOptions, Swift.Error>) -> Void) throws {\n        let query = GetStarPaymentOptions()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns available options for Telegram Stars purchase\n    /// - Returns: Available options for Telegram Stars purchase\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStarPaymentOptions() async throws -> StarPaymentOptions {\n        let query = GetStarPaymentOptions()\n        return try await self.run(query: query)\n    }\n\n    /// Returns available options for Telegram Stars gifting\n    /// - Parameter userId: Identifier of the user who will receive Telegram Stars; pass 0 to get options for an unspecified user\n    /// - Returns: Available options for Telegram Stars gifting\n    public final func getStarGiftPaymentOptions(\n        userId: Int64?,\n        completion: @escaping (Result<StarPaymentOptions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStarGiftPaymentOptions(\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns available options for Telegram Stars gifting\n    /// - Parameter userId: Identifier of the user who will receive Telegram Stars; pass 0 to get options for an unspecified user\n    /// - Returns: Available options for Telegram Stars gifting\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStarGiftPaymentOptions(userId: Int64?) async throws -> StarPaymentOptions {\n        let query = GetStarGiftPaymentOptions(\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns available options for Telegram Star giveaway creation\n    /// - Returns: Available options for Telegram Star giveaway creation\n    public final func getStarGiveawayPaymentOptions(completion: @escaping (Result<StarGiveawayPaymentOptions, Swift.Error>) -> Void) throws {\n        let query = GetStarGiveawayPaymentOptions()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns available options for Telegram Star giveaway creation\n    /// - Returns: Available options for Telegram Star giveaway creation\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStarGiveawayPaymentOptions() async throws -> StarGiveawayPaymentOptions {\n        let query = GetStarGiveawayPaymentOptions()\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of Telegram Star transactions for the specified owner\n    /// - Parameter direction: Direction of the transactions to receive; pass null to get all transactions\n    /// - Parameter limit: The maximum number of transactions to return\n    /// - Parameter offset: Offset of the first transaction to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter ownerId: Identifier of the owner of the Telegram Stars; can be the identifier of the current user, identifier of an owned bot, or identifier of a supergroup or a channel chat with supergroupFullInfo.can_get_star_revenue_statistics == true\n    /// - Parameter subscriptionId: If non-empty, only transactions related to the Star Subscription will be returned\n    /// - Returns: The list of Telegram Star transactions for the specified owner\n    public final func getStarTransactions(\n        direction: TransactionDirection?,\n        limit: Int?,\n        offset: String?,\n        ownerId: MessageSender?,\n        subscriptionId: String?,\n        completion: @escaping (Result<StarTransactions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStarTransactions(\n            direction: direction,\n            limit: limit,\n            offset: offset,\n            ownerId: ownerId,\n            subscriptionId: subscriptionId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of Telegram Star transactions for the specified owner\n    /// - Parameter direction: Direction of the transactions to receive; pass null to get all transactions\n    /// - Parameter limit: The maximum number of transactions to return\n    /// - Parameter offset: Offset of the first transaction to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter ownerId: Identifier of the owner of the Telegram Stars; can be the identifier of the current user, identifier of an owned bot, or identifier of a supergroup or a channel chat with supergroupFullInfo.can_get_star_revenue_statistics == true\n    /// - Parameter subscriptionId: If non-empty, only transactions related to the Star Subscription will be returned\n    /// - Returns: The list of Telegram Star transactions for the specified owner\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStarTransactions(\n        direction: TransactionDirection?,\n        limit: Int?,\n        offset: String?,\n        ownerId: MessageSender?,\n        subscriptionId: String?\n    ) async throws -> StarTransactions {\n        let query = GetStarTransactions(\n            direction: direction,\n            limit: limit,\n            offset: offset,\n            ownerId: ownerId,\n            subscriptionId: subscriptionId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of Telegram Star subscriptions for the current user\n    /// - Parameter offset: Offset of the first subscription to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter onlyExpiring: Pass true to receive only expiring subscriptions for which there are no enough Telegram Stars to extend\n    /// - Returns: The list of Telegram Star subscriptions for the current user\n    public final func getStarSubscriptions(\n        offset: String?,\n        onlyExpiring: Bool?,\n        completion: @escaping (Result<StarSubscriptions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStarSubscriptions(\n            offset: offset,\n            onlyExpiring: onlyExpiring\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of Telegram Star subscriptions for the current user\n    /// - Parameter offset: Offset of the first subscription to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter onlyExpiring: Pass true to receive only expiring subscriptions for which there are no enough Telegram Stars to extend\n    /// - Returns: The list of Telegram Star subscriptions for the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getStarSubscriptions(\n        offset: String?,\n        onlyExpiring: Bool?\n    ) async throws -> StarSubscriptions {\n        let query = GetStarSubscriptions(\n            offset: offset,\n            onlyExpiring: onlyExpiring\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Checks whether an in-store purchase is possible. Must be called before any in-store purchase. For official applications only\n    /// - Parameter purpose: Transaction purpose\n    public final func canPurchaseFromStore(\n        purpose: StorePaymentPurpose?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CanPurchaseFromStore(\n            purpose: purpose\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Checks whether an in-store purchase is possible. Must be called before any in-store purchase. For official applications only\n    /// - Parameter purpose: Transaction purpose\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func canPurchaseFromStore(purpose: StorePaymentPurpose?) async throws -> Ok {\n        let query = CanPurchaseFromStore(\n            purpose: purpose\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Informs server about an in-store purchase. For official applications only\n    /// - Parameter purpose: Transaction purpose\n    /// - Parameter transaction: Information about the transaction\n    public final func assignStoreTransaction(\n        purpose: StorePaymentPurpose?,\n        transaction: StoreTransaction?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AssignStoreTransaction(\n            purpose: purpose,\n            transaction: transaction\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Informs server about an in-store purchase. For official applications only\n    /// - Parameter purpose: Transaction purpose\n    /// - Parameter transaction: Information about the transaction\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func assignStoreTransaction(\n        purpose: StorePaymentPurpose?,\n        transaction: StoreTransaction?\n    ) async throws -> Ok {\n        let query = AssignStoreTransaction(\n            purpose: purpose,\n            transaction: transaction\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Cancels or re-enables Telegram Star subscription\n    /// - Parameter isCanceled: New value of is_canceled\n    /// - Parameter subscriptionId: Identifier of the subscription to change\n    public final func editStarSubscription(\n        isCanceled: Bool?,\n        subscriptionId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditStarSubscription(\n            isCanceled: isCanceled,\n            subscriptionId: subscriptionId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Cancels or re-enables Telegram Star subscription\n    /// - Parameter isCanceled: New value of is_canceled\n    /// - Parameter subscriptionId: Identifier of the subscription to change\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func editStarSubscription(\n        isCanceled: Bool?,\n        subscriptionId: String?\n    ) async throws -> Ok {\n        let query = EditStarSubscription(\n            isCanceled: isCanceled,\n            subscriptionId: subscriptionId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Cancels or re-enables Telegram Star subscription for a user; for bots only\n    /// - Parameter isCanceled: Pass true to cancel the subscription; pass false to allow the user to enable it\n    /// - Parameter telegramPaymentChargeId: Telegram payment identifier of the subscription\n    /// - Parameter userId: User identifier\n    public final func editUserStarSubscription(\n        isCanceled: Bool?,\n        telegramPaymentChargeId: String?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditUserStarSubscription(\n            isCanceled: isCanceled,\n            telegramPaymentChargeId: telegramPaymentChargeId,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Cancels or re-enables Telegram Star subscription for a user; for bots only\n    /// - Parameter isCanceled: Pass true to cancel the subscription; pass false to allow the user to enable it\n    /// - Parameter telegramPaymentChargeId: Telegram payment identifier of the subscription\n    /// - Parameter userId: User identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func editUserStarSubscription(\n        isCanceled: Bool?,\n        telegramPaymentChargeId: String?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = EditUserStarSubscription(\n            isCanceled: isCanceled,\n            telegramPaymentChargeId: telegramPaymentChargeId,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Reuses an active Telegram Star subscription to a channel chat and joins the chat again\n    /// - Parameter subscriptionId: Identifier of the subscription\n    public final func reuseStarSubscription(\n        subscriptionId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReuseStarSubscription(\n            subscriptionId: subscriptionId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Reuses an active Telegram Star subscription to a channel chat and joins the chat again\n    /// - Parameter subscriptionId: Identifier of the subscription\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func reuseStarSubscription(subscriptionId: String?) async throws -> Ok {\n        let query = ReuseStarSubscription(\n            subscriptionId: subscriptionId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Changes affiliate program for a bot\n    /// - Parameter chatId: Identifier of the chat with an owned bot for which affiliate program is changed\n    /// - Parameter parameters: Parameters of the affiliate program; pass null to close the currently active program. If there is an active program, then commission and program duration can only be increased. If the active program is scheduled to be closed, then it can't be changed anymore\n    public final func setChatAffiliateProgram(\n        chatId: Int64?,\n        parameters: AffiliateProgramParameters?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatAffiliateProgram(\n            chatId: chatId,\n            parameters: parameters\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Changes affiliate program for a bot\n    /// - Parameter chatId: Identifier of the chat with an owned bot for which affiliate program is changed\n    /// - Parameter parameters: Parameters of the affiliate program; pass null to close the currently active program. If there is an active program, then commission and program duration can only be increased. If the active program is scheduled to be closed, then it can't be changed anymore\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setChatAffiliateProgram(\n        chatId: Int64?,\n        parameters: AffiliateProgramParameters?\n    ) async throws -> Ok {\n        let query = SetChatAffiliateProgram(\n            chatId: chatId,\n            parameters: parameters\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches a chat with an affiliate program. Returns the chat if found and the program is active\n    /// - Parameter referrer: The referrer from an internalLinkTypeChatAffiliateProgram link\n    /// - Parameter username: Username of the chat\n    /// - Returns: The chat if found and the program is active\n    public final func searchChatAffiliateProgram(\n        referrer: String?,\n        username: String?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchChatAffiliateProgram(\n            referrer: referrer,\n            username: username\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches a chat with an affiliate program. Returns the chat if found and the program is active\n    /// - Parameter referrer: The referrer from an internalLinkTypeChatAffiliateProgram link\n    /// - Parameter username: Username of the chat\n    /// - Returns: The chat if found and the program is active\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchChatAffiliateProgram(\n        referrer: String?,\n        username: String?\n    ) async throws -> Chat {\n        let query = SearchChatAffiliateProgram(\n            referrer: referrer,\n            username: username\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches affiliate programs that can be connected to the given affiliate\n    /// - Parameter affiliate: The affiliate for which affiliate programs are searched for\n    /// - Parameter limit: The maximum number of affiliate programs to return\n    /// - Parameter offset: Offset of the first affiliate program to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter sortOrder: Sort order for the results\n    public final func searchAffiliatePrograms(\n        affiliate: AffiliateType?,\n        limit: Int?,\n        offset: String?,\n        sortOrder: AffiliateProgramSortOrder?,\n        completion: @escaping (Result<FoundAffiliatePrograms, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchAffiliatePrograms(\n            affiliate: affiliate,\n            limit: limit,\n            offset: offset,\n            sortOrder: sortOrder\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches affiliate programs that can be connected to the given affiliate\n    /// - Parameter affiliate: The affiliate for which affiliate programs are searched for\n    /// - Parameter limit: The maximum number of affiliate programs to return\n    /// - Parameter offset: Offset of the first affiliate program to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter sortOrder: Sort order for the results\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchAffiliatePrograms(\n        affiliate: AffiliateType?,\n        limit: Int?,\n        offset: String?,\n        sortOrder: AffiliateProgramSortOrder?\n    ) async throws -> FoundAffiliatePrograms {\n        let query = SearchAffiliatePrograms(\n            affiliate: affiliate,\n            limit: limit,\n            offset: offset,\n            sortOrder: sortOrder\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Connects an affiliate program to the given affiliate. Returns information about the connected affiliate program\n    /// - Parameter affiliate: The affiliate to which the affiliate program will be connected\n    /// - Parameter botUserId: Identifier of the bot, which affiliate program is connected\n    /// - Returns: Information about the connected affiliate program\n    public final func connectAffiliateProgram(\n        affiliate: AffiliateType?,\n        botUserId: Int64?,\n        completion: @escaping (Result<ConnectedAffiliateProgram, Swift.Error>) -> Void\n    ) throws {\n        let query = ConnectAffiliateProgram(\n            affiliate: affiliate,\n            botUserId: botUserId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Connects an affiliate program to the given affiliate. Returns information about the connected affiliate program\n    /// - Parameter affiliate: The affiliate to which the affiliate program will be connected\n    /// - Parameter botUserId: Identifier of the bot, which affiliate program is connected\n    /// - Returns: Information about the connected affiliate program\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func connectAffiliateProgram(\n        affiliate: AffiliateType?,\n        botUserId: Int64?\n    ) async throws -> ConnectedAffiliateProgram {\n        let query = ConnectAffiliateProgram(\n            affiliate: affiliate,\n            botUserId: botUserId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Disconnects an affiliate program from the given affiliate and immediately deactivates its referral link. Returns updated information about the disconnected affiliate program\n    /// - Parameter affiliate: The affiliate to which the affiliate program is connected\n    /// - Parameter url: The referral link of the affiliate program\n    /// - Returns: Updated information about the disconnected affiliate program\n    public final func disconnectAffiliateProgram(\n        affiliate: AffiliateType?,\n        url: String?,\n        completion: @escaping (Result<ConnectedAffiliateProgram, Swift.Error>) -> Void\n    ) throws {\n        let query = DisconnectAffiliateProgram(\n            affiliate: affiliate,\n            url: url\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Disconnects an affiliate program from the given affiliate and immediately deactivates its referral link. Returns updated information about the disconnected affiliate program\n    /// - Parameter affiliate: The affiliate to which the affiliate program is connected\n    /// - Parameter url: The referral link of the affiliate program\n    /// - Returns: Updated information about the disconnected affiliate program\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func disconnectAffiliateProgram(\n        affiliate: AffiliateType?,\n        url: String?\n    ) async throws -> ConnectedAffiliateProgram {\n        let query = DisconnectAffiliateProgram(\n            affiliate: affiliate,\n            url: url\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns an affiliate program that was connected to the given affiliate by identifier of the bot that created the program\n    /// - Parameter affiliate: The affiliate to which the affiliate program will be connected\n    /// - Parameter botUserId: Identifier of the bot that created the program\n    /// - Returns: An affiliate program that was connected to the given affiliate by identifier of the bot that created the program\n    public final func getConnectedAffiliateProgram(\n        affiliate: AffiliateType?,\n        botUserId: Int64?,\n        completion: @escaping (Result<ConnectedAffiliateProgram, Swift.Error>) -> Void\n    ) throws {\n        let query = GetConnectedAffiliateProgram(\n            affiliate: affiliate,\n            botUserId: botUserId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns an affiliate program that was connected to the given affiliate by identifier of the bot that created the program\n    /// - Parameter affiliate: The affiliate to which the affiliate program will be connected\n    /// - Parameter botUserId: Identifier of the bot that created the program\n    /// - Returns: An affiliate program that was connected to the given affiliate by identifier of the bot that created the program\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getConnectedAffiliateProgram(\n        affiliate: AffiliateType?,\n        botUserId: Int64?\n    ) async throws -> ConnectedAffiliateProgram {\n        let query = GetConnectedAffiliateProgram(\n            affiliate: affiliate,\n            botUserId: botUserId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns affiliate programs that were connected to the given affiliate\n    /// - Parameter affiliate: The affiliate to which the affiliate program were connected\n    /// - Parameter limit: The maximum number of affiliate programs to return\n    /// - Parameter offset: Offset of the first affiliate program to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: Affiliate programs that were connected to the given affiliate\n    public final func getConnectedAffiliatePrograms(\n        affiliate: AffiliateType?,\n        limit: Int?,\n        offset: String?,\n        completion: @escaping (Result<ConnectedAffiliatePrograms, Swift.Error>) -> Void\n    ) throws {\n        let query = GetConnectedAffiliatePrograms(\n            affiliate: affiliate,\n            limit: limit,\n            offset: offset\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns affiliate programs that were connected to the given affiliate\n    /// - Parameter affiliate: The affiliate to which the affiliate program were connected\n    /// - Parameter limit: The maximum number of affiliate programs to return\n    /// - Parameter offset: Offset of the first affiliate program to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: Affiliate programs that were connected to the given affiliate\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getConnectedAffiliatePrograms(\n        affiliate: AffiliateType?,\n        limit: Int?,\n        offset: String?\n    ) async throws -> ConnectedAffiliatePrograms {\n        let query = GetConnectedAffiliatePrograms(\n            affiliate: affiliate,\n            limit: limit,\n            offset: offset\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about features, available to Business users\n    /// - Parameter source: Source of the request; pass null if the method is called from settings or some non-standard source\n    /// - Returns: Information about features, available to Business users\n    public final func getBusinessFeatures(\n        source: BusinessFeature?,\n        completion: @escaping (Result<BusinessFeatures, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBusinessFeatures(\n            source: source\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about features, available to Business users\n    /// - Parameter source: Source of the request; pass null if the method is called from settings or some non-standard source\n    /// - Returns: Information about features, available to Business users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getBusinessFeatures(source: BusinessFeature?) async throws -> BusinessFeatures {\n        let query = GetBusinessFeatures(\n            source: source\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Accepts Telegram terms of services\n    /// - Parameter termsOfServiceId: Terms of service identifier\n    public final func acceptTermsOfService(\n        termsOfServiceId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AcceptTermsOfService(\n            termsOfServiceId: termsOfServiceId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Accepts Telegram terms of services\n    /// - Parameter termsOfServiceId: Terms of service identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func acceptTermsOfService(termsOfServiceId: String?) async throws -> Ok {\n        let query = AcceptTermsOfService(\n            termsOfServiceId: termsOfServiceId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Searches specified query by word prefixes in the provided strings. Returns 0-based positions of strings that matched. Can be called synchronously\n    /// - Parameter limit: The maximum number of objects to return\n    /// - Parameter query: Query to search for\n    /// - Parameter returnNoneForEmptyQuery: Pass true to receive no results for an empty query\n    /// - Parameter strings: The strings to search in for the query\n    /// - Returns: 0-based positions of strings that matched\n    public final func searchStringsByPrefix(\n        limit: Int?,\n        query: String?,\n        returnNoneForEmptyQuery: Bool?,\n        strings: [String]?,\n        completion: @escaping (Result<FoundPositions, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchStringsByPrefix(\n            limit: limit,\n            query: query,\n            returnNoneForEmptyQuery: returnNoneForEmptyQuery,\n            strings: strings\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Searches specified query by word prefixes in the provided strings. Returns 0-based positions of strings that matched. Can be called synchronously\n    /// - Parameter limit: The maximum number of objects to return\n    /// - Parameter query: Query to search for\n    /// - Parameter returnNoneForEmptyQuery: Pass true to receive no results for an empty query\n    /// - Parameter strings: The strings to search in for the query\n    /// - Returns: 0-based positions of strings that matched\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func searchStringsByPrefix(\n        limit: Int?,\n        query: String?,\n        returnNoneForEmptyQuery: Bool?,\n        strings: [String]?\n    ) async throws -> FoundPositions {\n        let query = SearchStringsByPrefix(\n            limit: limit,\n            query: query,\n            returnNoneForEmptyQuery: returnNoneForEmptyQuery,\n            strings: strings\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends a custom request; for bots only\n    /// - Parameter method: The method name\n    /// - Parameter parameters: JSON-serialized method parameters\n    public final func sendCustomRequest(\n        method: String?,\n        parameters: String?,\n        completion: @escaping (Result<CustomRequestResult, Swift.Error>) -> Void\n    ) throws {\n        let query = SendCustomRequest(\n            method: method,\n            parameters: parameters\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends a custom request; for bots only\n    /// - Parameter method: The method name\n    /// - Parameter parameters: JSON-serialized method parameters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func sendCustomRequest(\n        method: String?,\n        parameters: String?\n    ) async throws -> CustomRequestResult {\n        let query = SendCustomRequest(\n            method: method,\n            parameters: parameters\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Answers a custom query; for bots only\n    /// - Parameter customQueryId: Identifier of a custom query\n    /// - Parameter data: JSON-serialized answer to the query\n    public final func answerCustomQuery(\n        customQueryId: TdInt64?,\n        data: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AnswerCustomQuery(\n            customQueryId: customQueryId,\n            data: data\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Answers a custom query; for bots only\n    /// - Parameter customQueryId: Identifier of a custom query\n    /// - Parameter data: JSON-serialized answer to the query\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func answerCustomQuery(\n        customQueryId: TdInt64?,\n        data: String?\n    ) async throws -> Ok {\n        let query = AnswerCustomQuery(\n            customQueryId: customQueryId,\n            data: data\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Succeeds after a specified amount of time has passed. Can be called before initialization\n    /// - Parameter seconds: Number of seconds before the function returns\n    public final func setAlarm(\n        seconds: Double?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetAlarm(\n            seconds: seconds\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Succeeds after a specified amount of time has passed. Can be called before initialization\n    /// - Parameter seconds: Number of seconds before the function returns\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setAlarm(seconds: Double?) async throws -> Ok {\n        let query = SetAlarm(\n            seconds: seconds\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about existing countries. Can be called before authorization\n    /// - Returns: Information about existing countries\n    public final func getCountries(completion: @escaping (Result<Countries, Swift.Error>) -> Void) throws {\n        let query = GetCountries()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about existing countries. Can be called before authorization\n    /// - Returns: Information about existing countries\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getCountries() async throws -> Countries {\n        let query = GetCountries()\n        return try await self.run(query: query)\n    }\n\n    /// Uses the current IP address to find the current country. Returns two-letter ISO 3166-1 alpha-2 country code. Can be called before authorization\n    /// - Returns: Two-letter ISO 3166-1 alpha-2 country code\n    public final func getCountryCode(completion: @escaping (Result<Text, Swift.Error>) -> Void) throws {\n        let query = GetCountryCode()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Uses the current IP address to find the current country. Returns two-letter ISO 3166-1 alpha-2 country code. Can be called before authorization\n    /// - Returns: Two-letter ISO 3166-1 alpha-2 country code\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getCountryCode() async throws -> Text {\n        let query = GetCountryCode()\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a phone number by its prefix. Can be called before authorization\n    /// - Parameter phoneNumberPrefix: The phone number prefix\n    /// - Returns: Information about a phone number by its prefix\n    public final func getPhoneNumberInfo(\n        phoneNumberPrefix: String?,\n        completion: @escaping (Result<PhoneNumberInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPhoneNumberInfo(\n            phoneNumberPrefix: phoneNumberPrefix\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a phone number by its prefix. Can be called before authorization\n    /// - Parameter phoneNumberPrefix: The phone number prefix\n    /// - Returns: Information about a phone number by its prefix\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPhoneNumberInfo(phoneNumberPrefix: String?) async throws -> PhoneNumberInfo {\n        let query = GetPhoneNumberInfo(\n            phoneNumberPrefix: phoneNumberPrefix\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a phone number by its prefix synchronously. getCountries must be called at least once after changing localization to the specified language if properly localized country information is expected. Can be called synchronously\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code for country information localization\n    /// - Parameter phoneNumberPrefix: The phone number prefix\n    /// - Returns: Information about a phone number by its prefix synchronously\n    public final func getPhoneNumberInfoSync(\n        languageCode: String?,\n        phoneNumberPrefix: String?,\n        completion: @escaping (Result<PhoneNumberInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPhoneNumberInfoSync(\n            languageCode: languageCode,\n            phoneNumberPrefix: phoneNumberPrefix\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a phone number by its prefix synchronously. getCountries must be called at least once after changing localization to the specified language if properly localized country information is expected. Can be called synchronously\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code for country information localization\n    /// - Parameter phoneNumberPrefix: The phone number prefix\n    /// - Returns: Information about a phone number by its prefix synchronously\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getPhoneNumberInfoSync(\n        languageCode: String?,\n        phoneNumberPrefix: String?\n    ) async throws -> PhoneNumberInfo {\n        let query = GetPhoneNumberInfoSync(\n            languageCode: languageCode,\n            phoneNumberPrefix: phoneNumberPrefix\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a given collectible item that was purchased at https://fragment.com\n    /// - Parameter type: Type of the collectible item. The item must be used by a user and must be visible to the current user\n    /// - Returns: Information about a given collectible item that was purchased at https://fragment\n    public final func getCollectibleItemInfo(\n        type: CollectibleItemType?,\n        completion: @escaping (Result<CollectibleItemInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetCollectibleItemInfo(\n            type: type\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a given collectible item that was purchased at https://fragment.com\n    /// - Parameter type: Type of the collectible item. The item must be used by a user and must be visible to the current user\n    /// - Returns: Information about a given collectible item that was purchased at https://fragment\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getCollectibleItemInfo(type: CollectibleItemType?) async throws -> CollectibleItemInfo {\n        let query = GetCollectibleItemInfo(\n            type: type\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about a tg:// deep link. Use \"tg://need_update_for_some_feature\" or \"tg:some_unsupported_feature\" for testing. Returns a 404 error for unknown links. Can be called before authorization\n    /// - Parameter link: The link\n    /// - Returns: Information about a tg:// deep link. Returns a 404 error for unknown links\n    public final func getDeepLinkInfo(\n        link: String?,\n        completion: @escaping (Result<DeepLinkInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetDeepLinkInfo(\n            link: link\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about a tg:// deep link. Use \"tg://need_update_for_some_feature\" or \"tg:some_unsupported_feature\" for testing. Returns a 404 error for unknown links. Can be called before authorization\n    /// - Parameter link: The link\n    /// - Returns: Information about a tg:// deep link. Returns a 404 error for unknown links\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getDeepLinkInfo(link: String?) async throws -> DeepLinkInfo {\n        let query = GetDeepLinkInfo(\n            link: link\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns application config, provided by the server. Can be called before authorization\n    /// - Returns: Application config, provided by the server\n    public final func getApplicationConfig(completion: @escaping (Result<JsonValue, Swift.Error>) -> Void) throws {\n        let query = GetApplicationConfig()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns application config, provided by the server. Can be called before authorization\n    /// - Returns: Application config, provided by the server\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getApplicationConfig() async throws -> JsonValue {\n        let query = GetApplicationConfig()\n        return try await self.run(query: query)\n    }\n\n    /// Saves application log event on the server. Can be called before authorization\n    /// - Parameter chatId: Optional chat identifier, associated with the event\n    /// - Parameter data: The log event data\n    /// - Parameter type: Event type\n    public final func saveApplicationLogEvent(\n        chatId: Int64?,\n        data: JsonValue?,\n        type: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SaveApplicationLogEvent(\n            chatId: chatId,\n            data: data,\n            type: type\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Saves application log event on the server. Can be called before authorization\n    /// - Parameter chatId: Optional chat identifier, associated with the event\n    /// - Parameter data: The log event data\n    /// - Parameter type: Event type\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func saveApplicationLogEvent(\n        chatId: Int64?,\n        data: JsonValue?,\n        type: String?\n    ) async throws -> Ok {\n        let query = SaveApplicationLogEvent(\n            chatId: chatId,\n            data: data,\n            type: type\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the link for downloading official Telegram application to be used when the current user invites friends to Telegram\n    /// - Returns: The link for downloading official Telegram application to be used when the current user invites friends to Telegram\n    public final func getApplicationDownloadLink(completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void) throws {\n        let query = GetApplicationDownloadLink()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the link for downloading official Telegram application to be used when the current user invites friends to Telegram\n    /// - Returns: The link for downloading official Telegram application to be used when the current user invites friends to Telegram\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getApplicationDownloadLink() async throws -> HttpUrl {\n        let query = GetApplicationDownloadLink()\n        return try await self.run(query: query)\n    }\n\n    /// Adds a proxy server for network requests. Can be called before authorization\n    /// - Parameter comment: Comment to set for the proxy\n    /// - Parameter enable: Pass true to immediately enable the proxy\n    /// - Parameter proxy: The proxy to add\n    public final func addProxy(\n        comment: String?,\n        enable: Bool?,\n        proxy: Proxy?,\n        completion: @escaping (Result<AddedProxy, Swift.Error>) -> Void\n    ) throws {\n        let query = AddProxy(\n            comment: comment,\n            enable: enable,\n            proxy: proxy\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds a proxy server for network requests. Can be called before authorization\n    /// - Parameter comment: Comment to set for the proxy\n    /// - Parameter enable: Pass true to immediately enable the proxy\n    /// - Parameter proxy: The proxy to add\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func addProxy(\n        comment: String?,\n        enable: Bool?,\n        proxy: Proxy?\n    ) async throws -> AddedProxy {\n        let query = AddProxy(\n            comment: comment,\n            enable: enable,\n            proxy: proxy\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Edits an existing proxy server for network requests. Can be called before authorization\n    /// - Parameter comment: New comment for the proxy\n    /// - Parameter enable: Pass true to immediately enable the proxy\n    /// - Parameter proxy: The new information about the proxy\n    /// - Parameter proxyId: Proxy identifier\n    public final func editProxy(\n        comment: String?,\n        enable: Bool?,\n        proxy: Proxy?,\n        proxyId: Int?,\n        completion: @escaping (Result<AddedProxy, Swift.Error>) -> Void\n    ) throws {\n        let query = EditProxy(\n            comment: comment,\n            enable: enable,\n            proxy: proxy,\n            proxyId: proxyId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Edits an existing proxy server for network requests. Can be called before authorization\n    /// - Parameter comment: New comment for the proxy\n    /// - Parameter enable: Pass true to immediately enable the proxy\n    /// - Parameter proxy: The new information about the proxy\n    /// - Parameter proxyId: Proxy identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func editProxy(\n        comment: String?,\n        enable: Bool?,\n        proxy: Proxy?,\n        proxyId: Int?\n    ) async throws -> AddedProxy {\n        let query = EditProxy(\n            comment: comment,\n            enable: enable,\n            proxy: proxy,\n            proxyId: proxyId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Enables a proxy. Only one proxy can be enabled at a time. Can be called before authorization\n    /// - Parameter proxyId: Proxy identifier\n    public final func enableProxy(\n        proxyId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EnableProxy(\n            proxyId: proxyId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Enables a proxy. Only one proxy can be enabled at a time. Can be called before authorization\n    /// - Parameter proxyId: Proxy identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func enableProxy(proxyId: Int?) async throws -> Ok {\n        let query = EnableProxy(\n            proxyId: proxyId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Disables the currently enabled proxy. Can be called before authorization\n    public final func disableProxy(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = DisableProxy()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Disables the currently enabled proxy. Can be called before authorization\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func disableProxy() async throws -> Ok {\n        let query = DisableProxy()\n        return try await self.run(query: query)\n    }\n\n    /// Removes a proxy server. Can be called before authorization\n    /// - Parameter proxyId: Proxy identifier\n    public final func removeProxy(\n        proxyId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveProxy(\n            proxyId: proxyId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Removes a proxy server. Can be called before authorization\n    /// - Parameter proxyId: Proxy identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func removeProxy(proxyId: Int?) async throws -> Ok {\n        let query = RemoveProxy(\n            proxyId: proxyId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of proxies that are currently set up. Can be called before authorization\n    /// - Returns: The list of proxies that are currently set up\n    public final func getProxies(completion: @escaping (Result<AddedProxies, Swift.Error>) -> Void) throws {\n        let query = GetProxies()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of proxies that are currently set up. Can be called before authorization\n    /// - Returns: The list of proxies that are currently set up\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getProxies() async throws -> AddedProxies {\n        let query = GetProxies()\n        return try await self.run(query: query)\n    }\n\n    /// Computes time needed to receive a response from a Telegram server through a proxy. Can be called before authorization\n    /// - Parameter proxy: The proxy to test; pass null to ping a Telegram server without a proxy\n    public final func pingProxy(\n        proxy: Proxy?,\n        completion: @escaping (Result<Seconds, Swift.Error>) -> Void\n    ) throws {\n        let query = PingProxy(\n            proxy: proxy\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Computes time needed to receive a response from a Telegram server through a proxy. Can be called before authorization\n    /// - Parameter proxy: The proxy to test; pass null to ping a Telegram server without a proxy\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func pingProxy(proxy: Proxy?) async throws -> Seconds {\n        let query = PingProxy(\n            proxy: proxy\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets new log stream for internal logging of TDLib. Can be called synchronously\n    /// - Parameter logStream: New log stream\n    public final func setLogStream(\n        logStream: LogStream?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetLogStream(\n            logStream: logStream\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets new log stream for internal logging of TDLib. Can be called synchronously\n    /// - Parameter logStream: New log stream\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setLogStream(logStream: LogStream?) async throws -> Ok {\n        let query = SetLogStream(\n            logStream: logStream\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns information about currently used log stream for internal logging of TDLib. Can be called synchronously\n    /// - Returns: Information about currently used log stream for internal logging of TDLib\n    public final func getLogStream(completion: @escaping (Result<LogStream, Swift.Error>) -> Void) throws {\n        let query = GetLogStream()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns information about currently used log stream for internal logging of TDLib. Can be called synchronously\n    /// - Returns: Information about currently used log stream for internal logging of TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getLogStream() async throws -> LogStream {\n        let query = GetLogStream()\n        return try await self.run(query: query)\n    }\n\n    /// Sets the verbosity level of the internal logging of TDLib. Can be called synchronously\n    /// - Parameter newVerbosityLevel: New value of the verbosity level for logging. Value 0 corresponds to fatal errors, value 1 corresponds to errors, value 2 corresponds to warnings and debug warnings, value 3 corresponds to informational, value 4 corresponds to debug, value 5 corresponds to verbose debug, value greater than 5 and up to 1023 can be used to enable even more logging\n    public final func setLogVerbosityLevel(\n        newVerbosityLevel: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetLogVerbosityLevel(\n            newVerbosityLevel: newVerbosityLevel\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets the verbosity level of the internal logging of TDLib. Can be called synchronously\n    /// - Parameter newVerbosityLevel: New value of the verbosity level for logging. Value 0 corresponds to fatal errors, value 1 corresponds to errors, value 2 corresponds to warnings and debug warnings, value 3 corresponds to informational, value 4 corresponds to debug, value 5 corresponds to verbose debug, value greater than 5 and up to 1023 can be used to enable even more logging\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setLogVerbosityLevel(newVerbosityLevel: Int?) async throws -> Ok {\n        let query = SetLogVerbosityLevel(\n            newVerbosityLevel: newVerbosityLevel\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns current verbosity level of the internal logging of TDLib. Can be called synchronously\n    /// - Returns: Current verbosity level of the internal logging of TDLib\n    public final func getLogVerbosityLevel(completion: @escaping (Result<LogVerbosityLevel, Swift.Error>) -> Void) throws {\n        let query = GetLogVerbosityLevel()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns current verbosity level of the internal logging of TDLib. Can be called synchronously\n    /// - Returns: Current verbosity level of the internal logging of TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getLogVerbosityLevel() async throws -> LogVerbosityLevel {\n        let query = GetLogVerbosityLevel()\n        return try await self.run(query: query)\n    }\n\n    /// Returns the list of available TDLib internal log tags, for example, [\"actor\", \"binlog\", \"connections\", \"notifications\", \"proxy\"]. Can be called synchronously\n    /// - Returns: The list of available TDLib internal log tags, for example, [\"actor\", \"binlog\", \"connections\", \"notifications\", \"proxy\"]\n    public final func getLogTags(completion: @escaping (Result<LogTags, Swift.Error>) -> Void) throws {\n        let query = GetLogTags()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the list of available TDLib internal log tags, for example, [\"actor\", \"binlog\", \"connections\", \"notifications\", \"proxy\"]. Can be called synchronously\n    /// - Returns: The list of available TDLib internal log tags, for example, [\"actor\", \"binlog\", \"connections\", \"notifications\", \"proxy\"]\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getLogTags() async throws -> LogTags {\n        let query = GetLogTags()\n        return try await self.run(query: query)\n    }\n\n    /// Sets the verbosity level for a specified TDLib internal log tag. Can be called synchronously\n    /// - Parameter newVerbosityLevel: New verbosity level; 1-1024\n    /// - Parameter tag: Logging tag to change verbosity level\n    public final func setLogTagVerbosityLevel(\n        newVerbosityLevel: Int?,\n        tag: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetLogTagVerbosityLevel(\n            newVerbosityLevel: newVerbosityLevel,\n            tag: tag\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets the verbosity level for a specified TDLib internal log tag. Can be called synchronously\n    /// - Parameter newVerbosityLevel: New verbosity level; 1-1024\n    /// - Parameter tag: Logging tag to change verbosity level\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func setLogTagVerbosityLevel(\n        newVerbosityLevel: Int?,\n        tag: String?\n    ) async throws -> Ok {\n        let query = SetLogTagVerbosityLevel(\n            newVerbosityLevel: newVerbosityLevel,\n            tag: tag\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns current verbosity level for a specified TDLib internal log tag. Can be called synchronously\n    /// - Parameter tag: Logging tag to change verbosity level\n    /// - Returns: Current verbosity level for a specified TDLib internal log tag\n    public final func getLogTagVerbosityLevel(\n        tag: String?,\n        completion: @escaping (Result<LogVerbosityLevel, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLogTagVerbosityLevel(\n            tag: tag\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns current verbosity level for a specified TDLib internal log tag. Can be called synchronously\n    /// - Parameter tag: Logging tag to change verbosity level\n    /// - Returns: Current verbosity level for a specified TDLib internal log tag\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getLogTagVerbosityLevel(tag: String?) async throws -> LogVerbosityLevel {\n        let query = GetLogTagVerbosityLevel(\n            tag: tag\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Adds a message to TDLib internal log. Can be called synchronously\n    /// - Parameter text: Text of a message to log\n    /// - Parameter verbosityLevel: The minimum verbosity level needed for the message to be logged; 0-1023\n    public final func addLogMessage(\n        text: String?,\n        verbosityLevel: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddLogMessage(\n            text: text,\n            verbosityLevel: verbosityLevel\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Adds a message to TDLib internal log. Can be called synchronously\n    /// - Parameter text: Text of a message to log\n    /// - Parameter verbosityLevel: The minimum verbosity level needed for the message to be logged; 0-1023\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func addLogMessage(\n        text: String?,\n        verbosityLevel: Int?\n    ) async throws -> Ok {\n        let query = AddLogMessage(\n            text: text,\n            verbosityLevel: verbosityLevel\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns support information for the given user; for Telegram support only\n    /// - Parameter userId: User identifier\n    /// - Returns: Support information for the given user\n    public final func getUserSupportInfo(\n        userId: Int64?,\n        completion: @escaping (Result<UserSupportInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUserSupportInfo(\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns support information for the given user; for Telegram support only\n    /// - Parameter userId: User identifier\n    /// - Returns: Support information for the given user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getUserSupportInfo(userId: Int64?) async throws -> UserSupportInfo {\n        let query = GetUserSupportInfo(\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sets support information for the given user; for Telegram support only\n    /// - Parameter message: New information message\n    /// - Parameter userId: User identifier\n    public final func setUserSupportInfo(\n        message: FormattedText?,\n        userId: Int64?,\n        completion: @escaping (Result<UserSupportInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = SetUserSupportInfo(\n            message: message,\n            userId: userId\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sets support information for the given user; for Telegram support only\n    /// - Parameter message: New information message\n    /// - Parameter userId: User identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func setUserSupportInfo(\n        message: FormattedText?,\n        userId: Int64?\n    ) async throws -> UserSupportInfo {\n        let query = SetUserSupportInfo(\n            message: message,\n            userId: userId\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns localized name of the Telegram support user; for Telegram support only\n    /// - Returns: Localized name of the Telegram support user\n    public final func getSupportName(completion: @escaping (Result<Text, Swift.Error>) -> Void) throws {\n        let query = GetSupportName()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns localized name of the Telegram support user; for Telegram support only\n    /// - Returns: Localized name of the Telegram support user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func getSupportName() async throws -> Text {\n        let query = GetSupportName()\n        return try await self.run(query: query)\n    }\n\n    /// Does nothing; for testing only. This is an offline method. Can be called before authorization\n    public final func testCallEmpty(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = TestCallEmpty()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Does nothing; for testing only. This is an offline method. Can be called before authorization\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func testCallEmpty() async throws -> Ok {\n        let query = TestCallEmpty()\n        return try await self.run(query: query)\n    }\n\n    /// Returns the received string; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: String to return\n    /// - Returns: The received string\n    public final func testCallString(\n        x: String?,\n        completion: @escaping (Result<TestString, Swift.Error>) -> Void\n    ) throws {\n        let query = TestCallString(\n            x: x\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the received string; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: String to return\n    /// - Returns: The received string\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func testCallString(x: String?) async throws -> TestString {\n        let query = TestCallString(\n            x: x\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the received bytes; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Bytes to return\n    /// - Returns: The received bytes\n    public final func testCallBytes(\n        x: Data?,\n        completion: @escaping (Result<TestBytes, Swift.Error>) -> Void\n    ) throws {\n        let query = TestCallBytes(\n            x: x\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the received bytes; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Bytes to return\n    /// - Returns: The received bytes\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func testCallBytes(x: Data?) async throws -> TestBytes {\n        let query = TestCallBytes(\n            x: x\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the received vector of numbers; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Vector of numbers to return\n    /// - Returns: The received vector of numbers\n    public final func testCallVectorInt(\n        x: [Int]?,\n        completion: @escaping (Result<TestVectorInt, Swift.Error>) -> Void\n    ) throws {\n        let query = TestCallVectorInt(\n            x: x\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the received vector of numbers; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Vector of numbers to return\n    /// - Returns: The received vector of numbers\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func testCallVectorInt(x: [Int]?) async throws -> TestVectorInt {\n        let query = TestCallVectorInt(\n            x: x\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the received vector of objects containing a number; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Vector of objects to return\n    /// - Returns: The received vector of objects containing a number\n    public final func testCallVectorIntObject(\n        x: [TestInt]?,\n        completion: @escaping (Result<TestVectorIntObject, Swift.Error>) -> Void\n    ) throws {\n        let query = TestCallVectorIntObject(\n            x: x\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the received vector of objects containing a number; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Vector of objects to return\n    /// - Returns: The received vector of objects containing a number\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func testCallVectorIntObject(x: [TestInt]?) async throws -> TestVectorIntObject {\n        let query = TestCallVectorIntObject(\n            x: x\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the received vector of strings; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Vector of strings to return\n    /// - Returns: The received vector of strings\n    public final func testCallVectorString(\n        x: [String]?,\n        completion: @escaping (Result<TestVectorString, Swift.Error>) -> Void\n    ) throws {\n        let query = TestCallVectorString(\n            x: x\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the received vector of strings; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Vector of strings to return\n    /// - Returns: The received vector of strings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func testCallVectorString(x: [String]?) async throws -> TestVectorString {\n        let query = TestCallVectorString(\n            x: x\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the received vector of objects containing a string; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Vector of objects to return\n    /// - Returns: The received vector of objects containing a string\n    public final func testCallVectorStringObject(\n        x: [TestString]?,\n        completion: @escaping (Result<TestVectorStringObject, Swift.Error>) -> Void\n    ) throws {\n        let query = TestCallVectorStringObject(\n            x: x\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the received vector of objects containing a string; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Vector of objects to return\n    /// - Returns: The received vector of objects containing a string\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func testCallVectorStringObject(x: [TestString]?) async throws -> TestVectorStringObject {\n        let query = TestCallVectorStringObject(\n            x: x\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Returns the squared received number; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Number to square\n    /// - Returns: The squared received number\n    public final func testSquareInt(\n        x: Int?,\n        completion: @escaping (Result<TestInt, Swift.Error>) -> Void\n    ) throws {\n        let query = TestSquareInt(\n            x: x\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the squared received number; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Number to square\n    /// - Returns: The squared received number\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func testSquareInt(x: Int?) async throws -> TestInt {\n        let query = TestSquareInt(\n            x: x\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Sends a simple network request to the Telegram servers; for testing only. Can be called before authorization\n    public final func testNetwork(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = TestNetwork()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends a simple network request to the Telegram servers; for testing only. Can be called before authorization\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func testNetwork() async throws -> Ok {\n        let query = TestNetwork()\n        return try await self.run(query: query)\n    }\n\n    /// Sends a simple network request to the Telegram servers via proxy; for testing only. Can be called before authorization\n    /// - Parameter dcId: Identifier of a datacenter with which to test connection\n    /// - Parameter proxy: The proxy to test\n    /// - Parameter timeout: The maximum overall timeout for the request\n    public final func testProxy(\n        dcId: Int?,\n        proxy: Proxy?,\n        timeout: Double?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = TestProxy(\n            dcId: dcId,\n            proxy: proxy,\n            timeout: timeout\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Sends a simple network request to the Telegram servers via proxy; for testing only. Can be called before authorization\n    /// - Parameter dcId: Identifier of a datacenter with which to test connection\n    /// - Parameter proxy: The proxy to test\n    /// - Parameter timeout: The maximum overall timeout for the request\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func testProxy(\n        dcId: Int?,\n        proxy: Proxy?,\n        timeout: Double?\n    ) async throws -> Ok {\n        let query = TestProxy(\n            dcId: dcId,\n            proxy: proxy,\n            timeout: timeout\n        )\n        return try await self.run(query: query)\n    }\n\n    /// Forces an updates.getDifference call to the Telegram servers; for testing only\n    public final func testGetDifference(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = TestGetDifference()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Forces an updates.getDifference call to the Telegram servers; for testing only\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public final func testGetDifference() async throws -> Ok {\n        let query = TestGetDifference()\n        return try await self.run(query: query)\n    }\n\n    /// Does nothing and ensures that the Update object is used; for testing only. This is an offline method. Can be called before authorization\n    public final func testUseUpdate(completion: @escaping (Result<Update, Swift.Error>) -> Void) throws {\n        let query = TestUseUpdate()\n        self.run(query: query, completion: completion)\n    }\n\n    /// Does nothing and ensures that the Update object is used; for testing only. This is an offline method. Can be called before authorization\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func testUseUpdate() async throws -> Update {\n        let query = TestUseUpdate()\n        return try await self.run(query: query)\n    }\n\n    /// Returns the specified error and ensures that the Error object is used; for testing only. Can be called synchronously\n    /// - Parameter error: The error to be returned\n    /// - Returns: The specified error and ensures that the Error object is used\n    public final func testReturnError(\n        error: Error?,\n        completion: @escaping (Result<Error, Swift.Error>) -> Void\n    ) throws {\n        let query = TestReturnError(\n            error: error\n        )\n        self.run(query: query, completion: completion)\n    }\n\n    /// Returns the specified error and ensures that the Error object is used; for testing only. Can be called synchronously\n    /// - Parameter error: The error to be returned\n    /// - Returns: The specified error and ensures that the Error object is used\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public final func testReturnError(error: Error?) async throws -> Error {\n        let query = TestReturnError(\n            error: error\n        )\n        return try await self.run(query: query)\n    }\n\n\n    private final func run<Q, R>(\n        query: Q,\n        completion: @escaping (Result<R, Swift.Error>) -> Void)\n        where Q: Codable, R: Codable {\n\n        let dto = DTO(query, encoder: self.encoder)\n        do {\n            try self.send(query: dto) { [weak self] result in\n                guard let strongSelf = self else { return }\n                if let error = try? strongSelf.decoder.decode(DTO<Error>.self, from: result) {\n                    completion(.failure(error.payload))\n                } else {\n                    let response = strongSelf.decoder.tryDecode(DTO<R>.self, from: result)\n                    completion(response.map { $0.payload })\n                }\n            }\n        } catch let err as Error {\n            completion( .failure(err))\n        } catch let any {\n            let err = Error(code: 500, message: any.localizedDescription)\n            completion( .failure(err))\n        }\n    }\n\n\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    private final func run<Q, R>(query: Q) async throws -> R where Q: Codable, R: Codable {\n        let dto = DTO(query, encoder: self.encoder)\n        return try await withCheckedThrowingContinuation { continuation in\n            do {\n                try self.send(query: dto) { result in\n                    if let error = try? self.decoder.decode(DTO<Error>.self, from: result) {\n                        continuation.resume(with: .failure(error.payload))\n                    } else {\n                        let response = self.decoder.tryDecode(DTO<R>.self, from: result)\n                        continuation.resume(with: response.map { $0.payload })\n                    }\n                }\n            } catch let err as Error {\n                continuation.resume(with: .failure(err))\n            } catch let any {\n                let err = Error(code: 500, message: any.localizedDescription)\n                continuation.resume(with: .failure(err))\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/API/TdApi.swift",
    "content": "//\n//  TdApi.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\npublic final class TdApi {\n\n    public let client: TdClient\n    public let encoder = JSONEncoder()\n    public let decoder = JSONDecoder()\n\n    public init(client: TdClient) {\n        self.client = client\n        self.encoder.keyEncodingStrategy = .convertToSnakeCase\n        self.decoder.keyDecodingStrategy = .convertFromSnakeCase\n    }\n\n\n    /// Returns the current authorization state. This is an offline method. For informational purposes only. Use updateAuthorizationState instead to maintain the current authorization state. Can be called before initialization\n    /// - Returns: The current authorization state\n    public func getAuthorizationState(completion: @escaping (Result<AuthorizationState, Swift.Error>) -> Void) throws {\n        let query = GetAuthorizationState()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the current authorization state. This is an offline method. For informational purposes only. Use updateAuthorizationState instead to maintain the current authorization state. Can be called before initialization\n    /// - Returns: The current authorization state\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getAuthorizationState() async throws -> AuthorizationState {\n        let query = GetAuthorizationState()\n        return try await self.execute(query: query)\n    }\n\n    /// Sets the parameters for TDLib initialization. Works only when the current authorization state is authorizationStateWaitTdlibParameters\n    /// - Parameter apiHash: Application identifier hash for Telegram API access, which can be obtained at https://my.telegram.org\n    /// - Parameter apiId: Application identifier for Telegram API access, which can be obtained at https://my.telegram.org\n    /// - Parameter applicationVersion: Application version; must be non-empty\n    /// - Parameter databaseDirectory: The path to the directory for the persistent database; if empty, the current working directory will be used\n    /// - Parameter databaseEncryptionKey: Encryption key for the database. If the encryption key is invalid, then an error with code 401 will be returned\n    /// - Parameter deviceModel: Model of the device the application is being run on; must be non-empty\n    /// - Parameter filesDirectory: The path to the directory for storing files; if empty, database_directory will be used\n    /// - Parameter systemLanguageCode: IETF language tag of the user's operating system language; must be non-empty\n    /// - Parameter systemVersion: Version of the operating system the application is being run on. If empty, the version is automatically detected by TDLib\n    /// - Parameter useChatInfoDatabase: Pass true to keep cache of users, basic groups, supergroups, channels and secret chats between restarts. Implies use_file_database\n    /// - Parameter useFileDatabase: Pass true to keep information about downloaded and uploaded files between application restarts\n    /// - Parameter useMessageDatabase: Pass true to keep cache of chats and messages between restarts. Implies use_chat_info_database\n    /// - Parameter useSecretChats: Pass true to enable support for secret chats\n    /// - Parameter useTestDc: Pass true to use Telegram test environment instead of the production environment\n    public func setTdlibParameters(\n        apiHash: String?,\n        apiId: Int?,\n        applicationVersion: String?,\n        databaseDirectory: String?,\n        databaseEncryptionKey: Data?,\n        deviceModel: String?,\n        filesDirectory: String?,\n        systemLanguageCode: String?,\n        systemVersion: String?,\n        useChatInfoDatabase: Bool?,\n        useFileDatabase: Bool?,\n        useMessageDatabase: Bool?,\n        useSecretChats: Bool?,\n        useTestDc: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetTdlibParameters(\n            apiHash: apiHash,\n            apiId: apiId,\n            applicationVersion: applicationVersion,\n            databaseDirectory: databaseDirectory,\n            databaseEncryptionKey: databaseEncryptionKey,\n            deviceModel: deviceModel,\n            filesDirectory: filesDirectory,\n            systemLanguageCode: systemLanguageCode,\n            systemVersion: systemVersion,\n            useChatInfoDatabase: useChatInfoDatabase,\n            useFileDatabase: useFileDatabase,\n            useMessageDatabase: useMessageDatabase,\n            useSecretChats: useSecretChats,\n            useTestDc: useTestDc\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets the parameters for TDLib initialization. Works only when the current authorization state is authorizationStateWaitTdlibParameters\n    /// - Parameter apiHash: Application identifier hash for Telegram API access, which can be obtained at https://my.telegram.org\n    /// - Parameter apiId: Application identifier for Telegram API access, which can be obtained at https://my.telegram.org\n    /// - Parameter applicationVersion: Application version; must be non-empty\n    /// - Parameter databaseDirectory: The path to the directory for the persistent database; if empty, the current working directory will be used\n    /// - Parameter databaseEncryptionKey: Encryption key for the database. If the encryption key is invalid, then an error with code 401 will be returned\n    /// - Parameter deviceModel: Model of the device the application is being run on; must be non-empty\n    /// - Parameter filesDirectory: The path to the directory for storing files; if empty, database_directory will be used\n    /// - Parameter systemLanguageCode: IETF language tag of the user's operating system language; must be non-empty\n    /// - Parameter systemVersion: Version of the operating system the application is being run on. If empty, the version is automatically detected by TDLib\n    /// - Parameter useChatInfoDatabase: Pass true to keep cache of users, basic groups, supergroups, channels and secret chats between restarts. Implies use_file_database\n    /// - Parameter useFileDatabase: Pass true to keep information about downloaded and uploaded files between application restarts\n    /// - Parameter useMessageDatabase: Pass true to keep cache of chats and messages between restarts. Implies use_chat_info_database\n    /// - Parameter useSecretChats: Pass true to enable support for secret chats\n    /// - Parameter useTestDc: Pass true to use Telegram test environment instead of the production environment\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setTdlibParameters(\n        apiHash: String?,\n        apiId: Int?,\n        applicationVersion: String?,\n        databaseDirectory: String?,\n        databaseEncryptionKey: Data?,\n        deviceModel: String?,\n        filesDirectory: String?,\n        systemLanguageCode: String?,\n        systemVersion: String?,\n        useChatInfoDatabase: Bool?,\n        useFileDatabase: Bool?,\n        useMessageDatabase: Bool?,\n        useSecretChats: Bool?,\n        useTestDc: Bool?\n    ) async throws -> Ok {\n        let query = SetTdlibParameters(\n            apiHash: apiHash,\n            apiId: apiId,\n            applicationVersion: applicationVersion,\n            databaseDirectory: databaseDirectory,\n            databaseEncryptionKey: databaseEncryptionKey,\n            deviceModel: deviceModel,\n            filesDirectory: filesDirectory,\n            systemLanguageCode: systemLanguageCode,\n            systemVersion: systemVersion,\n            useChatInfoDatabase: useChatInfoDatabase,\n            useFileDatabase: useFileDatabase,\n            useMessageDatabase: useMessageDatabase,\n            useSecretChats: useSecretChats,\n            useTestDc: useTestDc\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets the phone number of the user and sends an authentication code to the user. Works only when the current authorization state is authorizationStateWaitPhoneNumber, or if there is no pending authentication query and the current authorization state is authorizationStateWaitPremiumPurchase, authorizationStateWaitEmailAddress, authorizationStateWaitEmailCode, authorizationStateWaitCode, authorizationStateWaitRegistration, or authorizationStateWaitPassword\n    /// - Parameter phoneNumber: The phone number of the user, in international format\n    /// - Parameter settings: Settings for the authentication of the user's phone number; pass null to use default settings\n    public func setAuthenticationPhoneNumber(\n        phoneNumber: String?,\n        settings: PhoneNumberAuthenticationSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetAuthenticationPhoneNumber(\n            phoneNumber: phoneNumber,\n            settings: settings\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets the phone number of the user and sends an authentication code to the user. Works only when the current authorization state is authorizationStateWaitPhoneNumber, or if there is no pending authentication query and the current authorization state is authorizationStateWaitPremiumPurchase, authorizationStateWaitEmailAddress, authorizationStateWaitEmailCode, authorizationStateWaitCode, authorizationStateWaitRegistration, or authorizationStateWaitPassword\n    /// - Parameter phoneNumber: The phone number of the user, in international format\n    /// - Parameter settings: Settings for the authentication of the user's phone number; pass null to use default settings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setAuthenticationPhoneNumber(\n        phoneNumber: String?,\n        settings: PhoneNumberAuthenticationSettings?\n    ) async throws -> Ok {\n        let query = SetAuthenticationPhoneNumber(\n            phoneNumber: phoneNumber,\n            settings: settings\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks whether an in-store purchase of Telegram Premium is possible before authorization. Works only when the current authorization state is authorizationStateWaitPremiumPurchase\n    /// - Parameter amount: Paid amount, in the smallest units of the currency\n    /// - Parameter currency: ISO 4217 currency code of the payment currency\n    /// - Parameter premiumDayCount: The number of days for which the Telegram Premium subscription will be granted\n    public func checkAuthenticationPremiumPurchase(\n        amount: Int64?,\n        currency: String?,\n        premiumDayCount: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckAuthenticationPremiumPurchase(\n            amount: amount,\n            currency: currency,\n            premiumDayCount: premiumDayCount\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks whether an in-store purchase of Telegram Premium is possible before authorization. Works only when the current authorization state is authorizationStateWaitPremiumPurchase\n    /// - Parameter amount: Paid amount, in the smallest units of the currency\n    /// - Parameter currency: ISO 4217 currency code of the payment currency\n    /// - Parameter premiumDayCount: The number of days for which the Telegram Premium subscription will be granted\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func checkAuthenticationPremiumPurchase(\n        amount: Int64?,\n        currency: String?,\n        premiumDayCount: Int?\n    ) async throws -> Ok {\n        let query = CheckAuthenticationPremiumPurchase(\n            amount: amount,\n            currency: currency,\n            premiumDayCount: premiumDayCount\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs server about an in-store purchase of Telegram Premium before authorization. Works only when the current authorization state is authorizationStateWaitPremiumPurchase\n    /// - Parameter amount: Paid amount, in the smallest units of the currency\n    /// - Parameter currency: ISO 4217 currency code of the payment currency\n    /// - Parameter isRestore: Pass true if this is a restore of a Telegram Premium purchase; only for App Store\n    /// - Parameter premiumDayCount: The number of days for which the Telegram Premium subscription will be granted\n    /// - Parameter transaction: Information about the transaction\n    public func setAuthenticationPremiumPurchaseTransaction(\n        amount: Int64?,\n        currency: String?,\n        isRestore: Bool?,\n        premiumDayCount: Int?,\n        transaction: StoreTransaction?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetAuthenticationPremiumPurchaseTransaction(\n            amount: amount,\n            currency: currency,\n            isRestore: isRestore,\n            premiumDayCount: premiumDayCount,\n            transaction: transaction\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs server about an in-store purchase of Telegram Premium before authorization. Works only when the current authorization state is authorizationStateWaitPremiumPurchase\n    /// - Parameter amount: Paid amount, in the smallest units of the currency\n    /// - Parameter currency: ISO 4217 currency code of the payment currency\n    /// - Parameter isRestore: Pass true if this is a restore of a Telegram Premium purchase; only for App Store\n    /// - Parameter premiumDayCount: The number of days for which the Telegram Premium subscription will be granted\n    /// - Parameter transaction: Information about the transaction\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setAuthenticationPremiumPurchaseTransaction(\n        amount: Int64?,\n        currency: String?,\n        isRestore: Bool?,\n        premiumDayCount: Int?,\n        transaction: StoreTransaction?\n    ) async throws -> Ok {\n        let query = SetAuthenticationPremiumPurchaseTransaction(\n            amount: amount,\n            currency: currency,\n            isRestore: isRestore,\n            premiumDayCount: premiumDayCount,\n            transaction: transaction\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets the email address of the user and sends an authentication code to the email address. Works only when the current authorization state is authorizationStateWaitEmailAddress\n    /// - Parameter emailAddress: The email address of the user\n    public func setAuthenticationEmailAddress(\n        emailAddress: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetAuthenticationEmailAddress(\n            emailAddress: emailAddress\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets the email address of the user and sends an authentication code to the email address. Works only when the current authorization state is authorizationStateWaitEmailAddress\n    /// - Parameter emailAddress: The email address of the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setAuthenticationEmailAddress(emailAddress: String?) async throws -> Ok {\n        let query = SetAuthenticationEmailAddress(\n            emailAddress: emailAddress\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Resends an authentication code to the user. Works only when the current authorization state is authorizationStateWaitCode, the next_code_type of the result is not null and the server-specified timeout has passed, or when the current authorization state is authorizationStateWaitEmailCode\n    /// - Parameter reason: Reason of code resending; pass null if unknown\n    public func resendAuthenticationCode(\n        reason: ResendCodeReason?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ResendAuthenticationCode(\n            reason: reason\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Resends an authentication code to the user. Works only when the current authorization state is authorizationStateWaitCode, the next_code_type of the result is not null and the server-specified timeout has passed, or when the current authorization state is authorizationStateWaitEmailCode\n    /// - Parameter reason: Reason of code resending; pass null if unknown\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func resendAuthenticationCode(reason: ResendCodeReason?) async throws -> Ok {\n        let query = ResendAuthenticationCode(\n            reason: reason\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks the authentication of an email address. Works only when the current authorization state is authorizationStateWaitEmailCode\n    /// - Parameter code: Email address authentication to check\n    public func checkAuthenticationEmailCode(\n        code: EmailAddressAuthentication?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckAuthenticationEmailCode(\n            code: code\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks the authentication of an email address. Works only when the current authorization state is authorizationStateWaitEmailCode\n    /// - Parameter code: Email address authentication to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func checkAuthenticationEmailCode(code: EmailAddressAuthentication?) async throws -> Ok {\n        let query = CheckAuthenticationEmailCode(\n            code: code\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks the authentication code. Works only when the current authorization state is authorizationStateWaitCode\n    /// - Parameter code: Authentication code to check\n    public func checkAuthenticationCode(\n        code: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckAuthenticationCode(\n            code: code\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks the authentication code. Works only when the current authorization state is authorizationStateWaitCode\n    /// - Parameter code: Authentication code to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func checkAuthenticationCode(code: String?) async throws -> Ok {\n        let query = CheckAuthenticationCode(\n            code: code\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Requests QR code authentication by scanning a QR code on another logged in device. Works only when the current authorization state is authorizationStateWaitPhoneNumber, or if there is no pending authentication query and the current authorization state is authorizationStateWaitPremiumPurchase, authorizationStateWaitEmailAddress, authorizationStateWaitEmailCode, authorizationStateWaitCode, authorizationStateWaitRegistration, or authorizationStateWaitPassword\n    /// - Parameter otherUserIds: List of user identifiers of other users currently using the application\n    public func requestQrCodeAuthentication(\n        otherUserIds: [Int64]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RequestQrCodeAuthentication(\n            otherUserIds: otherUserIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Requests QR code authentication by scanning a QR code on another logged in device. Works only when the current authorization state is authorizationStateWaitPhoneNumber, or if there is no pending authentication query and the current authorization state is authorizationStateWaitPremiumPurchase, authorizationStateWaitEmailAddress, authorizationStateWaitEmailCode, authorizationStateWaitCode, authorizationStateWaitRegistration, or authorizationStateWaitPassword\n    /// - Parameter otherUserIds: List of user identifiers of other users currently using the application\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func requestQrCodeAuthentication(otherUserIds: [Int64]?) async throws -> Ok {\n        let query = RequestQrCodeAuthentication(\n            otherUserIds: otherUserIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns parameters for authentication using a passkey as JSON-serialized string\n    /// - Returns: Parameters for authentication using a passkey as JSON-serialized string\n    public func getAuthenticationPasskeyParameters(completion: @escaping (Result<Text, Swift.Error>) -> Void) throws {\n        let query = GetAuthenticationPasskeyParameters()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns parameters for authentication using a passkey as JSON-serialized string\n    /// - Returns: Parameters for authentication using a passkey as JSON-serialized string\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getAuthenticationPasskeyParameters() async throws -> Text {\n        let query = GetAuthenticationPasskeyParameters()\n        return try await self.execute(query: query)\n    }\n\n    /// Checks a passkey to log in to the corresponding account. Call getAuthenticationPasskeyParameters to get parameters for the passkey. Works only when the current authorization state is authorizationStateWaitPhoneNumber or authorizationStateWaitOtherDeviceConfirmation, or if there is no pending authentication query and the current authorization state is authorizationStateWaitPremiumPurchase, authorizationStateWaitEmailAddress, authorizationStateWaitEmailCode, authorizationStateWaitCode, authorizationStateWaitRegistration, or authorizationStateWaitPassword\n    /// - Parameter authenticatorData: Authenticator data of the application that created the credential\n    /// - Parameter clientData: JSON-encoded client data\n    /// - Parameter credentialId: Base64url-encoded identifier of the credential\n    /// - Parameter signature: Cryptographic signature of the credential\n    /// - Parameter userHandle: User handle of the passkey\n    public func checkAuthenticationPasskey(\n        authenticatorData: Data?,\n        clientData: String?,\n        credentialId: String?,\n        signature: Data?,\n        userHandle: Data?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckAuthenticationPasskey(\n            authenticatorData: authenticatorData,\n            clientData: clientData,\n            credentialId: credentialId,\n            signature: signature,\n            userHandle: userHandle\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks a passkey to log in to the corresponding account. Call getAuthenticationPasskeyParameters to get parameters for the passkey. Works only when the current authorization state is authorizationStateWaitPhoneNumber or authorizationStateWaitOtherDeviceConfirmation, or if there is no pending authentication query and the current authorization state is authorizationStateWaitPremiumPurchase, authorizationStateWaitEmailAddress, authorizationStateWaitEmailCode, authorizationStateWaitCode, authorizationStateWaitRegistration, or authorizationStateWaitPassword\n    /// - Parameter authenticatorData: Authenticator data of the application that created the credential\n    /// - Parameter clientData: JSON-encoded client data\n    /// - Parameter credentialId: Base64url-encoded identifier of the credential\n    /// - Parameter signature: Cryptographic signature of the credential\n    /// - Parameter userHandle: User handle of the passkey\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func checkAuthenticationPasskey(\n        authenticatorData: Data?,\n        clientData: String?,\n        credentialId: String?,\n        signature: Data?,\n        userHandle: Data?\n    ) async throws -> Ok {\n        let query = CheckAuthenticationPasskey(\n            authenticatorData: authenticatorData,\n            clientData: clientData,\n            credentialId: credentialId,\n            signature: signature,\n            userHandle: userHandle\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Finishes user registration. Works only when the current authorization state is authorizationStateWaitRegistration\n    /// - Parameter disableNotification: Pass true to disable notification about the current user joining Telegram for other users that added them to contact list\n    /// - Parameter firstName: The first name of the user; 1-64 characters\n    /// - Parameter lastName: The last name of the user; 0-64 characters\n    public func registerUser(\n        disableNotification: Bool?,\n        firstName: String?,\n        lastName: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RegisterUser(\n            disableNotification: disableNotification,\n            firstName: firstName,\n            lastName: lastName\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Finishes user registration. Works only when the current authorization state is authorizationStateWaitRegistration\n    /// - Parameter disableNotification: Pass true to disable notification about the current user joining Telegram for other users that added them to contact list\n    /// - Parameter firstName: The first name of the user; 1-64 characters\n    /// - Parameter lastName: The last name of the user; 0-64 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func registerUser(\n        disableNotification: Bool?,\n        firstName: String?,\n        lastName: String?\n    ) async throws -> Ok {\n        let query = RegisterUser(\n            disableNotification: disableNotification,\n            firstName: firstName,\n            lastName: lastName\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Resets the login email address. May return an error with a message \"TASK_ALREADY_EXISTS\" if reset is still pending. Works only when the current authorization state is authorizationStateWaitEmailCode and authorization_state.can_reset_email_address == true\n    /// - Returns: May return an error with a message \"TASK_ALREADY_EXISTS\" if reset is still pending\n    public func resetAuthenticationEmailAddress(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ResetAuthenticationEmailAddress()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Resets the login email address. May return an error with a message \"TASK_ALREADY_EXISTS\" if reset is still pending. Works only when the current authorization state is authorizationStateWaitEmailCode and authorization_state.can_reset_email_address == true\n    /// - Returns: May return an error with a message \"TASK_ALREADY_EXISTS\" if reset is still pending\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func resetAuthenticationEmailAddress() async throws -> Ok {\n        let query = ResetAuthenticationEmailAddress()\n        return try await self.execute(query: query)\n    }\n\n    /// Checks the 2-step verification password for correctness. Works only when the current authorization state is authorizationStateWaitPassword\n    /// - Parameter password: The 2-step verification password to check\n    public func checkAuthenticationPassword(\n        password: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckAuthenticationPassword(\n            password: password\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks the 2-step verification password for correctness. Works only when the current authorization state is authorizationStateWaitPassword\n    /// - Parameter password: The 2-step verification password to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func checkAuthenticationPassword(password: String?) async throws -> Ok {\n        let query = CheckAuthenticationPassword(\n            password: password\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Requests to send a 2-step verification password recovery code to an email address that was previously set up. Works only when the current authorization state is authorizationStateWaitPassword\n    public func requestAuthenticationPasswordRecovery(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = RequestAuthenticationPasswordRecovery()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Requests to send a 2-step verification password recovery code to an email address that was previously set up. Works only when the current authorization state is authorizationStateWaitPassword\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func requestAuthenticationPasswordRecovery() async throws -> Ok {\n        let query = RequestAuthenticationPasswordRecovery()\n        return try await self.execute(query: query)\n    }\n\n    /// Checks whether a 2-step verification password recovery code sent to an email address is valid. Works only when the current authorization state is authorizationStateWaitPassword\n    /// - Parameter recoveryCode: Recovery code to check\n    public func checkAuthenticationPasswordRecoveryCode(\n        recoveryCode: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckAuthenticationPasswordRecoveryCode(\n            recoveryCode: recoveryCode\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks whether a 2-step verification password recovery code sent to an email address is valid. Works only when the current authorization state is authorizationStateWaitPassword\n    /// - Parameter recoveryCode: Recovery code to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func checkAuthenticationPasswordRecoveryCode(recoveryCode: String?) async throws -> Ok {\n        let query = CheckAuthenticationPasswordRecoveryCode(\n            recoveryCode: recoveryCode\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Recovers the 2-step verification password with a password recovery code sent to an email address that was previously set up. Works only when the current authorization state is authorizationStateWaitPassword\n    /// - Parameter newHint: New password hint; may be empty\n    /// - Parameter newPassword: New 2-step verification password of the user; may be empty to remove the password\n    /// - Parameter recoveryCode: Recovery code to check\n    public func recoverAuthenticationPassword(\n        newHint: String?,\n        newPassword: String?,\n        recoveryCode: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RecoverAuthenticationPassword(\n            newHint: newHint,\n            newPassword: newPassword,\n            recoveryCode: recoveryCode\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Recovers the 2-step verification password with a password recovery code sent to an email address that was previously set up. Works only when the current authorization state is authorizationStateWaitPassword\n    /// - Parameter newHint: New password hint; may be empty\n    /// - Parameter newPassword: New 2-step verification password of the user; may be empty to remove the password\n    /// - Parameter recoveryCode: Recovery code to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func recoverAuthenticationPassword(\n        newHint: String?,\n        newPassword: String?,\n        recoveryCode: String?\n    ) async throws -> Ok {\n        let query = RecoverAuthenticationPassword(\n            newHint: newHint,\n            newPassword: newPassword,\n            recoveryCode: recoveryCode\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends Firebase Authentication SMS to the phone number of the user. Works only when the current authorization state is authorizationStateWaitCode and the server returned code of the type authenticationCodeTypeFirebaseAndroid or authenticationCodeTypeFirebaseIos\n    /// - Parameter token: Play Integrity API or SafetyNet Attestation API token for the Android application, or secret from push notification for the iOS application\n    /// - Returns: Works only when the current authorization state is authorizationStateWaitCode and the server returned code of the type authenticationCodeTypeFirebaseAndroid or authenticationCodeTypeFirebaseIos\n    public func sendAuthenticationFirebaseSms(\n        token: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendAuthenticationFirebaseSms(\n            token: token\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends Firebase Authentication SMS to the phone number of the user. Works only when the current authorization state is authorizationStateWaitCode and the server returned code of the type authenticationCodeTypeFirebaseAndroid or authenticationCodeTypeFirebaseIos\n    /// - Parameter token: Play Integrity API or SafetyNet Attestation API token for the Android application, or secret from push notification for the iOS application\n    /// - Returns: Works only when the current authorization state is authorizationStateWaitCode and the server returned code of the type authenticationCodeTypeFirebaseAndroid or authenticationCodeTypeFirebaseIos\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func sendAuthenticationFirebaseSms(token: String?) async throws -> Ok {\n        let query = SendAuthenticationFirebaseSms(\n            token: token\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Reports that authentication code wasn't delivered via SMS; for official mobile applications only. Works only when the current authorization state is authorizationStateWaitCode\n    /// - Parameter mobileNetworkCode: Current mobile network code\n    public func reportAuthenticationCodeMissing(\n        mobileNetworkCode: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportAuthenticationCodeMissing(\n            mobileNetworkCode: mobileNetworkCode\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Reports that authentication code wasn't delivered via SMS; for official mobile applications only. Works only when the current authorization state is authorizationStateWaitCode\n    /// - Parameter mobileNetworkCode: Current mobile network code\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func reportAuthenticationCodeMissing(mobileNetworkCode: String?) async throws -> Ok {\n        let query = ReportAuthenticationCodeMissing(\n            mobileNetworkCode: mobileNetworkCode\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks the authentication token of a bot; to log in as a bot. Works only when the current authorization state is authorizationStateWaitPhoneNumber. Can be used instead of setAuthenticationPhoneNumber and checkAuthenticationCode to log in\n    /// - Parameter token: The bot token\n    public func checkAuthenticationBotToken(\n        token: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckAuthenticationBotToken(\n            token: token\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks the authentication token of a bot; to log in as a bot. Works only when the current authorization state is authorizationStateWaitPhoneNumber. Can be used instead of setAuthenticationPhoneNumber and checkAuthenticationCode to log in\n    /// - Parameter token: The bot token\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func checkAuthenticationBotToken(token: String?) async throws -> Ok {\n        let query = CheckAuthenticationBotToken(\n            token: token\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Closes the TDLib instance after a proper logout. Requires an available network connection. All local data will be destroyed. After the logout completes, updateAuthorizationState with authorizationStateClosed will be sent\n    public func logOut(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = LogOut()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Closes the TDLib instance after a proper logout. Requires an available network connection. All local data will be destroyed. After the logout completes, updateAuthorizationState with authorizationStateClosed will be sent\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func logOut() async throws -> Ok {\n        let query = LogOut()\n        return try await self.execute(query: query)\n    }\n\n    /// Closes the TDLib instance. All databases will be flushed to disk and properly closed. After the close completes, updateAuthorizationState with authorizationStateClosed will be sent. Can be called before initialization\n    public func close(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = Close()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Closes the TDLib instance. All databases will be flushed to disk and properly closed. After the close completes, updateAuthorizationState with authorizationStateClosed will be sent. Can be called before initialization\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func close() async throws -> Ok {\n        let query = Close()\n        return try await self.execute(query: query)\n    }\n\n    /// Closes the TDLib instance, destroying all local data without a proper logout. The current user session will remain in the list of all active sessions. All local data will be destroyed. After the destruction completes updateAuthorizationState with authorizationStateClosed will be sent. Can be called before authorization\n    public func destroy(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = Destroy()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Closes the TDLib instance, destroying all local data without a proper logout. The current user session will remain in the list of all active sessions. All local data will be destroyed. After the destruction completes updateAuthorizationState with authorizationStateClosed will be sent. Can be called before authorization\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func destroy() async throws -> Ok {\n        let query = Destroy()\n        return try await self.execute(query: query)\n    }\n\n    /// Confirms QR code authentication on another device. Returns created session on success\n    /// - Parameter link: A link from a QR code. The link must be scanned by the in-app camera\n    /// - Returns: Created session on success\n    public func confirmQrCodeAuthentication(\n        link: String?,\n        completion: @escaping (Result<Session, Swift.Error>) -> Void\n    ) throws {\n        let query = ConfirmQrCodeAuthentication(\n            link: link\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Confirms QR code authentication on another device. Returns created session on success\n    /// - Parameter link: A link from a QR code. The link must be scanned by the in-app camera\n    /// - Returns: Created session on success\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func confirmQrCodeAuthentication(link: String?) async throws -> Session {\n        let query = ConfirmQrCodeAuthentication(\n            link: link\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns all updates needed to restore current TDLib state, i.e. all actual updateAuthorizationState/updateUser/updateNewChat and others. This is especially useful if TDLib is run in a separate process. Can be called before initialization\n    /// - Returns: All updates needed to restore current TDLib state, i.e. all actual updateAuthorizationState/updateUser/updateNewChat and others\n    public func getCurrentState(completion: @escaping (Result<Updates, Swift.Error>) -> Void) throws {\n        let query = GetCurrentState()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns all updates needed to restore current TDLib state, i.e. all actual updateAuthorizationState/updateUser/updateNewChat and others. This is especially useful if TDLib is run in a separate process. Can be called before initialization\n    /// - Returns: All updates needed to restore current TDLib state, i.e. all actual updateAuthorizationState/updateUser/updateNewChat and others\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getCurrentState() async throws -> Updates {\n        let query = GetCurrentState()\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the database encryption key. Usually the encryption key is never changed and is stored in some OS keychain\n    /// - Parameter newEncryptionKey: New encryption key\n    public func setDatabaseEncryptionKey(\n        newEncryptionKey: Data?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetDatabaseEncryptionKey(\n            newEncryptionKey: newEncryptionKey\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the database encryption key. Usually the encryption key is never changed and is stored in some OS keychain\n    /// - Parameter newEncryptionKey: New encryption key\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setDatabaseEncryptionKey(newEncryptionKey: Data?) async throws -> Ok {\n        let query = SetDatabaseEncryptionKey(\n            newEncryptionKey: newEncryptionKey\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the current state of 2-step verification\n    /// - Returns: The current state of 2-step verification\n    public func getPasswordState(completion: @escaping (Result<PasswordState, Swift.Error>) -> Void) throws {\n        let query = GetPasswordState()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the current state of 2-step verification\n    /// - Returns: The current state of 2-step verification\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPasswordState() async throws -> PasswordState {\n        let query = GetPasswordState()\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the 2-step verification password for the current user. If a new recovery email address is specified, then the change will not be applied until the new recovery email address is confirmed\n    /// - Parameter newHint: New password hint; may be empty\n    /// - Parameter newPassword: New 2-step verification password of the user; may be empty to remove the password\n    /// - Parameter newRecoveryEmailAddress: New recovery email address; may be empty\n    /// - Parameter oldPassword: Previous 2-step verification password of the user\n    /// - Parameter setRecoveryEmailAddress: Pass true to change also the recovery email address\n    public func setPassword(\n        newHint: String?,\n        newPassword: String?,\n        newRecoveryEmailAddress: String?,\n        oldPassword: String?,\n        setRecoveryEmailAddress: Bool?,\n        completion: @escaping (Result<PasswordState, Swift.Error>) -> Void\n    ) throws {\n        let query = SetPassword(\n            newHint: newHint,\n            newPassword: newPassword,\n            newRecoveryEmailAddress: newRecoveryEmailAddress,\n            oldPassword: oldPassword,\n            setRecoveryEmailAddress: setRecoveryEmailAddress\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the 2-step verification password for the current user. If a new recovery email address is specified, then the change will not be applied until the new recovery email address is confirmed\n    /// - Parameter newHint: New password hint; may be empty\n    /// - Parameter newPassword: New 2-step verification password of the user; may be empty to remove the password\n    /// - Parameter newRecoveryEmailAddress: New recovery email address; may be empty\n    /// - Parameter oldPassword: Previous 2-step verification password of the user\n    /// - Parameter setRecoveryEmailAddress: Pass true to change also the recovery email address\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func setPassword(\n        newHint: String?,\n        newPassword: String?,\n        newRecoveryEmailAddress: String?,\n        oldPassword: String?,\n        setRecoveryEmailAddress: Bool?\n    ) async throws -> PasswordState {\n        let query = SetPassword(\n            newHint: newHint,\n            newPassword: newPassword,\n            newRecoveryEmailAddress: newRecoveryEmailAddress,\n            oldPassword: oldPassword,\n            setRecoveryEmailAddress: setRecoveryEmailAddress\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks whether the current user is required to set login email address\n    public func isLoginEmailAddressRequired(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = IsLoginEmailAddressRequired()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks whether the current user is required to set login email address\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func isLoginEmailAddressRequired() async throws -> Ok {\n        let query = IsLoginEmailAddressRequired()\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the login email address of the user. The email address can be changed only if the current user already has login email and passwordState.login_email_address_pattern is non-empty, or the user received suggestedActionSetLoginEmailAddress and isLoginEmailAddressRequired succeeds. The change will not be applied until the new login email address is confirmed with checkLoginEmailAddressCode. To use Apple ID/Google ID instead of an email address, call checkLoginEmailAddressCode directly\n    /// - Parameter newLoginEmailAddress: New login email address\n    public func setLoginEmailAddress(\n        newLoginEmailAddress: String?,\n        completion: @escaping (Result<EmailAddressAuthenticationCodeInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = SetLoginEmailAddress(\n            newLoginEmailAddress: newLoginEmailAddress\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the login email address of the user. The email address can be changed only if the current user already has login email and passwordState.login_email_address_pattern is non-empty, or the user received suggestedActionSetLoginEmailAddress and isLoginEmailAddressRequired succeeds. The change will not be applied until the new login email address is confirmed with checkLoginEmailAddressCode. To use Apple ID/Google ID instead of an email address, call checkLoginEmailAddressCode directly\n    /// - Parameter newLoginEmailAddress: New login email address\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func setLoginEmailAddress(newLoginEmailAddress: String?) async throws -> EmailAddressAuthenticationCodeInfo {\n        let query = SetLoginEmailAddress(\n            newLoginEmailAddress: newLoginEmailAddress\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Resends the login email address verification code\n    public func resendLoginEmailAddressCode(completion: @escaping (Result<EmailAddressAuthenticationCodeInfo, Swift.Error>) -> Void) throws {\n        let query = ResendLoginEmailAddressCode()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Resends the login email address verification code\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func resendLoginEmailAddressCode() async throws -> EmailAddressAuthenticationCodeInfo {\n        let query = ResendLoginEmailAddressCode()\n        return try await self.execute(query: query)\n    }\n\n    /// Checks the login email address authentication\n    /// - Parameter code: Email address authentication to check\n    public func checkLoginEmailAddressCode(\n        code: EmailAddressAuthentication?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckLoginEmailAddressCode(\n            code: code\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks the login email address authentication\n    /// - Parameter code: Email address authentication to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func checkLoginEmailAddressCode(code: EmailAddressAuthentication?) async throws -> Ok {\n        let query = CheckLoginEmailAddressCode(\n            code: code\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a 2-step verification recovery email address that was previously set up. This method can be used to verify a password provided by the user\n    /// - Parameter password: The 2-step verification password for the current user\n    /// - Returns: A 2-step verification recovery email address that was previously set up\n    public func getRecoveryEmailAddress(\n        password: String?,\n        completion: @escaping (Result<RecoveryEmailAddress, Swift.Error>) -> Void\n    ) throws {\n        let query = GetRecoveryEmailAddress(\n            password: password\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a 2-step verification recovery email address that was previously set up. This method can be used to verify a password provided by the user\n    /// - Parameter password: The 2-step verification password for the current user\n    /// - Returns: A 2-step verification recovery email address that was previously set up\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getRecoveryEmailAddress(password: String?) async throws -> RecoveryEmailAddress {\n        let query = GetRecoveryEmailAddress(\n            password: password\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the 2-step verification recovery email address of the user. If a new recovery email address is specified, then the change will not be applied until the new recovery email address is confirmed. If new_recovery_email_address is the same as the email address that is currently set up, this call succeeds immediately and aborts all other requests waiting for an email confirmation\n    /// - Parameter newRecoveryEmailAddress: New recovery email address\n    /// - Parameter password: The 2-step verification password of the current user\n    public func setRecoveryEmailAddress(\n        newRecoveryEmailAddress: String?,\n        password: String?,\n        completion: @escaping (Result<PasswordState, Swift.Error>) -> Void\n    ) throws {\n        let query = SetRecoveryEmailAddress(\n            newRecoveryEmailAddress: newRecoveryEmailAddress,\n            password: password\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the 2-step verification recovery email address of the user. If a new recovery email address is specified, then the change will not be applied until the new recovery email address is confirmed. If new_recovery_email_address is the same as the email address that is currently set up, this call succeeds immediately and aborts all other requests waiting for an email confirmation\n    /// - Parameter newRecoveryEmailAddress: New recovery email address\n    /// - Parameter password: The 2-step verification password of the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func setRecoveryEmailAddress(\n        newRecoveryEmailAddress: String?,\n        password: String?\n    ) async throws -> PasswordState {\n        let query = SetRecoveryEmailAddress(\n            newRecoveryEmailAddress: newRecoveryEmailAddress,\n            password: password\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks the 2-step verification recovery email address verification code\n    /// - Parameter code: Verification code to check\n    public func checkRecoveryEmailAddressCode(\n        code: String?,\n        completion: @escaping (Result<PasswordState, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckRecoveryEmailAddressCode(\n            code: code\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks the 2-step verification recovery email address verification code\n    /// - Parameter code: Verification code to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func checkRecoveryEmailAddressCode(code: String?) async throws -> PasswordState {\n        let query = CheckRecoveryEmailAddressCode(\n            code: code\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Resends the 2-step verification recovery email address verification code\n    public func resendRecoveryEmailAddressCode(completion: @escaping (Result<PasswordState, Swift.Error>) -> Void) throws {\n        let query = ResendRecoveryEmailAddressCode()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Resends the 2-step verification recovery email address verification code\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func resendRecoveryEmailAddressCode() async throws -> PasswordState {\n        let query = ResendRecoveryEmailAddressCode()\n        return try await self.execute(query: query)\n    }\n\n    /// Cancels verification of the 2-step verification recovery email address\n    public func cancelRecoveryEmailAddressVerification(completion: @escaping (Result<PasswordState, Swift.Error>) -> Void) throws {\n        let query = CancelRecoveryEmailAddressVerification()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Cancels verification of the 2-step verification recovery email address\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func cancelRecoveryEmailAddressVerification() async throws -> PasswordState {\n        let query = CancelRecoveryEmailAddressVerification()\n        return try await self.execute(query: query)\n    }\n\n    /// Requests to send a 2-step verification password recovery code to an email address that was previously set up\n    public func requestPasswordRecovery(completion: @escaping (Result<EmailAddressAuthenticationCodeInfo, Swift.Error>) -> Void) throws {\n        let query = RequestPasswordRecovery()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Requests to send a 2-step verification password recovery code to an email address that was previously set up\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func requestPasswordRecovery() async throws -> EmailAddressAuthenticationCodeInfo {\n        let query = RequestPasswordRecovery()\n        return try await self.execute(query: query)\n    }\n\n    /// Checks whether a 2-step verification password recovery code sent to an email address is valid\n    /// - Parameter recoveryCode: Recovery code to check\n    public func checkPasswordRecoveryCode(\n        recoveryCode: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckPasswordRecoveryCode(\n            recoveryCode: recoveryCode\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks whether a 2-step verification password recovery code sent to an email address is valid\n    /// - Parameter recoveryCode: Recovery code to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func checkPasswordRecoveryCode(recoveryCode: String?) async throws -> Ok {\n        let query = CheckPasswordRecoveryCode(\n            recoveryCode: recoveryCode\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Recovers the 2-step verification password using a recovery code sent to an email address that was previously set up\n    /// - Parameter newHint: New password hint; may be empty\n    /// - Parameter newPassword: New 2-step verification password of the user; may be empty to remove the password\n    /// - Parameter recoveryCode: Recovery code to check\n    public func recoverPassword(\n        newHint: String?,\n        newPassword: String?,\n        recoveryCode: String?,\n        completion: @escaping (Result<PasswordState, Swift.Error>) -> Void\n    ) throws {\n        let query = RecoverPassword(\n            newHint: newHint,\n            newPassword: newPassword,\n            recoveryCode: recoveryCode\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Recovers the 2-step verification password using a recovery code sent to an email address that was previously set up\n    /// - Parameter newHint: New password hint; may be empty\n    /// - Parameter newPassword: New 2-step verification password of the user; may be empty to remove the password\n    /// - Parameter recoveryCode: Recovery code to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func recoverPassword(\n        newHint: String?,\n        newPassword: String?,\n        recoveryCode: String?\n    ) async throws -> PasswordState {\n        let query = RecoverPassword(\n            newHint: newHint,\n            newPassword: newPassword,\n            recoveryCode: recoveryCode\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes 2-step verification password without previous password and access to recovery email address. The password can't be reset immediately and the request needs to be repeated after the specified time\n    public func resetPassword(completion: @escaping (Result<ResetPasswordResult, Swift.Error>) -> Void) throws {\n        let query = ResetPassword()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes 2-step verification password without previous password and access to recovery email address. The password can't be reset immediately and the request needs to be repeated after the specified time\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func resetPassword() async throws -> ResetPasswordResult {\n        let query = ResetPassword()\n        return try await self.execute(query: query)\n    }\n\n    /// Cancels reset of 2-step verification password. The method can be called if passwordState.pending_reset_date > 0\n    public func cancelPasswordReset(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = CancelPasswordReset()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Cancels reset of 2-step verification password. The method can be called if passwordState.pending_reset_date > 0\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func cancelPasswordReset() async throws -> Ok {\n        let query = CancelPasswordReset()\n        return try await self.execute(query: query)\n    }\n\n    /// Creates a new temporary password for processing payments\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Parameter validFor: Time during which the temporary password will be valid, in seconds; must be between 60 and 86400\n    public func createTemporaryPassword(\n        password: String?,\n        validFor: Int?,\n        completion: @escaping (Result<TemporaryPasswordState, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateTemporaryPassword(\n            password: password,\n            validFor: validFor\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Creates a new temporary password for processing payments\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Parameter validFor: Time during which the temporary password will be valid, in seconds; must be between 60 and 86400\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createTemporaryPassword(\n        password: String?,\n        validFor: Int?\n    ) async throws -> TemporaryPasswordState {\n        let query = CreateTemporaryPassword(\n            password: password,\n            validFor: validFor\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about the current temporary password\n    /// - Returns: Information about the current temporary password\n    public func getTemporaryPasswordState(completion: @escaping (Result<TemporaryPasswordState, Swift.Error>) -> Void) throws {\n        let query = GetTemporaryPasswordState()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about the current temporary password\n    /// - Returns: Information about the current temporary password\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getTemporaryPasswordState() async throws -> TemporaryPasswordState {\n        let query = GetTemporaryPasswordState()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the current user\n    /// - Returns: The current user\n    public func getMe(completion: @escaping (Result<User, Swift.Error>) -> Void) throws {\n        let query = GetMe()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the current user\n    /// - Returns: The current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMe() async throws -> User {\n        let query = GetMe()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a user by their identifier. This is an offline method if the current user is not a bot\n    /// - Parameter userId: User identifier\n    /// - Returns: Information about a user by their identifier\n    public func getUser(\n        userId: Int64?,\n        completion: @escaping (Result<User, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUser(\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a user by their identifier. This is an offline method if the current user is not a bot\n    /// - Parameter userId: User identifier\n    /// - Returns: Information about a user by their identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getUser(userId: Int64?) async throws -> User {\n        let query = GetUser(\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns full information about a user by their identifier\n    /// - Parameter userId: User identifier\n    /// - Returns: Full information about a user by their identifier\n    public func getUserFullInfo(\n        userId: Int64?,\n        completion: @escaping (Result<UserFullInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUserFullInfo(\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns full information about a user by their identifier\n    /// - Parameter userId: User identifier\n    /// - Returns: Full information about a user by their identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getUserFullInfo(userId: Int64?) async throws -> UserFullInfo {\n        let query = GetUserFullInfo(\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a basic group by its identifier. This is an offline method if the current user is not a bot\n    /// - Parameter basicGroupId: Basic group identifier\n    /// - Returns: Information about a basic group by its identifier\n    public func getBasicGroup(\n        basicGroupId: Int64?,\n        completion: @escaping (Result<BasicGroup, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBasicGroup(\n            basicGroupId: basicGroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a basic group by its identifier. This is an offline method if the current user is not a bot\n    /// - Parameter basicGroupId: Basic group identifier\n    /// - Returns: Information about a basic group by its identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getBasicGroup(basicGroupId: Int64?) async throws -> BasicGroup {\n        let query = GetBasicGroup(\n            basicGroupId: basicGroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns full information about a basic group by its identifier\n    /// - Parameter basicGroupId: Basic group identifier\n    /// - Returns: Full information about a basic group by its identifier\n    public func getBasicGroupFullInfo(\n        basicGroupId: Int64?,\n        completion: @escaping (Result<BasicGroupFullInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBasicGroupFullInfo(\n            basicGroupId: basicGroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns full information about a basic group by its identifier\n    /// - Parameter basicGroupId: Basic group identifier\n    /// - Returns: Full information about a basic group by its identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getBasicGroupFullInfo(basicGroupId: Int64?) async throws -> BasicGroupFullInfo {\n        let query = GetBasicGroupFullInfo(\n            basicGroupId: basicGroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a supergroup or a channel by its identifier. This is an offline method if the current user is not a bot\n    /// - Parameter supergroupId: Supergroup or channel identifier\n    /// - Returns: Information about a supergroup or a channel by its identifier\n    public func getSupergroup(\n        supergroupId: Int64?,\n        completion: @escaping (Result<Supergroup, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSupergroup(\n            supergroupId: supergroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a supergroup or a channel by its identifier. This is an offline method if the current user is not a bot\n    /// - Parameter supergroupId: Supergroup or channel identifier\n    /// - Returns: Information about a supergroup or a channel by its identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getSupergroup(supergroupId: Int64?) async throws -> Supergroup {\n        let query = GetSupergroup(\n            supergroupId: supergroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns full information about a supergroup or a channel by its identifier, cached for up to 1 minute\n    /// - Parameter supergroupId: Supergroup or channel identifier\n    /// - Returns: Full information about a supergroup or a channel by its identifier, cached for up to 1 minute\n    public func getSupergroupFullInfo(\n        supergroupId: Int64?,\n        completion: @escaping (Result<SupergroupFullInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSupergroupFullInfo(\n            supergroupId: supergroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns full information about a supergroup or a channel by its identifier, cached for up to 1 minute\n    /// - Parameter supergroupId: Supergroup or channel identifier\n    /// - Returns: Full information about a supergroup or a channel by its identifier, cached for up to 1 minute\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getSupergroupFullInfo(supergroupId: Int64?) async throws -> SupergroupFullInfo {\n        let query = GetSupergroupFullInfo(\n            supergroupId: supergroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a secret chat by its identifier. This is an offline method\n    /// - Parameter secretChatId: Secret chat identifier\n    /// - Returns: Information about a secret chat by its identifier\n    public func getSecretChat(\n        secretChatId: Int?,\n        completion: @escaping (Result<SecretChat, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSecretChat(\n            secretChatId: secretChatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a secret chat by its identifier. This is an offline method\n    /// - Parameter secretChatId: Secret chat identifier\n    /// - Returns: Information about a secret chat by its identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getSecretChat(secretChatId: Int?) async throws -> SecretChat {\n        let query = GetSecretChat(\n            secretChatId: secretChatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a chat by its identifier. This is an offline method if the current user is not a bot\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: Information about a chat by its identifier\n    public func getChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChat(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a chat by its identifier. This is an offline method if the current user is not a bot\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: Information about a chat by its identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChat(chatId: Int64?) async throws -> Chat {\n        let query = GetChat(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a message. Returns a 404 error if the message doesn't exist\n    /// - Parameter chatId: Identifier of the chat the message belongs to\n    /// - Parameter messageId: Identifier of the message to get\n    /// - Returns: Information about a message. Returns a 404 error if the message doesn't exist\n    public func getMessage(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessage(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a message. Returns a 404 error if the message doesn't exist\n    /// - Parameter chatId: Identifier of the chat the message belongs to\n    /// - Parameter messageId: Identifier of the message to get\n    /// - Returns: Information about a message. Returns a 404 error if the message doesn't exist\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMessage(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Message {\n        let query = GetMessage(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a message, if it is available without sending network request. Returns a 404 error if message isn't available locally. This is an offline method\n    /// - Parameter chatId: Identifier of the chat the message belongs to\n    /// - Parameter messageId: Identifier of the message to get\n    /// - Returns: Information about a message, if it is available without sending network request. Returns a 404 error if message isn't available locally\n    public func getMessageLocally(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageLocally(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a message, if it is available without sending network request. Returns a 404 error if message isn't available locally. This is an offline method\n    /// - Parameter chatId: Identifier of the chat the message belongs to\n    /// - Parameter messageId: Identifier of the message to get\n    /// - Returns: Information about a message, if it is available without sending network request. Returns a 404 error if message isn't available locally\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMessageLocally(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Message {\n        let query = GetMessageLocally(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a non-bundled message that is replied by a given message. Also, returns the pinned message for messagePinMessage, the game message for messageGameScore, the invoice message for messagePaymentSuccessful, the message with a previously set same background for messageChatSetBackground, the giveaway message for messageGiveawayCompleted, the checklist message for messageChecklistTasksDone, messageChecklistTasksAdded, the message with suggested post information for messageSuggestedPostApprovalFailed, messageSuggestedPostApproved, messageSuggestedPostDeclined, messageSuggestedPostPaid, messageSuggestedPostRefunded, the message with the regular gift that was upgraded for messageUpgradedGift with origin of the type upgradedGiftOriginUpgrade, the message with gift purchase offer for messageUpgradedGiftPurchaseOfferRejected, the message with the request to disable content protection for messageChatHasProtectedContentToggled, the message with the poll for messagePollOptionAdded and messagePollOptionDeleted, and the topic creation message for topic messages without non-bundled replied message. Returns a 404 error if the message doesn't exist\n    /// - Parameter chatId: Identifier of the chat the message belongs to\n    /// - Parameter messageId: Identifier of the reply message\n    /// - Returns: Information about a non-bundled message that is replied by a given message. Also, returns the pinned message for messagePinMessage, the game message for messageGameScore, the invoice message for messagePaymentSuccessful, the message with a previously set same background for messageChatSetBackground, the giveaway message for messageGiveawayCompleted, the checklist message for messageChecklistTasksDone, messageChecklistTasksAdded, the message with suggested post information for messageSuggestedPostApprovalFailed, messageSuggestedPostApproved, messageSuggestedPostDeclined, messageSuggestedPostPaid, messageSuggestedPostRefunded, the message with the regular gift that was upgraded for messageUpgradedGift with origin of the type upgradedGiftOriginUpgrade, the message with gift purchase offer for messageUpgradedGiftPurchaseOfferRejected, the message with the request to disable content protection for messageChatHasProtectedContentToggled, the message with the poll for messagePollOptionAdded and messagePollOptionDeleted, and the topic creation message for topic messages without non-bundled replied message. Returns a 404 error if the message doesn't exist\n    public func getRepliedMessage(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = GetRepliedMessage(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a non-bundled message that is replied by a given message. Also, returns the pinned message for messagePinMessage, the game message for messageGameScore, the invoice message for messagePaymentSuccessful, the message with a previously set same background for messageChatSetBackground, the giveaway message for messageGiveawayCompleted, the checklist message for messageChecklistTasksDone, messageChecklistTasksAdded, the message with suggested post information for messageSuggestedPostApprovalFailed, messageSuggestedPostApproved, messageSuggestedPostDeclined, messageSuggestedPostPaid, messageSuggestedPostRefunded, the message with the regular gift that was upgraded for messageUpgradedGift with origin of the type upgradedGiftOriginUpgrade, the message with gift purchase offer for messageUpgradedGiftPurchaseOfferRejected, the message with the request to disable content protection for messageChatHasProtectedContentToggled, the message with the poll for messagePollOptionAdded and messagePollOptionDeleted, and the topic creation message for topic messages without non-bundled replied message. Returns a 404 error if the message doesn't exist\n    /// - Parameter chatId: Identifier of the chat the message belongs to\n    /// - Parameter messageId: Identifier of the reply message\n    /// - Returns: Information about a non-bundled message that is replied by a given message. Also, returns the pinned message for messagePinMessage, the game message for messageGameScore, the invoice message for messagePaymentSuccessful, the message with a previously set same background for messageChatSetBackground, the giveaway message for messageGiveawayCompleted, the checklist message for messageChecklistTasksDone, messageChecklistTasksAdded, the message with suggested post information for messageSuggestedPostApprovalFailed, messageSuggestedPostApproved, messageSuggestedPostDeclined, messageSuggestedPostPaid, messageSuggestedPostRefunded, the message with the regular gift that was upgraded for messageUpgradedGift with origin of the type upgradedGiftOriginUpgrade, the message with gift purchase offer for messageUpgradedGiftPurchaseOfferRejected, the message with the request to disable content protection for messageChatHasProtectedContentToggled, the message with the poll for messagePollOptionAdded and messagePollOptionDeleted, and the topic creation message for topic messages without non-bundled replied message. Returns a 404 error if the message doesn't exist\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getRepliedMessage(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Message {\n        let query = GetRepliedMessage(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a newest pinned message in the chat. Returns a 404 error if the message doesn't exist\n    /// - Parameter chatId: Identifier of the chat the message belongs to\n    /// - Returns: Information about a newest pinned message in the chat. Returns a 404 error if the message doesn't exist\n    public func getChatPinnedMessage(\n        chatId: Int64?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatPinnedMessage(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a newest pinned message in the chat. Returns a 404 error if the message doesn't exist\n    /// - Parameter chatId: Identifier of the chat the message belongs to\n    /// - Returns: Information about a newest pinned message in the chat. Returns a 404 error if the message doesn't exist\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatPinnedMessage(chatId: Int64?) async throws -> Message {\n        let query = GetChatPinnedMessage(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a message with the callback button that originated a callback query; for bots only\n    /// - Parameter callbackQueryId: Identifier of the callback query\n    /// - Parameter chatId: Identifier of the chat the message belongs to\n    /// - Parameter messageId: Message identifier\n    /// - Returns: Information about a message with the callback button that originated a callback query\n    public func getCallbackQueryMessage(\n        callbackQueryId: TdInt64?,\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = GetCallbackQueryMessage(\n            callbackQueryId: callbackQueryId,\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a message with the callback button that originated a callback query; for bots only\n    /// - Parameter callbackQueryId: Identifier of the callback query\n    /// - Parameter chatId: Identifier of the chat the message belongs to\n    /// - Parameter messageId: Message identifier\n    /// - Returns: Information about a message with the callback button that originated a callback query\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getCallbackQueryMessage(\n        callbackQueryId: TdInt64?,\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Message {\n        let query = GetCallbackQueryMessage(\n            callbackQueryId: callbackQueryId,\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about messages. If a message is not found, returns null on the corresponding position of the result\n    /// - Parameter chatId: Identifier of the chat the messages belong to\n    /// - Parameter messageIds: Identifiers of the messages to get\n    /// - Returns: Information about messages. If a message is not found, returns null on the corresponding position of the result\n    public func getMessages(\n        chatId: Int64?,\n        messageIds: [Int64]?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessages(\n            chatId: chatId,\n            messageIds: messageIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about messages. If a message is not found, returns null on the corresponding position of the result\n    /// - Parameter chatId: Identifier of the chat the messages belong to\n    /// - Parameter messageIds: Identifiers of the messages to get\n    /// - Returns: Information about messages. If a message is not found, returns null on the corresponding position of the result\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMessages(\n        chatId: Int64?,\n        messageIds: [Int64]?\n    ) async throws -> Messages {\n        let query = GetMessages(\n            chatId: chatId,\n            messageIds: messageIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns properties of a message. This is an offline method\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Properties of a message\n    public func getMessageProperties(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<MessageProperties, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageProperties(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns properties of a message. This is an offline method\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Properties of a message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMessageProperties(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> MessageProperties {\n        let query = GetMessageProperties(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns properties of a poll option. This is an offline method\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter pollOptionId: Unique identifier of the answer option, which properties will be returned\n    /// - Returns: Properties of a poll option\n    public func getPollOptionProperties(\n        chatId: Int64?,\n        messageId: Int64?,\n        pollOptionId: String?,\n        completion: @escaping (Result<PollOptionProperties, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPollOptionProperties(\n            chatId: chatId,\n            messageId: messageId,\n            pollOptionId: pollOptionId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns properties of a poll option. This is an offline method\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter pollOptionId: Unique identifier of the answer option, which properties will be returned\n    /// - Returns: Properties of a poll option\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPollOptionProperties(\n        chatId: Int64?,\n        messageId: Int64?,\n        pollOptionId: String?\n    ) async throws -> PollOptionProperties {\n        let query = GetPollOptionProperties(\n            chatId: chatId,\n            messageId: messageId,\n            pollOptionId: pollOptionId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a message thread. Can be used only if messageProperties.can_get_message_thread == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Information about a message thread\n    public func getMessageThread(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<MessageThreadInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageThread(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a message thread. Can be used only if messageProperties.can_get_message_thread == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Information about a message thread\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMessageThread(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> MessageThreadInfo {\n        let query = GetMessageThread(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns read date of a recent outgoing message in a private chat. The method can be called if messageProperties.can_get_read_date == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Read date of a recent outgoing message in a private chat\n    public func getMessageReadDate(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<MessageReadDate, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageReadDate(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns read date of a recent outgoing message in a private chat. The method can be called if messageProperties.can_get_read_date == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Read date of a recent outgoing message in a private chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMessageReadDate(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> MessageReadDate {\n        let query = GetMessageReadDate(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns viewers of a recent outgoing message in a basic group or a supergroup chat. For video notes and voice notes only users, opened content of the message, are returned. The method can be called if messageProperties.can_get_viewers == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Viewers of a recent outgoing message in a basic group or a supergroup chat. For video notes and voice notes only users, opened content of the message, are returned\n    public func getMessageViewers(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<MessageViewers, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageViewers(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns viewers of a recent outgoing message in a basic group or a supergroup chat. For video notes and voice notes only users, opened content of the message, are returned. The method can be called if messageProperties.can_get_viewers == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Viewers of a recent outgoing message in a basic group or a supergroup chat. For video notes and voice notes only users, opened content of the message, are returned\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMessageViewers(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> MessageViewers {\n        let query = GetMessageViewers(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about actual author of a message sent on behalf of a channel. The method can be called if messageProperties.can_get_author == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Information about actual author of a message sent on behalf of a channel\n    public func getMessageAuthor(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<User, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageAuthor(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about actual author of a message sent on behalf of a channel. The method can be called if messageProperties.can_get_author == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Information about actual author of a message sent on behalf of a channel\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMessageAuthor(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> User {\n        let query = GetMessageAuthor(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a file. This is an offline method\n    /// - Parameter fileId: Identifier of the file to get\n    /// - Returns: Information about a file\n    public func getFile(\n        fileId: Int?,\n        completion: @escaping (Result<File, Swift.Error>) -> Void\n    ) throws {\n        let query = GetFile(\n            fileId: fileId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a file. This is an offline method\n    /// - Parameter fileId: Identifier of the file to get\n    /// - Returns: Information about a file\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getFile(fileId: Int?) async throws -> File {\n        let query = GetFile(\n            fileId: fileId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a file by its remote identifier. This is an offline method. Can be used to register a URL as a file for further uploading, or sending as a message. Even the request succeeds, the file can be used only if it is still accessible to the user. For example, if the file is from a message, then the message must be not deleted and accessible to the user. If the file database is disabled, then the corresponding object with the file must be preloaded by the application\n    /// - Parameter fileType: File type; pass null if unknown\n    /// - Parameter remoteFileId: Remote identifier of the file to get\n    /// - Returns: Information about a file by its remote identifier\n    public func getRemoteFile(\n        fileType: FileType?,\n        remoteFileId: String?,\n        completion: @escaping (Result<File, Swift.Error>) -> Void\n    ) throws {\n        let query = GetRemoteFile(\n            fileType: fileType,\n            remoteFileId: remoteFileId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a file by its remote identifier. This is an offline method. Can be used to register a URL as a file for further uploading, or sending as a message. Even the request succeeds, the file can be used only if it is still accessible to the user. For example, if the file is from a message, then the message must be not deleted and accessible to the user. If the file database is disabled, then the corresponding object with the file must be preloaded by the application\n    /// - Parameter fileType: File type; pass null if unknown\n    /// - Parameter remoteFileId: Remote identifier of the file to get\n    /// - Returns: Information about a file by its remote identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getRemoteFile(\n        fileType: FileType?,\n        remoteFileId: String?\n    ) async throws -> File {\n        let query = GetRemoteFile(\n            fileType: fileType,\n            remoteFileId: remoteFileId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Loads more chats from a chat list. The loaded chats and their positions in the chat list will be sent through updates. Chats are sorted by the pair (chat.position.order, chat.id) in descending order. Returns a 404 error if all chats have been loaded\n    /// - Parameter chatList: The chat list in which to load chats; pass null to load chats from the main chat list\n    /// - Parameter limit: The maximum number of chats to be loaded. For optimal performance, the number of loaded chats is chosen by TDLib and can be smaller than the specified limit, even if the end of the list is not reached\n    /// - Returns: A 404 error if all chats have been loaded\n    public func loadChats(\n        chatList: ChatList?,\n        limit: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = LoadChats(\n            chatList: chatList,\n            limit: limit\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Loads more chats from a chat list. The loaded chats and their positions in the chat list will be sent through updates. Chats are sorted by the pair (chat.position.order, chat.id) in descending order. Returns a 404 error if all chats have been loaded\n    /// - Parameter chatList: The chat list in which to load chats; pass null to load chats from the main chat list\n    /// - Parameter limit: The maximum number of chats to be loaded. For optimal performance, the number of loaded chats is chosen by TDLib and can be smaller than the specified limit, even if the end of the list is not reached\n    /// - Returns: A 404 error if all chats have been loaded\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func loadChats(\n        chatList: ChatList?,\n        limit: Int?\n    ) async throws -> Ok {\n        let query = LoadChats(\n            chatList: chatList,\n            limit: limit\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an ordered list of chats from the beginning of a chat list. For informational purposes only. Use loadChats and updates processing instead to maintain chat lists in a consistent state\n    /// - Parameter chatList: The chat list in which to return chats; pass null to get chats from the main chat list\n    /// - Parameter limit: The maximum number of chats to be returned\n    /// - Returns: An ordered list of chats from the beginning of a chat list\n    public func getChats(\n        chatList: ChatList?,\n        limit: Int?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChats(\n            chatList: chatList,\n            limit: limit\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an ordered list of chats from the beginning of a chat list. For informational purposes only. Use loadChats and updates processing instead to maintain chat lists in a consistent state\n    /// - Parameter chatList: The chat list in which to return chats; pass null to get chats from the main chat list\n    /// - Parameter limit: The maximum number of chats to be returned\n    /// - Returns: An ordered list of chats from the beginning of a chat list\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChats(\n        chatList: ChatList?,\n        limit: Int?\n    ) async throws -> Chats {\n        let query = GetChats(\n            chatList: chatList,\n            limit: limit\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches a public chat by its username. Currently, only private chats, supergroups and channels can be public. Returns the chat if found; otherwise, an error is returned\n    /// - Parameter username: Username to be resolved\n    /// - Returns: The chat if found. otherwise, an error is returned\n    public func searchPublicChat(\n        username: String?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchPublicChat(\n            username: username\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches a public chat by its username. Currently, only private chats, supergroups and channels can be public. Returns the chat if found; otherwise, an error is returned\n    /// - Parameter username: Username to be resolved\n    /// - Returns: The chat if found. otherwise, an error is returned\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchPublicChat(username: String?) async throws -> Chat {\n        let query = SearchPublicChat(\n            username: username\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches public chats by looking for specified query in their username and title. Currently, only private chats, supergroups and channels can be public. Returns a meaningful number of results. Excludes private chats with contacts and chats from the chat list from the results\n    /// - Parameter query: Query to search for\n    /// - Returns: A meaningful number of results\n    public func searchPublicChats(\n        query: String?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchPublicChats(\n            query: query\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches public chats by looking for specified query in their username and title. Currently, only private chats, supergroups and channels can be public. Returns a meaningful number of results. Excludes private chats with contacts and chats from the chat list from the results\n    /// - Parameter query: Query to search for\n    /// - Returns: A meaningful number of results\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchPublicChats(query: String?) async throws -> Chats {\n        let query = SearchPublicChats(\n            query: query\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for the specified query in the title and username of already known chats. This is an offline method. Returns chats in the order seen in the main chat list\n    /// - Parameter limit: The maximum number of chats to be returned\n    /// - Parameter query: Query to search for. If the query is empty, returns up to 50 recently found chats\n    /// - Returns: Chats in the order seen in the main chat list\n    public func searchChats(\n        limit: Int?,\n        query: String?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchChats(\n            limit: limit,\n            query: query\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for the specified query in the title and username of already known chats. This is an offline method. Returns chats in the order seen in the main chat list\n    /// - Parameter limit: The maximum number of chats to be returned\n    /// - Parameter query: Query to search for. If the query is empty, returns up to 50 recently found chats\n    /// - Returns: Chats in the order seen in the main chat list\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchChats(\n        limit: Int?,\n        query: String?\n    ) async throws -> Chats {\n        let query = SearchChats(\n            limit: limit,\n            query: query\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for the specified query in the title and username of already known chats via request to the server. Returns chats in the order seen in the main chat list\n    /// - Parameter limit: The maximum number of chats to be returned\n    /// - Parameter query: Query to search for\n    /// - Returns: Chats in the order seen in the main chat list\n    public func searchChatsOnServer(\n        limit: Int?,\n        query: String?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchChatsOnServer(\n            limit: limit,\n            query: query\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for the specified query in the title and username of already known chats via request to the server. Returns chats in the order seen in the main chat list\n    /// - Parameter limit: The maximum number of chats to be returned\n    /// - Parameter query: Query to search for\n    /// - Returns: Chats in the order seen in the main chat list\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchChatsOnServer(\n        limit: Int?,\n        query: String?\n    ) async throws -> Chats {\n        let query = SearchChatsOnServer(\n            limit: limit,\n            query: query\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a list of channel chats recommended to the current user\n    /// - Returns: A list of channel chats recommended to the current user\n    public func getRecommendedChats(completion: @escaping (Result<Chats, Swift.Error>) -> Void) throws {\n        let query = GetRecommendedChats()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a list of channel chats recommended to the current user\n    /// - Returns: A list of channel chats recommended to the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getRecommendedChats() async throws -> Chats {\n        let query = GetRecommendedChats()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a list of chats similar to the given chat\n    /// - Parameter chatId: Identifier of the target chat; must be an identifier of a channel chat\n    /// - Returns: A list of chats similar to the given chat\n    public func getChatSimilarChats(\n        chatId: Int64?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatSimilarChats(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a list of chats similar to the given chat\n    /// - Parameter chatId: Identifier of the target chat; must be an identifier of a channel chat\n    /// - Returns: A list of chats similar to the given chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatSimilarChats(chatId: Int64?) async throws -> Chats {\n        let query = GetChatSimilarChats(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns approximate number of chats similar to the given chat\n    /// - Parameter chatId: Identifier of the target chat; must be an identifier of a channel chat\n    /// - Parameter returnLocal: Pass true to get the number of chats without sending network requests, or -1 if the number of chats is unknown locally\n    /// - Returns: Approximate number of chats similar to the given chat\n    public func getChatSimilarChatCount(\n        chatId: Int64?,\n        returnLocal: Bool?,\n        completion: @escaping (Result<Count, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatSimilarChatCount(\n            chatId: chatId,\n            returnLocal: returnLocal\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns approximate number of chats similar to the given chat\n    /// - Parameter chatId: Identifier of the target chat; must be an identifier of a channel chat\n    /// - Parameter returnLocal: Pass true to get the number of chats without sending network requests, or -1 if the number of chats is unknown locally\n    /// - Returns: Approximate number of chats similar to the given chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatSimilarChatCount(\n        chatId: Int64?,\n        returnLocal: Bool?\n    ) async throws -> Count {\n        let query = GetChatSimilarChatCount(\n            chatId: chatId,\n            returnLocal: returnLocal\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that a chat was opened from the list of similar chats. The method is independent of openChat and closeChat methods\n    /// - Parameter chatId: Identifier of the original chat, which similar chats were requested\n    /// - Parameter openedChatId: Identifier of the opened chat\n    public func openChatSimilarChat(\n        chatId: Int64?,\n        openedChatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = OpenChatSimilarChat(\n            chatId: chatId,\n            openedChatId: openedChatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that a chat was opened from the list of similar chats. The method is independent of openChat and closeChat methods\n    /// - Parameter chatId: Identifier of the original chat, which similar chats were requested\n    /// - Parameter openedChatId: Identifier of the opened chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func openChatSimilarChat(\n        chatId: Int64?,\n        openedChatId: Int64?\n    ) async throws -> Ok {\n        let query = OpenChatSimilarChat(\n            chatId: chatId,\n            openedChatId: openedChatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a list of bots similar to the given bot\n    /// - Parameter botUserId: User identifier of the target bot\n    /// - Returns: A list of bots similar to the given bot\n    public func getBotSimilarBots(\n        botUserId: Int64?,\n        completion: @escaping (Result<Users, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBotSimilarBots(\n            botUserId: botUserId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a list of bots similar to the given bot\n    /// - Parameter botUserId: User identifier of the target bot\n    /// - Returns: A list of bots similar to the given bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getBotSimilarBots(botUserId: Int64?) async throws -> Users {\n        let query = GetBotSimilarBots(\n            botUserId: botUserId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns approximate number of bots similar to the given bot\n    /// - Parameter botUserId: User identifier of the target bot\n    /// - Parameter returnLocal: Pass true to get the number of bots without sending network requests, or -1 if the number of bots is unknown locally\n    /// - Returns: Approximate number of bots similar to the given bot\n    public func getBotSimilarBotCount(\n        botUserId: Int64?,\n        returnLocal: Bool?,\n        completion: @escaping (Result<Count, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBotSimilarBotCount(\n            botUserId: botUserId,\n            returnLocal: returnLocal\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns approximate number of bots similar to the given bot\n    /// - Parameter botUserId: User identifier of the target bot\n    /// - Parameter returnLocal: Pass true to get the number of bots without sending network requests, or -1 if the number of bots is unknown locally\n    /// - Returns: Approximate number of bots similar to the given bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getBotSimilarBotCount(\n        botUserId: Int64?,\n        returnLocal: Bool?\n    ) async throws -> Count {\n        let query = GetBotSimilarBotCount(\n            botUserId: botUserId,\n            returnLocal: returnLocal\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that a bot was opened from the list of similar bots\n    /// - Parameter botUserId: Identifier of the original bot, which similar bots were requested\n    /// - Parameter openedBotUserId: Identifier of the opened bot\n    public func openBotSimilarBot(\n        botUserId: Int64?,\n        openedBotUserId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = OpenBotSimilarBot(\n            botUserId: botUserId,\n            openedBotUserId: openedBotUserId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that a bot was opened from the list of similar bots\n    /// - Parameter botUserId: Identifier of the original bot, which similar bots were requested\n    /// - Parameter openedBotUserId: Identifier of the opened bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func openBotSimilarBot(\n        botUserId: Int64?,\n        openedBotUserId: Int64?\n    ) async throws -> Ok {\n        let query = OpenBotSimilarBot(\n            botUserId: botUserId,\n            openedBotUserId: openedBotUserId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a list of frequently used chats\n    /// - Parameter category: Category of chats to be returned\n    /// - Parameter limit: The maximum number of chats to be returned; up to 30\n    /// - Returns: A list of frequently used chats\n    public func getTopChats(\n        category: TopChatCategory?,\n        limit: Int?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetTopChats(\n            category: category,\n            limit: limit\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a list of frequently used chats\n    /// - Parameter category: Category of chats to be returned\n    /// - Parameter limit: The maximum number of chats to be returned; up to 30\n    /// - Returns: A list of frequently used chats\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getTopChats(\n        category: TopChatCategory?,\n        limit: Int?\n    ) async throws -> Chats {\n        let query = GetTopChats(\n            category: category,\n            limit: limit\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes a chat from the list of frequently used chats. Supported only if the chat info database is enabled\n    /// - Parameter category: Category of frequently used chats\n    /// - Parameter chatId: Chat identifier\n    public func removeTopChat(\n        category: TopChatCategory?,\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveTopChat(\n            category: category,\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes a chat from the list of frequently used chats. Supported only if the chat info database is enabled\n    /// - Parameter category: Category of frequently used chats\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeTopChat(\n        category: TopChatCategory?,\n        chatId: Int64?\n    ) async throws -> Ok {\n        let query = RemoveTopChat(\n            category: category,\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for the specified query in the title and username of up to 50 recently found chats. This is an offline method\n    /// - Parameter limit: The maximum number of chats to be returned\n    /// - Parameter query: Query to search for\n    public func searchRecentlyFoundChats(\n        limit: Int?,\n        query: String?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchRecentlyFoundChats(\n            limit: limit,\n            query: query\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for the specified query in the title and username of up to 50 recently found chats. This is an offline method\n    /// - Parameter limit: The maximum number of chats to be returned\n    /// - Parameter query: Query to search for\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchRecentlyFoundChats(\n        limit: Int?,\n        query: String?\n    ) async throws -> Chats {\n        let query = SearchRecentlyFoundChats(\n            limit: limit,\n            query: query\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds a chat to the list of recently found chats. The chat is added to the beginning of the list. If the chat is already in the list, it will be removed from the list first\n    /// - Parameter chatId: Identifier of the chat to add\n    public func addRecentlyFoundChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddRecentlyFoundChat(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds a chat to the list of recently found chats. The chat is added to the beginning of the list. If the chat is already in the list, it will be removed from the list first\n    /// - Parameter chatId: Identifier of the chat to add\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func addRecentlyFoundChat(chatId: Int64?) async throws -> Ok {\n        let query = AddRecentlyFoundChat(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes a chat from the list of recently found chats\n    /// - Parameter chatId: Identifier of the chat to be removed\n    public func removeRecentlyFoundChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveRecentlyFoundChat(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes a chat from the list of recently found chats\n    /// - Parameter chatId: Identifier of the chat to be removed\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeRecentlyFoundChat(chatId: Int64?) async throws -> Ok {\n        let query = RemoveRecentlyFoundChat(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Clears the list of recently found chats\n    public func clearRecentlyFoundChats(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ClearRecentlyFoundChats()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Clears the list of recently found chats\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func clearRecentlyFoundChats() async throws -> Ok {\n        let query = ClearRecentlyFoundChats()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns recently opened chats. This is an offline method. Returns chats in the order of last opening\n    /// - Parameter limit: The maximum number of chats to be returned\n    /// - Returns: Recently opened chats. Returns chats in the order of last opening\n    public func getRecentlyOpenedChats(\n        limit: Int?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetRecentlyOpenedChats(\n            limit: limit\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns recently opened chats. This is an offline method. Returns chats in the order of last opening\n    /// - Parameter limit: The maximum number of chats to be returned\n    /// - Returns: Recently opened chats. Returns chats in the order of last opening\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getRecentlyOpenedChats(limit: Int?) async throws -> Chats {\n        let query = GetRecentlyOpenedChats(\n            limit: limit\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks whether a username can be set for a chat\n    /// - Parameter chatId: Chat identifier; must be identifier of a supergroup chat, or a channel chat, or a private chat with self, or 0 if the chat is being created\n    /// - Parameter username: Username to be checked\n    public func checkChatUsername(\n        chatId: Int64?,\n        username: String?,\n        completion: @escaping (Result<CheckChatUsernameResult, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckChatUsername(\n            chatId: chatId,\n            username: username\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks whether a username can be set for a chat\n    /// - Parameter chatId: Chat identifier; must be identifier of a supergroup chat, or a channel chat, or a private chat with self, or 0 if the chat is being created\n    /// - Parameter username: Username to be checked\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func checkChatUsername(\n        chatId: Int64?,\n        username: String?\n    ) async throws -> CheckChatUsernameResult {\n        let query = CheckChatUsername(\n            chatId: chatId,\n            username: username\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a list of public chats of the specified type, owned by the user\n    /// - Parameter type: Type of the public chats to return\n    /// - Returns: A list of public chats of the specified type, owned by the user\n    public func getCreatedPublicChats(\n        type: PublicChatType?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetCreatedPublicChats(\n            type: type\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a list of public chats of the specified type, owned by the user\n    /// - Parameter type: Type of the public chats to return\n    /// - Returns: A list of public chats of the specified type, owned by the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getCreatedPublicChats(type: PublicChatType?) async throws -> Chats {\n        let query = GetCreatedPublicChats(\n            type: type\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks whether the maximum number of owned public chats has been reached. Returns corresponding error if the limit was reached. The limit can be increased with Telegram Premium\n    /// - Parameter type: Type of the public chats, for which to check the limit\n    /// - Returns: Corresponding error if the limit was reached\n    public func checkCreatedPublicChatsLimit(\n        type: PublicChatType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckCreatedPublicChatsLimit(\n            type: type\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks whether the maximum number of owned public chats has been reached. Returns corresponding error if the limit was reached. The limit can be increased with Telegram Premium\n    /// - Parameter type: Type of the public chats, for which to check the limit\n    /// - Returns: Corresponding error if the limit was reached\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func checkCreatedPublicChatsLimit(type: PublicChatType?) async throws -> Ok {\n        let query = CheckCreatedPublicChatsLimit(\n            type: type\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a list of basic group and supergroup chats, which can be used as a discussion group for a channel. Returned basic group chats must be first upgraded to supergroups before they can be set as a discussion group. To set a returned supergroup as a discussion group, access to its old messages must be enabled using toggleSupergroupIsAllHistoryAvailable first\n    /// - Returns: A list of basic group and supergroup chats, which can be used as a discussion group for a channel. Returned basic group chats must be first upgraded to supergroups before they can be set as a discussion group. To set a returned supergroup as a discussion group, access to its old messages must be enabled using toggleSupergroupIsAllHistoryAvailable first\n    public func getSuitableDiscussionChats(completion: @escaping (Result<Chats, Swift.Error>) -> Void) throws {\n        let query = GetSuitableDiscussionChats()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a list of basic group and supergroup chats, which can be used as a discussion group for a channel. Returned basic group chats must be first upgraded to supergroups before they can be set as a discussion group. To set a returned supergroup as a discussion group, access to its old messages must be enabled using toggleSupergroupIsAllHistoryAvailable first\n    /// - Returns: A list of basic group and supergroup chats, which can be used as a discussion group for a channel. Returned basic group chats must be first upgraded to supergroups before they can be set as a discussion group. To set a returned supergroup as a discussion group, access to its old messages must be enabled using toggleSupergroupIsAllHistoryAvailable first\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getSuitableDiscussionChats() async throws -> Chats {\n        let query = GetSuitableDiscussionChats()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a list of recently inactive supergroups and channels. Can be used when user reaches limit on the number of joined supergroups and channels and receives the error \"CHANNELS_TOO_MUCH\". Also, the limit can be increased with Telegram Premium\n    /// - Returns: A list of recently inactive supergroups and channels\n    public func getInactiveSupergroupChats(completion: @escaping (Result<Chats, Swift.Error>) -> Void) throws {\n        let query = GetInactiveSupergroupChats()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a list of recently inactive supergroups and channels. Can be used when user reaches limit on the number of joined supergroups and channels and receives the error \"CHANNELS_TOO_MUCH\". Also, the limit can be increased with Telegram Premium\n    /// - Returns: A list of recently inactive supergroups and channels\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getInactiveSupergroupChats() async throws -> Chats {\n        let query = GetInactiveSupergroupChats()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a list of channel chats, which can be used as a personal chat\n    /// - Returns: A list of channel chats, which can be used as a personal chat\n    public func getSuitablePersonalChats(completion: @escaping (Result<Chats, Swift.Error>) -> Void) throws {\n        let query = GetSuitablePersonalChats()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a list of channel chats, which can be used as a personal chat\n    /// - Returns: A list of channel chats, which can be used as a personal chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getSuitablePersonalChats() async throws -> Chats {\n        let query = GetSuitablePersonalChats()\n        return try await self.execute(query: query)\n    }\n\n    /// Loads more topics in a channel direct messages chat administered by the current user. The loaded topics will be sent through updateDirectMessagesChatTopic. Topics are sorted by their topic.order in descending order. Returns a 404 error if all topics have been loaded\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter limit: The maximum number of topics to be loaded. For optimal performance, the number of loaded topics is chosen by TDLib and can be smaller than the specified limit, even if the end of the list is not reached\n    /// - Returns: A 404 error if all topics have been loaded\n    public func loadDirectMessagesChatTopics(\n        chatId: Int64?,\n        limit: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = LoadDirectMessagesChatTopics(\n            chatId: chatId,\n            limit: limit\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Loads more topics in a channel direct messages chat administered by the current user. The loaded topics will be sent through updateDirectMessagesChatTopic. Topics are sorted by their topic.order in descending order. Returns a 404 error if all topics have been loaded\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter limit: The maximum number of topics to be loaded. For optimal performance, the number of loaded topics is chosen by TDLib and can be smaller than the specified limit, even if the end of the list is not reached\n    /// - Returns: A 404 error if all topics have been loaded\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func loadDirectMessagesChatTopics(\n        chatId: Int64?,\n        limit: Int?\n    ) async throws -> Ok {\n        let query = LoadDirectMessagesChatTopics(\n            chatId: chatId,\n            limit: limit\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about the topic in a channel direct messages chat administered by the current user\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter topicId: Identifier of the topic to get\n    /// - Returns: Information about the topic in a channel direct messages chat administered by the current user\n    public func getDirectMessagesChatTopic(\n        chatId: Int64?,\n        topicId: Int64?,\n        completion: @escaping (Result<DirectMessagesChatTopic, Swift.Error>) -> Void\n    ) throws {\n        let query = GetDirectMessagesChatTopic(\n            chatId: chatId,\n            topicId: topicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about the topic in a channel direct messages chat administered by the current user\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter topicId: Identifier of the topic to get\n    /// - Returns: Information about the topic in a channel direct messages chat administered by the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getDirectMessagesChatTopic(\n        chatId: Int64?,\n        topicId: Int64?\n    ) async throws -> DirectMessagesChatTopic {\n        let query = GetDirectMessagesChatTopic(\n            chatId: chatId,\n            topicId: topicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns messages in the topic in a channel direct messages chat administered by the current user. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter fromMessageId: Identifier of the message starting from which messages must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    /// - Parameter topicId: Identifier of the topic which messages will be fetched\n    /// - Returns: Messages in the topic in a channel direct messages chat administered by the current user. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    public func getDirectMessagesChatTopicHistory(\n        chatId: Int64?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        topicId: Int64?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = GetDirectMessagesChatTopicHistory(\n            chatId: chatId,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset,\n            topicId: topicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns messages in the topic in a channel direct messages chat administered by the current user. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter fromMessageId: Identifier of the message starting from which messages must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    /// - Parameter topicId: Identifier of the topic which messages will be fetched\n    /// - Returns: Messages in the topic in a channel direct messages chat administered by the current user. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getDirectMessagesChatTopicHistory(\n        chatId: Int64?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        topicId: Int64?\n    ) async throws -> Messages {\n        let query = GetDirectMessagesChatTopicHistory(\n            chatId: chatId,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset,\n            topicId: topicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the last message sent in the topic in a channel direct messages chat administered by the current user no later than the specified date\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter date: Point in time (Unix timestamp) relative to which to search for messages\n    /// - Parameter topicId: Identifier of the topic which messages will be fetched\n    /// - Returns: The last message sent in the topic in a channel direct messages chat administered by the current user no later than the specified date\n    public func getDirectMessagesChatTopicMessageByDate(\n        chatId: Int64?,\n        date: Int?,\n        topicId: Int64?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = GetDirectMessagesChatTopicMessageByDate(\n            chatId: chatId,\n            date: date,\n            topicId: topicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the last message sent in the topic in a channel direct messages chat administered by the current user no later than the specified date\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter date: Point in time (Unix timestamp) relative to which to search for messages\n    /// - Parameter topicId: Identifier of the topic which messages will be fetched\n    /// - Returns: The last message sent in the topic in a channel direct messages chat administered by the current user no later than the specified date\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getDirectMessagesChatTopicMessageByDate(\n        chatId: Int64?,\n        date: Int?,\n        topicId: Int64?\n    ) async throws -> Message {\n        let query = GetDirectMessagesChatTopicMessageByDate(\n            chatId: chatId,\n            date: date,\n            topicId: topicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes all messages in the topic in a channel direct messages chat administered by the current user\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter topicId: Identifier of the topic which messages will be deleted\n    public func deleteDirectMessagesChatTopicHistory(\n        chatId: Int64?,\n        topicId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteDirectMessagesChatTopicHistory(\n            chatId: chatId,\n            topicId: topicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes all messages in the topic in a channel direct messages chat administered by the current user\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter topicId: Identifier of the topic which messages will be deleted\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteDirectMessagesChatTopicHistory(\n        chatId: Int64?,\n        topicId: Int64?\n    ) async throws -> Ok {\n        let query = DeleteDirectMessagesChatTopicHistory(\n            chatId: chatId,\n            topicId: topicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes all messages between the specified dates in the topic in a channel direct messages chat administered by the current user. Messages sent in the last 30 seconds will not be deleted\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter maxDate: The maximum date of the messages to delete\n    /// - Parameter minDate: The minimum date of the messages to delete\n    /// - Parameter topicId: Identifier of the topic which messages will be deleted\n    public func deleteDirectMessagesChatTopicMessagesByDate(\n        chatId: Int64?,\n        maxDate: Int?,\n        minDate: Int?,\n        topicId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteDirectMessagesChatTopicMessagesByDate(\n            chatId: chatId,\n            maxDate: maxDate,\n            minDate: minDate,\n            topicId: topicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes all messages between the specified dates in the topic in a channel direct messages chat administered by the current user. Messages sent in the last 30 seconds will not be deleted\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter maxDate: The maximum date of the messages to delete\n    /// - Parameter minDate: The minimum date of the messages to delete\n    /// - Parameter topicId: Identifier of the topic which messages will be deleted\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteDirectMessagesChatTopicMessagesByDate(\n        chatId: Int64?,\n        maxDate: Int?,\n        minDate: Int?,\n        topicId: Int64?\n    ) async throws -> Ok {\n        let query = DeleteDirectMessagesChatTopicMessagesByDate(\n            chatId: chatId,\n            maxDate: maxDate,\n            minDate: minDate,\n            topicId: topicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the marked as unread state of the topic in a channel direct messages chat administered by the current user\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter isMarkedAsUnread: New value of is_marked_as_unread\n    /// - Parameter topicId: Topic identifier\n    public func setDirectMessagesChatTopicIsMarkedAsUnread(\n        chatId: Int64?,\n        isMarkedAsUnread: Bool?,\n        topicId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetDirectMessagesChatTopicIsMarkedAsUnread(\n            chatId: chatId,\n            isMarkedAsUnread: isMarkedAsUnread,\n            topicId: topicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the marked as unread state of the topic in a channel direct messages chat administered by the current user\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter isMarkedAsUnread: New value of is_marked_as_unread\n    /// - Parameter topicId: Topic identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setDirectMessagesChatTopicIsMarkedAsUnread(\n        chatId: Int64?,\n        isMarkedAsUnread: Bool?,\n        topicId: Int64?\n    ) async throws -> Ok {\n        let query = SetDirectMessagesChatTopicIsMarkedAsUnread(\n            chatId: chatId,\n            isMarkedAsUnread: isMarkedAsUnread,\n            topicId: topicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes all pinned messages from the topic in a channel direct messages chat administered by the current user\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter topicId: Topic identifier\n    public func unpinAllDirectMessagesChatTopicMessages(\n        chatId: Int64?,\n        topicId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = UnpinAllDirectMessagesChatTopicMessages(\n            chatId: chatId,\n            topicId: topicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes all pinned messages from the topic in a channel direct messages chat administered by the current user\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter topicId: Topic identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func unpinAllDirectMessagesChatTopicMessages(\n        chatId: Int64?,\n        topicId: Int64?\n    ) async throws -> Ok {\n        let query = UnpinAllDirectMessagesChatTopicMessages(\n            chatId: chatId,\n            topicId: topicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes all unread reactions in the topic in a channel direct messages chat administered by the current user\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter topicId: Topic identifier\n    public func readAllDirectMessagesChatTopicReactions(\n        chatId: Int64?,\n        topicId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReadAllDirectMessagesChatTopicReactions(\n            chatId: chatId,\n            topicId: topicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes all unread reactions in the topic in a channel direct messages chat administered by the current user\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter topicId: Topic identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func readAllDirectMessagesChatTopicReactions(\n        chatId: Int64?,\n        topicId: Int64?\n    ) async throws -> Ok {\n        let query = ReadAllDirectMessagesChatTopicReactions(\n            chatId: chatId,\n            topicId: topicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the total number of Telegram Stars received by the channel chat for direct messages from the given topic\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat administered by the current user\n    /// - Parameter topicId: Identifier of the topic\n    /// - Returns: The total number of Telegram Stars received by the channel chat for direct messages from the given topic\n    public func getDirectMessagesChatTopicRevenue(\n        chatId: Int64?,\n        topicId: Int64?,\n        completion: @escaping (Result<StarCount, Swift.Error>) -> Void\n    ) throws {\n        let query = GetDirectMessagesChatTopicRevenue(\n            chatId: chatId,\n            topicId: topicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the total number of Telegram Stars received by the channel chat for direct messages from the given topic\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat administered by the current user\n    /// - Parameter topicId: Identifier of the topic\n    /// - Returns: The total number of Telegram Stars received by the channel chat for direct messages from the given topic\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getDirectMessagesChatTopicRevenue(\n        chatId: Int64?,\n        topicId: Int64?\n    ) async throws -> StarCount {\n        let query = GetDirectMessagesChatTopicRevenue(\n            chatId: chatId,\n            topicId: topicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Allows to send unpaid messages to the given topic of the channel direct messages chat administered by the current user\n    /// - Parameter canSendUnpaidMessages: Pass true to allow unpaid messages; pass false to disallow unpaid messages\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter refundPayments: Pass true to refund the user previously paid messages\n    /// - Parameter topicId: Identifier of the topic\n    public func toggleDirectMessagesChatTopicCanSendUnpaidMessages(\n        canSendUnpaidMessages: Bool?,\n        chatId: Int64?,\n        refundPayments: Bool?,\n        topicId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleDirectMessagesChatTopicCanSendUnpaidMessages(\n            canSendUnpaidMessages: canSendUnpaidMessages,\n            chatId: chatId,\n            refundPayments: refundPayments,\n            topicId: topicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Allows to send unpaid messages to the given topic of the channel direct messages chat administered by the current user\n    /// - Parameter canSendUnpaidMessages: Pass true to allow unpaid messages; pass false to disallow unpaid messages\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter refundPayments: Pass true to refund the user previously paid messages\n    /// - Parameter topicId: Identifier of the topic\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleDirectMessagesChatTopicCanSendUnpaidMessages(\n        canSendUnpaidMessages: Bool?,\n        chatId: Int64?,\n        refundPayments: Bool?,\n        topicId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleDirectMessagesChatTopicCanSendUnpaidMessages(\n            canSendUnpaidMessages: canSendUnpaidMessages,\n            chatId: chatId,\n            refundPayments: refundPayments,\n            topicId: topicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Loads more Saved Messages topics. The loaded topics will be sent through updateSavedMessagesTopic. Topics are sorted by their topic.order in descending order. Returns a 404 error if all topics have been loaded\n    /// - Parameter limit: The maximum number of topics to be loaded. For optimal performance, the number of loaded topics is chosen by TDLib and can be smaller than the specified limit, even if the end of the list is not reached\n    /// - Returns: A 404 error if all topics have been loaded\n    public func loadSavedMessagesTopics(\n        limit: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = LoadSavedMessagesTopics(\n            limit: limit\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Loads more Saved Messages topics. The loaded topics will be sent through updateSavedMessagesTopic. Topics are sorted by their topic.order in descending order. Returns a 404 error if all topics have been loaded\n    /// - Parameter limit: The maximum number of topics to be loaded. For optimal performance, the number of loaded topics is chosen by TDLib and can be smaller than the specified limit, even if the end of the list is not reached\n    /// - Returns: A 404 error if all topics have been loaded\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func loadSavedMessagesTopics(limit: Int?) async throws -> Ok {\n        let query = LoadSavedMessagesTopics(\n            limit: limit\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns messages in a Saved Messages topic. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    /// - Parameter fromMessageId: Identifier of the message starting from which messages must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic which messages will be fetched\n    /// - Returns: Messages in a Saved Messages topic. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    public func getSavedMessagesTopicHistory(\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        savedMessagesTopicId: Int64?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSavedMessagesTopicHistory(\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset,\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns messages in a Saved Messages topic. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    /// - Parameter fromMessageId: Identifier of the message starting from which messages must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic which messages will be fetched\n    /// - Returns: Messages in a Saved Messages topic. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getSavedMessagesTopicHistory(\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        savedMessagesTopicId: Int64?\n    ) async throws -> Messages {\n        let query = GetSavedMessagesTopicHistory(\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset,\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the last message sent in a Saved Messages topic no later than the specified date\n    /// - Parameter date: Point in time (Unix timestamp) relative to which to search for messages\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic which message will be returned\n    /// - Returns: The last message sent in a Saved Messages topic no later than the specified date\n    public func getSavedMessagesTopicMessageByDate(\n        date: Int?,\n        savedMessagesTopicId: Int64?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSavedMessagesTopicMessageByDate(\n            date: date,\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the last message sent in a Saved Messages topic no later than the specified date\n    /// - Parameter date: Point in time (Unix timestamp) relative to which to search for messages\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic which message will be returned\n    /// - Returns: The last message sent in a Saved Messages topic no later than the specified date\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getSavedMessagesTopicMessageByDate(\n        date: Int?,\n        savedMessagesTopicId: Int64?\n    ) async throws -> Message {\n        let query = GetSavedMessagesTopicMessageByDate(\n            date: date,\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes all messages in a Saved Messages topic\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic which messages will be deleted\n    public func deleteSavedMessagesTopicHistory(\n        savedMessagesTopicId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteSavedMessagesTopicHistory(\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes all messages in a Saved Messages topic\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic which messages will be deleted\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteSavedMessagesTopicHistory(savedMessagesTopicId: Int64?) async throws -> Ok {\n        let query = DeleteSavedMessagesTopicHistory(\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes all messages between the specified dates in a Saved Messages topic. Messages sent in the last 30 seconds will not be deleted\n    /// - Parameter maxDate: The maximum date of the messages to delete\n    /// - Parameter minDate: The minimum date of the messages to delete\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic which messages will be deleted\n    public func deleteSavedMessagesTopicMessagesByDate(\n        maxDate: Int?,\n        minDate: Int?,\n        savedMessagesTopicId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteSavedMessagesTopicMessagesByDate(\n            maxDate: maxDate,\n            minDate: minDate,\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes all messages between the specified dates in a Saved Messages topic. Messages sent in the last 30 seconds will not be deleted\n    /// - Parameter maxDate: The maximum date of the messages to delete\n    /// - Parameter minDate: The minimum date of the messages to delete\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic which messages will be deleted\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteSavedMessagesTopicMessagesByDate(\n        maxDate: Int?,\n        minDate: Int?,\n        savedMessagesTopicId: Int64?\n    ) async throws -> Ok {\n        let query = DeleteSavedMessagesTopicMessagesByDate(\n            maxDate: maxDate,\n            minDate: minDate,\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the pinned state of a Saved Messages topic. There can be up to getOption(\"pinned_saved_messages_topic_count_max\") pinned topics. The limit can be increased with Telegram Premium\n    /// - Parameter isPinned: Pass true to pin the topic; pass false to unpin it\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic to pin or unpin\n    public func toggleSavedMessagesTopicIsPinned(\n        isPinned: Bool?,\n        savedMessagesTopicId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSavedMessagesTopicIsPinned(\n            isPinned: isPinned,\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the pinned state of a Saved Messages topic. There can be up to getOption(\"pinned_saved_messages_topic_count_max\") pinned topics. The limit can be increased with Telegram Premium\n    /// - Parameter isPinned: Pass true to pin the topic; pass false to unpin it\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic to pin or unpin\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleSavedMessagesTopicIsPinned(\n        isPinned: Bool?,\n        savedMessagesTopicId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleSavedMessagesTopicIsPinned(\n            isPinned: isPinned,\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the order of pinned Saved Messages topics\n    /// - Parameter savedMessagesTopicIds: Identifiers of the new pinned Saved Messages topics\n    public func setPinnedSavedMessagesTopics(\n        savedMessagesTopicIds: [Int64]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetPinnedSavedMessagesTopics(\n            savedMessagesTopicIds: savedMessagesTopicIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the order of pinned Saved Messages topics\n    /// - Parameter savedMessagesTopicIds: Identifiers of the new pinned Saved Messages topics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setPinnedSavedMessagesTopics(savedMessagesTopicIds: [Int64]?) async throws -> Ok {\n        let query = SetPinnedSavedMessagesTopics(\n            savedMessagesTopicIds: savedMessagesTopicIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a list of common group chats with a given user. Chats are sorted by their type and creation date\n    /// - Parameter limit: The maximum number of chats to be returned; up to 100\n    /// - Parameter offsetChatId: Chat identifier starting from which to return chats; use 0 for the first request\n    /// - Parameter userId: User identifier\n    /// - Returns: A list of common group chats with a given user\n    public func getGroupsInCommon(\n        limit: Int?,\n        offsetChatId: Int64?,\n        userId: Int64?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGroupsInCommon(\n            limit: limit,\n            offsetChatId: offsetChatId,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a list of common group chats with a given user. Chats are sorted by their type and creation date\n    /// - Parameter limit: The maximum number of chats to be returned; up to 100\n    /// - Parameter offsetChatId: Chat identifier starting from which to return chats; use 0 for the first request\n    /// - Parameter userId: User identifier\n    /// - Returns: A list of common group chats with a given user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getGroupsInCommon(\n        limit: Int?,\n        offsetChatId: Int64?,\n        userId: Int64?\n    ) async throws -> Chats {\n        let query = GetGroupsInCommon(\n            limit: limit,\n            offsetChatId: offsetChatId,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns messages in a chat. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib. This is an offline method if only_local is true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter fromMessageId: Identifier of the message starting from which history must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    /// - Parameter onlyLocal: Pass true to get only messages that are available without sending network requests\n    /// - Returns: Messages in a chat. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    public func getChatHistory(\n        chatId: Int64?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        onlyLocal: Bool?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatHistory(\n            chatId: chatId,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset,\n            onlyLocal: onlyLocal\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns messages in a chat. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib. This is an offline method if only_local is true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter fromMessageId: Identifier of the message starting from which history must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    /// - Parameter onlyLocal: Pass true to get only messages that are available without sending network requests\n    /// - Returns: Messages in a chat. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatHistory(\n        chatId: Int64?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        onlyLocal: Bool?\n    ) async throws -> Messages {\n        let query = GetChatHistory(\n            chatId: chatId,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset,\n            onlyLocal: onlyLocal\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns messages in a message thread of a message. Can be used only if messageProperties.can_get_message_thread == true. Message thread of a channel message is in the channel's linked supergroup. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter fromMessageId: Identifier of the message starting from which history must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter messageId: Message identifier, which thread history needs to be returned\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    /// - Returns: Messages in a message thread of a message. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    public func getMessageThreadHistory(\n        chatId: Int64?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        messageId: Int64?,\n        offset: Int?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageThreadHistory(\n            chatId: chatId,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            messageId: messageId,\n            offset: offset\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns messages in a message thread of a message. Can be used only if messageProperties.can_get_message_thread == true. Message thread of a channel message is in the channel's linked supergroup. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter fromMessageId: Identifier of the message starting from which history must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter messageId: Message identifier, which thread history needs to be returned\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    /// - Returns: Messages in a message thread of a message. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMessageThreadHistory(\n        chatId: Int64?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        messageId: Int64?,\n        offset: Int?\n    ) async throws -> Messages {\n        let query = GetMessageThreadHistory(\n            chatId: chatId,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            messageId: messageId,\n            offset: offset\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes all messages in the chat. Use chat.can_be_deleted_only_for_self and chat.can_be_deleted_for_all_users fields to find whether and how the method can be applied to the chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter removeFromChatList: Pass true to remove the chat from all chat lists\n    /// - Parameter revoke: Pass true to delete chat history for all users\n    public func deleteChatHistory(\n        chatId: Int64?,\n        removeFromChatList: Bool?,\n        revoke: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteChatHistory(\n            chatId: chatId,\n            removeFromChatList: removeFromChatList,\n            revoke: revoke\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes all messages in the chat. Use chat.can_be_deleted_only_for_self and chat.can_be_deleted_for_all_users fields to find whether and how the method can be applied to the chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter removeFromChatList: Pass true to remove the chat from all chat lists\n    /// - Parameter revoke: Pass true to delete chat history for all users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteChatHistory(\n        chatId: Int64?,\n        removeFromChatList: Bool?,\n        revoke: Bool?\n    ) async throws -> Ok {\n        let query = DeleteChatHistory(\n            chatId: chatId,\n            removeFromChatList: removeFromChatList,\n            revoke: revoke\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes a chat along with all messages in the corresponding chat for all chat members. For group chats this will release the usernames and remove all members. Use the field chat.can_be_deleted_for_all_users to find whether the method can be applied to the chat\n    /// - Parameter chatId: Chat identifier\n    public func deleteChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteChat(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes a chat along with all messages in the corresponding chat for all chat members. For group chats this will release the usernames and remove all members. Use the field chat.can_be_deleted_for_all_users to find whether the method can be applied to the chat\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteChat(chatId: Int64?) async throws -> Ok {\n        let query = DeleteChat(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for messages with given words in the chat. Returns the results in reverse chronological order, i.e. in order of decreasing message_id. Cannot be used in secret chats with a non-empty query (searchSecretMessages must be used instead), or without an enabled message database. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit. A combination of query, sender_id, filter and topic_id search criteria is expected to be supported, only if it is required for Telegram official application implementation\n    /// - Parameter chatId: Identifier of the chat in which to search messages\n    /// - Parameter filter: Additional filter for messages to search; pass null to search for all messages\n    /// - Parameter fromMessageId: Identifier of the message starting from which history must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number to get the specified message and some newer messages\n    /// - Parameter query: Query to search for\n    /// - Parameter senderId: Identifier of the sender of messages to search for; pass null to search for messages from any sender. Not supported in secret chats\n    /// - Parameter topicId: Pass topic identifier to search messages only in specific topic; pass null to search for messages in all topics\n    /// - Returns: The results in reverse chronological order, i.e. in order of decreasing message_id. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public func searchChatMessages(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        query: String?,\n        senderId: MessageSender?,\n        topicId: MessageTopic?,\n        completion: @escaping (Result<FoundChatMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchChatMessages(\n            chatId: chatId,\n            filter: filter,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset,\n            query: query,\n            senderId: senderId,\n            topicId: topicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for messages with given words in the chat. Returns the results in reverse chronological order, i.e. in order of decreasing message_id. Cannot be used in secret chats with a non-empty query (searchSecretMessages must be used instead), or without an enabled message database. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit. A combination of query, sender_id, filter and topic_id search criteria is expected to be supported, only if it is required for Telegram official application implementation\n    /// - Parameter chatId: Identifier of the chat in which to search messages\n    /// - Parameter filter: Additional filter for messages to search; pass null to search for all messages\n    /// - Parameter fromMessageId: Identifier of the message starting from which history must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number to get the specified message and some newer messages\n    /// - Parameter query: Query to search for\n    /// - Parameter senderId: Identifier of the sender of messages to search for; pass null to search for messages from any sender. Not supported in secret chats\n    /// - Parameter topicId: Pass topic identifier to search messages only in specific topic; pass null to search for messages in all topics\n    /// - Returns: The results in reverse chronological order, i.e. in order of decreasing message_id. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchChatMessages(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        query: String?,\n        senderId: MessageSender?,\n        topicId: MessageTopic?\n    ) async throws -> FoundChatMessages {\n        let query = SearchChatMessages(\n            chatId: chatId,\n            filter: filter,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset,\n            query: query,\n            senderId: senderId,\n            topicId: topicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for messages in all chats except secret chats. Returns the results in reverse chronological order (i.e., in order of decreasing (date, chat_id, message_id)). For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter chatList: Chat list in which to search messages; pass null to search in all chats regardless of their chat list. Only Main and Archive chat lists are supported\n    /// - Parameter chatTypeFilter: Additional filter for type of the chat of the searched messages; pass null to search for messages in all chats\n    /// - Parameter filter: Additional filter for messages to search; pass null to search for all messages. Filters searchMessagesFilterMention, searchMessagesFilterUnreadMention, searchMessagesFilterUnreadReaction, searchMessagesFilterUnreadPollVote, searchMessagesFilterFailedToSend, and searchMessagesFilterPinned are unsupported in this function\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter maxDate: If not 0, the maximum date of the messages to return\n    /// - Parameter minDate: If not 0, the minimum date of the messages to return\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter query: Query to search for\n    /// - Returns: The results in reverse chronological order (i.e., in order of decreasing (date, chat_id, message_id)). For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public func searchMessages(\n        chatList: ChatList?,\n        chatTypeFilter: SearchMessagesChatTypeFilter?,\n        filter: SearchMessagesFilter?,\n        limit: Int?,\n        maxDate: Int?,\n        minDate: Int?,\n        offset: String?,\n        query: String?,\n        completion: @escaping (Result<FoundMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchMessages(\n            chatList: chatList,\n            chatTypeFilter: chatTypeFilter,\n            filter: filter,\n            limit: limit,\n            maxDate: maxDate,\n            minDate: minDate,\n            offset: offset,\n            query: query\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for messages in all chats except secret chats. Returns the results in reverse chronological order (i.e., in order of decreasing (date, chat_id, message_id)). For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter chatList: Chat list in which to search messages; pass null to search in all chats regardless of their chat list. Only Main and Archive chat lists are supported\n    /// - Parameter chatTypeFilter: Additional filter for type of the chat of the searched messages; pass null to search for messages in all chats\n    /// - Parameter filter: Additional filter for messages to search; pass null to search for all messages. Filters searchMessagesFilterMention, searchMessagesFilterUnreadMention, searchMessagesFilterUnreadReaction, searchMessagesFilterUnreadPollVote, searchMessagesFilterFailedToSend, and searchMessagesFilterPinned are unsupported in this function\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter maxDate: If not 0, the maximum date of the messages to return\n    /// - Parameter minDate: If not 0, the minimum date of the messages to return\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter query: Query to search for\n    /// - Returns: The results in reverse chronological order (i.e., in order of decreasing (date, chat_id, message_id)). For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchMessages(\n        chatList: ChatList?,\n        chatTypeFilter: SearchMessagesChatTypeFilter?,\n        filter: SearchMessagesFilter?,\n        limit: Int?,\n        maxDate: Int?,\n        minDate: Int?,\n        offset: String?,\n        query: String?\n    ) async throws -> FoundMessages {\n        let query = SearchMessages(\n            chatList: chatList,\n            chatTypeFilter: chatTypeFilter,\n            filter: filter,\n            limit: limit,\n            maxDate: maxDate,\n            minDate: minDate,\n            offset: offset,\n            query: query\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for messages in secret chats. Returns the results in reverse chronological order. For optimal performance, the number of returned messages is chosen by TDLib\n    /// - Parameter chatId: Identifier of the chat in which to search. Specify 0 to search in all secret chats\n    /// - Parameter filter: Additional filter for messages to search; pass null to search for all messages\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter query: Query to search for. If empty, searchChatMessages must be used instead\n    /// - Returns: The results in reverse chronological order. For optimal performance, the number of returned messages is chosen by TDLib\n    public func searchSecretMessages(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        limit: Int?,\n        offset: String?,\n        query: String?,\n        completion: @escaping (Result<FoundMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchSecretMessages(\n            chatId: chatId,\n            filter: filter,\n            limit: limit,\n            offset: offset,\n            query: query\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for messages in secret chats. Returns the results in reverse chronological order. For optimal performance, the number of returned messages is chosen by TDLib\n    /// - Parameter chatId: Identifier of the chat in which to search. Specify 0 to search in all secret chats\n    /// - Parameter filter: Additional filter for messages to search; pass null to search for all messages\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter query: Query to search for. If empty, searchChatMessages must be used instead\n    /// - Returns: The results in reverse chronological order. For optimal performance, the number of returned messages is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchSecretMessages(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        limit: Int?,\n        offset: String?,\n        query: String?\n    ) async throws -> FoundMessages {\n        let query = SearchSecretMessages(\n            chatId: chatId,\n            filter: filter,\n            limit: limit,\n            offset: offset,\n            query: query\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for messages tagged by the given reaction and with the given words in the Saved Messages chat; for Telegram Premium users only. Returns the results in reverse chronological order, i.e. in order of decreasing message_id. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter fromMessageId: Identifier of the message starting from which messages must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number to get the specified message and some newer messages\n    /// - Parameter query: Query to search for\n    /// - Parameter savedMessagesTopicId: If not 0, only messages in the specified Saved Messages topic will be considered; pass 0 to consider all messages\n    /// - Parameter tag: Tag to search for; pass null to return all suitable messages\n    /// - Returns: The results in reverse chronological order, i.e. in order of decreasing message_id. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public func searchSavedMessages(\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        query: String?,\n        savedMessagesTopicId: Int64?,\n        tag: ReactionType?,\n        completion: @escaping (Result<FoundChatMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchSavedMessages(\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset,\n            query: query,\n            savedMessagesTopicId: savedMessagesTopicId,\n            tag: tag\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for messages tagged by the given reaction and with the given words in the Saved Messages chat; for Telegram Premium users only. Returns the results in reverse chronological order, i.e. in order of decreasing message_id. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter fromMessageId: Identifier of the message starting from which messages must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number to get the specified message and some newer messages\n    /// - Parameter query: Query to search for\n    /// - Parameter savedMessagesTopicId: If not 0, only messages in the specified Saved Messages topic will be considered; pass 0 to consider all messages\n    /// - Parameter tag: Tag to search for; pass null to return all suitable messages\n    /// - Returns: The results in reverse chronological order, i.e. in order of decreasing message_id. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchSavedMessages(\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        query: String?,\n        savedMessagesTopicId: Int64?,\n        tag: ReactionType?\n    ) async throws -> FoundChatMessages {\n        let query = SearchSavedMessages(\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset,\n            query: query,\n            savedMessagesTopicId: savedMessagesTopicId,\n            tag: tag\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for call and group call messages. Returns the results in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter onlyMissed: Pass true to search only for messages with missed/declined calls\n    /// - Returns: The results in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    public func searchCallMessages(\n        limit: Int?,\n        offset: String?,\n        onlyMissed: Bool?,\n        completion: @escaping (Result<FoundMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchCallMessages(\n            limit: limit,\n            offset: offset,\n            onlyMissed: onlyMissed\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for call and group call messages. Returns the results in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter onlyMissed: Pass true to search only for messages with missed/declined calls\n    /// - Returns: The results in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchCallMessages(\n        limit: Int?,\n        offset: String?,\n        onlyMissed: Bool?\n    ) async throws -> FoundMessages {\n        let query = SearchCallMessages(\n            limit: limit,\n            offset: offset,\n            onlyMissed: onlyMissed\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for outgoing messages with content of the type messageDocument in all chats except secret chats. Returns the results in reverse chronological order\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100\n    /// - Parameter query: Query to search for in document file name and message caption\n    /// - Returns: The results in reverse chronological order\n    public func searchOutgoingDocumentMessages(\n        limit: Int?,\n        query: String?,\n        completion: @escaping (Result<FoundMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchOutgoingDocumentMessages(\n            limit: limit,\n            query: query\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for outgoing messages with content of the type messageDocument in all chats except secret chats. Returns the results in reverse chronological order\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100\n    /// - Parameter query: Query to search for in document file name and message caption\n    /// - Returns: The results in reverse chronological order\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchOutgoingDocumentMessages(\n        limit: Int?,\n        query: String?\n    ) async throws -> FoundMessages {\n        let query = SearchOutgoingDocumentMessages(\n            limit: limit,\n            query: query\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks public post search limits without actually performing the search\n    /// - Parameter query: Query that will be searched for\n    public func getPublicPostSearchLimits(\n        query: String?,\n        completion: @escaping (Result<PublicPostSearchLimits, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPublicPostSearchLimits(\n            query: query\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks public post search limits without actually performing the search\n    /// - Parameter query: Query that will be searched for\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPublicPostSearchLimits(query: String?) async throws -> PublicPostSearchLimits {\n        let query = GetPublicPostSearchLimits(\n            query: query\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for public channel posts using the given query. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter query: Query to search for\n    /// - Parameter starCount: The Telegram Star amount the user agreed to pay for the search; pass 0 for free searches\n    /// - Returns: For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public func searchPublicPosts(\n        limit: Int?,\n        offset: String?,\n        query: String?,\n        starCount: Int64?,\n        completion: @escaping (Result<FoundPublicPosts, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchPublicPosts(\n            limit: limit,\n            offset: offset,\n            query: query,\n            starCount: starCount\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for public channel posts using the given query. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter query: Query to search for\n    /// - Parameter starCount: The Telegram Star amount the user agreed to pay for the search; pass 0 for free searches\n    /// - Returns: For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchPublicPosts(\n        limit: Int?,\n        offset: String?,\n        query: String?,\n        starCount: Int64?\n    ) async throws -> FoundPublicPosts {\n        let query = SearchPublicPosts(\n            limit: limit,\n            offset: offset,\n            query: query,\n            starCount: starCount\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for public channel posts containing the given hashtag or cashtag. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter tag: Hashtag or cashtag to search for\n    /// - Returns: For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public func searchPublicMessagesByTag(\n        limit: Int?,\n        offset: String?,\n        tag: String?,\n        completion: @escaping (Result<FoundMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchPublicMessagesByTag(\n            limit: limit,\n            offset: offset,\n            tag: tag\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for public channel posts containing the given hashtag or cashtag. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter limit: The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter tag: Hashtag or cashtag to search for\n    /// - Returns: For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchPublicMessagesByTag(\n        limit: Int?,\n        offset: String?,\n        tag: String?\n    ) async throws -> FoundMessages {\n        let query = SearchPublicMessagesByTag(\n            limit: limit,\n            offset: offset,\n            tag: tag\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for public stories containing the given hashtag or cashtag. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter limit: The maximum number of stories to be returned; up to 100. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the stories to search for; pass 0 to search stories in all chats\n    /// - Parameter tag: Hashtag or cashtag to search for\n    /// - Returns: For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    public func searchPublicStoriesByTag(\n        limit: Int?,\n        offset: String?,\n        storyPosterChatId: Int64?,\n        tag: String?,\n        completion: @escaping (Result<FoundStories, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchPublicStoriesByTag(\n            limit: limit,\n            offset: offset,\n            storyPosterChatId: storyPosterChatId,\n            tag: tag\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for public stories containing the given hashtag or cashtag. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter limit: The maximum number of stories to be returned; up to 100. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the stories to search for; pass 0 to search stories in all chats\n    /// - Parameter tag: Hashtag or cashtag to search for\n    /// - Returns: For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchPublicStoriesByTag(\n        limit: Int?,\n        offset: String?,\n        storyPosterChatId: Int64?,\n        tag: String?\n    ) async throws -> FoundStories {\n        let query = SearchPublicStoriesByTag(\n            limit: limit,\n            offset: offset,\n            storyPosterChatId: storyPosterChatId,\n            tag: tag\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for public stories by the given address location. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter address: Address of the location\n    /// - Parameter limit: The maximum number of stories to be returned; up to 100. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    public func searchPublicStoriesByLocation(\n        address: LocationAddress?,\n        limit: Int?,\n        offset: String?,\n        completion: @escaping (Result<FoundStories, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchPublicStoriesByLocation(\n            address: address,\n            limit: limit,\n            offset: offset\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for public stories by the given address location. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter address: Address of the location\n    /// - Parameter limit: The maximum number of stories to be returned; up to 100. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchPublicStoriesByLocation(\n        address: LocationAddress?,\n        limit: Int?,\n        offset: String?\n    ) async throws -> FoundStories {\n        let query = SearchPublicStoriesByLocation(\n            address: address,\n            limit: limit,\n            offset: offset\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for public stories from the given venue. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter limit: The maximum number of stories to be returned; up to 100. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter venueId: Identifier of the venue in the provider database\n    /// - Parameter venueProvider: Provider of the venue\n    /// - Returns: For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    public func searchPublicStoriesByVenue(\n        limit: Int?,\n        offset: String?,\n        venueId: String?,\n        venueProvider: String?,\n        completion: @escaping (Result<FoundStories, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchPublicStoriesByVenue(\n            limit: limit,\n            offset: offset,\n            venueId: venueId,\n            venueProvider: venueProvider\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for public stories from the given venue. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter limit: The maximum number of stories to be returned; up to 100. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter venueId: Identifier of the venue in the provider database\n    /// - Parameter venueProvider: Provider of the venue\n    /// - Returns: For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchPublicStoriesByVenue(\n        limit: Int?,\n        offset: String?,\n        venueId: String?,\n        venueProvider: String?\n    ) async throws -> FoundStories {\n        let query = SearchPublicStoriesByVenue(\n            limit: limit,\n            offset: offset,\n            venueId: venueId,\n            venueProvider: venueProvider\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns recently searched for hashtags or cashtags by their prefix\n    /// - Parameter limit: The maximum number of items to be returned\n    /// - Parameter tagPrefix: Prefix of hashtags or cashtags to return\n    /// - Returns: Recently searched for hashtags or cashtags by their prefix\n    public func getSearchedForTags(\n        limit: Int?,\n        tagPrefix: String?,\n        completion: @escaping (Result<Hashtags, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSearchedForTags(\n            limit: limit,\n            tagPrefix: tagPrefix\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns recently searched for hashtags or cashtags by their prefix\n    /// - Parameter limit: The maximum number of items to be returned\n    /// - Parameter tagPrefix: Prefix of hashtags or cashtags to return\n    /// - Returns: Recently searched for hashtags or cashtags by their prefix\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getSearchedForTags(\n        limit: Int?,\n        tagPrefix: String?\n    ) async throws -> Hashtags {\n        let query = GetSearchedForTags(\n            limit: limit,\n            tagPrefix: tagPrefix\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes a hashtag or a cashtag from the list of recently searched for hashtags or cashtags\n    /// - Parameter tag: Hashtag or cashtag to delete\n    public func removeSearchedForTag(\n        tag: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveSearchedForTag(\n            tag: tag\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes a hashtag or a cashtag from the list of recently searched for hashtags or cashtags\n    /// - Parameter tag: Hashtag or cashtag to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeSearchedForTag(tag: String?) async throws -> Ok {\n        let query = RemoveSearchedForTag(\n            tag: tag\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Clears the list of recently searched for hashtags or cashtags\n    /// - Parameter clearCashtags: Pass true to clear the list of recently searched for cashtags; otherwise, the list of recently searched for hashtags will be cleared\n    public func clearSearchedForTags(\n        clearCashtags: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ClearSearchedForTags(\n            clearCashtags: clearCashtags\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Clears the list of recently searched for hashtags or cashtags\n    /// - Parameter clearCashtags: Pass true to clear the list of recently searched for cashtags; otherwise, the list of recently searched for hashtags will be cleared\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func clearSearchedForTags(clearCashtags: Bool?) async throws -> Ok {\n        let query = ClearSearchedForTags(\n            clearCashtags: clearCashtags\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes all call messages\n    /// - Parameter revoke: Pass true to delete the messages for all users\n    public func deleteAllCallMessages(\n        revoke: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteAllCallMessages(\n            revoke: revoke\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes all call messages\n    /// - Parameter revoke: Pass true to delete the messages for all users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteAllCallMessages(revoke: Bool?) async throws -> Ok {\n        let query = DeleteAllCallMessages(\n            revoke: revoke\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about the recent locations of chat members that were sent to the chat. Returns up to 1 location message per user\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter limit: The maximum number of messages to be returned\n    /// - Returns: Information about the recent locations of chat members that were sent to the chat. Returns up to 1 location message per user\n    public func searchChatRecentLocationMessages(\n        chatId: Int64?,\n        limit: Int?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchChatRecentLocationMessages(\n            chatId: chatId,\n            limit: limit\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about the recent locations of chat members that were sent to the chat. Returns up to 1 location message per user\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter limit: The maximum number of messages to be returned\n    /// - Returns: Information about the recent locations of chat members that were sent to the chat. Returns up to 1 location message per user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchChatRecentLocationMessages(\n        chatId: Int64?,\n        limit: Int?\n    ) async throws -> Messages {\n        let query = SearchChatRecentLocationMessages(\n            chatId: chatId,\n            limit: limit\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the last message sent in a chat no later than the specified date. Returns a 404 error if such message doesn't exist\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter date: Point in time (Unix timestamp) relative to which to search for messages\n    /// - Returns: The last message sent in a chat no later than the specified date. Returns a 404 error if such message doesn't exist\n    public func getChatMessageByDate(\n        chatId: Int64?,\n        date: Int?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatMessageByDate(\n            chatId: chatId,\n            date: date\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the last message sent in a chat no later than the specified date. Returns a 404 error if such message doesn't exist\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter date: Point in time (Unix timestamp) relative to which to search for messages\n    /// - Returns: The last message sent in a chat no later than the specified date. Returns a 404 error if such message doesn't exist\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatMessageByDate(\n        chatId: Int64?,\n        date: Int?\n    ) async throws -> Message {\n        let query = GetChatMessageByDate(\n            chatId: chatId,\n            date: date\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns sparse positions of messages of the specified type in the chat to be used for shared media scroll implementation. Returns the results in reverse chronological order (i.e., in order of decreasing message_id). Cannot be used in secret chats or with searchMessagesFilterFailedToSend filter without an enabled message database\n    /// - Parameter chatId: Identifier of the chat in which to return information about message positions\n    /// - Parameter filter: Filter for message content. Filters searchMessagesFilterEmpty, searchMessagesFilterMention, searchMessagesFilterUnreadMention, searchMessagesFilterUnreadReaction, and searchMessagesFilterUnreadPollVote are unsupported in this function\n    /// - Parameter fromMessageId: The message identifier from which to return information about message positions\n    /// - Parameter limit: The expected number of message positions to be returned; 50-2000. A smaller number of positions can be returned, if there are not enough appropriate messages\n    /// - Parameter savedMessagesTopicId: If not 0, only messages in the specified Saved Messages topic will be considered; pass 0 to consider all messages, or for chats other than Saved Messages\n    /// - Returns: Sparse positions of messages of the specified type in the chat to be used for shared media scroll implementation. Returns the results in reverse chronological order (i.e., in order of decreasing message_id)\n    public func getChatSparseMessagePositions(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        savedMessagesTopicId: Int64?,\n        completion: @escaping (Result<MessagePositions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatSparseMessagePositions(\n            chatId: chatId,\n            filter: filter,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns sparse positions of messages of the specified type in the chat to be used for shared media scroll implementation. Returns the results in reverse chronological order (i.e., in order of decreasing message_id). Cannot be used in secret chats or with searchMessagesFilterFailedToSend filter without an enabled message database\n    /// - Parameter chatId: Identifier of the chat in which to return information about message positions\n    /// - Parameter filter: Filter for message content. Filters searchMessagesFilterEmpty, searchMessagesFilterMention, searchMessagesFilterUnreadMention, searchMessagesFilterUnreadReaction, and searchMessagesFilterUnreadPollVote are unsupported in this function\n    /// - Parameter fromMessageId: The message identifier from which to return information about message positions\n    /// - Parameter limit: The expected number of message positions to be returned; 50-2000. A smaller number of positions can be returned, if there are not enough appropriate messages\n    /// - Parameter savedMessagesTopicId: If not 0, only messages in the specified Saved Messages topic will be considered; pass 0 to consider all messages, or for chats other than Saved Messages\n    /// - Returns: Sparse positions of messages of the specified type in the chat to be used for shared media scroll implementation. Returns the results in reverse chronological order (i.e., in order of decreasing message_id)\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatSparseMessagePositions(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        savedMessagesTopicId: Int64?\n    ) async throws -> MessagePositions {\n        let query = GetChatSparseMessagePositions(\n            chatId: chatId,\n            filter: filter,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about the next messages of the specified type in the chat split by days. Returns the results in reverse chronological order. Can return partial result for the last returned day. Behavior of this method depends on the value of the option \"utc_time_offset\"\n    /// - Parameter chatId: Identifier of the chat in which to return information about messages\n    /// - Parameter filter: Filter for message content. Filters searchMessagesFilterEmpty, searchMessagesFilterMention, searchMessagesFilterUnreadMention, searchMessagesFilterUnreadReaction, and searchMessagesFilterUnreadPollVote are unsupported in this function\n    /// - Parameter fromMessageId: The message identifier from which to return information about messages; use 0 to get results from the last message\n    /// - Parameter topicId: Pass topic identifier to get the result only in specific topic; pass null to get the result in all topics; forum topics and message threads aren't supported\n    /// - Returns: Information about the next messages of the specified type in the chat split by days. Returns the results in reverse chronological order. Can return partial result for the last returned day\n    public func getChatMessageCalendar(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        fromMessageId: Int64?,\n        topicId: MessageTopic?,\n        completion: @escaping (Result<MessageCalendar, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatMessageCalendar(\n            chatId: chatId,\n            filter: filter,\n            fromMessageId: fromMessageId,\n            topicId: topicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about the next messages of the specified type in the chat split by days. Returns the results in reverse chronological order. Can return partial result for the last returned day. Behavior of this method depends on the value of the option \"utc_time_offset\"\n    /// - Parameter chatId: Identifier of the chat in which to return information about messages\n    /// - Parameter filter: Filter for message content. Filters searchMessagesFilterEmpty, searchMessagesFilterMention, searchMessagesFilterUnreadMention, searchMessagesFilterUnreadReaction, and searchMessagesFilterUnreadPollVote are unsupported in this function\n    /// - Parameter fromMessageId: The message identifier from which to return information about messages; use 0 to get results from the last message\n    /// - Parameter topicId: Pass topic identifier to get the result only in specific topic; pass null to get the result in all topics; forum topics and message threads aren't supported\n    /// - Returns: Information about the next messages of the specified type in the chat split by days. Returns the results in reverse chronological order. Can return partial result for the last returned day\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatMessageCalendar(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        fromMessageId: Int64?,\n        topicId: MessageTopic?\n    ) async throws -> MessageCalendar {\n        let query = GetChatMessageCalendar(\n            chatId: chatId,\n            filter: filter,\n            fromMessageId: fromMessageId,\n            topicId: topicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns approximate number of messages of the specified type in the chat or its topic\n    /// - Parameter chatId: Identifier of the chat in which to count messages\n    /// - Parameter filter: Filter for message content; searchMessagesFilterEmpty is unsupported in this function\n    /// - Parameter returnLocal: Pass true to get the number of messages without sending network requests, or -1 if the number of messages is unknown locally\n    /// - Parameter topicId: Pass topic identifier to get number of messages only in specific topic; pass null to get number of messages in all topics; message threads aren't supported\n    /// - Returns: Approximate number of messages of the specified type in the chat or its topic\n    public func getChatMessageCount(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        returnLocal: Bool?,\n        topicId: MessageTopic?,\n        completion: @escaping (Result<Count, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatMessageCount(\n            chatId: chatId,\n            filter: filter,\n            returnLocal: returnLocal,\n            topicId: topicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns approximate number of messages of the specified type in the chat or its topic\n    /// - Parameter chatId: Identifier of the chat in which to count messages\n    /// - Parameter filter: Filter for message content; searchMessagesFilterEmpty is unsupported in this function\n    /// - Parameter returnLocal: Pass true to get the number of messages without sending network requests, or -1 if the number of messages is unknown locally\n    /// - Parameter topicId: Pass topic identifier to get number of messages only in specific topic; pass null to get number of messages in all topics; message threads aren't supported\n    /// - Returns: Approximate number of messages of the specified type in the chat or its topic\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatMessageCount(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        returnLocal: Bool?,\n        topicId: MessageTopic?\n    ) async throws -> Count {\n        let query = GetChatMessageCount(\n            chatId: chatId,\n            filter: filter,\n            returnLocal: returnLocal,\n            topicId: topicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns approximate 1-based position of a message among messages, which can be found by the specified filter in the chat and topic. Cannot be used in secret chats\n    /// - Parameter chatId: Identifier of the chat in which to find message position\n    /// - Parameter filter: Filter for message content; searchMessagesFilterEmpty, searchMessagesFilterUnreadMention, searchMessagesFilterUnreadReaction, searchMessagesFilterUnreadPollVote, and searchMessagesFilterFailedToSend are unsupported in this function\n    /// - Parameter messageId: Message identifier\n    /// - Parameter topicId: Pass topic identifier to get position among messages only in specific topic; pass null to get position among all chat messages; message threads aren't supported\n    /// - Returns: Approximate 1-based position of a message among messages, which can be found by the specified filter in the chat and topic\n    public func getChatMessagePosition(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        messageId: Int64?,\n        topicId: MessageTopic?,\n        completion: @escaping (Result<Count, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatMessagePosition(\n            chatId: chatId,\n            filter: filter,\n            messageId: messageId,\n            topicId: topicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns approximate 1-based position of a message among messages, which can be found by the specified filter in the chat and topic. Cannot be used in secret chats\n    /// - Parameter chatId: Identifier of the chat in which to find message position\n    /// - Parameter filter: Filter for message content; searchMessagesFilterEmpty, searchMessagesFilterUnreadMention, searchMessagesFilterUnreadReaction, searchMessagesFilterUnreadPollVote, and searchMessagesFilterFailedToSend are unsupported in this function\n    /// - Parameter messageId: Message identifier\n    /// - Parameter topicId: Pass topic identifier to get position among messages only in specific topic; pass null to get position among all chat messages; message threads aren't supported\n    /// - Returns: Approximate 1-based position of a message among messages, which can be found by the specified filter in the chat and topic\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatMessagePosition(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        messageId: Int64?,\n        topicId: MessageTopic?\n    ) async throws -> Count {\n        let query = GetChatMessagePosition(\n            chatId: chatId,\n            filter: filter,\n            messageId: messageId,\n            topicId: topicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns all scheduled messages in a chat. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: All scheduled messages in a chat. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    public func getChatScheduledMessages(\n        chatId: Int64?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatScheduledMessages(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns all scheduled messages in a chat. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: All scheduled messages in a chat. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatScheduledMessages(chatId: Int64?) async throws -> Messages {\n        let query = GetChatScheduledMessages(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns sponsored messages to be shown in a chat; for channel chats and chats with bots only\n    /// - Parameter chatId: Identifier of the chat\n    /// - Returns: Sponsored messages to be shown in a chat\n    public func getChatSponsoredMessages(\n        chatId: Int64?,\n        completion: @escaping (Result<SponsoredMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatSponsoredMessages(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns sponsored messages to be shown in a chat; for channel chats and chats with bots only\n    /// - Parameter chatId: Identifier of the chat\n    /// - Returns: Sponsored messages to be shown in a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatSponsoredMessages(chatId: Int64?) async throws -> SponsoredMessages {\n        let query = GetChatSponsoredMessages(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that the user opened the sponsored chat via the button, the name, the chat photo, a mention in the sponsored message text, or the media in the sponsored message\n    /// - Parameter chatId: Chat identifier of the sponsored message\n    /// - Parameter fromFullscreen: Pass true if the user expanded the video from the sponsored message fullscreen before the click\n    /// - Parameter isMediaClick: Pass true if the media was clicked in the sponsored message\n    /// - Parameter messageId: Identifier of the sponsored message\n    public func clickChatSponsoredMessage(\n        chatId: Int64?,\n        fromFullscreen: Bool?,\n        isMediaClick: Bool?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ClickChatSponsoredMessage(\n            chatId: chatId,\n            fromFullscreen: fromFullscreen,\n            isMediaClick: isMediaClick,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that the user opened the sponsored chat via the button, the name, the chat photo, a mention in the sponsored message text, or the media in the sponsored message\n    /// - Parameter chatId: Chat identifier of the sponsored message\n    /// - Parameter fromFullscreen: Pass true if the user expanded the video from the sponsored message fullscreen before the click\n    /// - Parameter isMediaClick: Pass true if the media was clicked in the sponsored message\n    /// - Parameter messageId: Identifier of the sponsored message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func clickChatSponsoredMessage(\n        chatId: Int64?,\n        fromFullscreen: Bool?,\n        isMediaClick: Bool?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = ClickChatSponsoredMessage(\n            chatId: chatId,\n            fromFullscreen: fromFullscreen,\n            isMediaClick: isMediaClick,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Reports a sponsored message to Telegram moderators\n    /// - Parameter chatId: Chat identifier of the sponsored message\n    /// - Parameter messageId: Identifier of the sponsored message\n    /// - Parameter optionId: Option identifier chosen by the user; leave empty for the initial request\n    public func reportChatSponsoredMessage(\n        chatId: Int64?,\n        messageId: Int64?,\n        optionId: Data?,\n        completion: @escaping (Result<ReportSponsoredResult, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportChatSponsoredMessage(\n            chatId: chatId,\n            messageId: messageId,\n            optionId: optionId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Reports a sponsored message to Telegram moderators\n    /// - Parameter chatId: Chat identifier of the sponsored message\n    /// - Parameter messageId: Identifier of the sponsored message\n    /// - Parameter optionId: Option identifier chosen by the user; leave empty for the initial request\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func reportChatSponsoredMessage(\n        chatId: Int64?,\n        messageId: Int64?,\n        optionId: Data?\n    ) async throws -> ReportSponsoredResult {\n        let query = ReportChatSponsoredMessage(\n            chatId: chatId,\n            messageId: messageId,\n            optionId: optionId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns sponsored chats to be shown in the search results\n    /// - Parameter query: Query the user searches for\n    /// - Returns: Sponsored chats to be shown in the search results\n    public func getSearchSponsoredChats(\n        query: String?,\n        completion: @escaping (Result<SponsoredChats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSearchSponsoredChats(\n            query: query\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns sponsored chats to be shown in the search results\n    /// - Parameter query: Query the user searches for\n    /// - Returns: Sponsored chats to be shown in the search results\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getSearchSponsoredChats(query: String?) async throws -> SponsoredChats {\n        let query = GetSearchSponsoredChats(\n            query: query\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that the user fully viewed a sponsored chat\n    /// - Parameter sponsoredChatUniqueId: Unique identifier of the sponsored chat\n    public func viewSponsoredChat(\n        sponsoredChatUniqueId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ViewSponsoredChat(\n            sponsoredChatUniqueId: sponsoredChatUniqueId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that the user fully viewed a sponsored chat\n    /// - Parameter sponsoredChatUniqueId: Unique identifier of the sponsored chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func viewSponsoredChat(sponsoredChatUniqueId: Int64?) async throws -> Ok {\n        let query = ViewSponsoredChat(\n            sponsoredChatUniqueId: sponsoredChatUniqueId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that the user opened a sponsored chat\n    /// - Parameter sponsoredChatUniqueId: Unique identifier of the sponsored chat\n    public func openSponsoredChat(\n        sponsoredChatUniqueId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = OpenSponsoredChat(\n            sponsoredChatUniqueId: sponsoredChatUniqueId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that the user opened a sponsored chat\n    /// - Parameter sponsoredChatUniqueId: Unique identifier of the sponsored chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func openSponsoredChat(sponsoredChatUniqueId: Int64?) async throws -> Ok {\n        let query = OpenSponsoredChat(\n            sponsoredChatUniqueId: sponsoredChatUniqueId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Reports a sponsored chat to Telegram moderators\n    /// - Parameter optionId: Option identifier chosen by the user; leave empty for the initial request\n    /// - Parameter sponsoredChatUniqueId: Unique identifier of the sponsored chat\n    public func reportSponsoredChat(\n        optionId: Data?,\n        sponsoredChatUniqueId: Int64?,\n        completion: @escaping (Result<ReportSponsoredResult, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportSponsoredChat(\n            optionId: optionId,\n            sponsoredChatUniqueId: sponsoredChatUniqueId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Reports a sponsored chat to Telegram moderators\n    /// - Parameter optionId: Option identifier chosen by the user; leave empty for the initial request\n    /// - Parameter sponsoredChatUniqueId: Unique identifier of the sponsored chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func reportSponsoredChat(\n        optionId: Data?,\n        sponsoredChatUniqueId: Int64?\n    ) async throws -> ReportSponsoredResult {\n        let query = ReportSponsoredChat(\n            optionId: optionId,\n            sponsoredChatUniqueId: sponsoredChatUniqueId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns advertisements to be shown while a video from a message is watched. Available only if messageProperties.can_get_video_advertisements\n    /// - Parameter chatId: Identifier of the chat with the message\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Advertisements to be shown while a video from a message is watched\n    public func getVideoMessageAdvertisements(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<VideoMessageAdvertisements, Swift.Error>) -> Void\n    ) throws {\n        let query = GetVideoMessageAdvertisements(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns advertisements to be shown while a video from a message is watched. Available only if messageProperties.can_get_video_advertisements\n    /// - Parameter chatId: Identifier of the chat with the message\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: Advertisements to be shown while a video from a message is watched\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getVideoMessageAdvertisements(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> VideoMessageAdvertisements {\n        let query = GetVideoMessageAdvertisements(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that the user viewed a video message advertisement\n    /// - Parameter advertisementUniqueId: Unique identifier of the advertisement\n    public func viewVideoMessageAdvertisement(\n        advertisementUniqueId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ViewVideoMessageAdvertisement(\n            advertisementUniqueId: advertisementUniqueId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that the user viewed a video message advertisement\n    /// - Parameter advertisementUniqueId: Unique identifier of the advertisement\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func viewVideoMessageAdvertisement(advertisementUniqueId: Int64?) async throws -> Ok {\n        let query = ViewVideoMessageAdvertisement(\n            advertisementUniqueId: advertisementUniqueId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that the user clicked a video message advertisement\n    /// - Parameter advertisementUniqueId: Unique identifier of the advertisement\n    public func clickVideoMessageAdvertisement(\n        advertisementUniqueId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ClickVideoMessageAdvertisement(\n            advertisementUniqueId: advertisementUniqueId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that the user clicked a video message advertisement\n    /// - Parameter advertisementUniqueId: Unique identifier of the advertisement\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func clickVideoMessageAdvertisement(advertisementUniqueId: Int64?) async throws -> Ok {\n        let query = ClickVideoMessageAdvertisement(\n            advertisementUniqueId: advertisementUniqueId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Reports a video message advertisement to Telegram moderators\n    /// - Parameter advertisementUniqueId: Unique identifier of the advertisement\n    /// - Parameter optionId: Option identifier chosen by the user; leave empty for the initial request\n    public func reportVideoMessageAdvertisement(\n        advertisementUniqueId: Int64?,\n        optionId: Data?,\n        completion: @escaping (Result<ReportSponsoredResult, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportVideoMessageAdvertisement(\n            advertisementUniqueId: advertisementUniqueId,\n            optionId: optionId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Reports a video message advertisement to Telegram moderators\n    /// - Parameter advertisementUniqueId: Unique identifier of the advertisement\n    /// - Parameter optionId: Option identifier chosen by the user; leave empty for the initial request\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func reportVideoMessageAdvertisement(\n        advertisementUniqueId: Int64?,\n        optionId: Data?\n    ) async throws -> ReportSponsoredResult {\n        let query = ReportVideoMessageAdvertisement(\n            advertisementUniqueId: advertisementUniqueId,\n            optionId: optionId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes an active notification from notification list. Needs to be called only if the notification is removed by the current user\n    /// - Parameter notificationGroupId: Identifier of notification group to which the notification belongs\n    /// - Parameter notificationId: Identifier of removed notification\n    public func removeNotification(\n        notificationGroupId: Int?,\n        notificationId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveNotification(\n            notificationGroupId: notificationGroupId,\n            notificationId: notificationId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes an active notification from notification list. Needs to be called only if the notification is removed by the current user\n    /// - Parameter notificationGroupId: Identifier of notification group to which the notification belongs\n    /// - Parameter notificationId: Identifier of removed notification\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeNotification(\n        notificationGroupId: Int?,\n        notificationId: Int?\n    ) async throws -> Ok {\n        let query = RemoveNotification(\n            notificationGroupId: notificationGroupId,\n            notificationId: notificationId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes a group of active notifications. Needs to be called only if the notification group is removed by the current user\n    /// - Parameter maxNotificationId: The maximum identifier of removed notifications\n    /// - Parameter notificationGroupId: Notification group identifier\n    public func removeNotificationGroup(\n        maxNotificationId: Int?,\n        notificationGroupId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveNotificationGroup(\n            maxNotificationId: maxNotificationId,\n            notificationGroupId: notificationGroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes a group of active notifications. Needs to be called only if the notification group is removed by the current user\n    /// - Parameter maxNotificationId: The maximum identifier of removed notifications\n    /// - Parameter notificationGroupId: Notification group identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeNotificationGroup(\n        maxNotificationId: Int?,\n        notificationGroupId: Int?\n    ) async throws -> Ok {\n        let query = RemoveNotificationGroup(\n            maxNotificationId: maxNotificationId,\n            notificationGroupId: notificationGroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an HTTPS link to a message in a chat. Available only if messageProperties.can_get_link, or if messageProperties.can_get_media_timestamp_links and a media timestamp link is generated. This is an offline method\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter checklistTaskId: If not 0, identifier of the checklist task in the message to be linked\n    /// - Parameter forAlbum: Pass true to create a link for the whole media album\n    /// - Parameter inMessageThread: Pass true to create a link to the message as a channel post comment, in a message thread, or a forum topic\n    /// - Parameter mediaTimestamp: If not 0, timestamp from which the video/audio/video note/voice note/story playing must start, in seconds. The media can be in the message content or in its link preview\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter pollOptionId: If not empty, identifier of the poll option in the message to be linked\n    /// - Returns: An HTTPS link to a message in a chat\n    public func getMessageLink(\n        chatId: Int64?,\n        checklistTaskId: Int?,\n        forAlbum: Bool?,\n        inMessageThread: Bool?,\n        mediaTimestamp: Int?,\n        messageId: Int64?,\n        pollOptionId: String?,\n        completion: @escaping (Result<MessageLink, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageLink(\n            chatId: chatId,\n            checklistTaskId: checklistTaskId,\n            forAlbum: forAlbum,\n            inMessageThread: inMessageThread,\n            mediaTimestamp: mediaTimestamp,\n            messageId: messageId,\n            pollOptionId: pollOptionId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an HTTPS link to a message in a chat. Available only if messageProperties.can_get_link, or if messageProperties.can_get_media_timestamp_links and a media timestamp link is generated. This is an offline method\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter checklistTaskId: If not 0, identifier of the checklist task in the message to be linked\n    /// - Parameter forAlbum: Pass true to create a link for the whole media album\n    /// - Parameter inMessageThread: Pass true to create a link to the message as a channel post comment, in a message thread, or a forum topic\n    /// - Parameter mediaTimestamp: If not 0, timestamp from which the video/audio/video note/voice note/story playing must start, in seconds. The media can be in the message content or in its link preview\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter pollOptionId: If not empty, identifier of the poll option in the message to be linked\n    /// - Returns: An HTTPS link to a message in a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMessageLink(\n        chatId: Int64?,\n        checklistTaskId: Int?,\n        forAlbum: Bool?,\n        inMessageThread: Bool?,\n        mediaTimestamp: Int?,\n        messageId: Int64?,\n        pollOptionId: String?\n    ) async throws -> MessageLink {\n        let query = GetMessageLink(\n            chatId: chatId,\n            checklistTaskId: checklistTaskId,\n            forAlbum: forAlbum,\n            inMessageThread: inMessageThread,\n            mediaTimestamp: mediaTimestamp,\n            messageId: messageId,\n            pollOptionId: pollOptionId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an HTML code for embedding the message. Available only if messageProperties.can_get_embedding_code\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter forAlbum: Pass true to return an HTML code for embedding of the whole media album\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: An HTML code for embedding the message\n    public func getMessageEmbeddingCode(\n        chatId: Int64?,\n        forAlbum: Bool?,\n        messageId: Int64?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageEmbeddingCode(\n            chatId: chatId,\n            forAlbum: forAlbum,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an HTML code for embedding the message. Available only if messageProperties.can_get_embedding_code\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter forAlbum: Pass true to return an HTML code for embedding of the whole media album\n    /// - Parameter messageId: Identifier of the message\n    /// - Returns: An HTML code for embedding the message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMessageEmbeddingCode(\n        chatId: Int64?,\n        forAlbum: Bool?,\n        messageId: Int64?\n    ) async throws -> Text {\n        let query = GetMessageEmbeddingCode(\n            chatId: chatId,\n            forAlbum: forAlbum,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a public or private message link. Can be called for any internal link of the type internalLinkTypeMessage\n    /// - Parameter url: The message link\n    /// - Returns: Information about a public or private message link\n    public func getMessageLinkInfo(\n        url: String?,\n        completion: @escaping (Result<MessageLinkInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageLinkInfo(\n            url: url\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a public or private message link. Can be called for any internal link of the type internalLinkTypeMessage\n    /// - Parameter url: The message link\n    /// - Returns: Information about a public or private message link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMessageLinkInfo(url: String?) async throws -> MessageLinkInfo {\n        let query = GetMessageLinkInfo(\n            url: url\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Creates a custom text composition style. May return an error with a message \"TONES_SAVED_TOO_MANY\" if the maximum number of added custom styles has been reached\n    /// - Parameter customEmojiId: Identifier of the custom emoji corresponding to the style\n    /// - Parameter prompt: Prompt that will be used for text composition; 1-getOption(\"text_composition_style_prompt_length_max\") characters\n    /// - Parameter showCreator: Pass true if the current user must be shown as the creator of the style\n    /// - Parameter title: Title of the style; 1-getOption(\"text_composition_style_title_length_max\") characters\n    /// - Returns: May return an error with a message \"TONES_SAVED_TOO_MANY\" if the maximum number of added custom styles has been reached\n    public func createTextCompositionStyle(\n        customEmojiId: TdInt64?,\n        prompt: String?,\n        showCreator: Bool?,\n        title: String?,\n        completion: @escaping (Result<TextCompositionStyle, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateTextCompositionStyle(\n            customEmojiId: customEmojiId,\n            prompt: prompt,\n            showCreator: showCreator,\n            title: title\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Creates a custom text composition style. May return an error with a message \"TONES_SAVED_TOO_MANY\" if the maximum number of added custom styles has been reached\n    /// - Parameter customEmojiId: Identifier of the custom emoji corresponding to the style\n    /// - Parameter prompt: Prompt that will be used for text composition; 1-getOption(\"text_composition_style_prompt_length_max\") characters\n    /// - Parameter showCreator: Pass true if the current user must be shown as the creator of the style\n    /// - Parameter title: Title of the style; 1-getOption(\"text_composition_style_title_length_max\") characters\n    /// - Returns: May return an error with a message \"TONES_SAVED_TOO_MANY\" if the maximum number of added custom styles has been reached\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createTextCompositionStyle(\n        customEmojiId: TdInt64?,\n        prompt: String?,\n        showCreator: Bool?,\n        title: String?\n    ) async throws -> TextCompositionStyle {\n        let query = CreateTextCompositionStyle(\n            customEmojiId: customEmojiId,\n            prompt: prompt,\n            showCreator: showCreator,\n            title: title\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits a custom text composition style that was created by the current user\n    /// - Parameter customEmojiId: Identifier of the custom emoji corresponding to the style\n    /// - Parameter name: Name of the style\n    /// - Parameter prompt: Prompt that will be used for text composition; 1-getOption(\"text_composition_style_prompt_length_max\") characters\n    /// - Parameter showCreator: Pass true if the current user must be shown as the creator of the style\n    /// - Parameter title: Title of the style; 1-getOption(\"text_composition_style_title_length_max\") characters\n    public func editTextCompositionStyle(\n        customEmojiId: TdInt64?,\n        name: String?,\n        prompt: String?,\n        showCreator: Bool?,\n        title: String?,\n        completion: @escaping (Result<TextCompositionStyle, Swift.Error>) -> Void\n    ) throws {\n        let query = EditTextCompositionStyle(\n            customEmojiId: customEmojiId,\n            name: name,\n            prompt: prompt,\n            showCreator: showCreator,\n            title: title\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits a custom text composition style that was created by the current user\n    /// - Parameter customEmojiId: Identifier of the custom emoji corresponding to the style\n    /// - Parameter name: Name of the style\n    /// - Parameter prompt: Prompt that will be used for text composition; 1-getOption(\"text_composition_style_prompt_length_max\") characters\n    /// - Parameter showCreator: Pass true if the current user must be shown as the creator of the style\n    /// - Parameter title: Title of the style; 1-getOption(\"text_composition_style_title_length_max\") characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func editTextCompositionStyle(\n        customEmojiId: TdInt64?,\n        name: String?,\n        prompt: String?,\n        showCreator: Bool?,\n        title: String?\n    ) async throws -> TextCompositionStyle {\n        let query = EditTextCompositionStyle(\n            customEmojiId: customEmojiId,\n            name: name,\n            prompt: prompt,\n            showCreator: showCreator,\n            title: title\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes a custom text composition style that was created by the current user\n    /// - Parameter name: Name of the style\n    public func deleteTextCompositionStyle(\n        name: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteTextCompositionStyle(\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes a custom text composition style that was created by the current user\n    /// - Parameter name: Name of the style\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteTextCompositionStyle(name: String?) async throws -> Ok {\n        let query = DeleteTextCompositionStyle(\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches a custom text composition style by its name\n    /// - Parameter name: Name of the style\n    public func searchTextCompositionStyle(\n        name: String?,\n        completion: @escaping (Result<TextCompositionStyle, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchTextCompositionStyle(\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches a custom text composition style by its name\n    /// - Parameter name: Name of the style\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchTextCompositionStyle(name: String?) async throws -> TextCompositionStyle {\n        let query = SearchTextCompositionStyle(\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an example of usage of a custom text composition style\n    /// - Parameter exampleNumber: 0-based unique number of the requested example; must be non-negative and less than getOption(\"text_composition_style_example_count\")\n    /// - Parameter name: Name of the style\n    /// - Returns: An example of usage of a custom text composition style\n    public func getTextCompositionStyleExample(\n        exampleNumber: Int?,\n        name: String?,\n        completion: @escaping (Result<TextCompositionStyleExample, Swift.Error>) -> Void\n    ) throws {\n        let query = GetTextCompositionStyleExample(\n            exampleNumber: exampleNumber,\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an example of usage of a custom text composition style\n    /// - Parameter exampleNumber: 0-based unique number of the requested example; must be non-negative and less than getOption(\"text_composition_style_example_count\")\n    /// - Parameter name: Name of the style\n    /// - Returns: An example of usage of a custom text composition style\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getTextCompositionStyleExample(\n        exampleNumber: Int?,\n        name: String?\n    ) async throws -> TextCompositionStyleExample {\n        let query = GetTextCompositionStyleExample(\n            exampleNumber: exampleNumber,\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds a custom text composition style to the list of used by the user styles. May return an error with a message \"TONES_SAVED_TOO_MANY\" if the maximum number of added custom styles has been reached\n    /// - Parameter name: Name of the style\n    /// - Returns: May return an error with a message \"TONES_SAVED_TOO_MANY\" if the maximum number of added custom styles has been reached\n    public func addTextCompositionStyle(\n        name: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddTextCompositionStyle(\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds a custom text composition style to the list of used by the user styles. May return an error with a message \"TONES_SAVED_TOO_MANY\" if the maximum number of added custom styles has been reached\n    /// - Parameter name: Name of the style\n    /// - Returns: May return an error with a message \"TONES_SAVED_TOO_MANY\" if the maximum number of added custom styles has been reached\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func addTextCompositionStyle(name: String?) async throws -> Ok {\n        let query = AddTextCompositionStyle(\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes a custom text composition style from the list of used by the user styles. If the style was created by the current user, then it can only be deleted\n    /// - Parameter name: Name of the style\n    public func removeTextCompositionStyle(\n        name: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveTextCompositionStyle(\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes a custom text composition style from the list of used by the user styles. If the style was created by the current user, then it can only be deleted\n    /// - Parameter name: Name of the style\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeTextCompositionStyle(name: String?) async throws -> Ok {\n        let query = RemoveTextCompositionStyle(\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Translates a text to the given language; must not be used in secret chats. If the current user is a Telegram Premium user, then text formatting is preserved\n    /// - Parameter text: Text to translate\n    /// - Parameter toLanguageCode: Language code of the language to which the message is translated. Must be one of \"af\", \"sq\", \"am\", \"ar\", \"hy\", \"az\", \"eu\", \"be\", \"bn\", \"bs\", \"bg\", \"ca\", \"ceb\", \"zh-CN\", \"zh\", \"zh-Hans\", \"zh-TW\", \"zh-Hant\", \"co\", \"hr\", \"cs\", \"da\", \"nl\", \"en\", \"eo\", \"et\", \"fi\", \"fr\", \"fy\", \"gl\", \"ka\", \"de\", \"el\", \"gu\", \"ht\", \"ha\", \"haw\", \"he\", \"iw\", \"hi\", \"hmn\", \"hu\", \"is\", \"ig\", \"id\", \"in\", \"ga\", \"it\", \"ja\", \"jv\", \"kn\", \"kk\", \"km\", \"rw\", \"ko\", \"ku\", \"ky\", \"lo\", \"la\", \"lv\", \"lt\", \"lb\", \"mk\", \"mg\", \"ms\", \"ml\", \"mt\", \"mi\", \"mr\", \"mn\", \"my\", \"ne\", \"no\", \"ny\", \"or\", \"ps\", \"fa\", \"pl\", \"pt\", \"pa\", \"ro\", \"ru\", \"sm\", \"gd\", \"sr\", \"st\", \"sn\", \"sd\", \"si\", \"sk\", \"sl\", \"so\", \"es\", \"su\", \"sw\", \"sv\", \"tl\", \"tg\", \"ta\", \"tt\", \"te\", \"th\", \"tr\", \"tk\", \"uk\", \"ur\", \"ug\", \"uz\", \"vi\", \"cy\", \"xh\", \"yi\", \"ji\", \"yo\", \"zu\"\n    /// - Parameter tone: Tone of the translation; must be one of \"\", \"formal\", \"neutral\", \"casual\"; defaults to \"neutral\"\n    public func translateText(\n        text: FormattedText?,\n        toLanguageCode: String?,\n        tone: String?,\n        completion: @escaping (Result<FormattedText, Swift.Error>) -> Void\n    ) throws {\n        let query = TranslateText(\n            text: text,\n            toLanguageCode: toLanguageCode,\n            tone: tone\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Translates a text to the given language; must not be used in secret chats. If the current user is a Telegram Premium user, then text formatting is preserved\n    /// - Parameter text: Text to translate\n    /// - Parameter toLanguageCode: Language code of the language to which the message is translated. Must be one of \"af\", \"sq\", \"am\", \"ar\", \"hy\", \"az\", \"eu\", \"be\", \"bn\", \"bs\", \"bg\", \"ca\", \"ceb\", \"zh-CN\", \"zh\", \"zh-Hans\", \"zh-TW\", \"zh-Hant\", \"co\", \"hr\", \"cs\", \"da\", \"nl\", \"en\", \"eo\", \"et\", \"fi\", \"fr\", \"fy\", \"gl\", \"ka\", \"de\", \"el\", \"gu\", \"ht\", \"ha\", \"haw\", \"he\", \"iw\", \"hi\", \"hmn\", \"hu\", \"is\", \"ig\", \"id\", \"in\", \"ga\", \"it\", \"ja\", \"jv\", \"kn\", \"kk\", \"km\", \"rw\", \"ko\", \"ku\", \"ky\", \"lo\", \"la\", \"lv\", \"lt\", \"lb\", \"mk\", \"mg\", \"ms\", \"ml\", \"mt\", \"mi\", \"mr\", \"mn\", \"my\", \"ne\", \"no\", \"ny\", \"or\", \"ps\", \"fa\", \"pl\", \"pt\", \"pa\", \"ro\", \"ru\", \"sm\", \"gd\", \"sr\", \"st\", \"sn\", \"sd\", \"si\", \"sk\", \"sl\", \"so\", \"es\", \"su\", \"sw\", \"sv\", \"tl\", \"tg\", \"ta\", \"tt\", \"te\", \"th\", \"tr\", \"tk\", \"uk\", \"ur\", \"ug\", \"uz\", \"vi\", \"cy\", \"xh\", \"yi\", \"ji\", \"yo\", \"zu\"\n    /// - Parameter tone: Tone of the translation; must be one of \"\", \"formal\", \"neutral\", \"casual\"; defaults to \"neutral\"\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func translateText(\n        text: FormattedText?,\n        toLanguageCode: String?,\n        tone: String?\n    ) async throws -> FormattedText {\n        let query = TranslateText(\n            text: text,\n            toLanguageCode: toLanguageCode,\n            tone: tone\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Extracts text or caption of the given message and translates it to the given language; must not be used in secret chats. If the current user is a Telegram Premium user, then text formatting is preserved\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter toLanguageCode: Language code of the language to which the message is translated. See translateText.to_language_code for the list of supported values\n    /// - Parameter tone: Tone of the translation; see translateText.tone for the list of supported values\n    public func translateMessageText(\n        chatId: Int64?,\n        messageId: Int64?,\n        toLanguageCode: String?,\n        tone: String?,\n        completion: @escaping (Result<FormattedText, Swift.Error>) -> Void\n    ) throws {\n        let query = TranslateMessageText(\n            chatId: chatId,\n            messageId: messageId,\n            toLanguageCode: toLanguageCode,\n            tone: tone\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Extracts text or caption of the given message and translates it to the given language; must not be used in secret chats. If the current user is a Telegram Premium user, then text formatting is preserved\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter toLanguageCode: Language code of the language to which the message is translated. See translateText.to_language_code for the list of supported values\n    /// - Parameter tone: Tone of the translation; see translateText.tone for the list of supported values\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func translateMessageText(\n        chatId: Int64?,\n        messageId: Int64?,\n        toLanguageCode: String?,\n        tone: String?\n    ) async throws -> FormattedText {\n        let query = TranslateMessageText(\n            chatId: chatId,\n            messageId: messageId,\n            toLanguageCode: toLanguageCode,\n            tone: tone\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Summarizes content of the message with non-empty summary_language_code\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter tone: Tone of the summarization; see translateText.tone for the list of supported values\n    /// - Parameter translateToLanguageCode: Pass a language code to which the summary will be translated; pass an empty string if translation isn't needed. See translateText.to_language_code for the list of supported values\n    public func summarizeMessage(\n        chatId: Int64?,\n        messageId: Int64?,\n        tone: String?,\n        translateToLanguageCode: String?,\n        completion: @escaping (Result<FormattedText, Swift.Error>) -> Void\n    ) throws {\n        let query = SummarizeMessage(\n            chatId: chatId,\n            messageId: messageId,\n            tone: tone,\n            translateToLanguageCode: translateToLanguageCode\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Summarizes content of the message with non-empty summary_language_code\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter tone: Tone of the summarization; see translateText.tone for the list of supported values\n    /// - Parameter translateToLanguageCode: Pass a language code to which the summary will be translated; pass an empty string if translation isn't needed. See translateText.to_language_code for the list of supported values\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func summarizeMessage(\n        chatId: Int64?,\n        messageId: Int64?,\n        tone: String?,\n        translateToLanguageCode: String?\n    ) async throws -> FormattedText {\n        let query = SummarizeMessage(\n            chatId: chatId,\n            messageId: messageId,\n            tone: tone,\n            translateToLanguageCode: translateToLanguageCode\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes text using an AI model; must not be used in secret chats. May return an error with a message \"AICOMPOSE_FLOOD_PREMIUM\" if Telegram Premium is required to send further requests\n    /// - Parameter addEmojis: Pass true to add emoji to the text\n    /// - Parameter styleName: Name of the style of the resulted text; handle updateTextCompositionStyles to get the list of supported styles; pass an empty string to keep the current style of the text\n    /// - Parameter text: The original text\n    /// - Parameter translateToLanguageCode: Pass a language code to which the text will be translated; pass an empty string if translation isn't needed. See translateText.to_language_code for the list of supported values\n    /// - Returns: May return an error with a message \"AICOMPOSE_FLOOD_PREMIUM\" if Telegram Premium is required to send further requests\n    public func composeTextWithAi(\n        addEmojis: Bool?,\n        styleName: String?,\n        text: FormattedText?,\n        translateToLanguageCode: String?,\n        completion: @escaping (Result<FormattedText, Swift.Error>) -> Void\n    ) throws {\n        let query = ComposeTextWithAi(\n            addEmojis: addEmojis,\n            styleName: styleName,\n            text: text,\n            translateToLanguageCode: translateToLanguageCode\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes text using an AI model; must not be used in secret chats. May return an error with a message \"AICOMPOSE_FLOOD_PREMIUM\" if Telegram Premium is required to send further requests\n    /// - Parameter addEmojis: Pass true to add emoji to the text\n    /// - Parameter styleName: Name of the style of the resulted text; handle updateTextCompositionStyles to get the list of supported styles; pass an empty string to keep the current style of the text\n    /// - Parameter text: The original text\n    /// - Parameter translateToLanguageCode: Pass a language code to which the text will be translated; pass an empty string if translation isn't needed. See translateText.to_language_code for the list of supported values\n    /// - Returns: May return an error with a message \"AICOMPOSE_FLOOD_PREMIUM\" if Telegram Premium is required to send further requests\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func composeTextWithAi(\n        addEmojis: Bool?,\n        styleName: String?,\n        text: FormattedText?,\n        translateToLanguageCode: String?\n    ) async throws -> FormattedText {\n        let query = ComposeTextWithAi(\n            addEmojis: addEmojis,\n            styleName: styleName,\n            text: text,\n            translateToLanguageCode: translateToLanguageCode\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Fixes text using an AI model; must not be used in secret chats. May return an error with a message \"AICOMPOSE_FLOOD_PREMIUM\" if Telegram Premium is required to send further requests\n    /// - Parameter text: The original text\n    /// - Returns: May return an error with a message \"AICOMPOSE_FLOOD_PREMIUM\" if Telegram Premium is required to send further requests\n    public func fixTextWithAi(\n        text: FormattedText?,\n        completion: @escaping (Result<FixedText, Swift.Error>) -> Void\n    ) throws {\n        let query = FixTextWithAi(\n            text: text\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Fixes text using an AI model; must not be used in secret chats. May return an error with a message \"AICOMPOSE_FLOOD_PREMIUM\" if Telegram Premium is required to send further requests\n    /// - Parameter text: The original text\n    /// - Returns: May return an error with a message \"AICOMPOSE_FLOOD_PREMIUM\" if Telegram Premium is required to send further requests\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func fixTextWithAi(text: FormattedText?) async throws -> FixedText {\n        let query = FixTextWithAi(\n            text: text\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Recognizes speech in a video note or a voice note message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_recognize_speech to check whether the message is suitable\n    public func recognizeSpeech(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RecognizeSpeech(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Recognizes speech in a video note or a voice note message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_recognize_speech to check whether the message is suitable\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func recognizeSpeech(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = RecognizeSpeech(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Rates recognized speech in a video note or a voice note message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter isGood: Pass true if the speech recognition is good\n    /// - Parameter messageId: Identifier of the message\n    public func rateSpeechRecognition(\n        chatId: Int64?,\n        isGood: Bool?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RateSpeechRecognition(\n            chatId: chatId,\n            isGood: isGood,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Rates recognized speech in a video note or a voice note message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter isGood: Pass true if the speech recognition is good\n    /// - Parameter messageId: Identifier of the message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func rateSpeechRecognition(\n        chatId: Int64?,\n        isGood: Bool?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = RateSpeechRecognition(\n            chatId: chatId,\n            isGood: isGood,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of message sender identifiers, which can be used to send messages in a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of message sender identifiers, which can be used to send messages in a chat\n    public func getChatAvailableMessageSenders(\n        chatId: Int64?,\n        completion: @escaping (Result<ChatMessageSenders, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatAvailableMessageSenders(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of message sender identifiers, which can be used to send messages in a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of message sender identifiers, which can be used to send messages in a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatAvailableMessageSenders(chatId: Int64?) async throws -> ChatMessageSenders {\n        let query = GetChatAvailableMessageSenders(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Selects a message sender to send messages in a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageSenderId: New message sender for the chat\n    public func setChatMessageSender(\n        chatId: Int64?,\n        messageSenderId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatMessageSender(\n            chatId: chatId,\n            messageSenderId: messageSenderId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Selects a message sender to send messages in a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageSenderId: New message sender for the chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatMessageSender(\n        chatId: Int64?,\n        messageSenderId: MessageSender?\n    ) async throws -> Ok {\n        let query = SetChatMessageSender(\n            chatId: chatId,\n            messageSenderId: messageSenderId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends a message. Returns the sent message\n    /// - Parameter chatId: Target chat\n    /// - Parameter inputMessageContent: The content of the message to be sent\n    /// - Parameter options: Options to be used to send the message; pass null to use default options\n    /// - Parameter replyMarkup: Markup for replying to the message; pass null if none; for bots only\n    /// - Parameter replyTo: Information about the message or story to be replied; pass null if none\n    /// - Parameter topicId: Topic in which the message will be sent; pass null if none\n    /// - Returns: The sent message\n    public func sendMessage(\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        options: MessageSendOptions?,\n        replyMarkup: ReplyMarkup?,\n        replyTo: InputMessageReplyTo?,\n        topicId: MessageTopic?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = SendMessage(\n            chatId: chatId,\n            inputMessageContent: inputMessageContent,\n            options: options,\n            replyMarkup: replyMarkup,\n            replyTo: replyTo,\n            topicId: topicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends a message. Returns the sent message\n    /// - Parameter chatId: Target chat\n    /// - Parameter inputMessageContent: The content of the message to be sent\n    /// - Parameter options: Options to be used to send the message; pass null to use default options\n    /// - Parameter replyMarkup: Markup for replying to the message; pass null if none; for bots only\n    /// - Parameter replyTo: Information about the message or story to be replied; pass null if none\n    /// - Parameter topicId: Topic in which the message will be sent; pass null if none\n    /// - Returns: The sent message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func sendMessage(\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        options: MessageSendOptions?,\n        replyMarkup: ReplyMarkup?,\n        replyTo: InputMessageReplyTo?,\n        topicId: MessageTopic?\n    ) async throws -> Message {\n        let query = SendMessage(\n            chatId: chatId,\n            inputMessageContent: inputMessageContent,\n            options: options,\n            replyMarkup: replyMarkup,\n            replyTo: replyTo,\n            topicId: topicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends 2-10 messages grouped together into an album. Currently, only audio, document, photo and video messages can be grouped into an album. Documents and audio files can be only grouped in an album with messages of the same type. Returns sent messages\n    /// - Parameter chatId: Target chat\n    /// - Parameter inputMessageContents: Contents of messages to be sent. At most 10 messages can be added to an album. All messages must have the same value of show_caption_above_media\n    /// - Parameter options: Options to be used to send the messages; pass null to use default options\n    /// - Parameter replyTo: Information about the message or story to be replied; pass null if none\n    /// - Parameter topicId: Topic in which the messages will be sent; pass null if none\n    /// - Returns: Sent messages\n    public func sendMessageAlbum(\n        chatId: Int64?,\n        inputMessageContents: [InputMessageContent]?,\n        options: MessageSendOptions?,\n        replyTo: InputMessageReplyTo?,\n        topicId: MessageTopic?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = SendMessageAlbum(\n            chatId: chatId,\n            inputMessageContents: inputMessageContents,\n            options: options,\n            replyTo: replyTo,\n            topicId: topicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends 2-10 messages grouped together into an album. Currently, only audio, document, photo and video messages can be grouped into an album. Documents and audio files can be only grouped in an album with messages of the same type. Returns sent messages\n    /// - Parameter chatId: Target chat\n    /// - Parameter inputMessageContents: Contents of messages to be sent. At most 10 messages can be added to an album. All messages must have the same value of show_caption_above_media\n    /// - Parameter options: Options to be used to send the messages; pass null to use default options\n    /// - Parameter replyTo: Information about the message or story to be replied; pass null if none\n    /// - Parameter topicId: Topic in which the messages will be sent; pass null if none\n    /// - Returns: Sent messages\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func sendMessageAlbum(\n        chatId: Int64?,\n        inputMessageContents: [InputMessageContent]?,\n        options: MessageSendOptions?,\n        replyTo: InputMessageReplyTo?,\n        topicId: MessageTopic?\n    ) async throws -> Messages {\n        let query = SendMessageAlbum(\n            chatId: chatId,\n            inputMessageContents: inputMessageContents,\n            options: options,\n            replyTo: replyTo,\n            topicId: topicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Invites a bot to a chat (if it is not yet a member) and sends it the /start command; requires can_invite_users member right. Bots can't be invited to a private chat other than the chat with the bot. Bots can't be invited to channels (although they can be added as admins) and secret chats. Returns the sent message\n    /// - Parameter botUserId: Identifier of the bot\n    /// - Parameter chatId: Identifier of the target chat\n    /// - Parameter parameter: A hidden parameter sent to the bot for deep linking purposes (https://core.telegram.org/bots#deep-linking)\n    /// - Returns: The sent message\n    public func sendBotStartMessage(\n        botUserId: Int64?,\n        chatId: Int64?,\n        parameter: String?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = SendBotStartMessage(\n            botUserId: botUserId,\n            chatId: chatId,\n            parameter: parameter\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Invites a bot to a chat (if it is not yet a member) and sends it the /start command; requires can_invite_users member right. Bots can't be invited to a private chat other than the chat with the bot. Bots can't be invited to channels (although they can be added as admins) and secret chats. Returns the sent message\n    /// - Parameter botUserId: Identifier of the bot\n    /// - Parameter chatId: Identifier of the target chat\n    /// - Parameter parameter: A hidden parameter sent to the bot for deep linking purposes (https://core.telegram.org/bots#deep-linking)\n    /// - Returns: The sent message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func sendBotStartMessage(\n        botUserId: Int64?,\n        chatId: Int64?,\n        parameter: String?\n    ) async throws -> Message {\n        let query = SendBotStartMessage(\n            botUserId: botUserId,\n            chatId: chatId,\n            parameter: parameter\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends the result of an inline query as a message. Returns the sent message. Always clears a chat draft message\n    /// - Parameter chatId: Target chat\n    /// - Parameter hideViaBot: Pass true to hide the bot, via which the message is sent. Can be used only for bots getOption(\"animation_search_bot_username\"), getOption(\"photo_search_bot_username\"), and getOption(\"venue_search_bot_username\")\n    /// - Parameter options: Options to be used to send the message; pass null to use default options\n    /// - Parameter queryId: Identifier of the inline query\n    /// - Parameter replyTo: Information about the message or story to be replied; pass null if none\n    /// - Parameter resultId: Identifier of the inline query result\n    /// - Parameter topicId: Topic in which the message will be sent; pass null if none\n    /// - Returns: The sent message\n    public func sendInlineQueryResultMessage(\n        chatId: Int64?,\n        hideViaBot: Bool?,\n        options: MessageSendOptions?,\n        queryId: TdInt64?,\n        replyTo: InputMessageReplyTo?,\n        resultId: String?,\n        topicId: MessageTopic?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = SendInlineQueryResultMessage(\n            chatId: chatId,\n            hideViaBot: hideViaBot,\n            options: options,\n            queryId: queryId,\n            replyTo: replyTo,\n            resultId: resultId,\n            topicId: topicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends the result of an inline query as a message. Returns the sent message. Always clears a chat draft message\n    /// - Parameter chatId: Target chat\n    /// - Parameter hideViaBot: Pass true to hide the bot, via which the message is sent. Can be used only for bots getOption(\"animation_search_bot_username\"), getOption(\"photo_search_bot_username\"), and getOption(\"venue_search_bot_username\")\n    /// - Parameter options: Options to be used to send the message; pass null to use default options\n    /// - Parameter queryId: Identifier of the inline query\n    /// - Parameter replyTo: Information about the message or story to be replied; pass null if none\n    /// - Parameter resultId: Identifier of the inline query result\n    /// - Parameter topicId: Topic in which the message will be sent; pass null if none\n    /// - Returns: The sent message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func sendInlineQueryResultMessage(\n        chatId: Int64?,\n        hideViaBot: Bool?,\n        options: MessageSendOptions?,\n        queryId: TdInt64?,\n        replyTo: InputMessageReplyTo?,\n        resultId: String?,\n        topicId: MessageTopic?\n    ) async throws -> Message {\n        let query = SendInlineQueryResultMessage(\n            chatId: chatId,\n            hideViaBot: hideViaBot,\n            options: options,\n            queryId: queryId,\n            replyTo: replyTo,\n            resultId: resultId,\n            topicId: topicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Forwards previously sent messages. Returns the forwarded messages in the same order as the message identifiers passed in message_ids. If a message can't be forwarded, null will be returned instead of the message\n    /// - Parameter chatId: Identifier of the chat to which to forward messages\n    /// - Parameter fromChatId: Identifier of the chat from which to forward messages\n    /// - Parameter messageIds: Identifiers of the messages to forward. Message identifiers must be in a strictly increasing order. At most 100 messages can be forwarded simultaneously. A message can be forwarded only if messageProperties.can_be_forwarded\n    /// - Parameter options: Options to be used to send the messages; pass null to use default options\n    /// - Parameter removeCaption: Pass true to remove media captions of message copies. Ignored if send_copy is false\n    /// - Parameter sendCopy: Pass true to copy content of the messages without reference to the original sender. Always true if the messages are forwarded to a secret chat or are local. Use messageProperties.can_be_copied and messageProperties.can_be_copied_to_secret_chat to check whether the message is suitable\n    /// - Parameter topicId: Topic in which the messages will be forwarded; message threads aren't supported; pass null if none\n    /// - Returns: The forwarded messages in the same order as the message identifiers passed in message_ids. If a message can't be forwarded, null will be returned instead of the message\n    public func forwardMessages(\n        chatId: Int64?,\n        fromChatId: Int64?,\n        messageIds: [Int64]?,\n        options: MessageSendOptions?,\n        removeCaption: Bool?,\n        sendCopy: Bool?,\n        topicId: MessageTopic?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = ForwardMessages(\n            chatId: chatId,\n            fromChatId: fromChatId,\n            messageIds: messageIds,\n            options: options,\n            removeCaption: removeCaption,\n            sendCopy: sendCopy,\n            topicId: topicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Forwards previously sent messages. Returns the forwarded messages in the same order as the message identifiers passed in message_ids. If a message can't be forwarded, null will be returned instead of the message\n    /// - Parameter chatId: Identifier of the chat to which to forward messages\n    /// - Parameter fromChatId: Identifier of the chat from which to forward messages\n    /// - Parameter messageIds: Identifiers of the messages to forward. Message identifiers must be in a strictly increasing order. At most 100 messages can be forwarded simultaneously. A message can be forwarded only if messageProperties.can_be_forwarded\n    /// - Parameter options: Options to be used to send the messages; pass null to use default options\n    /// - Parameter removeCaption: Pass true to remove media captions of message copies. Ignored if send_copy is false\n    /// - Parameter sendCopy: Pass true to copy content of the messages without reference to the original sender. Always true if the messages are forwarded to a secret chat or are local. Use messageProperties.can_be_copied and messageProperties.can_be_copied_to_secret_chat to check whether the message is suitable\n    /// - Parameter topicId: Topic in which the messages will be forwarded; message threads aren't supported; pass null if none\n    /// - Returns: The forwarded messages in the same order as the message identifiers passed in message_ids. If a message can't be forwarded, null will be returned instead of the message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func forwardMessages(\n        chatId: Int64?,\n        fromChatId: Int64?,\n        messageIds: [Int64]?,\n        options: MessageSendOptions?,\n        removeCaption: Bool?,\n        sendCopy: Bool?,\n        topicId: MessageTopic?\n    ) async throws -> Messages {\n        let query = ForwardMessages(\n            chatId: chatId,\n            fromChatId: fromChatId,\n            messageIds: messageIds,\n            options: options,\n            removeCaption: removeCaption,\n            sendCopy: sendCopy,\n            topicId: topicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends messages from a quick reply shortcut. Requires Telegram Business subscription. Can't be used to send paid messages\n    /// - Parameter chatId: Identifier of the chat to which to send messages. The chat must be a private chat with a regular user\n    /// - Parameter sendingId: Non-persistent identifier, which will be returned back in messageSendingStatePending object and can be used to match sent messages and corresponding updateNewMessage updates\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut\n    public func sendQuickReplyShortcutMessages(\n        chatId: Int64?,\n        sendingId: Int?,\n        shortcutId: Int?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = SendQuickReplyShortcutMessages(\n            chatId: chatId,\n            sendingId: sendingId,\n            shortcutId: shortcutId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends messages from a quick reply shortcut. Requires Telegram Business subscription. Can't be used to send paid messages\n    /// - Parameter chatId: Identifier of the chat to which to send messages. The chat must be a private chat with a regular user\n    /// - Parameter sendingId: Non-persistent identifier, which will be returned back in messageSendingStatePending object and can be used to match sent messages and corresponding updateNewMessage updates\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func sendQuickReplyShortcutMessages(\n        chatId: Int64?,\n        sendingId: Int?,\n        shortcutId: Int?\n    ) async throws -> Messages {\n        let query = SendQuickReplyShortcutMessages(\n            chatId: chatId,\n            sendingId: sendingId,\n            shortcutId: shortcutId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Resends messages which failed to send. Can be called only for messages for which messageSendingStateFailed.can_retry is true and after specified in messageSendingStateFailed.retry_after time passed. If a message is re-sent, the corresponding failed to send message is deleted. Returns the sent messages in the same order as the message identifiers passed in message_ids. If a message can't be re-sent, null will be returned instead of the message\n    /// - Parameter chatId: Identifier of the chat to send messages\n    /// - Parameter messageIds: Identifiers of the messages to resend. Message identifiers must be in a strictly increasing order\n    /// - Parameter paidMessageStarCount: The number of Telegram Stars the user agreed to pay to send the messages. Ignored if messageSendingStateFailed.required_paid_message_star_count == 0\n    /// - Parameter quote: New manually chosen quote from the message to be replied; pass null if none. Ignored if more than one message is re-sent, or if messageSendingStateFailed.need_another_reply_quote == false\n    /// - Returns: The sent messages in the same order as the message identifiers passed in message_ids. If a message can't be re-sent, null will be returned instead of the message\n    public func resendMessages(\n        chatId: Int64?,\n        messageIds: [Int64]?,\n        paidMessageStarCount: Int64?,\n        quote: InputTextQuote?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = ResendMessages(\n            chatId: chatId,\n            messageIds: messageIds,\n            paidMessageStarCount: paidMessageStarCount,\n            quote: quote\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Resends messages which failed to send. Can be called only for messages for which messageSendingStateFailed.can_retry is true and after specified in messageSendingStateFailed.retry_after time passed. If a message is re-sent, the corresponding failed to send message is deleted. Returns the sent messages in the same order as the message identifiers passed in message_ids. If a message can't be re-sent, null will be returned instead of the message\n    /// - Parameter chatId: Identifier of the chat to send messages\n    /// - Parameter messageIds: Identifiers of the messages to resend. Message identifiers must be in a strictly increasing order\n    /// - Parameter paidMessageStarCount: The number of Telegram Stars the user agreed to pay to send the messages. Ignored if messageSendingStateFailed.required_paid_message_star_count == 0\n    /// - Parameter quote: New manually chosen quote from the message to be replied; pass null if none. Ignored if more than one message is re-sent, or if messageSendingStateFailed.need_another_reply_quote == false\n    /// - Returns: The sent messages in the same order as the message identifiers passed in message_ids. If a message can't be re-sent, null will be returned instead of the message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func resendMessages(\n        chatId: Int64?,\n        messageIds: [Int64]?,\n        paidMessageStarCount: Int64?,\n        quote: InputTextQuote?\n    ) async throws -> Messages {\n        let query = ResendMessages(\n            chatId: chatId,\n            messageIds: messageIds,\n            paidMessageStarCount: paidMessageStarCount,\n            quote: quote\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds a local message to a chat. The message is persistent across application restarts only if the message database is used. Returns the added message\n    /// - Parameter chatId: Target chat; channel direct messages chats aren't supported\n    /// - Parameter disableNotification: Pass true to disable notification for the message\n    /// - Parameter inputMessageContent: The content of the message to be added\n    /// - Parameter replyTo: Information about the message or story to be replied; pass null if none\n    /// - Parameter senderId: Identifier of the sender of the message\n    /// - Returns: The added message\n    public func addLocalMessage(\n        chatId: Int64?,\n        disableNotification: Bool?,\n        inputMessageContent: InputMessageContent?,\n        replyTo: InputMessageReplyTo?,\n        senderId: MessageSender?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = AddLocalMessage(\n            chatId: chatId,\n            disableNotification: disableNotification,\n            inputMessageContent: inputMessageContent,\n            replyTo: replyTo,\n            senderId: senderId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds a local message to a chat. The message is persistent across application restarts only if the message database is used. Returns the added message\n    /// - Parameter chatId: Target chat; channel direct messages chats aren't supported\n    /// - Parameter disableNotification: Pass true to disable notification for the message\n    /// - Parameter inputMessageContent: The content of the message to be added\n    /// - Parameter replyTo: Information about the message or story to be replied; pass null if none\n    /// - Parameter senderId: Identifier of the sender of the message\n    /// - Returns: The added message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func addLocalMessage(\n        chatId: Int64?,\n        disableNotification: Bool?,\n        inputMessageContent: InputMessageContent?,\n        replyTo: InputMessageReplyTo?,\n        senderId: MessageSender?\n    ) async throws -> Message {\n        let query = AddLocalMessage(\n            chatId: chatId,\n            disableNotification: disableNotification,\n            inputMessageContent: inputMessageContent,\n            replyTo: replyTo,\n            senderId: senderId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes messages\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageIds: Identifiers of the messages to be deleted. Use messageProperties.can_be_deleted_only_for_self and messageProperties.can_be_deleted_for_all_users to get suitable messages\n    /// - Parameter revoke: Pass true to delete messages for all chat members. Always true for supergroups, channels and secret chats\n    public func deleteMessages(\n        chatId: Int64?,\n        messageIds: [Int64]?,\n        revoke: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteMessages(\n            chatId: chatId,\n            messageIds: messageIds,\n            revoke: revoke\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes messages\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageIds: Identifiers of the messages to be deleted. Use messageProperties.can_be_deleted_only_for_self and messageProperties.can_be_deleted_for_all_users to get suitable messages\n    /// - Parameter revoke: Pass true to delete messages for all chat members. Always true for supergroups, channels and secret chats\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteMessages(\n        chatId: Int64?,\n        messageIds: [Int64]?,\n        revoke: Bool?\n    ) async throws -> Ok {\n        let query = DeleteMessages(\n            chatId: chatId,\n            messageIds: messageIds,\n            revoke: revoke\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes all messages sent by the specified message sender in a chat. Supported only for supergroups; requires can_delete_messages administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter senderId: Identifier of the sender of messages to delete\n    public func deleteChatMessagesBySender(\n        chatId: Int64?,\n        senderId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteChatMessagesBySender(\n            chatId: chatId,\n            senderId: senderId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes all messages sent by the specified message sender in a chat. Supported only for supergroups; requires can_delete_messages administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter senderId: Identifier of the sender of messages to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteChatMessagesBySender(\n        chatId: Int64?,\n        senderId: MessageSender?\n    ) async throws -> Ok {\n        let query = DeleteChatMessagesBySender(\n            chatId: chatId,\n            senderId: senderId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes all messages between the specified dates in a chat. Supported only for private chats and basic groups. Messages sent in the last 30 seconds will not be deleted\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter maxDate: The maximum date of the messages to delete\n    /// - Parameter minDate: The minimum date of the messages to delete\n    /// - Parameter revoke: Pass true to delete chat messages for all users; private chats only\n    public func deleteChatMessagesByDate(\n        chatId: Int64?,\n        maxDate: Int?,\n        minDate: Int?,\n        revoke: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteChatMessagesByDate(\n            chatId: chatId,\n            maxDate: maxDate,\n            minDate: minDate,\n            revoke: revoke\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes all messages between the specified dates in a chat. Supported only for private chats and basic groups. Messages sent in the last 30 seconds will not be deleted\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter maxDate: The maximum date of the messages to delete\n    /// - Parameter minDate: The minimum date of the messages to delete\n    /// - Parameter revoke: Pass true to delete chat messages for all users; private chats only\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteChatMessagesByDate(\n        chatId: Int64?,\n        maxDate: Int?,\n        minDate: Int?,\n        revoke: Bool?\n    ) async throws -> Ok {\n        let query = DeleteChatMessagesByDate(\n            chatId: chatId,\n            maxDate: maxDate,\n            minDate: minDate,\n            revoke: revoke\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits the text of a message (or a text of a game message). Returns the edited message after the edit is completed on the server side\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter inputMessageContent: New text content of the message. Must be of type inputMessageText\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    /// - Returns: The edited message after the edit is completed on the server side\n    public func editMessageText(\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = EditMessageText(\n            chatId: chatId,\n            inputMessageContent: inputMessageContent,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits the text of a message (or a text of a game message). Returns the edited message after the edit is completed on the server side\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter inputMessageContent: New text content of the message. Must be of type inputMessageText\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    /// - Returns: The edited message after the edit is completed on the server side\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func editMessageText(\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> Message {\n        let query = EditMessageText(\n            chatId: chatId,\n            inputMessageContent: inputMessageContent,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits the message content of a live location. Messages can be edited for a limited period of time specified in the live location. Returns the edited message after the edit is completed on the server side\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter heading: The new direction in which the location moves, in degrees; 1-360. Pass 0 if unknown\n    /// - Parameter livePeriod: New time relative to the message send date, for which the location can be updated, in seconds. If 0x7FFFFFFF specified, then the location can be updated forever. Otherwise, must not exceed the current live_period by more than a day, and the live location expiration date must remain in the next 90 days. Pass 0 to keep the current live_period\n    /// - Parameter location: New location content of the message; pass null to stop sharing the live location\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    /// - Parameter proximityAlertRadius: The new maximum distance for proximity alerts, in meters (0-100000). Pass 0 if the notification is disabled\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    /// - Returns: The edited message after the edit is completed on the server side\n    public func editMessageLiveLocation(\n        chatId: Int64?,\n        heading: Int?,\n        livePeriod: Int?,\n        location: Location?,\n        messageId: Int64?,\n        proximityAlertRadius: Int?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = EditMessageLiveLocation(\n            chatId: chatId,\n            heading: heading,\n            livePeriod: livePeriod,\n            location: location,\n            messageId: messageId,\n            proximityAlertRadius: proximityAlertRadius,\n            replyMarkup: replyMarkup\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits the message content of a live location. Messages can be edited for a limited period of time specified in the live location. Returns the edited message after the edit is completed on the server side\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter heading: The new direction in which the location moves, in degrees; 1-360. Pass 0 if unknown\n    /// - Parameter livePeriod: New time relative to the message send date, for which the location can be updated, in seconds. If 0x7FFFFFFF specified, then the location can be updated forever. Otherwise, must not exceed the current live_period by more than a day, and the live location expiration date must remain in the next 90 days. Pass 0 to keep the current live_period\n    /// - Parameter location: New location content of the message; pass null to stop sharing the live location\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    /// - Parameter proximityAlertRadius: The new maximum distance for proximity alerts, in meters (0-100000). Pass 0 if the notification is disabled\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    /// - Returns: The edited message after the edit is completed on the server side\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func editMessageLiveLocation(\n        chatId: Int64?,\n        heading: Int?,\n        livePeriod: Int?,\n        location: Location?,\n        messageId: Int64?,\n        proximityAlertRadius: Int?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> Message {\n        let query = EditMessageLiveLocation(\n            chatId: chatId,\n            heading: heading,\n            livePeriod: livePeriod,\n            location: location,\n            messageId: messageId,\n            proximityAlertRadius: proximityAlertRadius,\n            replyMarkup: replyMarkup\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits the message content of a checklist. Returns the edited message after the edit is completed on the server side\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter checklist: The new checklist. If some tasks were completed, this information will be kept\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    /// - Returns: The edited message after the edit is completed on the server side\n    public func editMessageChecklist(\n        chatId: Int64?,\n        checklist: InputChecklist?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = EditMessageChecklist(\n            chatId: chatId,\n            checklist: checklist,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits the message content of a checklist. Returns the edited message after the edit is completed on the server side\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter checklist: The new checklist. If some tasks were completed, this information will be kept\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    /// - Returns: The edited message after the edit is completed on the server side\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func editMessageChecklist(\n        chatId: Int64?,\n        checklist: InputChecklist?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> Message {\n        let query = EditMessageChecklist(\n            chatId: chatId,\n            checklist: checklist,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits the media content of a message, including message caption. If only the caption needs to be edited, use editMessageCaption instead. The type of message content in an album can't be changed with exception of replacing a photo with a video or vice versa. Returns the edited message after the edit is completed on the server side\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter inputMessageContent: New content of the message. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageDocument, inputMessagePhoto or inputMessageVideo\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_edit_media to check whether the message can be edited\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    /// - Returns: The edited message after the edit is completed on the server side\n    public func editMessageMedia(\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = EditMessageMedia(\n            chatId: chatId,\n            inputMessageContent: inputMessageContent,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits the media content of a message, including message caption. If only the caption needs to be edited, use editMessageCaption instead. The type of message content in an album can't be changed with exception of replacing a photo with a video or vice versa. Returns the edited message after the edit is completed on the server side\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter inputMessageContent: New content of the message. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageDocument, inputMessagePhoto or inputMessageVideo\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_edit_media to check whether the message can be edited\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    /// - Returns: The edited message after the edit is completed on the server side\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func editMessageMedia(\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> Message {\n        let query = EditMessageMedia(\n            chatId: chatId,\n            inputMessageContent: inputMessageContent,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits the message content caption. Returns the edited message after the edit is completed on the server side\n    /// - Parameter caption: New message content caption; 0-getOption(\"message_caption_length_max\") characters; pass null to remove caption\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    /// - Parameter showCaptionAboveMedia: Pass true to show the caption above the media; otherwise, the caption will be shown below the media. May be true only for animation, photo, and video messages\n    /// - Returns: The edited message after the edit is completed on the server side\n    public func editMessageCaption(\n        caption: FormattedText?,\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        showCaptionAboveMedia: Bool?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = EditMessageCaption(\n            caption: caption,\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup,\n            showCaptionAboveMedia: showCaptionAboveMedia\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits the message content caption. Returns the edited message after the edit is completed on the server side\n    /// - Parameter caption: New message content caption; 0-getOption(\"message_caption_length_max\") characters; pass null to remove caption\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    /// - Parameter showCaptionAboveMedia: Pass true to show the caption above the media; otherwise, the caption will be shown below the media. May be true only for animation, photo, and video messages\n    /// - Returns: The edited message after the edit is completed on the server side\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func editMessageCaption(\n        caption: FormattedText?,\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        showCaptionAboveMedia: Bool?\n    ) async throws -> Message {\n        let query = EditMessageCaption(\n            caption: caption,\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup,\n            showCaptionAboveMedia: showCaptionAboveMedia\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits the message reply markup; for bots only. Returns the edited message after the edit is completed on the server side\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    /// - Returns: The edited message after the edit is completed on the server side\n    public func editMessageReplyMarkup(\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = EditMessageReplyMarkup(\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits the message reply markup; for bots only. Returns the edited message after the edit is completed on the server side\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    /// - Returns: The edited message after the edit is completed on the server side\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func editMessageReplyMarkup(\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> Message {\n        let query = EditMessageReplyMarkup(\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits the text of an inline text or game message sent via a bot; for bots only\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter inputMessageContent: New text content of the message. Must be of type inputMessageText\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    public func editInlineMessageText(\n        inlineMessageId: String?,\n        inputMessageContent: InputMessageContent?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditInlineMessageText(\n            inlineMessageId: inlineMessageId,\n            inputMessageContent: inputMessageContent,\n            replyMarkup: replyMarkup\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits the text of an inline text or game message sent via a bot; for bots only\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter inputMessageContent: New text content of the message. Must be of type inputMessageText\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func editInlineMessageText(\n        inlineMessageId: String?,\n        inputMessageContent: InputMessageContent?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> Ok {\n        let query = EditInlineMessageText(\n            inlineMessageId: inlineMessageId,\n            inputMessageContent: inputMessageContent,\n            replyMarkup: replyMarkup\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits the content of a live location in an inline message sent via a bot; for bots only\n    /// - Parameter heading: The new direction in which the location moves, in degrees; 1-360. Pass 0 if unknown\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter livePeriod: New time relative to the message send date, for which the location can be updated, in seconds. If 0x7FFFFFFF specified, then the location can be updated forever. Otherwise, must not exceed the current live_period by more than a day, and the live location expiration date must remain in the next 90 days. Pass 0 to keep the current live_period\n    /// - Parameter location: New location content of the message; pass null to stop sharing the live location\n    /// - Parameter proximityAlertRadius: The new maximum distance for proximity alerts, in meters (0-100000). Pass 0 if the notification is disabled\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    public func editInlineMessageLiveLocation(\n        heading: Int?,\n        inlineMessageId: String?,\n        livePeriod: Int?,\n        location: Location?,\n        proximityAlertRadius: Int?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditInlineMessageLiveLocation(\n            heading: heading,\n            inlineMessageId: inlineMessageId,\n            livePeriod: livePeriod,\n            location: location,\n            proximityAlertRadius: proximityAlertRadius,\n            replyMarkup: replyMarkup\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits the content of a live location in an inline message sent via a bot; for bots only\n    /// - Parameter heading: The new direction in which the location moves, in degrees; 1-360. Pass 0 if unknown\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter livePeriod: New time relative to the message send date, for which the location can be updated, in seconds. If 0x7FFFFFFF specified, then the location can be updated forever. Otherwise, must not exceed the current live_period by more than a day, and the live location expiration date must remain in the next 90 days. Pass 0 to keep the current live_period\n    /// - Parameter location: New location content of the message; pass null to stop sharing the live location\n    /// - Parameter proximityAlertRadius: The new maximum distance for proximity alerts, in meters (0-100000). Pass 0 if the notification is disabled\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func editInlineMessageLiveLocation(\n        heading: Int?,\n        inlineMessageId: String?,\n        livePeriod: Int?,\n        location: Location?,\n        proximityAlertRadius: Int?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> Ok {\n        let query = EditInlineMessageLiveLocation(\n            heading: heading,\n            inlineMessageId: inlineMessageId,\n            livePeriod: livePeriod,\n            location: location,\n            proximityAlertRadius: proximityAlertRadius,\n            replyMarkup: replyMarkup\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits the media content of a message with a text, an animation, an audio, a document, a photo or a video in an inline message sent via a bot; for bots only\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter inputMessageContent: New content of the message. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageDocument, inputMessagePhoto or inputMessageVideo\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    public func editInlineMessageMedia(\n        inlineMessageId: String?,\n        inputMessageContent: InputMessageContent?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditInlineMessageMedia(\n            inlineMessageId: inlineMessageId,\n            inputMessageContent: inputMessageContent,\n            replyMarkup: replyMarkup\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits the media content of a message with a text, an animation, an audio, a document, a photo or a video in an inline message sent via a bot; for bots only\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter inputMessageContent: New content of the message. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageDocument, inputMessagePhoto or inputMessageVideo\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func editInlineMessageMedia(\n        inlineMessageId: String?,\n        inputMessageContent: InputMessageContent?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> Ok {\n        let query = EditInlineMessageMedia(\n            inlineMessageId: inlineMessageId,\n            inputMessageContent: inputMessageContent,\n            replyMarkup: replyMarkup\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits the caption of an inline message sent via a bot; for bots only\n    /// - Parameter caption: New message content caption; pass null to remove caption; 0-getOption(\"message_caption_length_max\") characters\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    /// - Parameter showCaptionAboveMedia: Pass true to show the caption above the media; otherwise, the caption will be shown below the media. May be true only for animation, photo, and video messages\n    public func editInlineMessageCaption(\n        caption: FormattedText?,\n        inlineMessageId: String?,\n        replyMarkup: ReplyMarkup?,\n        showCaptionAboveMedia: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditInlineMessageCaption(\n            caption: caption,\n            inlineMessageId: inlineMessageId,\n            replyMarkup: replyMarkup,\n            showCaptionAboveMedia: showCaptionAboveMedia\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits the caption of an inline message sent via a bot; for bots only\n    /// - Parameter caption: New message content caption; pass null to remove caption; 0-getOption(\"message_caption_length_max\") characters\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    /// - Parameter showCaptionAboveMedia: Pass true to show the caption above the media; otherwise, the caption will be shown below the media. May be true only for animation, photo, and video messages\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func editInlineMessageCaption(\n        caption: FormattedText?,\n        inlineMessageId: String?,\n        replyMarkup: ReplyMarkup?,\n        showCaptionAboveMedia: Bool?\n    ) async throws -> Ok {\n        let query = EditInlineMessageCaption(\n            caption: caption,\n            inlineMessageId: inlineMessageId,\n            replyMarkup: replyMarkup,\n            showCaptionAboveMedia: showCaptionAboveMedia\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits the reply markup of an inline message sent via a bot; for bots only\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    public func editInlineMessageReplyMarkup(\n        inlineMessageId: String?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditInlineMessageReplyMarkup(\n            inlineMessageId: inlineMessageId,\n            replyMarkup: replyMarkup\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits the reply markup of an inline message sent via a bot; for bots only\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func editInlineMessageReplyMarkup(\n        inlineMessageId: String?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> Ok {\n        let query = EditInlineMessageReplyMarkup(\n            inlineMessageId: inlineMessageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits the time when a scheduled message will be sent. Scheduling state of all messages in the same album or forwarded together with the message will be also changed\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_edit_scheduling_state to check whether the message is suitable\n    /// - Parameter schedulingState: The new message scheduling state; pass null to send the message immediately. Must be null for messages in the state messageSchedulingStateSendWhenVideoProcessed\n    public func editMessageSchedulingState(\n        chatId: Int64?,\n        messageId: Int64?,\n        schedulingState: MessageSchedulingState?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditMessageSchedulingState(\n            chatId: chatId,\n            messageId: messageId,\n            schedulingState: schedulingState\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits the time when a scheduled message will be sent. Scheduling state of all messages in the same album or forwarded together with the message will be also changed\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message. Use messageProperties.can_edit_scheduling_state to check whether the message is suitable\n    /// - Parameter schedulingState: The new message scheduling state; pass null to send the message immediately. Must be null for messages in the state messageSchedulingStateSendWhenVideoProcessed\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func editMessageSchedulingState(\n        chatId: Int64?,\n        messageId: Int64?,\n        schedulingState: MessageSchedulingState?\n    ) async throws -> Ok {\n        let query = EditMessageSchedulingState(\n            chatId: chatId,\n            messageId: messageId,\n            schedulingState: schedulingState\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the fact-check of a message. Can be only used if messageProperties.can_set_fact_check == true\n    /// - Parameter chatId: The channel chat the message belongs to\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter text: New text of the fact-check; 0-getOption(\"fact_check_length_max\") characters; pass null to remove it. Only Bold, Italic, and TextUrl entities with https://t.me/ links are supported\n    public func setMessageFactCheck(\n        chatId: Int64?,\n        messageId: Int64?,\n        text: FormattedText?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetMessageFactCheck(\n            chatId: chatId,\n            messageId: messageId,\n            text: text\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the fact-check of a message. Can be only used if messageProperties.can_set_fact_check == true\n    /// - Parameter chatId: The channel chat the message belongs to\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter text: New text of the fact-check; 0-getOption(\"fact_check_length_max\") characters; pass null to remove it. Only Bold, Italic, and TextUrl entities with https://t.me/ links are supported\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setMessageFactCheck(\n        chatId: Int64?,\n        messageId: Int64?,\n        text: FormattedText?\n    ) async throws -> Ok {\n        let query = SetMessageFactCheck(\n            chatId: chatId,\n            messageId: messageId,\n            text: text\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends a message on behalf of a business account; for bots only. Returns the message after it was sent\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request\n    /// - Parameter chatId: Target chat\n    /// - Parameter disableNotification: Pass true to disable notification for the message\n    /// - Parameter effectId: Identifier of the effect to apply to the message\n    /// - Parameter inputMessageContent: The content of the message to be sent\n    /// - Parameter protectContent: Pass true if the content of the message must be protected from forwarding and saving\n    /// - Parameter replyMarkup: Markup for replying to the message; pass null if none\n    /// - Parameter replyTo: Information about the message to be replied; pass null if none\n    /// - Returns: The message after it was sent\n    public func sendBusinessMessage(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        disableNotification: Bool?,\n        effectId: TdInt64?,\n        inputMessageContent: InputMessageContent?,\n        protectContent: Bool?,\n        replyMarkup: ReplyMarkup?,\n        replyTo: InputMessageReplyTo?,\n        completion: @escaping (Result<BusinessMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = SendBusinessMessage(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            disableNotification: disableNotification,\n            effectId: effectId,\n            inputMessageContent: inputMessageContent,\n            protectContent: protectContent,\n            replyMarkup: replyMarkup,\n            replyTo: replyTo\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends a message on behalf of a business account; for bots only. Returns the message after it was sent\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request\n    /// - Parameter chatId: Target chat\n    /// - Parameter disableNotification: Pass true to disable notification for the message\n    /// - Parameter effectId: Identifier of the effect to apply to the message\n    /// - Parameter inputMessageContent: The content of the message to be sent\n    /// - Parameter protectContent: Pass true if the content of the message must be protected from forwarding and saving\n    /// - Parameter replyMarkup: Markup for replying to the message; pass null if none\n    /// - Parameter replyTo: Information about the message to be replied; pass null if none\n    /// - Returns: The message after it was sent\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func sendBusinessMessage(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        disableNotification: Bool?,\n        effectId: TdInt64?,\n        inputMessageContent: InputMessageContent?,\n        protectContent: Bool?,\n        replyMarkup: ReplyMarkup?,\n        replyTo: InputMessageReplyTo?\n    ) async throws -> BusinessMessage {\n        let query = SendBusinessMessage(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            disableNotification: disableNotification,\n            effectId: effectId,\n            inputMessageContent: inputMessageContent,\n            protectContent: protectContent,\n            replyMarkup: replyMarkup,\n            replyTo: replyTo\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends 2-10 messages grouped together into an album on behalf of a business account; for bots only. Currently, only audio, document, photo and video messages can be grouped into an album. Documents and audio files can be only grouped in an album with messages of the same type. Returns sent messages\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request\n    /// - Parameter chatId: Target chat\n    /// - Parameter disableNotification: Pass true to disable notification for the message\n    /// - Parameter effectId: Identifier of the effect to apply to the message\n    /// - Parameter inputMessageContents: Contents of messages to be sent. At most 10 messages can be added to an album. All messages must have the same value of show_caption_above_media\n    /// - Parameter protectContent: Pass true if the content of the message must be protected from forwarding and saving\n    /// - Parameter replyTo: Information about the message to be replied; pass null if none\n    /// - Returns: Sent messages\n    public func sendBusinessMessageAlbum(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        disableNotification: Bool?,\n        effectId: TdInt64?,\n        inputMessageContents: [InputMessageContent]?,\n        protectContent: Bool?,\n        replyTo: InputMessageReplyTo?,\n        completion: @escaping (Result<BusinessMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = SendBusinessMessageAlbum(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            disableNotification: disableNotification,\n            effectId: effectId,\n            inputMessageContents: inputMessageContents,\n            protectContent: protectContent,\n            replyTo: replyTo\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends 2-10 messages grouped together into an album on behalf of a business account; for bots only. Currently, only audio, document, photo and video messages can be grouped into an album. Documents and audio files can be only grouped in an album with messages of the same type. Returns sent messages\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request\n    /// - Parameter chatId: Target chat\n    /// - Parameter disableNotification: Pass true to disable notification for the message\n    /// - Parameter effectId: Identifier of the effect to apply to the message\n    /// - Parameter inputMessageContents: Contents of messages to be sent. At most 10 messages can be added to an album. All messages must have the same value of show_caption_above_media\n    /// - Parameter protectContent: Pass true if the content of the message must be protected from forwarding and saving\n    /// - Parameter replyTo: Information about the message to be replied; pass null if none\n    /// - Returns: Sent messages\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func sendBusinessMessageAlbum(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        disableNotification: Bool?,\n        effectId: TdInt64?,\n        inputMessageContents: [InputMessageContent]?,\n        protectContent: Bool?,\n        replyTo: InputMessageReplyTo?\n    ) async throws -> BusinessMessages {\n        let query = SendBusinessMessageAlbum(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            disableNotification: disableNotification,\n            effectId: effectId,\n            inputMessageContents: inputMessageContents,\n            protectContent: protectContent,\n            replyTo: replyTo\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits the text of a text or game message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter inputMessageContent: New text content of the message. Must be of type inputMessageText\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    public func editBusinessMessageText(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<BusinessMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = EditBusinessMessageText(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            inputMessageContent: inputMessageContent,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits the text of a text or game message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter inputMessageContent: New text content of the message. Must be of type inputMessageText\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func editBusinessMessageText(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> BusinessMessage {\n        let query = EditBusinessMessageText(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            inputMessageContent: inputMessageContent,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits the content of a live location in a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter heading: The new direction in which the location moves, in degrees; 1-360. Pass 0 if unknown\n    /// - Parameter livePeriod: New time relative to the message send date, for which the location can be updated, in seconds. If 0x7FFFFFFF specified, then the location can be updated forever. Otherwise, must not exceed the current live_period by more than a day, and the live location expiration date must remain in the next 90 days. Pass 0 to keep the current live_period\n    /// - Parameter location: New location content of the message; pass null to stop sharing the live location\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter proximityAlertRadius: The new maximum distance for proximity alerts, in meters (0-100000). Pass 0 if the notification is disabled\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    public func editBusinessMessageLiveLocation(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        heading: Int?,\n        livePeriod: Int?,\n        location: Location?,\n        messageId: Int64?,\n        proximityAlertRadius: Int?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<BusinessMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = EditBusinessMessageLiveLocation(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            heading: heading,\n            livePeriod: livePeriod,\n            location: location,\n            messageId: messageId,\n            proximityAlertRadius: proximityAlertRadius,\n            replyMarkup: replyMarkup\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits the content of a live location in a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter heading: The new direction in which the location moves, in degrees; 1-360. Pass 0 if unknown\n    /// - Parameter livePeriod: New time relative to the message send date, for which the location can be updated, in seconds. If 0x7FFFFFFF specified, then the location can be updated forever. Otherwise, must not exceed the current live_period by more than a day, and the live location expiration date must remain in the next 90 days. Pass 0 to keep the current live_period\n    /// - Parameter location: New location content of the message; pass null to stop sharing the live location\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter proximityAlertRadius: The new maximum distance for proximity alerts, in meters (0-100000). Pass 0 if the notification is disabled\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func editBusinessMessageLiveLocation(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        heading: Int?,\n        livePeriod: Int?,\n        location: Location?,\n        messageId: Int64?,\n        proximityAlertRadius: Int?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> BusinessMessage {\n        let query = EditBusinessMessageLiveLocation(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            heading: heading,\n            livePeriod: livePeriod,\n            location: location,\n            messageId: messageId,\n            proximityAlertRadius: proximityAlertRadius,\n            replyMarkup: replyMarkup\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits the content of a checklist in a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter checklist: The new checklist. If some tasks were completed, this information will be kept\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    public func editBusinessMessageChecklist(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        checklist: InputChecklist?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<BusinessMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = EditBusinessMessageChecklist(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            checklist: checklist,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits the content of a checklist in a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter checklist: The new checklist. If some tasks were completed, this information will be kept\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func editBusinessMessageChecklist(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        checklist: InputChecklist?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> BusinessMessage {\n        let query = EditBusinessMessageChecklist(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            checklist: checklist,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits the media content of a message with a text, an animation, an audio, a document, a photo or a video in a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter inputMessageContent: New content of the message. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageDocument, inputMessagePhoto or inputMessageVideo\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    public func editBusinessMessageMedia(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<BusinessMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = EditBusinessMessageMedia(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            inputMessageContent: inputMessageContent,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits the media content of a message with a text, an animation, an audio, a document, a photo or a video in a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter inputMessageContent: New content of the message. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageDocument, inputMessagePhoto or inputMessageVideo\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func editBusinessMessageMedia(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> BusinessMessage {\n        let query = EditBusinessMessageMedia(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            inputMessageContent: inputMessageContent,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits the caption of a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter caption: New message content caption; pass null to remove caption; 0-getOption(\"message_caption_length_max\") characters\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    /// - Parameter showCaptionAboveMedia: Pass true to show the caption above the media; otherwise, the caption will be shown below the media. May be true only for animation, photo, and video messages\n    public func editBusinessMessageCaption(\n        businessConnectionId: String?,\n        caption: FormattedText?,\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        showCaptionAboveMedia: Bool?,\n        completion: @escaping (Result<BusinessMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = EditBusinessMessageCaption(\n            businessConnectionId: businessConnectionId,\n            caption: caption,\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup,\n            showCaptionAboveMedia: showCaptionAboveMedia\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits the caption of a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter caption: New message content caption; pass null to remove caption; 0-getOption(\"message_caption_length_max\") characters\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    /// - Parameter showCaptionAboveMedia: Pass true to show the caption above the media; otherwise, the caption will be shown below the media. May be true only for animation, photo, and video messages\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func editBusinessMessageCaption(\n        businessConnectionId: String?,\n        caption: FormattedText?,\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        showCaptionAboveMedia: Bool?\n    ) async throws -> BusinessMessage {\n        let query = EditBusinessMessageCaption(\n            businessConnectionId: businessConnectionId,\n            caption: caption,\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup,\n            showCaptionAboveMedia: showCaptionAboveMedia\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits the reply markup of a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    public func editBusinessMessageReplyMarkup(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<BusinessMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = EditBusinessMessageReplyMarkup(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits the reply markup of a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func editBusinessMessageReplyMarkup(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> BusinessMessage {\n        let query = EditBusinessMessageReplyMarkup(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Stops a poll sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message with the poll was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message containing the poll\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    public func stopBusinessPoll(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<BusinessMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = StopBusinessPoll(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Stops a poll sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message with the poll was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message containing the poll\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func stopBusinessPoll(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> BusinessMessage {\n        let query = StopBusinessPoll(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Pins or unpins a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter isPinned: Pass true to pin the message, pass false to unpin it\n    /// - Parameter messageId: Identifier of the message\n    public func setBusinessMessageIsPinned(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        isPinned: Bool?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessMessageIsPinned(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            isPinned: isPinned,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Pins or unpins a message sent on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which the message was sent\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter isPinned: Pass true to pin the message, pass false to unpin it\n    /// - Parameter messageId: Identifier of the message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setBusinessMessageIsPinned(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        isPinned: Bool?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = SetBusinessMessageIsPinned(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            isPinned: isPinned,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Reads a message on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection through which the message was received\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message\n    public func readBusinessMessage(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReadBusinessMessage(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Reads a message on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection through which the message was received\n    /// - Parameter chatId: The chat the message belongs to\n    /// - Parameter messageId: Identifier of the message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func readBusinessMessage(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = ReadBusinessMessage(\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes messages on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection through which the messages were received\n    /// - Parameter messageIds: Identifier of the messages\n    public func deleteBusinessMessages(\n        businessConnectionId: String?,\n        messageIds: [Int64]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteBusinessMessages(\n            businessConnectionId: businessConnectionId,\n            messageIds: messageIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes messages on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection through which the messages were received\n    /// - Parameter messageIds: Identifier of the messages\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteBusinessMessages(\n        businessConnectionId: String?,\n        messageIds: [Int64]?\n    ) async throws -> Ok {\n        let query = DeleteBusinessMessages(\n            businessConnectionId: businessConnectionId,\n            messageIds: messageIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes a story posted by the bot on behalf of a business account; for bots only\n    /// - Parameter areas: New clickable rectangle areas to be shown on the story media\n    /// - Parameter caption: New story caption\n    /// - Parameter content: New content of the story\n    /// - Parameter privacySettings: The new privacy settings for the story\n    /// - Parameter storyId: Identifier of the story to edit\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    public func editBusinessStory(\n        areas: InputStoryAreas?,\n        caption: FormattedText?,\n        content: InputStoryContent?,\n        privacySettings: StoryPrivacySettings?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<Story, Swift.Error>) -> Void\n    ) throws {\n        let query = EditBusinessStory(\n            areas: areas,\n            caption: caption,\n            content: content,\n            privacySettings: privacySettings,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes a story posted by the bot on behalf of a business account; for bots only\n    /// - Parameter areas: New clickable rectangle areas to be shown on the story media\n    /// - Parameter caption: New story caption\n    /// - Parameter content: New content of the story\n    /// - Parameter privacySettings: The new privacy settings for the story\n    /// - Parameter storyId: Identifier of the story to edit\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func editBusinessStory(\n        areas: InputStoryAreas?,\n        caption: FormattedText?,\n        content: InputStoryContent?,\n        privacySettings: StoryPrivacySettings?,\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) async throws -> Story {\n        let query = EditBusinessStory(\n            areas: areas,\n            caption: caption,\n            content: content,\n            privacySettings: privacySettings,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes a story posted by the bot on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter storyId: Identifier of the story to delete\n    public func deleteBusinessStory(\n        businessConnectionId: String?,\n        storyId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteBusinessStory(\n            businessConnectionId: businessConnectionId,\n            storyId: storyId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes a story posted by the bot on behalf of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter storyId: Identifier of the story to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteBusinessStory(\n        businessConnectionId: String?,\n        storyId: Int?\n    ) async throws -> Ok {\n        let query = DeleteBusinessStory(\n            businessConnectionId: businessConnectionId,\n            storyId: storyId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the first and last name of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter firstName: The new value of the first name for the business account; 1-64 characters\n    /// - Parameter lastName: The new value of the optional last name for the business account; 0-64 characters\n    public func setBusinessAccountName(\n        businessConnectionId: String?,\n        firstName: String?,\n        lastName: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessAccountName(\n            businessConnectionId: businessConnectionId,\n            firstName: firstName,\n            lastName: lastName\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the first and last name of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter firstName: The new value of the first name for the business account; 1-64 characters\n    /// - Parameter lastName: The new value of the optional last name for the business account; 0-64 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setBusinessAccountName(\n        businessConnectionId: String?,\n        firstName: String?,\n        lastName: String?\n    ) async throws -> Ok {\n        let query = SetBusinessAccountName(\n            businessConnectionId: businessConnectionId,\n            firstName: firstName,\n            lastName: lastName\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the bio of a business account; for bots only\n    /// - Parameter bio: The new value of the bio; 0-getOption(\"bio_length_max\") characters without line feeds\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    public func setBusinessAccountBio(\n        bio: String?,\n        businessConnectionId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessAccountBio(\n            bio: bio,\n            businessConnectionId: businessConnectionId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the bio of a business account; for bots only\n    /// - Parameter bio: The new value of the bio; 0-getOption(\"bio_length_max\") characters without line feeds\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setBusinessAccountBio(\n        bio: String?,\n        businessConnectionId: String?\n    ) async throws -> Ok {\n        let query = SetBusinessAccountBio(\n            bio: bio,\n            businessConnectionId: businessConnectionId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes a profile photo of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter isPublic: Pass true to set the public photo, which will be visible even if the main photo is hidden by privacy settings\n    /// - Parameter photo: Profile photo to set; pass null to remove the photo\n    public func setBusinessAccountProfilePhoto(\n        businessConnectionId: String?,\n        isPublic: Bool?,\n        photo: InputChatPhoto?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessAccountProfilePhoto(\n            businessConnectionId: businessConnectionId,\n            isPublic: isPublic,\n            photo: photo\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes a profile photo of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter isPublic: Pass true to set the public photo, which will be visible even if the main photo is hidden by privacy settings\n    /// - Parameter photo: Profile photo to set; pass null to remove the photo\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setBusinessAccountProfilePhoto(\n        businessConnectionId: String?,\n        isPublic: Bool?,\n        photo: InputChatPhoto?\n    ) async throws -> Ok {\n        let query = SetBusinessAccountProfilePhoto(\n            businessConnectionId: businessConnectionId,\n            isPublic: isPublic,\n            photo: photo\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the editable username of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter username: The new value of the username\n    public func setBusinessAccountUsername(\n        businessConnectionId: String?,\n        username: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessAccountUsername(\n            businessConnectionId: businessConnectionId,\n            username: username\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the editable username of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter username: The new value of the username\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setBusinessAccountUsername(\n        businessConnectionId: String?,\n        username: String?\n    ) async throws -> Ok {\n        let query = SetBusinessAccountUsername(\n            businessConnectionId: businessConnectionId,\n            username: username\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes settings for gift receiving of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter settings: The new settings\n    public func setBusinessAccountGiftSettings(\n        businessConnectionId: String?,\n        settings: GiftSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessAccountGiftSettings(\n            businessConnectionId: businessConnectionId,\n            settings: settings\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes settings for gift receiving of a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter settings: The new settings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setBusinessAccountGiftSettings(\n        businessConnectionId: String?,\n        settings: GiftSettings?\n    ) async throws -> Ok {\n        let query = SetBusinessAccountGiftSettings(\n            businessConnectionId: businessConnectionId,\n            settings: settings\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the Telegram Star amount owned by a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Returns: The Telegram Star amount owned by a business account\n    public func getBusinessAccountStarAmount(\n        businessConnectionId: String?,\n        completion: @escaping (Result<StarAmount, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBusinessAccountStarAmount(\n            businessConnectionId: businessConnectionId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the Telegram Star amount owned by a business account; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Returns: The Telegram Star amount owned by a business account\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getBusinessAccountStarAmount(businessConnectionId: String?) async throws -> StarAmount {\n        let query = GetBusinessAccountStarAmount(\n            businessConnectionId: businessConnectionId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Transfers Telegram Stars from the business account to the business bot; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter starCount: Number of Telegram Stars to transfer\n    public func transferBusinessAccountStars(\n        businessConnectionId: String?,\n        starCount: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = TransferBusinessAccountStars(\n            businessConnectionId: businessConnectionId,\n            starCount: starCount\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Transfers Telegram Stars from the business account to the business bot; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection\n    /// - Parameter starCount: Number of Telegram Stars to transfer\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func transferBusinessAccountStars(\n        businessConnectionId: String?,\n        starCount: Int64?\n    ) async throws -> Ok {\n        let query = TransferBusinessAccountStars(\n            businessConnectionId: businessConnectionId,\n            starCount: starCount\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks validness of a name for a quick reply shortcut. Can be called synchronously\n    /// - Parameter name: The name of the shortcut; 1-32 characters\n    public func checkQuickReplyShortcutName(\n        name: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckQuickReplyShortcutName(\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks validness of a name for a quick reply shortcut. Can be called synchronously\n    /// - Parameter name: The name of the shortcut; 1-32 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func checkQuickReplyShortcutName(name: String?) async throws -> Ok {\n        let query = CheckQuickReplyShortcutName(\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Loads quick reply shortcuts created by the current user. The loaded data will be sent through updateQuickReplyShortcut and updateQuickReplyShortcuts\n    public func loadQuickReplyShortcuts(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = LoadQuickReplyShortcuts()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Loads quick reply shortcuts created by the current user. The loaded data will be sent through updateQuickReplyShortcut and updateQuickReplyShortcuts\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func loadQuickReplyShortcuts() async throws -> Ok {\n        let query = LoadQuickReplyShortcuts()\n        return try await self.execute(query: query)\n    }\n\n    /// Changes name of a quick reply shortcut\n    /// - Parameter name: New name for the shortcut. Use checkQuickReplyShortcutName to check its validness\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut\n    public func setQuickReplyShortcutName(\n        name: String?,\n        shortcutId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetQuickReplyShortcutName(\n            name: name,\n            shortcutId: shortcutId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes name of a quick reply shortcut\n    /// - Parameter name: New name for the shortcut. Use checkQuickReplyShortcutName to check its validness\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setQuickReplyShortcutName(\n        name: String?,\n        shortcutId: Int?\n    ) async throws -> Ok {\n        let query = SetQuickReplyShortcutName(\n            name: name,\n            shortcutId: shortcutId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes a quick reply shortcut\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut\n    public func deleteQuickReplyShortcut(\n        shortcutId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteQuickReplyShortcut(\n            shortcutId: shortcutId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes a quick reply shortcut\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteQuickReplyShortcut(shortcutId: Int?) async throws -> Ok {\n        let query = DeleteQuickReplyShortcut(\n            shortcutId: shortcutId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the order of quick reply shortcuts\n    /// - Parameter shortcutIds: The new order of quick reply shortcuts\n    public func reorderQuickReplyShortcuts(\n        shortcutIds: [Int]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderQuickReplyShortcuts(\n            shortcutIds: shortcutIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the order of quick reply shortcuts\n    /// - Parameter shortcutIds: The new order of quick reply shortcuts\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func reorderQuickReplyShortcuts(shortcutIds: [Int]?) async throws -> Ok {\n        let query = ReorderQuickReplyShortcuts(\n            shortcutIds: shortcutIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Loads quick reply messages that can be sent by a given quick reply shortcut. The loaded messages will be sent through updateQuickReplyShortcutMessages\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut\n    public func loadQuickReplyShortcutMessages(\n        shortcutId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = LoadQuickReplyShortcutMessages(\n            shortcutId: shortcutId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Loads quick reply messages that can be sent by a given quick reply shortcut. The loaded messages will be sent through updateQuickReplyShortcutMessages\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func loadQuickReplyShortcutMessages(shortcutId: Int?) async throws -> Ok {\n        let query = LoadQuickReplyShortcutMessages(\n            shortcutId: shortcutId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes specified quick reply messages\n    /// - Parameter messageIds: Unique identifiers of the messages\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut to which the messages belong\n    public func deleteQuickReplyShortcutMessages(\n        messageIds: [Int64]?,\n        shortcutId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteQuickReplyShortcutMessages(\n            messageIds: messageIds,\n            shortcutId: shortcutId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes specified quick reply messages\n    /// - Parameter messageIds: Unique identifiers of the messages\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut to which the messages belong\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteQuickReplyShortcutMessages(\n        messageIds: [Int64]?,\n        shortcutId: Int?\n    ) async throws -> Ok {\n        let query = DeleteQuickReplyShortcutMessages(\n            messageIds: messageIds,\n            shortcutId: shortcutId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds a message to a quick reply shortcut. If shortcut doesn't exist and there are less than getOption(\"quick_reply_shortcut_count_max\") shortcuts, then a new shortcut is created. The shortcut must not contain more than getOption(\"quick_reply_shortcut_message_count_max\") messages after adding the new message. Returns the added message\n    /// - Parameter inputMessageContent: The content of the message to be added; inputMessagePaidMedia, inputMessageForwarded and inputMessageLocation with live_period aren't supported\n    /// - Parameter replyToMessageId: Identifier of a quick reply message in the same shortcut to be replied; pass 0 if none\n    /// - Parameter shortcutName: Name of the target shortcut\n    /// - Returns: The added message\n    public func addQuickReplyShortcutMessage(\n        inputMessageContent: InputMessageContent?,\n        replyToMessageId: Int64?,\n        shortcutName: String?,\n        completion: @escaping (Result<QuickReplyMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = AddQuickReplyShortcutMessage(\n            inputMessageContent: inputMessageContent,\n            replyToMessageId: replyToMessageId,\n            shortcutName: shortcutName\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds a message to a quick reply shortcut. If shortcut doesn't exist and there are less than getOption(\"quick_reply_shortcut_count_max\") shortcuts, then a new shortcut is created. The shortcut must not contain more than getOption(\"quick_reply_shortcut_message_count_max\") messages after adding the new message. Returns the added message\n    /// - Parameter inputMessageContent: The content of the message to be added; inputMessagePaidMedia, inputMessageForwarded and inputMessageLocation with live_period aren't supported\n    /// - Parameter replyToMessageId: Identifier of a quick reply message in the same shortcut to be replied; pass 0 if none\n    /// - Parameter shortcutName: Name of the target shortcut\n    /// - Returns: The added message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func addQuickReplyShortcutMessage(\n        inputMessageContent: InputMessageContent?,\n        replyToMessageId: Int64?,\n        shortcutName: String?\n    ) async throws -> QuickReplyMessage {\n        let query = AddQuickReplyShortcutMessage(\n            inputMessageContent: inputMessageContent,\n            replyToMessageId: replyToMessageId,\n            shortcutName: shortcutName\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds a message to a quick reply shortcut via inline bot. If shortcut doesn't exist and there are less than getOption(\"quick_reply_shortcut_count_max\") shortcuts, then a new shortcut is created. The shortcut must not contain more than getOption(\"quick_reply_shortcut_message_count_max\") messages after adding the new message. Returns the added message\n    /// - Parameter hideViaBot: Pass true to hide the bot, via which the message is sent. Can be used only for bots getOption(\"animation_search_bot_username\"), getOption(\"photo_search_bot_username\"), and getOption(\"venue_search_bot_username\")\n    /// - Parameter queryId: Identifier of the inline query\n    /// - Parameter replyToMessageId: Identifier of a quick reply message in the same shortcut to be replied; pass 0 if none\n    /// - Parameter resultId: Identifier of the inline query result\n    /// - Parameter shortcutName: Name of the target shortcut\n    /// - Returns: The added message\n    public func addQuickReplyShortcutInlineQueryResultMessage(\n        hideViaBot: Bool?,\n        queryId: TdInt64?,\n        replyToMessageId: Int64?,\n        resultId: String?,\n        shortcutName: String?,\n        completion: @escaping (Result<QuickReplyMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = AddQuickReplyShortcutInlineQueryResultMessage(\n            hideViaBot: hideViaBot,\n            queryId: queryId,\n            replyToMessageId: replyToMessageId,\n            resultId: resultId,\n            shortcutName: shortcutName\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds a message to a quick reply shortcut via inline bot. If shortcut doesn't exist and there are less than getOption(\"quick_reply_shortcut_count_max\") shortcuts, then a new shortcut is created. The shortcut must not contain more than getOption(\"quick_reply_shortcut_message_count_max\") messages after adding the new message. Returns the added message\n    /// - Parameter hideViaBot: Pass true to hide the bot, via which the message is sent. Can be used only for bots getOption(\"animation_search_bot_username\"), getOption(\"photo_search_bot_username\"), and getOption(\"venue_search_bot_username\")\n    /// - Parameter queryId: Identifier of the inline query\n    /// - Parameter replyToMessageId: Identifier of a quick reply message in the same shortcut to be replied; pass 0 if none\n    /// - Parameter resultId: Identifier of the inline query result\n    /// - Parameter shortcutName: Name of the target shortcut\n    /// - Returns: The added message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func addQuickReplyShortcutInlineQueryResultMessage(\n        hideViaBot: Bool?,\n        queryId: TdInt64?,\n        replyToMessageId: Int64?,\n        resultId: String?,\n        shortcutName: String?\n    ) async throws -> QuickReplyMessage {\n        let query = AddQuickReplyShortcutInlineQueryResultMessage(\n            hideViaBot: hideViaBot,\n            queryId: queryId,\n            replyToMessageId: replyToMessageId,\n            resultId: resultId,\n            shortcutName: shortcutName\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds 2-10 messages grouped together into an album to a quick reply shortcut. Currently, only audio, document, photo and video messages can be grouped into an album. Documents and audio files can be only grouped in an album with messages of the same type. Returns sent messages\n    /// - Parameter inputMessageContents: Contents of messages to be sent. At most 10 messages can be added to an album. All messages must have the same value of show_caption_above_media\n    /// - Parameter replyToMessageId: Identifier of a quick reply message in the same shortcut to be replied; pass 0 if none\n    /// - Parameter shortcutName: Name of the target shortcut\n    /// - Returns: Sent messages\n    public func addQuickReplyShortcutMessageAlbum(\n        inputMessageContents: [InputMessageContent]?,\n        replyToMessageId: Int64?,\n        shortcutName: String?,\n        completion: @escaping (Result<QuickReplyMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = AddQuickReplyShortcutMessageAlbum(\n            inputMessageContents: inputMessageContents,\n            replyToMessageId: replyToMessageId,\n            shortcutName: shortcutName\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds 2-10 messages grouped together into an album to a quick reply shortcut. Currently, only audio, document, photo and video messages can be grouped into an album. Documents and audio files can be only grouped in an album with messages of the same type. Returns sent messages\n    /// - Parameter inputMessageContents: Contents of messages to be sent. At most 10 messages can be added to an album. All messages must have the same value of show_caption_above_media\n    /// - Parameter replyToMessageId: Identifier of a quick reply message in the same shortcut to be replied; pass 0 if none\n    /// - Parameter shortcutName: Name of the target shortcut\n    /// - Returns: Sent messages\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func addQuickReplyShortcutMessageAlbum(\n        inputMessageContents: [InputMessageContent]?,\n        replyToMessageId: Int64?,\n        shortcutName: String?\n    ) async throws -> QuickReplyMessages {\n        let query = AddQuickReplyShortcutMessageAlbum(\n            inputMessageContents: inputMessageContents,\n            replyToMessageId: replyToMessageId,\n            shortcutName: shortcutName\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Readds quick reply messages which failed to add. Can be called only for messages for which messageSendingStateFailed.can_retry is true and after specified in messageSendingStateFailed.retry_after time passed. If a message is readded, the corresponding failed to send message is deleted. Returns the sent messages in the same order as the message identifiers passed in message_ids. If a message can't be readded, null will be returned instead of the message\n    /// - Parameter messageIds: Identifiers of the quick reply messages to readd. Message identifiers must be in a strictly increasing order\n    /// - Parameter shortcutName: Name of the target shortcut\n    /// - Returns: The sent messages in the same order as the message identifiers passed in message_ids. If a message can't be readded, null will be returned instead of the message\n    public func readdQuickReplyShortcutMessages(\n        messageIds: [Int64]?,\n        shortcutName: String?,\n        completion: @escaping (Result<QuickReplyMessages, Swift.Error>) -> Void\n    ) throws {\n        let query = ReaddQuickReplyShortcutMessages(\n            messageIds: messageIds,\n            shortcutName: shortcutName\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Readds quick reply messages which failed to add. Can be called only for messages for which messageSendingStateFailed.can_retry is true and after specified in messageSendingStateFailed.retry_after time passed. If a message is readded, the corresponding failed to send message is deleted. Returns the sent messages in the same order as the message identifiers passed in message_ids. If a message can't be readded, null will be returned instead of the message\n    /// - Parameter messageIds: Identifiers of the quick reply messages to readd. Message identifiers must be in a strictly increasing order\n    /// - Parameter shortcutName: Name of the target shortcut\n    /// - Returns: The sent messages in the same order as the message identifiers passed in message_ids. If a message can't be readded, null will be returned instead of the message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func readdQuickReplyShortcutMessages(\n        messageIds: [Int64]?,\n        shortcutName: String?\n    ) async throws -> QuickReplyMessages {\n        let query = ReaddQuickReplyShortcutMessages(\n            messageIds: messageIds,\n            shortcutName: shortcutName\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Asynchronously edits the text, media or caption of a quick reply message. Use quickReplyMessage.can_be_edited to check whether a message can be edited. Media message can be edited only to a media message. Checklist messages can be edited only to a checklist message. The type of message content in an album can't be changed with exception of replacing a photo with a video or vice versa\n    /// - Parameter inputMessageContent: New content of the message. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageChecklist, inputMessageDocument, inputMessagePhoto, inputMessageText, or inputMessageVideo\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut with the message\n    public func editQuickReplyMessage(\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        shortcutId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditQuickReplyMessage(\n            inputMessageContent: inputMessageContent,\n            messageId: messageId,\n            shortcutId: shortcutId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Asynchronously edits the text, media or caption of a quick reply message. Use quickReplyMessage.can_be_edited to check whether a message can be edited. Media message can be edited only to a media message. Checklist messages can be edited only to a checklist message. The type of message content in an album can't be changed with exception of replacing a photo with a video or vice versa\n    /// - Parameter inputMessageContent: New content of the message. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageChecklist, inputMessageDocument, inputMessagePhoto, inputMessageText, or inputMessageVideo\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter shortcutId: Unique identifier of the quick reply shortcut with the message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func editQuickReplyMessage(\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        shortcutId: Int?\n    ) async throws -> Ok {\n        let query = EditQuickReplyMessage(\n            inputMessageContent: inputMessageContent,\n            messageId: messageId,\n            shortcutId: shortcutId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of custom emoji, which can be used as forum topic icon by all users\n    /// - Returns: The list of custom emoji, which can be used as forum topic icon by all users\n    public func getForumTopicDefaultIcons(completion: @escaping (Result<Stickers, Swift.Error>) -> Void) throws {\n        let query = GetForumTopicDefaultIcons()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of custom emoji, which can be used as forum topic icon by all users\n    /// - Returns: The list of custom emoji, which can be used as forum topic icon by all users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getForumTopicDefaultIcons() async throws -> Stickers {\n        let query = GetForumTopicDefaultIcons()\n        return try await self.execute(query: query)\n    }\n\n    /// Creates a topic in a forum supergroup chat or a chat with a bot with topics; requires can_manage_topics administrator or can_create_topics member right in the supergroup\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter icon: Icon of the topic. Icon color must be one of 0x6FB9F0, 0xFFD67E, 0xCB86DB, 0x8EEE98, 0xFF93B2, or 0xFB6F5F. Telegram Premium users can use any custom emoji as topic icon, other users can use only a custom emoji returned by getForumTopicDefaultIcons\n    /// - Parameter isNameImplicit: Pass true if the name of the topic wasn't entered explicitly; for chats with bots only\n    /// - Parameter name: Name of the topic; 1-128 characters\n    public func createForumTopic(\n        chatId: Int64?,\n        icon: ForumTopicIcon?,\n        isNameImplicit: Bool?,\n        name: String?,\n        completion: @escaping (Result<ForumTopicInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateForumTopic(\n            chatId: chatId,\n            icon: icon,\n            isNameImplicit: isNameImplicit,\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Creates a topic in a forum supergroup chat or a chat with a bot with topics; requires can_manage_topics administrator or can_create_topics member right in the supergroup\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter icon: Icon of the topic. Icon color must be one of 0x6FB9F0, 0xFFD67E, 0xCB86DB, 0x8EEE98, 0xFF93B2, or 0xFB6F5F. Telegram Premium users can use any custom emoji as topic icon, other users can use only a custom emoji returned by getForumTopicDefaultIcons\n    /// - Parameter isNameImplicit: Pass true if the name of the topic wasn't entered explicitly; for chats with bots only\n    /// - Parameter name: Name of the topic; 1-128 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createForumTopic(\n        chatId: Int64?,\n        icon: ForumTopicIcon?,\n        isNameImplicit: Bool?,\n        name: String?\n    ) async throws -> ForumTopicInfo {\n        let query = CreateForumTopic(\n            chatId: chatId,\n            icon: icon,\n            isNameImplicit: isNameImplicit,\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits title and icon of a topic in a forum supergroup chat or a chat with a bot with topics; for supergroup chats requires can_manage_topics administrator right unless the user is creator of the topic\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter editIconCustomEmoji: Pass true to edit the icon of the topic. Icon of the General topic can't be edited\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Parameter iconCustomEmojiId: Identifier of the new custom emoji for topic icon; pass 0 to remove the custom emoji. Ignored if edit_icon_custom_emoji is false. Telegram Premium users can use any custom emoji, other users can use only a custom emoji returned by getForumTopicDefaultIcons\n    /// - Parameter name: New name of the topic; 0-128 characters. If empty, the previous topic name is kept\n    public func editForumTopic(\n        chatId: Int64?,\n        editIconCustomEmoji: Bool?,\n        forumTopicId: Int?,\n        iconCustomEmojiId: TdInt64?,\n        name: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditForumTopic(\n            chatId: chatId,\n            editIconCustomEmoji: editIconCustomEmoji,\n            forumTopicId: forumTopicId,\n            iconCustomEmojiId: iconCustomEmojiId,\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits title and icon of a topic in a forum supergroup chat or a chat with a bot with topics; for supergroup chats requires can_manage_topics administrator right unless the user is creator of the topic\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter editIconCustomEmoji: Pass true to edit the icon of the topic. Icon of the General topic can't be edited\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Parameter iconCustomEmojiId: Identifier of the new custom emoji for topic icon; pass 0 to remove the custom emoji. Ignored if edit_icon_custom_emoji is false. Telegram Premium users can use any custom emoji, other users can use only a custom emoji returned by getForumTopicDefaultIcons\n    /// - Parameter name: New name of the topic; 0-128 characters. If empty, the previous topic name is kept\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func editForumTopic(\n        chatId: Int64?,\n        editIconCustomEmoji: Bool?,\n        forumTopicId: Int?,\n        iconCustomEmojiId: TdInt64?,\n        name: String?\n    ) async throws -> Ok {\n        let query = EditForumTopic(\n            chatId: chatId,\n            editIconCustomEmoji: editIconCustomEmoji,\n            forumTopicId: forumTopicId,\n            iconCustomEmojiId: iconCustomEmojiId,\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a topic in a forum supergroup chat or a chat with a bot with topics\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Returns: Information about a topic in a forum supergroup chat or a chat with a bot with topics\n    public func getForumTopic(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        completion: @escaping (Result<ForumTopic, Swift.Error>) -> Void\n    ) throws {\n        let query = GetForumTopic(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a topic in a forum supergroup chat or a chat with a bot with topics\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Returns: Information about a topic in a forum supergroup chat or a chat with a bot with topics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getForumTopic(\n        chatId: Int64?,\n        forumTopicId: Int?\n    ) async throws -> ForumTopic {\n        let query = GetForumTopic(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns messages in a topic in a forum supergroup chat or a chat with a bot with topics. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Parameter fromMessageId: Identifier of the message starting from which history must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    /// - Returns: Messages in a topic in a forum supergroup chat or a chat with a bot with topics. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    public func getForumTopicHistory(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = GetForumTopicHistory(\n            chatId: chatId,\n            forumTopicId: forumTopicId,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns messages in a topic in a forum supergroup chat or a chat with a bot with topics. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Parameter fromMessageId: Identifier of the message starting from which history must be fetched; use 0 to get results from the last message\n    /// - Parameter limit: The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    /// - Returns: Messages in a topic in a forum supergroup chat or a chat with a bot with topics. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getForumTopicHistory(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?\n    ) async throws -> Messages {\n        let query = GetForumTopicHistory(\n            chatId: chatId,\n            forumTopicId: forumTopicId,\n            fromMessageId: fromMessageId,\n            limit: limit,\n            offset: offset\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an HTTPS link to a topic in a forum supergroup chat. This is an offline method\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Returns: An HTTPS link to a topic in a forum supergroup chat\n    public func getForumTopicLink(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        completion: @escaping (Result<MessageLink, Swift.Error>) -> Void\n    ) throws {\n        let query = GetForumTopicLink(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an HTTPS link to a topic in a forum supergroup chat. This is an offline method\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Returns: An HTTPS link to a topic in a forum supergroup chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getForumTopicLink(\n        chatId: Int64?,\n        forumTopicId: Int?\n    ) async throws -> MessageLink {\n        let query = GetForumTopicLink(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns found forum topics in a forum supergroup chat or a chat with a bot with topics. This is a temporary method for getting information about topic list from the server\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter limit: The maximum number of forum topics to be returned; up to 100. For optimal performance, the number of returned forum topics is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offsetDate: The date starting from which the results need to be fetched. Use 0 or any date in the future to get results from the last topic\n    /// - Parameter offsetForumTopicId: The forum topic identifier of the last found topic, or 0 for the first request\n    /// - Parameter offsetMessageId: The message identifier of the last message in the last found topic, or 0 for the first request\n    /// - Parameter query: Query to search for in the forum topic's name\n    /// - Returns: Found forum topics in a forum supergroup chat or a chat with a bot with topics\n    public func getForumTopics(\n        chatId: Int64?,\n        limit: Int?,\n        offsetDate: Int?,\n        offsetForumTopicId: Int?,\n        offsetMessageId: Int64?,\n        query: String?,\n        completion: @escaping (Result<ForumTopics, Swift.Error>) -> Void\n    ) throws {\n        let query = GetForumTopics(\n            chatId: chatId,\n            limit: limit,\n            offsetDate: offsetDate,\n            offsetForumTopicId: offsetForumTopicId,\n            offsetMessageId: offsetMessageId,\n            query: query\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns found forum topics in a forum supergroup chat or a chat with a bot with topics. This is a temporary method for getting information about topic list from the server\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter limit: The maximum number of forum topics to be returned; up to 100. For optimal performance, the number of returned forum topics is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offsetDate: The date starting from which the results need to be fetched. Use 0 or any date in the future to get results from the last topic\n    /// - Parameter offsetForumTopicId: The forum topic identifier of the last found topic, or 0 for the first request\n    /// - Parameter offsetMessageId: The message identifier of the last message in the last found topic, or 0 for the first request\n    /// - Parameter query: Query to search for in the forum topic's name\n    /// - Returns: Found forum topics in a forum supergroup chat or a chat with a bot with topics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getForumTopics(\n        chatId: Int64?,\n        limit: Int?,\n        offsetDate: Int?,\n        offsetForumTopicId: Int?,\n        offsetMessageId: Int64?,\n        query: String?\n    ) async throws -> ForumTopics {\n        let query = GetForumTopics(\n            chatId: chatId,\n            limit: limit,\n            offsetDate: offsetDate,\n            offsetForumTopicId: offsetForumTopicId,\n            offsetMessageId: offsetMessageId,\n            query: query\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the notification settings of a forum topic in a forum supergroup chat or a chat with a bot with topics\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Parameter notificationSettings: New notification settings for the forum topic. If the topic is muted for more than 366 days, it is considered to be muted forever\n    public func setForumTopicNotificationSettings(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        notificationSettings: ChatNotificationSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetForumTopicNotificationSettings(\n            chatId: chatId,\n            forumTopicId: forumTopicId,\n            notificationSettings: notificationSettings\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the notification settings of a forum topic in a forum supergroup chat or a chat with a bot with topics\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Parameter notificationSettings: New notification settings for the forum topic. If the topic is muted for more than 366 days, it is considered to be muted forever\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setForumTopicNotificationSettings(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        notificationSettings: ChatNotificationSettings?\n    ) async throws -> Ok {\n        let query = SetForumTopicNotificationSettings(\n            chatId: chatId,\n            forumTopicId: forumTopicId,\n            notificationSettings: notificationSettings\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether a topic is closed in a forum supergroup chat; requires can_manage_topics administrator right in the supergroup unless the user is creator of the topic\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Parameter isClosed: Pass true to close the topic; pass false to reopen it\n    public func toggleForumTopicIsClosed(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        isClosed: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleForumTopicIsClosed(\n            chatId: chatId,\n            forumTopicId: forumTopicId,\n            isClosed: isClosed\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether a topic is closed in a forum supergroup chat; requires can_manage_topics administrator right in the supergroup unless the user is creator of the topic\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Parameter isClosed: Pass true to close the topic; pass false to reopen it\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleForumTopicIsClosed(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        isClosed: Bool?\n    ) async throws -> Ok {\n        let query = ToggleForumTopicIsClosed(\n            chatId: chatId,\n            forumTopicId: forumTopicId,\n            isClosed: isClosed\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether a General topic is hidden in a forum supergroup chat; requires can_manage_topics administrator right in the supergroup\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter isHidden: Pass true to hide and close the General topic; pass false to unhide it\n    public func toggleGeneralForumTopicIsHidden(\n        chatId: Int64?,\n        isHidden: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleGeneralForumTopicIsHidden(\n            chatId: chatId,\n            isHidden: isHidden\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether a General topic is hidden in a forum supergroup chat; requires can_manage_topics administrator right in the supergroup\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter isHidden: Pass true to hide and close the General topic; pass false to unhide it\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleGeneralForumTopicIsHidden(\n        chatId: Int64?,\n        isHidden: Bool?\n    ) async throws -> Ok {\n        let query = ToggleGeneralForumTopicIsHidden(\n            chatId: chatId,\n            isHidden: isHidden\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the pinned state of a topic in a forum supergroup chat or a chat with a bot with topics; requires can_manage_topics administrator right in the supergroup. There can be up to getOption(\"pinned_forum_topic_count_max\") pinned forum topics\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Parameter isPinned: Pass true to pin the topic; pass false to unpin it\n    public func toggleForumTopicIsPinned(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        isPinned: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleForumTopicIsPinned(\n            chatId: chatId,\n            forumTopicId: forumTopicId,\n            isPinned: isPinned\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the pinned state of a topic in a forum supergroup chat or a chat with a bot with topics; requires can_manage_topics administrator right in the supergroup. There can be up to getOption(\"pinned_forum_topic_count_max\") pinned forum topics\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier\n    /// - Parameter isPinned: Pass true to pin the topic; pass false to unpin it\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleForumTopicIsPinned(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        isPinned: Bool?\n    ) async throws -> Ok {\n        let query = ToggleForumTopicIsPinned(\n            chatId: chatId,\n            forumTopicId: forumTopicId,\n            isPinned: isPinned\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the order of pinned topics in a forum supergroup chat or a chat with a bot with topics; requires can_manage_topics administrator right in the supergroup\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicIds: The new list of identifiers of the pinned forum topics\n    public func setPinnedForumTopics(\n        chatId: Int64?,\n        forumTopicIds: [Int]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetPinnedForumTopics(\n            chatId: chatId,\n            forumTopicIds: forumTopicIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the order of pinned topics in a forum supergroup chat or a chat with a bot with topics; requires can_manage_topics administrator right in the supergroup\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicIds: The new list of identifiers of the pinned forum topics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setPinnedForumTopics(\n        chatId: Int64?,\n        forumTopicIds: [Int]?\n    ) async throws -> Ok {\n        let query = SetPinnedForumTopics(\n            chatId: chatId,\n            forumTopicIds: forumTopicIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes all messages from a topic in a forum supergroup chat or a chat with a bot with topics; requires can_delete_messages administrator right in the supergroup unless the user is creator of the topic, the topic has no messages from other users and has at most 11 messages\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter forumTopicId: Forum topic identifier\n    public func deleteForumTopic(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteForumTopic(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes all messages from a topic in a forum supergroup chat or a chat with a bot with topics; requires can_delete_messages administrator right in the supergroup unless the user is creator of the topic, the topic has no messages from other users and has at most 11 messages\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter forumTopicId: Forum topic identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteForumTopic(\n        chatId: Int64?,\n        forumTopicId: Int?\n    ) async throws -> Ok {\n        let query = DeleteForumTopic(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Marks all mentions in a topic in a forum supergroup chat as read\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier in which mentions are marked as read\n    public func readAllForumTopicMentions(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReadAllForumTopicMentions(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Marks all mentions in a topic in a forum supergroup chat as read\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier in which mentions are marked as read\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func readAllForumTopicMentions(\n        chatId: Int64?,\n        forumTopicId: Int?\n    ) async throws -> Ok {\n        let query = ReadAllForumTopicMentions(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Marks all reactions in a topic in a forum supergroup chat or a chat with a bot with topics as read\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier in which reactions are marked as read\n    public func readAllForumTopicReactions(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReadAllForumTopicReactions(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Marks all reactions in a topic in a forum supergroup chat or a chat with a bot with topics as read\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier in which reactions are marked as read\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func readAllForumTopicReactions(\n        chatId: Int64?,\n        forumTopicId: Int?\n    ) async throws -> Ok {\n        let query = ReadAllForumTopicReactions(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Marks all poll votes in a topic in a forum supergroup chat as read\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier in which poll votes are marked as read\n    public func readAllForumTopicPollVotes(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReadAllForumTopicPollVotes(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Marks all poll votes in a topic in a forum supergroup chat as read\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forumTopicId: Forum topic identifier in which poll votes are marked as read\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func readAllForumTopicPollVotes(\n        chatId: Int64?,\n        forumTopicId: Int?\n    ) async throws -> Ok {\n        let query = ReadAllForumTopicPollVotes(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes all pinned messages from a topic in a forum supergroup chat or a chat with a bot with topics; requires can_pin_messages member right in the supergroup\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter forumTopicId: Forum topic identifier in which messages will be unpinned\n    public func unpinAllForumTopicMessages(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = UnpinAllForumTopicMessages(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes all pinned messages from a topic in a forum supergroup chat or a chat with a bot with topics; requires can_pin_messages member right in the supergroup\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter forumTopicId: Forum topic identifier in which messages will be unpinned\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func unpinAllForumTopicMessages(\n        chatId: Int64?,\n        forumTopicId: Int?\n    ) async throws -> Ok {\n        let query = UnpinAllForumTopicMessages(\n            chatId: chatId,\n            forumTopicId: forumTopicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns parameters for creating of a new passkey as JSON-serialized string\n    /// - Returns: Parameters for creating of a new passkey as JSON-serialized string\n    public func getPasskeyParameters(completion: @escaping (Result<Text, Swift.Error>) -> Void) throws {\n        let query = GetPasskeyParameters()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns parameters for creating of a new passkey as JSON-serialized string\n    /// - Returns: Parameters for creating of a new passkey as JSON-serialized string\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPasskeyParameters() async throws -> Text {\n        let query = GetPasskeyParameters()\n        return try await self.execute(query: query)\n    }\n\n    /// Adds a passkey allowed to be used for the login by the current user and returns the added passkey. Call getPasskeyParameters to get parameters for creating of the passkey\n    /// - Parameter attestationObject: Passkey attestation object\n    /// - Parameter clientData: JSON-encoded client data\n    /// - Returns: Adds a passkey allowed to be used for the login by the current user and returns the added passkey\n    public func addLoginPasskey(\n        attestationObject: Data?,\n        clientData: String?,\n        completion: @escaping (Result<Passkey, Swift.Error>) -> Void\n    ) throws {\n        let query = AddLoginPasskey(\n            attestationObject: attestationObject,\n            clientData: clientData\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds a passkey allowed to be used for the login by the current user and returns the added passkey. Call getPasskeyParameters to get parameters for creating of the passkey\n    /// - Parameter attestationObject: Passkey attestation object\n    /// - Parameter clientData: JSON-encoded client data\n    /// - Returns: Adds a passkey allowed to be used for the login by the current user and returns the added passkey\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func addLoginPasskey(\n        attestationObject: Data?,\n        clientData: String?\n    ) async throws -> Passkey {\n        let query = AddLoginPasskey(\n            attestationObject: attestationObject,\n            clientData: clientData\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of passkeys allowed to be used for the login by the current user\n    /// - Returns: The list of passkeys allowed to be used for the login by the current user\n    public func getLoginPasskeys(completion: @escaping (Result<Passkeys, Swift.Error>) -> Void) throws {\n        let query = GetLoginPasskeys()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of passkeys allowed to be used for the login by the current user\n    /// - Returns: The list of passkeys allowed to be used for the login by the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getLoginPasskeys() async throws -> Passkeys {\n        let query = GetLoginPasskeys()\n        return try await self.execute(query: query)\n    }\n\n    /// Removes a passkey from the list of passkeys allowed to be used for the login by the current user\n    /// - Parameter passkeyId: Unique identifier of the passkey to remove\n    public func removeLoginPasskey(\n        passkeyId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveLoginPasskey(\n            passkeyId: passkeyId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes a passkey from the list of passkeys allowed to be used for the login by the current user\n    /// - Parameter passkeyId: Unique identifier of the passkey to remove\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeLoginPasskey(passkeyId: String?) async throws -> Ok {\n        let query = RemoveLoginPasskey(\n            passkeyId: passkeyId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about an emoji reaction. Returns a 404 error if the reaction is not found\n    /// - Parameter emoji: Text representation of the reaction\n    /// - Returns: Information about an emoji reaction. Returns a 404 error if the reaction is not found\n    public func getEmojiReaction(\n        emoji: String?,\n        completion: @escaping (Result<EmojiReaction, Swift.Error>) -> Void\n    ) throws {\n        let query = GetEmojiReaction(\n            emoji: emoji\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about an emoji reaction. Returns a 404 error if the reaction is not found\n    /// - Parameter emoji: Text representation of the reaction\n    /// - Returns: Information about an emoji reaction. Returns a 404 error if the reaction is not found\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getEmojiReaction(emoji: String?) async throws -> EmojiReaction {\n        let query = GetEmojiReaction(\n            emoji: emoji\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns TGS stickers with generic animations for custom emoji reactions\n    /// - Returns: TGS stickers with generic animations for custom emoji reactions\n    public func getCustomEmojiReactionAnimations(completion: @escaping (Result<Stickers, Swift.Error>) -> Void) throws {\n        let query = GetCustomEmojiReactionAnimations()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns TGS stickers with generic animations for custom emoji reactions\n    /// - Returns: TGS stickers with generic animations for custom emoji reactions\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getCustomEmojiReactionAnimations() async throws -> Stickers {\n        let query = GetCustomEmojiReactionAnimations()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns reactions, which can be added to a message. The list can change after updateActiveEmojiReactions, updateChatAvailableReactions for the chat, or updateMessageInteractionInfo for the message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter rowSize: Number of reaction per row, 5-25\n    /// - Returns: Reactions, which can be added to a message\n    public func getMessageAvailableReactions(\n        chatId: Int64?,\n        messageId: Int64?,\n        rowSize: Int?,\n        completion: @escaping (Result<AvailableReactions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageAvailableReactions(\n            chatId: chatId,\n            messageId: messageId,\n            rowSize: rowSize\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns reactions, which can be added to a message. The list can change after updateActiveEmojiReactions, updateChatAvailableReactions for the chat, or updateMessageInteractionInfo for the message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter rowSize: Number of reaction per row, 5-25\n    /// - Returns: Reactions, which can be added to a message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMessageAvailableReactions(\n        chatId: Int64?,\n        messageId: Int64?,\n        rowSize: Int?\n    ) async throws -> AvailableReactions {\n        let query = GetMessageAvailableReactions(\n            chatId: chatId,\n            messageId: messageId,\n            rowSize: rowSize\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Clears the list of recently used reactions\n    public func clearRecentReactions(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ClearRecentReactions()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Clears the list of recently used reactions\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func clearRecentReactions() async throws -> Ok {\n        let query = ClearRecentReactions()\n        return try await self.execute(query: query)\n    }\n\n    /// Adds a reaction or a tag to a message. Use getMessageAvailableReactions to receive the list of available reactions for the message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter isBig: Pass true if the reaction is added with a big animation\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter reactionType: Type of the reaction to add. Use addPendingPaidMessageReaction instead to add the paid reaction\n    /// - Parameter updateRecentReactions: Pass true if the reaction needs to be added to recent reactions; tags are never added to the list of recent reactions\n    public func addMessageReaction(\n        chatId: Int64?,\n        isBig: Bool?,\n        messageId: Int64?,\n        reactionType: ReactionType?,\n        updateRecentReactions: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddMessageReaction(\n            chatId: chatId,\n            isBig: isBig,\n            messageId: messageId,\n            reactionType: reactionType,\n            updateRecentReactions: updateRecentReactions\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds a reaction or a tag to a message. Use getMessageAvailableReactions to receive the list of available reactions for the message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter isBig: Pass true if the reaction is added with a big animation\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter reactionType: Type of the reaction to add. Use addPendingPaidMessageReaction instead to add the paid reaction\n    /// - Parameter updateRecentReactions: Pass true if the reaction needs to be added to recent reactions; tags are never added to the list of recent reactions\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func addMessageReaction(\n        chatId: Int64?,\n        isBig: Bool?,\n        messageId: Int64?,\n        reactionType: ReactionType?,\n        updateRecentReactions: Bool?\n    ) async throws -> Ok {\n        let query = AddMessageReaction(\n            chatId: chatId,\n            isBig: isBig,\n            messageId: messageId,\n            reactionType: reactionType,\n            updateRecentReactions: updateRecentReactions\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes a reaction from a message. A chosen reaction can always be removed\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter reactionType: Type of the reaction to remove. The paid reaction can't be removed\n    public func removeMessageReaction(\n        chatId: Int64?,\n        messageId: Int64?,\n        reactionType: ReactionType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveMessageReaction(\n            chatId: chatId,\n            messageId: messageId,\n            reactionType: reactionType\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes a reaction from a message. A chosen reaction can always be removed\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter reactionType: Type of the reaction to remove. The paid reaction can't be removed\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeMessageReaction(\n        chatId: Int64?,\n        messageId: Int64?,\n        reactionType: ReactionType?\n    ) async throws -> Ok {\n        let query = RemoveMessageReaction(\n            chatId: chatId,\n            messageId: messageId,\n            reactionType: reactionType\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes all recent reactions added by the specified sender in a chat. Supported only for basic groups and supergroups; requires can_delete_messages administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter senderId: Identifier of the sender of reactions to delete\n    public func deleteAllRecentMessageReactionsFromSender(\n        chatId: Int64?,\n        senderId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteAllRecentMessageReactionsFromSender(\n            chatId: chatId,\n            senderId: senderId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes all recent reactions added by the specified sender in a chat. Supported only for basic groups and supergroups; requires can_delete_messages administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter senderId: Identifier of the sender of reactions to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteAllRecentMessageReactionsFromSender(\n        chatId: Int64?,\n        senderId: MessageSender?\n    ) async throws -> Ok {\n        let query = DeleteAllRecentMessageReactionsFromSender(\n            chatId: chatId,\n            senderId: senderId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes all reactions added by the specified sender on a message\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message containing the reactions. Use messageProperties.can_delete_reactions to check whether the method can be used for a message\n    /// - Parameter senderId: Identifier of the sender of reactions to delete\n    public func deleteMessageReactionsFromSender(\n        chatId: Int64?,\n        messageId: Int64?,\n        senderId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteMessageReactionsFromSender(\n            chatId: chatId,\n            messageId: messageId,\n            senderId: senderId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes all reactions added by the specified sender on a message\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Identifier of the message containing the reactions. Use messageProperties.can_delete_reactions to check whether the method can be used for a message\n    /// - Parameter senderId: Identifier of the sender of reactions to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteMessageReactionsFromSender(\n        chatId: Int64?,\n        messageId: Int64?,\n        senderId: MessageSender?\n    ) async throws -> Ok {\n        let query = DeleteMessageReactionsFromSender(\n            chatId: chatId,\n            messageId: messageId,\n            senderId: senderId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of message sender identifiers, which can be used to send a paid reaction in a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of message sender identifiers, which can be used to send a paid reaction in a chat\n    public func getChatAvailablePaidMessageReactionSenders(\n        chatId: Int64?,\n        completion: @escaping (Result<MessageSenders, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatAvailablePaidMessageReactionSenders(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of message sender identifiers, which can be used to send a paid reaction in a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of message sender identifiers, which can be used to send a paid reaction in a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatAvailablePaidMessageReactionSenders(chatId: Int64?) async throws -> MessageSenders {\n        let query = GetChatAvailablePaidMessageReactionSenders(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds the paid message reaction to a message. Use getMessageAvailableReactions to check whether the reaction is available for the message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter starCount: Number of Telegram Stars to be used for the reaction. The total number of pending paid reactions must not exceed getOption(\"paid_reaction_star_count_max\")\n    /// - Parameter type: Type of the paid reaction; pass null if the user didn't choose reaction type explicitly, for example, the reaction is set from the message bubble\n    public func addPendingPaidMessageReaction(\n        chatId: Int64?,\n        messageId: Int64?,\n        starCount: Int64?,\n        type: PaidReactionType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddPendingPaidMessageReaction(\n            chatId: chatId,\n            messageId: messageId,\n            starCount: starCount,\n            type: type\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds the paid message reaction to a message. Use getMessageAvailableReactions to check whether the reaction is available for the message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter starCount: Number of Telegram Stars to be used for the reaction. The total number of pending paid reactions must not exceed getOption(\"paid_reaction_star_count_max\")\n    /// - Parameter type: Type of the paid reaction; pass null if the user didn't choose reaction type explicitly, for example, the reaction is set from the message bubble\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func addPendingPaidMessageReaction(\n        chatId: Int64?,\n        messageId: Int64?,\n        starCount: Int64?,\n        type: PaidReactionType?\n    ) async throws -> Ok {\n        let query = AddPendingPaidMessageReaction(\n            chatId: chatId,\n            messageId: messageId,\n            starCount: starCount,\n            type: type\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Applies all pending paid reactions on a message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    public func commitPendingPaidMessageReactions(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CommitPendingPaidMessageReactions(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Applies all pending paid reactions on a message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func commitPendingPaidMessageReactions(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = CommitPendingPaidMessageReactions(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes all pending paid reactions on a message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    public func removePendingPaidMessageReactions(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemovePendingPaidMessageReactions(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes all pending paid reactions on a message\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removePendingPaidMessageReactions(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = RemovePendingPaidMessageReactions(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes type of paid message reaction of the current user on a message. The message must have paid reaction added by the current user\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter type: New type of the paid reaction\n    public func setPaidMessageReactionType(\n        chatId: Int64?,\n        messageId: Int64?,\n        type: PaidReactionType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetPaidMessageReactionType(\n            chatId: chatId,\n            messageId: messageId,\n            type: type\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes type of paid message reaction of the current user on a message. The message must have paid reaction added by the current user\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter type: New type of the paid reaction\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setPaidMessageReactionType(\n        chatId: Int64?,\n        messageId: Int64?,\n        type: PaidReactionType?\n    ) async throws -> Ok {\n        let query = SetPaidMessageReactionType(\n            chatId: chatId,\n            messageId: messageId,\n            type: type\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets reactions on a message; for bots only\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter isBig: Pass true if the reactions are added with a big animation\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter reactionTypes: Types of the reaction to set; pass an empty list to remove the reactions\n    public func setMessageReactions(\n        chatId: Int64?,\n        isBig: Bool?,\n        messageId: Int64?,\n        reactionTypes: [ReactionType]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetMessageReactions(\n            chatId: chatId,\n            isBig: isBig,\n            messageId: messageId,\n            reactionTypes: reactionTypes\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets reactions on a message; for bots only\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter isBig: Pass true if the reactions are added with a big animation\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter reactionTypes: Types of the reaction to set; pass an empty list to remove the reactions\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setMessageReactions(\n        chatId: Int64?,\n        isBig: Bool?,\n        messageId: Int64?,\n        reactionTypes: [ReactionType]?\n    ) async throws -> Ok {\n        let query = SetMessageReactions(\n            chatId: chatId,\n            isBig: isBig,\n            messageId: messageId,\n            reactionTypes: reactionTypes\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns reactions added for a message, along with their sender\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter limit: The maximum number of reactions to be returned; must be positive and can't be greater than 100\n    /// - Parameter messageId: Identifier of the message. Use message.interaction_info.reactions.can_get_added_reactions to check whether added reactions can be received for the message\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter reactionType: Type of the reactions to return; pass null to return all added reactions; reactionTypePaid isn't supported\n    /// - Returns: Reactions added for a message, along with their sender\n    public func getMessageAddedReactions(\n        chatId: Int64?,\n        limit: Int?,\n        messageId: Int64?,\n        offset: String?,\n        reactionType: ReactionType?,\n        completion: @escaping (Result<AddedReactions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageAddedReactions(\n            chatId: chatId,\n            limit: limit,\n            messageId: messageId,\n            offset: offset,\n            reactionType: reactionType\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns reactions added for a message, along with their sender\n    /// - Parameter chatId: Identifier of the chat to which the message belongs\n    /// - Parameter limit: The maximum number of reactions to be returned; must be positive and can't be greater than 100\n    /// - Parameter messageId: Identifier of the message. Use message.interaction_info.reactions.can_get_added_reactions to check whether added reactions can be received for the message\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter reactionType: Type of the reactions to return; pass null to return all added reactions; reactionTypePaid isn't supported\n    /// - Returns: Reactions added for a message, along with their sender\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMessageAddedReactions(\n        chatId: Int64?,\n        limit: Int?,\n        messageId: Int64?,\n        offset: String?,\n        reactionType: ReactionType?\n    ) async throws -> AddedReactions {\n        let query = GetMessageAddedReactions(\n            chatId: chatId,\n            limit: limit,\n            messageId: messageId,\n            offset: offset,\n            reactionType: reactionType\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes type of default reaction for the current user\n    /// - Parameter reactionType: New type of the default reaction. The paid reaction can't be set as default\n    public func setDefaultReactionType(\n        reactionType: ReactionType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetDefaultReactionType(\n            reactionType: reactionType\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes type of default reaction for the current user\n    /// - Parameter reactionType: New type of the default reaction. The paid reaction can't be set as default\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setDefaultReactionType(reactionType: ReactionType?) async throws -> Ok {\n        let query = SetDefaultReactionType(\n            reactionType: reactionType\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns tags used in Saved Messages or a Saved Messages topic\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic which tags will be returned; pass 0 to get all Saved Messages tags\n    /// - Returns: Tags used in Saved Messages or a Saved Messages topic\n    public func getSavedMessagesTags(\n        savedMessagesTopicId: Int64?,\n        completion: @escaping (Result<SavedMessagesTags, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSavedMessagesTags(\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns tags used in Saved Messages or a Saved Messages topic\n    /// - Parameter savedMessagesTopicId: Identifier of Saved Messages topic which tags will be returned; pass 0 to get all Saved Messages tags\n    /// - Returns: Tags used in Saved Messages or a Saved Messages topic\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getSavedMessagesTags(savedMessagesTopicId: Int64?) async throws -> SavedMessagesTags {\n        let query = GetSavedMessagesTags(\n            savedMessagesTopicId: savedMessagesTopicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes label of a Saved Messages tag; for Telegram Premium users only\n    /// - Parameter label: New label for the tag; 0-12 characters\n    /// - Parameter tag: The tag which label will be changed\n    public func setSavedMessagesTagLabel(\n        label: String?,\n        tag: ReactionType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetSavedMessagesTagLabel(\n            label: label,\n            tag: tag\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes label of a Saved Messages tag; for Telegram Premium users only\n    /// - Parameter label: New label for the tag; 0-12 characters\n    /// - Parameter tag: The tag which label will be changed\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setSavedMessagesTagLabel(\n        label: String?,\n        tag: ReactionType?\n    ) async throws -> Ok {\n        let query = SetSavedMessagesTagLabel(\n            label: label,\n            tag: tag\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a message effect. Returns a 404 error if the effect is not found\n    /// - Parameter effectId: Unique identifier of the effect\n    /// - Returns: Information about a message effect. Returns a 404 error if the effect is not found\n    public func getMessageEffect(\n        effectId: TdInt64?,\n        completion: @escaping (Result<MessageEffect, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageEffect(\n            effectId: effectId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a message effect. Returns a 404 error if the effect is not found\n    /// - Parameter effectId: Unique identifier of the effect\n    /// - Returns: Information about a message effect. Returns a 404 error if the effect is not found\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMessageEffect(effectId: TdInt64?) async throws -> MessageEffect {\n        let query = GetMessageEffect(\n            effectId: effectId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for a given quote in a text. Returns found quote start position in UTF-16 code units. Returns a 404 error if the quote is not found. Can be called synchronously\n    /// - Parameter quote: Quote to search for\n    /// - Parameter quotePosition: Approximate quote position in UTF-16 code units\n    /// - Parameter text: Text in which to search for the quote\n    /// - Returns: Found quote start position in UTF-16 code units. Returns a 404 error if the quote is not found\n    public func searchQuote(\n        quote: FormattedText?,\n        quotePosition: Int?,\n        text: FormattedText?,\n        completion: @escaping (Result<FoundPosition, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchQuote(\n            quote: quote,\n            quotePosition: quotePosition,\n            text: text\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for a given quote in a text. Returns found quote start position in UTF-16 code units. Returns a 404 error if the quote is not found. Can be called synchronously\n    /// - Parameter quote: Quote to search for\n    /// - Parameter quotePosition: Approximate quote position in UTF-16 code units\n    /// - Parameter text: Text in which to search for the quote\n    /// - Returns: Found quote start position in UTF-16 code units. Returns a 404 error if the quote is not found\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchQuote(\n        quote: FormattedText?,\n        quotePosition: Int?,\n        text: FormattedText?\n    ) async throws -> FoundPosition {\n        let query = SearchQuote(\n            quote: quote,\n            quotePosition: quotePosition,\n            text: text\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns all entities (mentions, hashtags, cashtags, bot commands, bank card numbers, URLs, and email addresses) found in the text. Can be called synchronously\n    /// - Parameter text: The text in which to look for entities\n    /// - Returns: All entities (mentions, hashtags, cashtags, bot commands, bank card numbers, URLs, and email addresses) found in the text\n    public func getTextEntities(\n        text: String?,\n        completion: @escaping (Result<TextEntities, Swift.Error>) -> Void\n    ) throws {\n        let query = GetTextEntities(\n            text: text\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns all entities (mentions, hashtags, cashtags, bot commands, bank card numbers, URLs, and email addresses) found in the text. Can be called synchronously\n    /// - Parameter text: The text in which to look for entities\n    /// - Returns: All entities (mentions, hashtags, cashtags, bot commands, bank card numbers, URLs, and email addresses) found in the text\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getTextEntities(text: String?) async throws -> TextEntities {\n        let query = GetTextEntities(\n            text: text\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Parses Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, BlockQuote, ExpandableBlockQuote, Code, Pre, PreCode, TextUrl, MentionName, and DateTime entities from a marked-up text. Can be called synchronously\n    /// - Parameter parseMode: Text parse mode\n    /// - Parameter text: The text to parse\n    public func parseTextEntities(\n        parseMode: TextParseMode?,\n        text: String?,\n        completion: @escaping (Result<FormattedText, Swift.Error>) -> Void\n    ) throws {\n        let query = ParseTextEntities(\n            parseMode: parseMode,\n            text: text\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Parses Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, BlockQuote, ExpandableBlockQuote, Code, Pre, PreCode, TextUrl, MentionName, and DateTime entities from a marked-up text. Can be called synchronously\n    /// - Parameter parseMode: Text parse mode\n    /// - Parameter text: The text to parse\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func parseTextEntities(\n        parseMode: TextParseMode?,\n        text: String?\n    ) async throws -> FormattedText {\n        let query = ParseTextEntities(\n            parseMode: parseMode,\n            text: text\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Parses Markdown entities in a human-friendly format, ignoring markup errors. Can be called synchronously\n    /// - Parameter text: The text to parse. For example, \"__italic__ ~~strikethrough~~ ||spoiler|| **bold** `code` ```pre``` __[italic__ text_url](telegram.org) __italic**bold italic__bold**\"\n    public func parseMarkdown(\n        text: FormattedText?,\n        completion: @escaping (Result<FormattedText, Swift.Error>) -> Void\n    ) throws {\n        let query = ParseMarkdown(\n            text: text\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Parses Markdown entities in a human-friendly format, ignoring markup errors. Can be called synchronously\n    /// - Parameter text: The text to parse. For example, \"__italic__ ~~strikethrough~~ ||spoiler|| **bold** `code` ```pre``` __[italic__ text_url](telegram.org) __italic**bold italic__bold**\"\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func parseMarkdown(text: FormattedText?) async throws -> FormattedText {\n        let query = ParseMarkdown(\n            text: text\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Replaces text entities with Markdown formatting in a human-friendly format. Entities that can't be represented in Markdown unambiguously are kept as is. Can be called synchronously\n    /// - Parameter text: The text\n    public func getMarkdownText(\n        text: FormattedText?,\n        completion: @escaping (Result<FormattedText, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMarkdownText(\n            text: text\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Replaces text entities with Markdown formatting in a human-friendly format. Entities that can't be represented in Markdown unambiguously are kept as is. Can be called synchronously\n    /// - Parameter text: The text\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMarkdownText(text: FormattedText?) async throws -> FormattedText {\n        let query = GetMarkdownText(\n            text: text\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an emoji for the given country. Returns an empty string on failure. Can be called synchronously\n    /// - Parameter countryCode: A two-letter ISO 3166-1 alpha-2 country code as received from getCountries\n    /// - Returns: An emoji for the given country. Returns an empty string on failure\n    public func getCountryFlagEmoji(\n        countryCode: String?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetCountryFlagEmoji(\n            countryCode: countryCode\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an emoji for the given country. Returns an empty string on failure. Can be called synchronously\n    /// - Parameter countryCode: A two-letter ISO 3166-1 alpha-2 country code as received from getCountries\n    /// - Returns: An emoji for the given country. Returns an empty string on failure\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getCountryFlagEmoji(countryCode: String?) async throws -> Text {\n        let query = GetCountryFlagEmoji(\n            countryCode: countryCode\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the MIME type of a file, guessed by its extension. Returns an empty string on failure. Can be called synchronously\n    /// - Parameter fileName: The name of the file or path to the file\n    /// - Returns: The MIME type of a file, guessed by its extension. Returns an empty string on failure\n    public func getFileMimeType(\n        fileName: String?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetFileMimeType(\n            fileName: fileName\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the MIME type of a file, guessed by its extension. Returns an empty string on failure. Can be called synchronously\n    /// - Parameter fileName: The name of the file or path to the file\n    /// - Returns: The MIME type of a file, guessed by its extension. Returns an empty string on failure\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getFileMimeType(fileName: String?) async throws -> Text {\n        let query = GetFileMimeType(\n            fileName: fileName\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the extension of a file, guessed by its MIME type. Returns an empty string on failure. Can be called synchronously\n    /// - Parameter mimeType: The MIME type of the file\n    /// - Returns: The extension of a file, guessed by its MIME type. Returns an empty string on failure\n    public func getFileExtension(\n        mimeType: String?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetFileExtension(\n            mimeType: mimeType\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the extension of a file, guessed by its MIME type. Returns an empty string on failure. Can be called synchronously\n    /// - Parameter mimeType: The MIME type of the file\n    /// - Returns: The extension of a file, guessed by its MIME type. Returns an empty string on failure\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getFileExtension(mimeType: String?) async throws -> Text {\n        let query = GetFileExtension(\n            mimeType: mimeType\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes potentially dangerous characters from the name of a file. Returns an empty string on failure. Can be called synchronously\n    /// - Parameter fileName: File name or path to the file\n    /// - Returns: An empty string on failure\n    public func cleanFileName(\n        fileName: String?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = CleanFileName(\n            fileName: fileName\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes potentially dangerous characters from the name of a file. Returns an empty string on failure. Can be called synchronously\n    /// - Parameter fileName: File name or path to the file\n    /// - Returns: An empty string on failure\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func cleanFileName(fileName: String?) async throws -> Text {\n        let query = CleanFileName(\n            fileName: fileName\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a string stored in the local database from the specified localization target and language pack by its key. Returns a 404 error if the string is not found. Can be called synchronously\n    /// - Parameter key: Language pack key of the string to be returned\n    /// - Parameter languagePackDatabasePath: Path to the language pack database in which strings are stored\n    /// - Parameter languagePackId: Language pack identifier\n    /// - Parameter localizationTarget: Localization target to which the language pack belongs\n    /// - Returns: A string stored in the local database from the specified localization target and language pack by its key. Returns a 404 error if the string is not found\n    public func getLanguagePackString(\n        key: String?,\n        languagePackDatabasePath: String?,\n        languagePackId: String?,\n        localizationTarget: String?,\n        completion: @escaping (Result<LanguagePackStringValue, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLanguagePackString(\n            key: key,\n            languagePackDatabasePath: languagePackDatabasePath,\n            languagePackId: languagePackId,\n            localizationTarget: localizationTarget\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a string stored in the local database from the specified localization target and language pack by its key. Returns a 404 error if the string is not found. Can be called synchronously\n    /// - Parameter key: Language pack key of the string to be returned\n    /// - Parameter languagePackDatabasePath: Path to the language pack database in which strings are stored\n    /// - Parameter languagePackId: Language pack identifier\n    /// - Parameter localizationTarget: Localization target to which the language pack belongs\n    /// - Returns: A string stored in the local database from the specified localization target and language pack by its key. Returns a 404 error if the string is not found\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getLanguagePackString(\n        key: String?,\n        languagePackDatabasePath: String?,\n        languagePackId: String?,\n        localizationTarget: String?\n    ) async throws -> LanguagePackStringValue {\n        let query = GetLanguagePackString(\n            key: key,\n            languagePackDatabasePath: languagePackDatabasePath,\n            languagePackId: languagePackId,\n            localizationTarget: localizationTarget\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Converts a JSON-serialized string to corresponding JsonValue object. Can be called synchronously\n    /// - Parameter json: The JSON-serialized string\n    public func getJsonValue(\n        json: String?,\n        completion: @escaping (Result<JsonValue, Swift.Error>) -> Void\n    ) throws {\n        let query = GetJsonValue(\n            json: json\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Converts a JSON-serialized string to corresponding JsonValue object. Can be called synchronously\n    /// - Parameter json: The JSON-serialized string\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getJsonValue(json: String?) async throws -> JsonValue {\n        let query = GetJsonValue(\n            json: json\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Converts a JsonValue object to corresponding JSON-serialized string. Can be called synchronously\n    /// - Parameter jsonValue: The JsonValue object\n    public func getJsonString(\n        jsonValue: JsonValue?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetJsonString(\n            jsonValue: jsonValue\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Converts a JsonValue object to corresponding JSON-serialized string. Can be called synchronously\n    /// - Parameter jsonValue: The JsonValue object\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getJsonString(jsonValue: JsonValue?) async throws -> Text {\n        let query = GetJsonString(\n            jsonValue: jsonValue\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Converts a themeParameters object to corresponding JSON-serialized string. Can be called synchronously\n    /// - Parameter theme: Theme parameters to convert to JSON\n    public func getThemeParametersJsonString(\n        theme: ThemeParameters?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetThemeParametersJsonString(\n            theme: theme\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Converts a themeParameters object to corresponding JSON-serialized string. Can be called synchronously\n    /// - Parameter theme: Theme parameters to convert to JSON\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getThemeParametersJsonString(theme: ThemeParameters?) async throws -> Text {\n        let query = GetThemeParametersJsonString(\n            theme: theme\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds an option to a poll\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter messageId: Identifier of the message containing the poll. Use messagePoll.can_add_option to check whether an option can be added\n    /// - Parameter option: The new option\n    public func addPollOption(\n        chatId: Int64?,\n        messageId: Int64?,\n        option: InputPollOption?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddPollOption(\n            chatId: chatId,\n            messageId: messageId,\n            option: option\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds an option to a poll\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter messageId: Identifier of the message containing the poll. Use messagePoll.can_add_option to check whether an option can be added\n    /// - Parameter option: The new option\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func addPollOption(\n        chatId: Int64?,\n        messageId: Int64?,\n        option: InputPollOption?\n    ) async throws -> Ok {\n        let query = AddPollOption(\n            chatId: chatId,\n            messageId: messageId,\n            option: option\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes an option from a poll\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter messageId: Identifier of the message containing the poll\n    /// - Parameter optionId: Unique identifier of the option. Use pollOptionProperties.can_be_deleted to check whether the option can be deleted by the user\n    public func deletePollOption(\n        chatId: Int64?,\n        messageId: Int64?,\n        optionId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeletePollOption(\n            chatId: chatId,\n            messageId: messageId,\n            optionId: optionId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes an option from a poll\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter messageId: Identifier of the message containing the poll\n    /// - Parameter optionId: Unique identifier of the option. Use pollOptionProperties.can_be_deleted to check whether the option can be deleted by the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deletePollOption(\n        chatId: Int64?,\n        messageId: Int64?,\n        optionId: String?\n    ) async throws -> Ok {\n        let query = DeletePollOption(\n            chatId: chatId,\n            messageId: messageId,\n            optionId: optionId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the user answer to a poll\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter messageId: Identifier of the message containing the poll\n    /// - Parameter optionIds: 0-based identifiers of answer options, chosen by the user. User can choose more than 1 answer option only is the poll allows multiple answers\n    public func setPollAnswer(\n        chatId: Int64?,\n        messageId: Int64?,\n        optionIds: [Int]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetPollAnswer(\n            chatId: chatId,\n            messageId: messageId,\n            optionIds: optionIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the user answer to a poll\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter messageId: Identifier of the message containing the poll\n    /// - Parameter optionIds: 0-based identifiers of answer options, chosen by the user. User can choose more than 1 answer option only is the poll allows multiple answers\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setPollAnswer(\n        chatId: Int64?,\n        messageId: Int64?,\n        optionIds: [Int]?\n    ) async throws -> Ok {\n        let query = SetPollAnswer(\n            chatId: chatId,\n            messageId: messageId,\n            optionIds: optionIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns message senders voted for the specified option in a poll; use poll.can_get_voters to check whether the method can be used. For optimal performance, the number of returned users is chosen by TDLib\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter limit: The maximum number of voters to be returned; must be positive and can't be greater than 50. For optimal performance, the number of returned voters is chosen by TDLib and can be smaller than the specified limit, even if the end of the voter list has not been reached\n    /// - Parameter messageId: Identifier of the message containing the poll\n    /// - Parameter offset: Number of voters to skip in the result; must be non-negative\n    /// - Parameter optionId: 0-based identifier of the answer option\n    /// - Returns: Message senders voted for the specified option in a poll. For optimal performance, the number of returned users is chosen by TDLib\n    public func getPollVoters(\n        chatId: Int64?,\n        limit: Int?,\n        messageId: Int64?,\n        offset: Int?,\n        optionId: Int?,\n        completion: @escaping (Result<PollVoters, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPollVoters(\n            chatId: chatId,\n            limit: limit,\n            messageId: messageId,\n            offset: offset,\n            optionId: optionId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns message senders voted for the specified option in a poll; use poll.can_get_voters to check whether the method can be used. For optimal performance, the number of returned users is chosen by TDLib\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter limit: The maximum number of voters to be returned; must be positive and can't be greater than 50. For optimal performance, the number of returned voters is chosen by TDLib and can be smaller than the specified limit, even if the end of the voter list has not been reached\n    /// - Parameter messageId: Identifier of the message containing the poll\n    /// - Parameter offset: Number of voters to skip in the result; must be non-negative\n    /// - Parameter optionId: 0-based identifier of the answer option\n    /// - Returns: Message senders voted for the specified option in a poll. For optimal performance, the number of returned users is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPollVoters(\n        chatId: Int64?,\n        limit: Int?,\n        messageId: Int64?,\n        offset: Int?,\n        optionId: Int?\n    ) async throws -> PollVoters {\n        let query = GetPollVoters(\n            chatId: chatId,\n            limit: limit,\n            messageId: messageId,\n            offset: offset,\n            optionId: optionId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns statistics of poll votes in a poll\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Parameter messageId: Identifier of the message containing the poll. Use messageProperties.can_get_poll_vote_statistics to check whether the method can be used for a message\n    /// - Returns: Statistics of poll votes in a poll\n    public func getPollVoteStatistics(\n        chatId: Int64?,\n        isDark: Bool?,\n        messageId: Int64?,\n        completion: @escaping (Result<PollVoteStatistics, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPollVoteStatistics(\n            chatId: chatId,\n            isDark: isDark,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns statistics of poll votes in a poll\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Parameter messageId: Identifier of the message containing the poll. Use messageProperties.can_get_poll_vote_statistics to check whether the method can be used for a message\n    /// - Returns: Statistics of poll votes in a poll\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPollVoteStatistics(\n        chatId: Int64?,\n        isDark: Bool?,\n        messageId: Int64?\n    ) async throws -> PollVoteStatistics {\n        let query = GetPollVoteStatistics(\n            chatId: chatId,\n            isDark: isDark,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Stops a poll\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter messageId: Identifier of the message containing the poll. Use messageProperties.can_be_edited to check whether the poll can be stopped\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    public func stopPoll(\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = StopPoll(\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Stops a poll\n    /// - Parameter chatId: Identifier of the chat to which the poll belongs\n    /// - Parameter messageId: Identifier of the message containing the poll. Use messageProperties.can_be_edited to check whether the poll can be stopped\n    /// - Parameter replyMarkup: The new message reply markup; pass null if none; for bots only\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func stopPoll(\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) async throws -> Ok {\n        let query = StopPoll(\n            chatId: chatId,\n            messageId: messageId,\n            replyMarkup: replyMarkup\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds tasks to a checklist in a message\n    /// - Parameter chatId: Identifier of the chat with the message\n    /// - Parameter messageId: Identifier of the message containing the checklist. Use messageProperties.can_add_tasks to check whether the tasks can be added\n    /// - Parameter tasks: List of added tasks\n    public func addChecklistTasks(\n        chatId: Int64?,\n        messageId: Int64?,\n        tasks: [InputChecklistTask]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddChecklistTasks(\n            chatId: chatId,\n            messageId: messageId,\n            tasks: tasks\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds tasks to a checklist in a message\n    /// - Parameter chatId: Identifier of the chat with the message\n    /// - Parameter messageId: Identifier of the message containing the checklist. Use messageProperties.can_add_tasks to check whether the tasks can be added\n    /// - Parameter tasks: List of added tasks\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func addChecklistTasks(\n        chatId: Int64?,\n        messageId: Int64?,\n        tasks: [InputChecklistTask]?\n    ) async throws -> Ok {\n        let query = AddChecklistTasks(\n            chatId: chatId,\n            messageId: messageId,\n            tasks: tasks\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds tasks of a checklist in a message as done or not done\n    /// - Parameter chatId: Identifier of the chat with the message\n    /// - Parameter markedAsDoneTaskIds: Identifiers of tasks that were marked as done\n    /// - Parameter markedAsNotDoneTaskIds: Identifiers of tasks that were marked as not done\n    /// - Parameter messageId: Identifier of the message containing the checklist. Use messageProperties.can_mark_tasks_as_done to check whether the tasks can be marked as done or not done\n    public func markChecklistTasksAsDone(\n        chatId: Int64?,\n        markedAsDoneTaskIds: [Int]?,\n        markedAsNotDoneTaskIds: [Int]?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = MarkChecklistTasksAsDone(\n            chatId: chatId,\n            markedAsDoneTaskIds: markedAsDoneTaskIds,\n            markedAsNotDoneTaskIds: markedAsNotDoneTaskIds,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds tasks of a checklist in a message as done or not done\n    /// - Parameter chatId: Identifier of the chat with the message\n    /// - Parameter markedAsDoneTaskIds: Identifiers of tasks that were marked as done\n    /// - Parameter markedAsNotDoneTaskIds: Identifiers of tasks that were marked as not done\n    /// - Parameter messageId: Identifier of the message containing the checklist. Use messageProperties.can_mark_tasks_as_done to check whether the tasks can be marked as done or not done\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func markChecklistTasksAsDone(\n        chatId: Int64?,\n        markedAsDoneTaskIds: [Int]?,\n        markedAsNotDoneTaskIds: [Int]?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = MarkChecklistTasksAsDone(\n            chatId: chatId,\n            markedAsDoneTaskIds: markedAsDoneTaskIds,\n            markedAsNotDoneTaskIds: markedAsNotDoneTaskIds,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Hides a suggested action\n    /// - Parameter action: Suggested action to hide\n    public func hideSuggestedAction(\n        action: SuggestedAction?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = HideSuggestedAction(\n            action: action\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Hides a suggested action\n    /// - Parameter action: Suggested action to hide\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func hideSuggestedAction(action: SuggestedAction?) async throws -> Ok {\n        let query = HideSuggestedAction(\n            action: action\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Hides the list of contacts that have close birthdays for 24 hours\n    public func hideContactCloseBirthdays(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = HideContactCloseBirthdays()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Hides the list of contacts that have close birthdays for 24 hours\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func hideContactCloseBirthdays() async throws -> Ok {\n        let query = HideContactCloseBirthdays()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a business connection by its identifier; for bots only\n    /// - Parameter connectionId: Identifier of the business connection to return\n    /// - Returns: Information about a business connection by its identifier\n    public func getBusinessConnection(\n        connectionId: String?,\n        completion: @escaping (Result<BusinessConnection, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBusinessConnection(\n            connectionId: connectionId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a business connection by its identifier; for bots only\n    /// - Parameter connectionId: Identifier of the business connection to return\n    /// - Returns: Information about a business connection by its identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getBusinessConnection(connectionId: String?) async throws -> BusinessConnection {\n        let query = GetBusinessConnection(\n            connectionId: connectionId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a button of type inlineKeyboardButtonTypeLoginUrl. The method needs to be called when the user presses the button\n    /// - Parameter buttonId: Button identifier\n    /// - Parameter chatId: Chat identifier of the message with the button\n    /// - Parameter messageId: Message identifier of the message with the button. The message must not be scheduled\n    /// - Returns: Information about a button of type inlineKeyboardButtonTypeLoginUrl\n    public func getLoginUrlInfo(\n        buttonId: Int64?,\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<LoginUrlInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLoginUrlInfo(\n            buttonId: buttonId,\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a button of type inlineKeyboardButtonTypeLoginUrl. The method needs to be called when the user presses the button\n    /// - Parameter buttonId: Button identifier\n    /// - Parameter chatId: Chat identifier of the message with the button\n    /// - Parameter messageId: Message identifier of the message with the button. The message must not be scheduled\n    /// - Returns: Information about a button of type inlineKeyboardButtonTypeLoginUrl\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getLoginUrlInfo(\n        buttonId: Int64?,\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> LoginUrlInfo {\n        let query = GetLoginUrlInfo(\n            buttonId: buttonId,\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an HTTP URL which can be used to automatically authorize the user on a website after clicking an inline button of type inlineKeyboardButtonTypeLoginUrl. Use the method getLoginUrlInfo to find whether a prior user confirmation is needed. If an error is returned, then the button must be handled as an ordinary URL button\n    /// - Parameter allowWriteAccess: Pass true to allow the bot to send messages to the current user. Phone number access can't be requested using the button\n    /// - Parameter buttonId: Button identifier\n    /// - Parameter chatId: Chat identifier of the message with the button\n    /// - Parameter messageId: Message identifier of the message with the button\n    /// - Returns: An HTTP URL which can be used to automatically authorize the user on a website after clicking an inline button of type inlineKeyboardButtonTypeLoginUrl. If an error is returned, then the button must be handled as an ordinary URL button\n    public func getLoginUrl(\n        allowWriteAccess: Bool?,\n        buttonId: Int64?,\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLoginUrl(\n            allowWriteAccess: allowWriteAccess,\n            buttonId: buttonId,\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an HTTP URL which can be used to automatically authorize the user on a website after clicking an inline button of type inlineKeyboardButtonTypeLoginUrl. Use the method getLoginUrlInfo to find whether a prior user confirmation is needed. If an error is returned, then the button must be handled as an ordinary URL button\n    /// - Parameter allowWriteAccess: Pass true to allow the bot to send messages to the current user. Phone number access can't be requested using the button\n    /// - Parameter buttonId: Button identifier\n    /// - Parameter chatId: Chat identifier of the message with the button\n    /// - Parameter messageId: Message identifier of the message with the button\n    /// - Returns: An HTTP URL which can be used to automatically authorize the user on a website after clicking an inline button of type inlineKeyboardButtonTypeLoginUrl. If an error is returned, then the button must be handled as an ordinary URL button\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getLoginUrl(\n        allowWriteAccess: Bool?,\n        buttonId: Int64?,\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> HttpUrl {\n        let query = GetLoginUrl(\n            allowWriteAccess: allowWriteAccess,\n            buttonId: buttonId,\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Shares users after pressing a keyboardButtonTypeRequestUsers button with the bot\n    /// - Parameter buttonId: Identifier of the button\n    /// - Parameter onlyCheck: Pass true to check that the users can be shared by the button instead of actually sharing them\n    /// - Parameter sharedUserIds: Identifiers of the shared users\n    /// - Parameter source: Source of the button\n    public func shareUsersWithBot(\n        buttonId: Int?,\n        onlyCheck: Bool?,\n        sharedUserIds: [Int64]?,\n        source: KeyboardButtonSource?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ShareUsersWithBot(\n            buttonId: buttonId,\n            onlyCheck: onlyCheck,\n            sharedUserIds: sharedUserIds,\n            source: source\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Shares users after pressing a keyboardButtonTypeRequestUsers button with the bot\n    /// - Parameter buttonId: Identifier of the button\n    /// - Parameter onlyCheck: Pass true to check that the users can be shared by the button instead of actually sharing them\n    /// - Parameter sharedUserIds: Identifiers of the shared users\n    /// - Parameter source: Source of the button\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func shareUsersWithBot(\n        buttonId: Int?,\n        onlyCheck: Bool?,\n        sharedUserIds: [Int64]?,\n        source: KeyboardButtonSource?\n    ) async throws -> Ok {\n        let query = ShareUsersWithBot(\n            buttonId: buttonId,\n            onlyCheck: onlyCheck,\n            sharedUserIds: sharedUserIds,\n            source: source\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Shares a chat after pressing a keyboardButtonTypeRequestChat button with the bot\n    /// - Parameter buttonId: Identifier of the button\n    /// - Parameter onlyCheck: Pass true to check that the chat can be shared by the button instead of actually sharing it. Doesn't check bot_is_member and bot_administrator_rights restrictions. If the bot must be a member, then all chats from getGroupsInCommon and all chats, where the user can add the bot, are suitable. In the latter case the bot will be automatically added to the chat. If the bot must be an administrator, then all chats, where the bot already has requested rights or can be added to administrators by the user, are suitable. In the latter case the bot will be automatically granted requested rights\n    /// - Parameter sharedChatId: Identifier of the shared chat\n    /// - Parameter source: Source of the button\n    public func shareChatWithBot(\n        buttonId: Int?,\n        onlyCheck: Bool?,\n        sharedChatId: Int64?,\n        source: KeyboardButtonSource?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ShareChatWithBot(\n            buttonId: buttonId,\n            onlyCheck: onlyCheck,\n            sharedChatId: sharedChatId,\n            source: source\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Shares a chat after pressing a keyboardButtonTypeRequestChat button with the bot\n    /// - Parameter buttonId: Identifier of the button\n    /// - Parameter onlyCheck: Pass true to check that the chat can be shared by the button instead of actually sharing it. Doesn't check bot_is_member and bot_administrator_rights restrictions. If the bot must be a member, then all chats from getGroupsInCommon and all chats, where the user can add the bot, are suitable. In the latter case the bot will be automatically added to the chat. If the bot must be an administrator, then all chats, where the bot already has requested rights or can be added to administrators by the user, are suitable. In the latter case the bot will be automatically granted requested rights\n    /// - Parameter sharedChatId: Identifier of the shared chat\n    /// - Parameter source: Source of the button\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func shareChatWithBot(\n        buttonId: Int?,\n        onlyCheck: Bool?,\n        sharedChatId: Int64?,\n        source: KeyboardButtonSource?\n    ) async throws -> Ok {\n        let query = ShareChatWithBot(\n            buttonId: buttonId,\n            onlyCheck: onlyCheck,\n            sharedChatId: sharedChatId,\n            source: source\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends an inline query to a bot and returns its results. Returns an error with code 502 if the bot fails to answer the query before the query timeout expires\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter chatId: Identifier of the chat where the query was sent\n    /// - Parameter offset: Offset of the first entry to return; use empty string to get the first chunk of results\n    /// - Parameter query: Text of the query\n    /// - Parameter userLocation: Location of the user; pass null if unknown or the bot doesn't need user's location\n    /// - Returns: Sends an inline query to a bot and returns its results. Returns an error with code 502 if the bot fails to answer the query before the query timeout expires\n    public func getInlineQueryResults(\n        botUserId: Int64?,\n        chatId: Int64?,\n        offset: String?,\n        query: String?,\n        userLocation: Location?,\n        completion: @escaping (Result<InlineQueryResults, Swift.Error>) -> Void\n    ) throws {\n        let query = GetInlineQueryResults(\n            botUserId: botUserId,\n            chatId: chatId,\n            offset: offset,\n            query: query,\n            userLocation: userLocation\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends an inline query to a bot and returns its results. Returns an error with code 502 if the bot fails to answer the query before the query timeout expires\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter chatId: Identifier of the chat where the query was sent\n    /// - Parameter offset: Offset of the first entry to return; use empty string to get the first chunk of results\n    /// - Parameter query: Text of the query\n    /// - Parameter userLocation: Location of the user; pass null if unknown or the bot doesn't need user's location\n    /// - Returns: Sends an inline query to a bot and returns its results. Returns an error with code 502 if the bot fails to answer the query before the query timeout expires\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getInlineQueryResults(\n        botUserId: Int64?,\n        chatId: Int64?,\n        offset: String?,\n        query: String?,\n        userLocation: Location?\n    ) async throws -> InlineQueryResults {\n        let query = GetInlineQueryResults(\n            botUserId: botUserId,\n            chatId: chatId,\n            offset: offset,\n            query: query,\n            userLocation: userLocation\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets the result of an inline query; for bots only\n    /// - Parameter button: Button to be shown above inline query results; pass null if none\n    /// - Parameter cacheTime: Allowed time to cache the results of the query, in seconds\n    /// - Parameter inlineQueryId: Identifier of the inline query\n    /// - Parameter isPersonal: Pass true if results may be cached and returned only for the user who sent the query. By default, results may be returned to any user who sends the same query\n    /// - Parameter nextOffset: Offset for the next inline query; pass an empty string if there are no more results\n    /// - Parameter results: The results of the query\n    public func answerInlineQuery(\n        button: InlineQueryResultsButton?,\n        cacheTime: Int?,\n        inlineQueryId: TdInt64?,\n        isPersonal: Bool?,\n        nextOffset: String?,\n        results: [InputInlineQueryResult]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AnswerInlineQuery(\n            button: button,\n            cacheTime: cacheTime,\n            inlineQueryId: inlineQueryId,\n            isPersonal: isPersonal,\n            nextOffset: nextOffset,\n            results: results\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets the result of an inline query; for bots only\n    /// - Parameter button: Button to be shown above inline query results; pass null if none\n    /// - Parameter cacheTime: Allowed time to cache the results of the query, in seconds\n    /// - Parameter inlineQueryId: Identifier of the inline query\n    /// - Parameter isPersonal: Pass true if results may be cached and returned only for the user who sent the query. By default, results may be returned to any user who sends the same query\n    /// - Parameter nextOffset: Offset for the next inline query; pass an empty string if there are no more results\n    /// - Parameter results: The results of the query\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func answerInlineQuery(\n        button: InlineQueryResultsButton?,\n        cacheTime: Int?,\n        inlineQueryId: TdInt64?,\n        isPersonal: Bool?,\n        nextOffset: String?,\n        results: [InputInlineQueryResult]?\n    ) async throws -> Ok {\n        let query = AnswerInlineQuery(\n            button: button,\n            cacheTime: cacheTime,\n            inlineQueryId: inlineQueryId,\n            isPersonal: isPersonal,\n            nextOffset: nextOffset,\n            results: results\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets the result of a guest query; for bots only\n    /// - Parameter guestQueryId: Identifier of the guest query\n    /// - Parameter result: The result of the query\n    public func answerGuestQuery(\n        guestQueryId: TdInt64?,\n        result: InputInlineQueryResult?,\n        completion: @escaping (Result<InlineMessageId, Swift.Error>) -> Void\n    ) throws {\n        let query = AnswerGuestQuery(\n            guestQueryId: guestQueryId,\n            result: result\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets the result of a guest query; for bots only\n    /// - Parameter guestQueryId: Identifier of the guest query\n    /// - Parameter result: The result of the query\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func answerGuestQuery(\n        guestQueryId: TdInt64?,\n        result: InputInlineQueryResult?\n    ) async throws -> InlineMessageId {\n        let query = AnswerGuestQuery(\n            guestQueryId: guestQueryId,\n            result: result\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Saves an inline message to be sent by the given user; for bots only\n    /// - Parameter chatTypes: Types of the chats to which the message can be sent\n    /// - Parameter result: The description of the message\n    /// - Parameter userId: Identifier of the user\n    public func savePreparedInlineMessage(\n        chatTypes: TargetChatTypes?,\n        result: InputInlineQueryResult?,\n        userId: Int64?,\n        completion: @escaping (Result<PreparedInlineMessageId, Swift.Error>) -> Void\n    ) throws {\n        let query = SavePreparedInlineMessage(\n            chatTypes: chatTypes,\n            result: result,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Saves an inline message to be sent by the given user; for bots only\n    /// - Parameter chatTypes: Types of the chats to which the message can be sent\n    /// - Parameter result: The description of the message\n    /// - Parameter userId: Identifier of the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func savePreparedInlineMessage(\n        chatTypes: TargetChatTypes?,\n        result: InputInlineQueryResult?,\n        userId: Int64?\n    ) async throws -> PreparedInlineMessageId {\n        let query = SavePreparedInlineMessage(\n            chatTypes: chatTypes,\n            result: result,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Saves an inline message to be sent by the given user\n    /// - Parameter botUserId: Identifier of the bot that created the message\n    /// - Parameter preparedMessageId: Identifier of the prepared message\n    public func getPreparedInlineMessage(\n        botUserId: Int64?,\n        preparedMessageId: String?,\n        completion: @escaping (Result<PreparedInlineMessage, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPreparedInlineMessage(\n            botUserId: botUserId,\n            preparedMessageId: preparedMessageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Saves an inline message to be sent by the given user\n    /// - Parameter botUserId: Identifier of the bot that created the message\n    /// - Parameter preparedMessageId: Identifier of the prepared message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPreparedInlineMessage(\n        botUserId: Int64?,\n        preparedMessageId: String?\n    ) async throws -> PreparedInlineMessage {\n        let query = GetPreparedInlineMessage(\n            botUserId: botUserId,\n            preparedMessageId: preparedMessageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Saves a keyboard button to be shown to the given user; for bots only\n    /// - Parameter button: The button; must be of the type keyboardButtonTypeRequestUsers, keyboardButtonTypeRequestChat, or keyboardButtonTypeRequestManagedBot\n    /// - Parameter userId: Identifier of the user\n    public func savePreparedKeyboardButton(\n        button: KeyboardButton?,\n        userId: Int64?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = SavePreparedKeyboardButton(\n            button: button,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Saves a keyboard button to be shown to the given user; for bots only\n    /// - Parameter button: The button; must be of the type keyboardButtonTypeRequestUsers, keyboardButtonTypeRequestChat, or keyboardButtonTypeRequestManagedBot\n    /// - Parameter userId: Identifier of the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func savePreparedKeyboardButton(\n        button: KeyboardButton?,\n        userId: Int64?\n    ) async throws -> Text {\n        let query = SavePreparedKeyboardButton(\n            button: button,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a keyboard button prepared by the bot for the user. The button will be of the type keyboardButtonTypeRequestUsers, keyboardButtonTypeRequestChat, or keyboardButtonTypeRequestManagedBot\n    /// - Parameter botUserId: Identifier of the bot that created the button\n    /// - Parameter preparedButtonId: Identifier of the prepared button\n    /// - Returns: A keyboard button prepared by the bot for the user\n    public func getPreparedKeyboardButton(\n        botUserId: Int64?,\n        preparedButtonId: String?,\n        completion: @escaping (Result<KeyboardButton, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPreparedKeyboardButton(\n            botUserId: botUserId,\n            preparedButtonId: preparedButtonId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a keyboard button prepared by the bot for the user. The button will be of the type keyboardButtonTypeRequestUsers, keyboardButtonTypeRequestChat, or keyboardButtonTypeRequestManagedBot\n    /// - Parameter botUserId: Identifier of the bot that created the button\n    /// - Parameter preparedButtonId: Identifier of the prepared button\n    /// - Returns: A keyboard button prepared by the bot for the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPreparedKeyboardButton(\n        botUserId: Int64?,\n        preparedButtonId: String?\n    ) async throws -> KeyboardButton {\n        let query = GetPreparedKeyboardButton(\n            botUserId: botUserId,\n            preparedButtonId: preparedButtonId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the most grossing Web App bots\n    /// - Parameter limit: The maximum number of bots to be returned; up to 100\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: The most grossing Web App bots\n    public func getGrossingWebAppBots(\n        limit: Int?,\n        offset: String?,\n        completion: @escaping (Result<FoundUsers, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGrossingWebAppBots(\n            limit: limit,\n            offset: offset\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the most grossing Web App bots\n    /// - Parameter limit: The maximum number of bots to be returned; up to 100\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: The most grossing Web App bots\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getGrossingWebAppBots(\n        limit: Int?,\n        offset: String?\n    ) async throws -> FoundUsers {\n        let query = GetGrossingWebAppBots(\n            limit: limit,\n            offset: offset\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a Web App by its short name. Returns a 404 error if the Web App is not found\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter webAppShortName: Short name of the Web App\n    /// - Returns: Information about a Web App by its short name. Returns a 404 error if the Web App is not found\n    public func searchWebApp(\n        botUserId: Int64?,\n        webAppShortName: String?,\n        completion: @escaping (Result<FoundWebApp, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchWebApp(\n            botUserId: botUserId,\n            webAppShortName: webAppShortName\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a Web App by its short name. Returns a 404 error if the Web App is not found\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter webAppShortName: Short name of the Web App\n    /// - Returns: Information about a Web App by its short name. Returns a 404 error if the Web App is not found\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchWebApp(\n        botUserId: Int64?,\n        webAppShortName: String?\n    ) async throws -> FoundWebApp {\n        let query = SearchWebApp(\n            botUserId: botUserId,\n            webAppShortName: webAppShortName\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a default placeholder for Web Apps of a bot. This is an offline method. Returns a 404 error if the placeholder isn't known\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Returns: A default placeholder for Web Apps of a bot. Returns a 404 error if the placeholder isn't known\n    public func getWebAppPlaceholder(\n        botUserId: Int64?,\n        completion: @escaping (Result<Outline, Swift.Error>) -> Void\n    ) throws {\n        let query = GetWebAppPlaceholder(\n            botUserId: botUserId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a default placeholder for Web Apps of a bot. This is an offline method. Returns a 404 error if the placeholder isn't known\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Returns: A default placeholder for Web Apps of a bot. Returns a 404 error if the placeholder isn't known\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getWebAppPlaceholder(botUserId: Int64?) async throws -> Outline {\n        let query = GetWebAppPlaceholder(\n            botUserId: botUserId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an HTTPS URL of a Web App to open after a link of the type internalLinkTypeWebApp is clicked\n    /// - Parameter allowWriteAccess: Pass true if the current user allowed the bot to send them messages\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter chatId: Identifier of the chat in which the link was clicked; pass 0 if none\n    /// - Parameter parameters: Parameters to use to open the Web App\n    /// - Parameter startParameter: Start parameter from internalLinkTypeWebApp\n    /// - Parameter webAppShortName: Short name of the Web App\n    /// - Returns: An HTTPS URL of a Web App to open after a link of the type internalLinkTypeWebApp is clicked\n    public func getWebAppLinkUrl(\n        allowWriteAccess: Bool?,\n        botUserId: Int64?,\n        chatId: Int64?,\n        parameters: WebAppOpenParameters?,\n        startParameter: String?,\n        webAppShortName: String?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetWebAppLinkUrl(\n            allowWriteAccess: allowWriteAccess,\n            botUserId: botUserId,\n            chatId: chatId,\n            parameters: parameters,\n            startParameter: startParameter,\n            webAppShortName: webAppShortName\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an HTTPS URL of a Web App to open after a link of the type internalLinkTypeWebApp is clicked\n    /// - Parameter allowWriteAccess: Pass true if the current user allowed the bot to send them messages\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter chatId: Identifier of the chat in which the link was clicked; pass 0 if none\n    /// - Parameter parameters: Parameters to use to open the Web App\n    /// - Parameter startParameter: Start parameter from internalLinkTypeWebApp\n    /// - Parameter webAppShortName: Short name of the Web App\n    /// - Returns: An HTTPS URL of a Web App to open after a link of the type internalLinkTypeWebApp is clicked\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getWebAppLinkUrl(\n        allowWriteAccess: Bool?,\n        botUserId: Int64?,\n        chatId: Int64?,\n        parameters: WebAppOpenParameters?,\n        startParameter: String?,\n        webAppShortName: String?\n    ) async throws -> HttpUrl {\n        let query = GetWebAppLinkUrl(\n            allowWriteAccess: allowWriteAccess,\n            botUserId: botUserId,\n            chatId: chatId,\n            parameters: parameters,\n            startParameter: startParameter,\n            webAppShortName: webAppShortName\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information needed to open the main Web App of a bot\n    /// - Parameter botUserId: Identifier of the target bot. If the bot is restricted for the current user, then show an error instead of calling the method\n    /// - Parameter chatId: Identifier of the chat in which the Web App is opened; pass 0 if none\n    /// - Parameter parameters: Parameters to use to open the Web App\n    /// - Parameter startParameter: Start parameter from internalLinkTypeMainWebApp\n    /// - Returns: Information needed to open the main Web App of a bot\n    public func getMainWebApp(\n        botUserId: Int64?,\n        chatId: Int64?,\n        parameters: WebAppOpenParameters?,\n        startParameter: String?,\n        completion: @escaping (Result<MainWebApp, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMainWebApp(\n            botUserId: botUserId,\n            chatId: chatId,\n            parameters: parameters,\n            startParameter: startParameter\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information needed to open the main Web App of a bot\n    /// - Parameter botUserId: Identifier of the target bot. If the bot is restricted for the current user, then show an error instead of calling the method\n    /// - Parameter chatId: Identifier of the chat in which the Web App is opened; pass 0 if none\n    /// - Parameter parameters: Parameters to use to open the Web App\n    /// - Parameter startParameter: Start parameter from internalLinkTypeMainWebApp\n    /// - Returns: Information needed to open the main Web App of a bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMainWebApp(\n        botUserId: Int64?,\n        chatId: Int64?,\n        parameters: WebAppOpenParameters?,\n        startParameter: String?\n    ) async throws -> MainWebApp {\n        let query = GetMainWebApp(\n            botUserId: botUserId,\n            chatId: chatId,\n            parameters: parameters,\n            startParameter: startParameter\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an HTTPS URL of a Web App to open from the side menu, a keyboardButtonTypeWebApp button, or an inlineQueryResultsButtonTypeWebApp button\n    /// - Parameter botUserId: Identifier of the target bot. If the bot is restricted for the current user, then show an error instead of calling the method\n    /// - Parameter parameters: Parameters to use to open the Web App\n    /// - Parameter url: The URL from a keyboardButtonTypeWebApp button, inlineQueryResultsButtonTypeWebApp button, or an empty string when the bot is opened from the side menu\n    /// - Returns: An HTTPS URL of a Web App to open from the side menu, a keyboardButtonTypeWebApp button, or an inlineQueryResultsButtonTypeWebApp button\n    public func getWebAppUrl(\n        botUserId: Int64?,\n        parameters: WebAppOpenParameters?,\n        url: String?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetWebAppUrl(\n            botUserId: botUserId,\n            parameters: parameters,\n            url: url\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an HTTPS URL of a Web App to open from the side menu, a keyboardButtonTypeWebApp button, or an inlineQueryResultsButtonTypeWebApp button\n    /// - Parameter botUserId: Identifier of the target bot. If the bot is restricted for the current user, then show an error instead of calling the method\n    /// - Parameter parameters: Parameters to use to open the Web App\n    /// - Parameter url: The URL from a keyboardButtonTypeWebApp button, inlineQueryResultsButtonTypeWebApp button, or an empty string when the bot is opened from the side menu\n    /// - Returns: An HTTPS URL of a Web App to open from the side menu, a keyboardButtonTypeWebApp button, or an inlineQueryResultsButtonTypeWebApp button\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getWebAppUrl(\n        botUserId: Int64?,\n        parameters: WebAppOpenParameters?,\n        url: String?\n    ) async throws -> HttpUrl {\n        let query = GetWebAppUrl(\n            botUserId: botUserId,\n            parameters: parameters,\n            url: url\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends data received from a keyboardButtonTypeWebApp Web App to a bot\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter buttonText: Text of the keyboardButtonTypeWebApp button, which opened the Web App\n    /// - Parameter data: The data\n    public func sendWebAppData(\n        botUserId: Int64?,\n        buttonText: String?,\n        data: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendWebAppData(\n            botUserId: botUserId,\n            buttonText: buttonText,\n            data: data\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends data received from a keyboardButtonTypeWebApp Web App to a bot\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter buttonText: Text of the keyboardButtonTypeWebApp button, which opened the Web App\n    /// - Parameter data: The data\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func sendWebAppData(\n        botUserId: Int64?,\n        buttonText: String?,\n        data: String?\n    ) async throws -> Ok {\n        let query = SendWebAppData(\n            botUserId: botUserId,\n            buttonText: buttonText,\n            data: data\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that a Web App is being opened from the attachment menu, a botMenuButton button, an internalLinkTypeAttachmentMenuBot link, or an inlineKeyboardButtonTypeWebApp button. For each bot, a confirmation alert about data sent to the bot must be shown once\n    /// - Parameter botUserId: Identifier of the bot, providing the Web App. If the bot is restricted for the current user, then show an error instead of calling the method\n    /// - Parameter chatId: Identifier of the chat in which the Web App is opened. The Web App can't be opened in secret chats\n    /// - Parameter parameters: Parameters to use to open the Web App\n    /// - Parameter replyTo: Information about the message or story to be replied in the message sent by the Web App; pass null if none\n    /// - Parameter topicId: Topic in which the message will be sent; pass null if none\n    /// - Parameter url: The URL from an inlineKeyboardButtonTypeWebApp button, a botMenuButton button, an internalLinkTypeAttachmentMenuBot link, or an empty string otherwise\n    public func openWebApp(\n        botUserId: Int64?,\n        chatId: Int64?,\n        parameters: WebAppOpenParameters?,\n        replyTo: InputMessageReplyTo?,\n        topicId: MessageTopic?,\n        url: String?,\n        completion: @escaping (Result<WebAppInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = OpenWebApp(\n            botUserId: botUserId,\n            chatId: chatId,\n            parameters: parameters,\n            replyTo: replyTo,\n            topicId: topicId,\n            url: url\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that a Web App is being opened from the attachment menu, a botMenuButton button, an internalLinkTypeAttachmentMenuBot link, or an inlineKeyboardButtonTypeWebApp button. For each bot, a confirmation alert about data sent to the bot must be shown once\n    /// - Parameter botUserId: Identifier of the bot, providing the Web App. If the bot is restricted for the current user, then show an error instead of calling the method\n    /// - Parameter chatId: Identifier of the chat in which the Web App is opened. The Web App can't be opened in secret chats\n    /// - Parameter parameters: Parameters to use to open the Web App\n    /// - Parameter replyTo: Information about the message or story to be replied in the message sent by the Web App; pass null if none\n    /// - Parameter topicId: Topic in which the message will be sent; pass null if none\n    /// - Parameter url: The URL from an inlineKeyboardButtonTypeWebApp button, a botMenuButton button, an internalLinkTypeAttachmentMenuBot link, or an empty string otherwise\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func openWebApp(\n        botUserId: Int64?,\n        chatId: Int64?,\n        parameters: WebAppOpenParameters?,\n        replyTo: InputMessageReplyTo?,\n        topicId: MessageTopic?,\n        url: String?\n    ) async throws -> WebAppInfo {\n        let query = OpenWebApp(\n            botUserId: botUserId,\n            chatId: chatId,\n            parameters: parameters,\n            replyTo: replyTo,\n            topicId: topicId,\n            url: url\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that a previously opened Web App was closed\n    /// - Parameter webAppLaunchId: Identifier of Web App launch, received from openWebApp\n    public func closeWebApp(\n        webAppLaunchId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CloseWebApp(\n            webAppLaunchId: webAppLaunchId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that a previously opened Web App was closed\n    /// - Parameter webAppLaunchId: Identifier of Web App launch, received from openWebApp\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func closeWebApp(webAppLaunchId: TdInt64?) async throws -> Ok {\n        let query = CloseWebApp(\n            webAppLaunchId: webAppLaunchId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets the result of interaction with a Web App and sends corresponding message on behalf of the user to the chat from which the query originated; for bots only\n    /// - Parameter result: The result of the query\n    /// - Parameter webAppQueryId: Identifier of the Web App query\n    public func answerWebAppQuery(\n        result: InputInlineQueryResult?,\n        webAppQueryId: String?,\n        completion: @escaping (Result<InlineMessageId, Swift.Error>) -> Void\n    ) throws {\n        let query = AnswerWebAppQuery(\n            result: result,\n            webAppQueryId: webAppQueryId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets the result of interaction with a Web App and sends corresponding message on behalf of the user to the chat from which the query originated; for bots only\n    /// - Parameter result: The result of the query\n    /// - Parameter webAppQueryId: Identifier of the Web App query\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func answerWebAppQuery(\n        result: InputInlineQueryResult?,\n        webAppQueryId: String?\n    ) async throws -> InlineMessageId {\n        let query = AnswerWebAppQuery(\n            result: result,\n            webAppQueryId: webAppQueryId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks whether a file can be downloaded and saved locally by Web App request\n    /// - Parameter botUserId: Identifier of the bot, providing the Web App\n    /// - Parameter fileName: Name of the file\n    /// - Parameter url: URL of the file\n    public func checkWebAppFileDownload(\n        botUserId: Int64?,\n        fileName: String?,\n        url: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckWebAppFileDownload(\n            botUserId: botUserId,\n            fileName: fileName,\n            url: url\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks whether a file can be downloaded and saved locally by Web App request\n    /// - Parameter botUserId: Identifier of the bot, providing the Web App\n    /// - Parameter fileName: Name of the file\n    /// - Parameter url: URL of the file\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func checkWebAppFileDownload(\n        botUserId: Int64?,\n        fileName: String?,\n        url: String?\n    ) async throws -> Ok {\n        let query = CheckWebAppFileDownload(\n            botUserId: botUserId,\n            fileName: fileName,\n            url: url\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends a callback query to a bot and returns an answer. Returns an error with code 502 if the bot fails to answer the query before the query timeout expires\n    /// - Parameter chatId: Identifier of the chat with the message\n    /// - Parameter messageId: Identifier of the message from which the query originated. The message must not be scheduled\n    /// - Parameter payload: Query payload\n    /// - Returns: Sends a callback query to a bot and returns an answer. Returns an error with code 502 if the bot fails to answer the query before the query timeout expires\n    public func getCallbackQueryAnswer(\n        chatId: Int64?,\n        messageId: Int64?,\n        payload: CallbackQueryPayload?,\n        completion: @escaping (Result<CallbackQueryAnswer, Swift.Error>) -> Void\n    ) throws {\n        let query = GetCallbackQueryAnswer(\n            chatId: chatId,\n            messageId: messageId,\n            payload: payload\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends a callback query to a bot and returns an answer. Returns an error with code 502 if the bot fails to answer the query before the query timeout expires\n    /// - Parameter chatId: Identifier of the chat with the message\n    /// - Parameter messageId: Identifier of the message from which the query originated. The message must not be scheduled\n    /// - Parameter payload: Query payload\n    /// - Returns: Sends a callback query to a bot and returns an answer. Returns an error with code 502 if the bot fails to answer the query before the query timeout expires\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getCallbackQueryAnswer(\n        chatId: Int64?,\n        messageId: Int64?,\n        payload: CallbackQueryPayload?\n    ) async throws -> CallbackQueryAnswer {\n        let query = GetCallbackQueryAnswer(\n            chatId: chatId,\n            messageId: messageId,\n            payload: payload\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets the result of a callback query; for bots only\n    /// - Parameter cacheTime: Time during which the result of the query can be cached, in seconds\n    /// - Parameter callbackQueryId: Identifier of the callback query\n    /// - Parameter showAlert: Pass true to show an alert to the user instead of a toast notification\n    /// - Parameter text: Text of the answer\n    /// - Parameter url: URL to be opened\n    public func answerCallbackQuery(\n        cacheTime: Int?,\n        callbackQueryId: TdInt64?,\n        showAlert: Bool?,\n        text: String?,\n        url: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AnswerCallbackQuery(\n            cacheTime: cacheTime,\n            callbackQueryId: callbackQueryId,\n            showAlert: showAlert,\n            text: text,\n            url: url\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets the result of a callback query; for bots only\n    /// - Parameter cacheTime: Time during which the result of the query can be cached, in seconds\n    /// - Parameter callbackQueryId: Identifier of the callback query\n    /// - Parameter showAlert: Pass true to show an alert to the user instead of a toast notification\n    /// - Parameter text: Text of the answer\n    /// - Parameter url: URL to be opened\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func answerCallbackQuery(\n        cacheTime: Int?,\n        callbackQueryId: TdInt64?,\n        showAlert: Bool?,\n        text: String?,\n        url: String?\n    ) async throws -> Ok {\n        let query = AnswerCallbackQuery(\n            cacheTime: cacheTime,\n            callbackQueryId: callbackQueryId,\n            showAlert: showAlert,\n            text: text,\n            url: url\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets the result of a shipping query; for bots only\n    /// - Parameter errorMessage: An error message, empty on success\n    /// - Parameter shippingOptions: Available shipping options\n    /// - Parameter shippingQueryId: Identifier of the shipping query\n    public func answerShippingQuery(\n        errorMessage: String?,\n        shippingOptions: [ShippingOption]?,\n        shippingQueryId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AnswerShippingQuery(\n            errorMessage: errorMessage,\n            shippingOptions: shippingOptions,\n            shippingQueryId: shippingQueryId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets the result of a shipping query; for bots only\n    /// - Parameter errorMessage: An error message, empty on success\n    /// - Parameter shippingOptions: Available shipping options\n    /// - Parameter shippingQueryId: Identifier of the shipping query\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func answerShippingQuery(\n        errorMessage: String?,\n        shippingOptions: [ShippingOption]?,\n        shippingQueryId: TdInt64?\n    ) async throws -> Ok {\n        let query = AnswerShippingQuery(\n            errorMessage: errorMessage,\n            shippingOptions: shippingOptions,\n            shippingQueryId: shippingQueryId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets the result of a pre-checkout query; for bots only\n    /// - Parameter errorMessage: An error message, empty on success\n    /// - Parameter preCheckoutQueryId: Identifier of the pre-checkout query\n    public func answerPreCheckoutQuery(\n        errorMessage: String?,\n        preCheckoutQueryId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AnswerPreCheckoutQuery(\n            errorMessage: errorMessage,\n            preCheckoutQueryId: preCheckoutQueryId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets the result of a pre-checkout query; for bots only\n    /// - Parameter errorMessage: An error message, empty on success\n    /// - Parameter preCheckoutQueryId: Identifier of the pre-checkout query\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func answerPreCheckoutQuery(\n        errorMessage: String?,\n        preCheckoutQueryId: TdInt64?\n    ) async throws -> Ok {\n        let query = AnswerPreCheckoutQuery(\n            errorMessage: errorMessage,\n            preCheckoutQueryId: preCheckoutQueryId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Updates the game score of the specified user in the game; for bots only\n    /// - Parameter chatId: The chat to which the message with the game belongs\n    /// - Parameter editMessage: Pass true to edit the game message to include the current scoreboard\n    /// - Parameter force: Pass true to update the score even if it decreases. If the score is 0, the user will be deleted from the high score table\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter score: The new score\n    /// - Parameter userId: User identifier\n    public func setGameScore(\n        chatId: Int64?,\n        editMessage: Bool?,\n        force: Bool?,\n        messageId: Int64?,\n        score: Int?,\n        userId: Int64?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = SetGameScore(\n            chatId: chatId,\n            editMessage: editMessage,\n            force: force,\n            messageId: messageId,\n            score: score,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Updates the game score of the specified user in the game; for bots only\n    /// - Parameter chatId: The chat to which the message with the game belongs\n    /// - Parameter editMessage: Pass true to edit the game message to include the current scoreboard\n    /// - Parameter force: Pass true to update the score even if it decreases. If the score is 0, the user will be deleted from the high score table\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter score: The new score\n    /// - Parameter userId: User identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func setGameScore(\n        chatId: Int64?,\n        editMessage: Bool?,\n        force: Bool?,\n        messageId: Int64?,\n        score: Int?,\n        userId: Int64?\n    ) async throws -> Message {\n        let query = SetGameScore(\n            chatId: chatId,\n            editMessage: editMessage,\n            force: force,\n            messageId: messageId,\n            score: score,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Updates the game score of the specified user in a game; for bots only\n    /// - Parameter editMessage: Pass true to edit the game message to include the current scoreboard\n    /// - Parameter force: Pass true to update the score even if it decreases. If the score is 0, the user will be deleted from the high score table\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter score: The new score\n    /// - Parameter userId: User identifier\n    public func setInlineGameScore(\n        editMessage: Bool?,\n        force: Bool?,\n        inlineMessageId: String?,\n        score: Int?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetInlineGameScore(\n            editMessage: editMessage,\n            force: force,\n            inlineMessageId: inlineMessageId,\n            score: score,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Updates the game score of the specified user in a game; for bots only\n    /// - Parameter editMessage: Pass true to edit the game message to include the current scoreboard\n    /// - Parameter force: Pass true to update the score even if it decreases. If the score is 0, the user will be deleted from the high score table\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter score: The new score\n    /// - Parameter userId: User identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setInlineGameScore(\n        editMessage: Bool?,\n        force: Bool?,\n        inlineMessageId: String?,\n        score: Int?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = SetInlineGameScore(\n            editMessage: editMessage,\n            force: force,\n            inlineMessageId: inlineMessageId,\n            score: score,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the high scores for a game and some part of the high score table in the range of the specified user; for bots only\n    /// - Parameter chatId: The chat that contains the message with the game\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter userId: User identifier\n    /// - Returns: The high scores for a game and some part of the high score table in the range of the specified user\n    public func getGameHighScores(\n        chatId: Int64?,\n        messageId: Int64?,\n        userId: Int64?,\n        completion: @escaping (Result<GameHighScores, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGameHighScores(\n            chatId: chatId,\n            messageId: messageId,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the high scores for a game and some part of the high score table in the range of the specified user; for bots only\n    /// - Parameter chatId: The chat that contains the message with the game\n    /// - Parameter messageId: Identifier of the message\n    /// - Parameter userId: User identifier\n    /// - Returns: The high scores for a game and some part of the high score table in the range of the specified user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getGameHighScores(\n        chatId: Int64?,\n        messageId: Int64?,\n        userId: Int64?\n    ) async throws -> GameHighScores {\n        let query = GetGameHighScores(\n            chatId: chatId,\n            messageId: messageId,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns game high scores and some part of the high score table in the range of the specified user; for bots only\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter userId: User identifier\n    /// - Returns: Game high scores and some part of the high score table in the range of the specified user\n    public func getInlineGameHighScores(\n        inlineMessageId: String?,\n        userId: Int64?,\n        completion: @escaping (Result<GameHighScores, Swift.Error>) -> Void\n    ) throws {\n        let query = GetInlineGameHighScores(\n            inlineMessageId: inlineMessageId,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns game high scores and some part of the high score table in the range of the specified user; for bots only\n    /// - Parameter inlineMessageId: Inline message identifier\n    /// - Parameter userId: User identifier\n    /// - Returns: Game high scores and some part of the high score table in the range of the specified user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getInlineGameHighScores(\n        inlineMessageId: String?,\n        userId: Int64?\n    ) async throws -> GameHighScores {\n        let query = GetInlineGameHighScores(\n            inlineMessageId: inlineMessageId,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes the default reply markup from a chat. Must be called after a one-time keyboard or a replyMarkupForceReply reply markup has been used or dismissed\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: The message identifier of the used keyboard\n    public func deleteChatReplyMarkup(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteChatReplyMarkup(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes the default reply markup from a chat. Must be called after a one-time keyboard or a replyMarkupForceReply reply markup has been used or dismissed\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: The message identifier of the used keyboard\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteChatReplyMarkup(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = DeleteChatReplyMarkup(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends a notification about user activity in a chat\n    /// - Parameter action: The action description; pass null to cancel the currently active action\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request; for bots only\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter topicId: Identifier of the topic in which the action is performed; pass null if none\n    public func sendChatAction(\n        action: ChatAction?,\n        businessConnectionId: String?,\n        chatId: Int64?,\n        topicId: MessageTopic?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendChatAction(\n            action: action,\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            topicId: topicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends a notification about user activity in a chat\n    /// - Parameter action: The action description; pass null to cancel the currently active action\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request; for bots only\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter topicId: Identifier of the topic in which the action is performed; pass null if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func sendChatAction(\n        action: ChatAction?,\n        businessConnectionId: String?,\n        chatId: Int64?,\n        topicId: MessageTopic?\n    ) async throws -> Ok {\n        let query = SendChatAction(\n            action: action,\n            businessConnectionId: businessConnectionId,\n            chatId: chatId,\n            topicId: topicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends a draft for a being generated text message; for bots only\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter draftId: Unique identifier of the draft\n    /// - Parameter forumTopicId: The forum topic identifier in which the message will be sent; pass 0 if none\n    /// - Parameter text: Draft text of the message; pass null to show a \"Thinking...\" placeholder\n    public func sendTextMessageDraft(\n        chatId: Int64?,\n        draftId: TdInt64?,\n        forumTopicId: Int?,\n        text: FormattedText?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendTextMessageDraft(\n            chatId: chatId,\n            draftId: draftId,\n            forumTopicId: forumTopicId,\n            text: text\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends a draft for a being generated text message; for bots only\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter draftId: Unique identifier of the draft\n    /// - Parameter forumTopicId: The forum topic identifier in which the message will be sent; pass 0 if none\n    /// - Parameter text: Draft text of the message; pass null to show a \"Thinking...\" placeholder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func sendTextMessageDraft(\n        chatId: Int64?,\n        draftId: TdInt64?,\n        forumTopicId: Int?,\n        text: FormattedText?\n    ) async throws -> Ok {\n        let query = SendTextMessageDraft(\n            chatId: chatId,\n            draftId: draftId,\n            forumTopicId: forumTopicId,\n            text: text\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that the chat is opened by the user. Many useful activities depend on the chat being opened or closed (e.g., in supergroups and channels all updates are received only for opened chats)\n    /// - Parameter chatId: Chat identifier\n    public func openChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = OpenChat(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that the chat is opened by the user. Many useful activities depend on the chat being opened or closed (e.g., in supergroups and channels all updates are received only for opened chats)\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func openChat(chatId: Int64?) async throws -> Ok {\n        let query = OpenChat(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that the chat is closed by the user. Many useful activities depend on the chat being opened or closed\n    /// - Parameter chatId: Chat identifier\n    public func closeChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CloseChat(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that the chat is closed by the user. Many useful activities depend on the chat being opened or closed\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func closeChat(chatId: Int64?) async throws -> Ok {\n        let query = CloseChat(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that messages are being viewed by the user. Sponsored messages must be marked as viewed only when the entire text of the message is shown on the screen (excluding the button). Many useful activities depend on whether the messages are currently being viewed or not (e.g., marking messages as read, incrementing a view counter, updating a view counter, removing deleted messages in supergroups and channels)\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forceRead: Pass true to mark as read the specified messages even if the chat is closed\n    /// - Parameter messageIds: The identifiers of the messages being viewed\n    /// - Parameter source: Source of the message view; pass null to guess the source based on chat open state\n    public func viewMessages(\n        chatId: Int64?,\n        forceRead: Bool?,\n        messageIds: [Int64]?,\n        source: MessageSource?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ViewMessages(\n            chatId: chatId,\n            forceRead: forceRead,\n            messageIds: messageIds,\n            source: source\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that messages are being viewed by the user. Sponsored messages must be marked as viewed only when the entire text of the message is shown on the screen (excluding the button). Many useful activities depend on whether the messages are currently being viewed or not (e.g., marking messages as read, incrementing a view counter, updating a view counter, removing deleted messages in supergroups and channels)\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forceRead: Pass true to mark as read the specified messages even if the chat is closed\n    /// - Parameter messageIds: The identifiers of the messages being viewed\n    /// - Parameter source: Source of the message view; pass null to guess the source based on chat open state\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func viewMessages(\n        chatId: Int64?,\n        forceRead: Bool?,\n        messageIds: [Int64]?,\n        source: MessageSource?\n    ) async throws -> Ok {\n        let query = ViewMessages(\n            chatId: chatId,\n            forceRead: forceRead,\n            messageIds: messageIds,\n            source: source\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that the message content has been opened (e.g., the user has opened a photo, video, document, location or venue, or has listened to an audio file or voice note message). An updateMessageContentOpened update will be generated if something has changed\n    /// - Parameter chatId: Chat identifier of the message\n    /// - Parameter messageId: Identifier of the message with the opened content\n    public func openMessageContent(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = OpenMessageContent(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that the message content has been opened (e.g., the user has opened a photo, video, document, location or venue, or has listened to an audio file or voice note message). An updateMessageContentOpened update will be generated if something has changed\n    /// - Parameter chatId: Chat identifier of the message\n    /// - Parameter messageId: Identifier of the message with the opened content\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func openMessageContent(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = OpenMessageContent(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that a message with an animated emoji was clicked by the user. Returns a big animated sticker to be played or a 404 error if usual animation needs to be played\n    /// - Parameter chatId: Chat identifier of the message\n    /// - Parameter messageId: Identifier of the clicked message\n    /// - Returns: A big animated sticker to be played or a 404 error if usual animation needs to be played\n    public func clickAnimatedEmojiMessage(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Sticker, Swift.Error>) -> Void\n    ) throws {\n        let query = ClickAnimatedEmojiMessage(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that a message with an animated emoji was clicked by the user. Returns a big animated sticker to be played or a 404 error if usual animation needs to be played\n    /// - Parameter chatId: Chat identifier of the message\n    /// - Parameter messageId: Identifier of the clicked message\n    /// - Returns: A big animated sticker to be played or a 404 error if usual animation needs to be played\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func clickAnimatedEmojiMessage(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Sticker {\n        let query = ClickAnimatedEmojiMessage(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that an audio was listened by the user\n    /// - Parameter audioFileId: Identifier of the file with an audio\n    /// - Parameter duration: Duration of the listening to the audio, in seconds\n    public func listenToAudio(\n        audioFileId: Int?,\n        duration: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ListenToAudio(\n            audioFileId: audioFileId,\n            duration: duration\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that an audio was listened by the user\n    /// - Parameter audioFileId: Identifier of the file with an audio\n    /// - Parameter duration: Duration of the listening to the audio, in seconds\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func listenToAudio(\n        audioFileId: Int?,\n        duration: Int?\n    ) async throws -> Ok {\n        let query = ListenToAudio(\n            audioFileId: audioFileId,\n            duration: duration\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib about details of a message view by the user from a chat, a message thread or a forum topic history. The method must be called if the message wasn't seen for more than 300 milliseconds, the viewport was destroyed, or the total view duration exceeded 5 minutes\n    /// - Parameter activeTimeInViewMs: The amount of time the message was seen by at least 1 pixel within 15 seconds after any action from the user; in milliseconds\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter heightToViewportRatioPerMille: The ratio of the post height to the viewport height in 1/1000 fractions\n    /// - Parameter messageId: The identifier of the message being viewed\n    /// - Parameter seenRangeRatioPerMille: The ratio of the viewed post height to the full post height in 1/1000 fractions; 0-1000\n    /// - Parameter timeInViewMs: The amount of time the message was seen by at least 1 pixel; in milliseconds\n    public func sendMessageViewMetrics(\n        activeTimeInViewMs: Int?,\n        chatId: Int64?,\n        heightToViewportRatioPerMille: Int?,\n        messageId: Int64?,\n        seenRangeRatioPerMille: Int?,\n        timeInViewMs: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendMessageViewMetrics(\n            activeTimeInViewMs: activeTimeInViewMs,\n            chatId: chatId,\n            heightToViewportRatioPerMille: heightToViewportRatioPerMille,\n            messageId: messageId,\n            seenRangeRatioPerMille: seenRangeRatioPerMille,\n            timeInViewMs: timeInViewMs\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib about details of a message view by the user from a chat, a message thread or a forum topic history. The method must be called if the message wasn't seen for more than 300 milliseconds, the viewport was destroyed, or the total view duration exceeded 5 minutes\n    /// - Parameter activeTimeInViewMs: The amount of time the message was seen by at least 1 pixel within 15 seconds after any action from the user; in milliseconds\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter heightToViewportRatioPerMille: The ratio of the post height to the viewport height in 1/1000 fractions\n    /// - Parameter messageId: The identifier of the message being viewed\n    /// - Parameter seenRangeRatioPerMille: The ratio of the viewed post height to the full post height in 1/1000 fractions; 0-1000\n    /// - Parameter timeInViewMs: The amount of time the message was seen by at least 1 pixel; in milliseconds\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func sendMessageViewMetrics(\n        activeTimeInViewMs: Int?,\n        chatId: Int64?,\n        heightToViewportRatioPerMille: Int?,\n        messageId: Int64?,\n        seenRangeRatioPerMille: Int?,\n        timeInViewMs: Int?\n    ) async throws -> Ok {\n        let query = SendMessageViewMetrics(\n            activeTimeInViewMs: activeTimeInViewMs,\n            chatId: chatId,\n            heightToViewportRatioPerMille: heightToViewportRatioPerMille,\n            messageId: messageId,\n            seenRangeRatioPerMille: seenRangeRatioPerMille,\n            timeInViewMs: timeInViewMs\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an HTTPS or a tg: link with the given type. Can be called before authorization\n    /// - Parameter isHttp: Pass true to create an HTTPS link (only available for some link types); pass false to create a tg: link\n    /// - Parameter type: Expected type of the link\n    /// - Returns: An HTTPS or a tg: link with the given type\n    public func getInternalLink(\n        isHttp: Bool?,\n        type: InternalLinkType?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetInternalLink(\n            isHttp: isHttp,\n            type: type\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an HTTPS or a tg: link with the given type. Can be called before authorization\n    /// - Parameter isHttp: Pass true to create an HTTPS link (only available for some link types); pass false to create a tg: link\n    /// - Parameter type: Expected type of the link\n    /// - Returns: An HTTPS or a tg: link with the given type\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getInternalLink(\n        isHttp: Bool?,\n        type: InternalLinkType?\n    ) async throws -> HttpUrl {\n        let query = GetInternalLink(\n            isHttp: isHttp,\n            type: type\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about the type of internal link. Returns a 404 error if the link is not internal. Can be called before authorization\n    /// - Parameter link: The link\n    /// - Returns: Information about the type of internal link. Returns a 404 error if the link is not internal\n    public func getInternalLinkType(\n        link: String?,\n        completion: @escaping (Result<InternalLinkType, Swift.Error>) -> Void\n    ) throws {\n        let query = GetInternalLinkType(\n            link: link\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about the type of internal link. Returns a 404 error if the link is not internal. Can be called before authorization\n    /// - Parameter link: The link\n    /// - Returns: Information about the type of internal link. Returns a 404 error if the link is not internal\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getInternalLinkType(link: String?) async throws -> InternalLinkType {\n        let query = GetInternalLinkType(\n            link: link\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about an action to be done when the current user clicks an external link. Don't use this method for links from secret chats if link preview is disabled in secret chats\n    /// - Parameter link: The link\n    /// - Returns: Information about an action to be done when the current user clicks an external link\n    public func getExternalLinkInfo(\n        link: String?,\n        completion: @escaping (Result<LoginUrlInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetExternalLinkInfo(\n            link: link\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about an action to be done when the current user clicks an external link. Don't use this method for links from secret chats if link preview is disabled in secret chats\n    /// - Parameter link: The link\n    /// - Returns: Information about an action to be done when the current user clicks an external link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getExternalLinkInfo(link: String?) async throws -> LoginUrlInfo {\n        let query = GetExternalLinkInfo(\n            link: link\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an HTTP URL which can be used to automatically authorize the current user on a website after clicking an HTTP link. Use the method getExternalLinkInfo to find whether a prior user confirmation is needed. May return an empty link if just a toast about successful login has to be shown\n    /// - Parameter allowWriteAccess: Pass true if the current user allowed the bot that was returned in getExternalLinkInfo, to send them messages\n    /// - Parameter link: The HTTP link\n    /// - Returns: An HTTP URL which can be used to automatically authorize the current user on a website after clicking an HTTP link. May return an empty link if just a toast about successful login has to be shown\n    public func getExternalLink(\n        allowWriteAccess: Bool?,\n        link: String?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetExternalLink(\n            allowWriteAccess: allowWriteAccess,\n            link: link\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an HTTP URL which can be used to automatically authorize the current user on a website after clicking an HTTP link. Use the method getExternalLinkInfo to find whether a prior user confirmation is needed. May return an empty link if just a toast about successful login has to be shown\n    /// - Parameter allowWriteAccess: Pass true if the current user allowed the bot that was returned in getExternalLinkInfo, to send them messages\n    /// - Parameter link: The HTTP link\n    /// - Returns: An HTTP URL which can be used to automatically authorize the current user on a website after clicking an HTTP link. May return an empty link if just a toast about successful login has to be shown\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getExternalLink(\n        allowWriteAccess: Bool?,\n        link: String?\n    ) async throws -> HttpUrl {\n        let query = GetExternalLink(\n            allowWriteAccess: allowWriteAccess,\n            link: link\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about an OAuth deep link. Use checkOauthRequestMatchCode, acceptOauthRequest or declineOauthRequest to process the link\n    /// - Parameter inAppOrigin: Origin of the OAuth request if the request was received from the in-app browser; pass an empty string otherwise\n    /// - Parameter url: URL of the link\n    /// - Returns: Information about an OAuth deep link\n    public func getOauthLinkInfo(\n        inAppOrigin: String?,\n        url: String?,\n        completion: @escaping (Result<OauthLinkInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetOauthLinkInfo(\n            inAppOrigin: inAppOrigin,\n            url: url\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about an OAuth deep link. Use checkOauthRequestMatchCode, acceptOauthRequest or declineOauthRequest to process the link\n    /// - Parameter inAppOrigin: Origin of the OAuth request if the request was received from the in-app browser; pass an empty string otherwise\n    /// - Parameter url: URL of the link\n    /// - Returns: Information about an OAuth deep link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getOauthLinkInfo(\n        inAppOrigin: String?,\n        url: String?\n    ) async throws -> OauthLinkInfo {\n        let query = GetOauthLinkInfo(\n            inAppOrigin: inAppOrigin,\n            url: url\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks a match-code for an OAuth authorization request. If fails, then the authorization request has failed. Otherwise, authorization confirmation dialog must be shown and the link must be processed using acceptOauthRequest or declineOauthRequest\n    /// - Parameter matchCode: The matching code chosen by the user\n    /// - Parameter url: URL of the OAuth deep link\n    public func checkOauthRequestMatchCode(\n        matchCode: String?,\n        url: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckOauthRequestMatchCode(\n            matchCode: matchCode,\n            url: url\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks a match-code for an OAuth authorization request. If fails, then the authorization request has failed. Otherwise, authorization confirmation dialog must be shown and the link must be processed using acceptOauthRequest or declineOauthRequest\n    /// - Parameter matchCode: The matching code chosen by the user\n    /// - Parameter url: URL of the OAuth deep link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func checkOauthRequestMatchCode(\n        matchCode: String?,\n        url: String?\n    ) async throws -> Ok {\n        let query = CheckOauthRequestMatchCode(\n            matchCode: matchCode,\n            url: url\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Accepts an OAuth authorization request. Returns an HTTP URL to open after successful authorization. May return an empty link if just a toast about successful login has to be shown\n    /// - Parameter allowPhoneNumberAccess: Pass true if the current user allowed the bot that was returned in getOauthLinkInfo, to access their phone number\n    /// - Parameter allowWriteAccess: Pass true if the current user allowed the bot that was returned in getOauthLinkInfo, to send them messages\n    /// - Parameter matchCode: The matching code chosen by the user\n    /// - Parameter url: URL of the OAuth deep link\n    /// - Returns: An HTTP URL to open after successful authorization. May return an empty link if just a toast about successful login has to be shown\n    public func acceptOauthRequest(\n        allowPhoneNumberAccess: Bool?,\n        allowWriteAccess: Bool?,\n        matchCode: String?,\n        url: String?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = AcceptOauthRequest(\n            allowPhoneNumberAccess: allowPhoneNumberAccess,\n            allowWriteAccess: allowWriteAccess,\n            matchCode: matchCode,\n            url: url\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Accepts an OAuth authorization request. Returns an HTTP URL to open after successful authorization. May return an empty link if just a toast about successful login has to be shown\n    /// - Parameter allowPhoneNumberAccess: Pass true if the current user allowed the bot that was returned in getOauthLinkInfo, to access their phone number\n    /// - Parameter allowWriteAccess: Pass true if the current user allowed the bot that was returned in getOauthLinkInfo, to send them messages\n    /// - Parameter matchCode: The matching code chosen by the user\n    /// - Parameter url: URL of the OAuth deep link\n    /// - Returns: An HTTP URL to open after successful authorization. May return an empty link if just a toast about successful login has to be shown\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func acceptOauthRequest(\n        allowPhoneNumberAccess: Bool?,\n        allowWriteAccess: Bool?,\n        matchCode: String?,\n        url: String?\n    ) async throws -> HttpUrl {\n        let query = AcceptOauthRequest(\n            allowPhoneNumberAccess: allowPhoneNumberAccess,\n            allowWriteAccess: allowWriteAccess,\n            matchCode: matchCode,\n            url: url\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Declines an OAuth authorization request\n    /// - Parameter url: URL of the OAuth deep link\n    public func declineOauthRequest(\n        url: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeclineOauthRequest(\n            url: url\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Declines an OAuth authorization request\n    /// - Parameter url: URL of the OAuth deep link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func declineOauthRequest(url: String?) async throws -> Ok {\n        let query = DeclineOauthRequest(\n            url: url\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Marks all mentions in a chat as read\n    /// - Parameter chatId: Chat identifier\n    public func readAllChatMentions(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReadAllChatMentions(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Marks all mentions in a chat as read\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func readAllChatMentions(chatId: Int64?) async throws -> Ok {\n        let query = ReadAllChatMentions(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Marks all reactions in a chat as read\n    /// - Parameter chatId: Chat identifier\n    public func readAllChatReactions(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReadAllChatReactions(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Marks all reactions in a chat as read\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func readAllChatReactions(chatId: Int64?) async throws -> Ok {\n        let query = ReadAllChatReactions(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Marks all poll votes in a chat as read\n    /// - Parameter chatId: Chat identifier\n    public func readAllChatPollVotes(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReadAllChatPollVotes(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Marks all poll votes in a chat as read\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func readAllChatPollVotes(chatId: Int64?) async throws -> Ok {\n        let query = ReadAllChatPollVotes(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an existing chat corresponding to a given user\n    /// - Parameter force: Pass true to create the chat without a network request. In this case all information about the chat except its type, title and photo can be incorrect\n    /// - Parameter userId: User identifier\n    /// - Returns: An existing chat corresponding to a given user\n    public func createPrivateChat(\n        force: Bool?,\n        userId: Int64?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = CreatePrivateChat(\n            force: force,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an existing chat corresponding to a given user\n    /// - Parameter force: Pass true to create the chat without a network request. In this case all information about the chat except its type, title and photo can be incorrect\n    /// - Parameter userId: User identifier\n    /// - Returns: An existing chat corresponding to a given user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createPrivateChat(\n        force: Bool?,\n        userId: Int64?\n    ) async throws -> Chat {\n        let query = CreatePrivateChat(\n            force: force,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an existing chat corresponding to a known basic group\n    /// - Parameter basicGroupId: Basic group identifier\n    /// - Parameter force: Pass true to create the chat without a network request. In this case all information about the chat except its type, title and photo can be incorrect\n    /// - Returns: An existing chat corresponding to a known basic group\n    public func createBasicGroupChat(\n        basicGroupId: Int64?,\n        force: Bool?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateBasicGroupChat(\n            basicGroupId: basicGroupId,\n            force: force\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an existing chat corresponding to a known basic group\n    /// - Parameter basicGroupId: Basic group identifier\n    /// - Parameter force: Pass true to create the chat without a network request. In this case all information about the chat except its type, title and photo can be incorrect\n    /// - Returns: An existing chat corresponding to a known basic group\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createBasicGroupChat(\n        basicGroupId: Int64?,\n        force: Bool?\n    ) async throws -> Chat {\n        let query = CreateBasicGroupChat(\n            basicGroupId: basicGroupId,\n            force: force\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an existing chat corresponding to a known supergroup or channel\n    /// - Parameter force: Pass true to create the chat without a network request. In this case all information about the chat except its type, title and photo can be incorrect\n    /// - Parameter supergroupId: Supergroup or channel identifier\n    /// - Returns: An existing chat corresponding to a known supergroup or channel\n    public func createSupergroupChat(\n        force: Bool?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateSupergroupChat(\n            force: force,\n            supergroupId: supergroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an existing chat corresponding to a known supergroup or channel\n    /// - Parameter force: Pass true to create the chat without a network request. In this case all information about the chat except its type, title and photo can be incorrect\n    /// - Parameter supergroupId: Supergroup or channel identifier\n    /// - Returns: An existing chat corresponding to a known supergroup or channel\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createSupergroupChat(\n        force: Bool?,\n        supergroupId: Int64?\n    ) async throws -> Chat {\n        let query = CreateSupergroupChat(\n            force: force,\n            supergroupId: supergroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an existing chat corresponding to a known secret chat\n    /// - Parameter secretChatId: Secret chat identifier\n    /// - Returns: An existing chat corresponding to a known secret chat\n    public func createSecretChat(\n        secretChatId: Int?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateSecretChat(\n            secretChatId: secretChatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an existing chat corresponding to a known secret chat\n    /// - Parameter secretChatId: Secret chat identifier\n    /// - Returns: An existing chat corresponding to a known secret chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createSecretChat(secretChatId: Int?) async throws -> Chat {\n        let query = CreateSecretChat(\n            secretChatId: secretChatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Creates a new basic group and sends a corresponding messageBasicGroupChatCreate. Returns information about the newly created chat\n    /// - Parameter messageAutoDeleteTime: Message auto-delete time value, in seconds; must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically\n    /// - Parameter title: Title of the new basic group; 1-128 characters\n    /// - Parameter userIds: Identifiers of users to be added to the basic group; may be empty to create a basic group without other members\n    /// - Returns: Information about the newly created chat\n    public func createNewBasicGroupChat(\n        messageAutoDeleteTime: Int?,\n        title: String?,\n        userIds: [Int64]?,\n        completion: @escaping (Result<CreatedBasicGroupChat, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateNewBasicGroupChat(\n            messageAutoDeleteTime: messageAutoDeleteTime,\n            title: title,\n            userIds: userIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Creates a new basic group and sends a corresponding messageBasicGroupChatCreate. Returns information about the newly created chat\n    /// - Parameter messageAutoDeleteTime: Message auto-delete time value, in seconds; must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically\n    /// - Parameter title: Title of the new basic group; 1-128 characters\n    /// - Parameter userIds: Identifiers of users to be added to the basic group; may be empty to create a basic group without other members\n    /// - Returns: Information about the newly created chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createNewBasicGroupChat(\n        messageAutoDeleteTime: Int?,\n        title: String?,\n        userIds: [Int64]?\n    ) async throws -> CreatedBasicGroupChat {\n        let query = CreateNewBasicGroupChat(\n            messageAutoDeleteTime: messageAutoDeleteTime,\n            title: title,\n            userIds: userIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Creates a new supergroup or channel and sends a corresponding messageSupergroupChatCreate. Returns the newly created chat\n    /// - Parameter description: \n    /// - Parameter forImport: Pass true to create a supergroup for importing messages using importMessages\n    /// - Parameter isChannel: Pass true to create a channel chat; ignored if a forum is created\n    /// - Parameter isForum: Pass true to create a forum supergroup chat\n    /// - Parameter location: Chat location if a location-based supergroup is being created; pass null to create an ordinary supergroup chat\n    /// - Parameter messageAutoDeleteTime: Message auto-delete time value, in seconds; must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically\n    /// - Parameter title: Title of the new chat; 1-128 characters\n    /// - Returns: The newly created chat\n    public func createNewSupergroupChat(\n        description: String?,\n        forImport: Bool?,\n        isChannel: Bool?,\n        isForum: Bool?,\n        location: ChatLocation?,\n        messageAutoDeleteTime: Int?,\n        title: String?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateNewSupergroupChat(\n            description: description,\n            forImport: forImport,\n            isChannel: isChannel,\n            isForum: isForum,\n            location: location,\n            messageAutoDeleteTime: messageAutoDeleteTime,\n            title: title\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Creates a new supergroup or channel and sends a corresponding messageSupergroupChatCreate. Returns the newly created chat\n    /// - Parameter description: \n    /// - Parameter forImport: Pass true to create a supergroup for importing messages using importMessages\n    /// - Parameter isChannel: Pass true to create a channel chat; ignored if a forum is created\n    /// - Parameter isForum: Pass true to create a forum supergroup chat\n    /// - Parameter location: Chat location if a location-based supergroup is being created; pass null to create an ordinary supergroup chat\n    /// - Parameter messageAutoDeleteTime: Message auto-delete time value, in seconds; must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically\n    /// - Parameter title: Title of the new chat; 1-128 characters\n    /// - Returns: The newly created chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createNewSupergroupChat(\n        description: String?,\n        forImport: Bool?,\n        isChannel: Bool?,\n        isForum: Bool?,\n        location: ChatLocation?,\n        messageAutoDeleteTime: Int?,\n        title: String?\n    ) async throws -> Chat {\n        let query = CreateNewSupergroupChat(\n            description: description,\n            forImport: forImport,\n            isChannel: isChannel,\n            isForum: isForum,\n            location: location,\n            messageAutoDeleteTime: messageAutoDeleteTime,\n            title: title\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Creates a new secret chat. Returns the newly created chat\n    /// - Parameter userId: Identifier of the target user\n    /// - Returns: The newly created chat\n    public func createNewSecretChat(\n        userId: Int64?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateNewSecretChat(\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Creates a new secret chat. Returns the newly created chat\n    /// - Parameter userId: Identifier of the target user\n    /// - Returns: The newly created chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createNewSecretChat(userId: Int64?) async throws -> Chat {\n        let query = CreateNewSecretChat(\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Creates a new supergroup from an existing basic group and sends a corresponding messageChatUpgradeTo and messageChatUpgradeFrom; requires owner privileges. Deactivates the original basic group\n    /// - Parameter chatId: Identifier of the chat to upgrade\n    public func upgradeBasicGroupChatToSupergroupChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = UpgradeBasicGroupChatToSupergroupChat(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Creates a new supergroup from an existing basic group and sends a corresponding messageChatUpgradeTo and messageChatUpgradeFrom; requires owner privileges. Deactivates the original basic group\n    /// - Parameter chatId: Identifier of the chat to upgrade\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func upgradeBasicGroupChatToSupergroupChat(chatId: Int64?) async throws -> Chat {\n        let query = UpgradeBasicGroupChatToSupergroupChat(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns chat lists to which the chat can be added. This is an offline method\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: Chat lists to which the chat can be added\n    public func getChatListsToAddChat(\n        chatId: Int64?,\n        completion: @escaping (Result<ChatLists, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatListsToAddChat(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns chat lists to which the chat can be added. This is an offline method\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: Chat lists to which the chat can be added\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatListsToAddChat(chatId: Int64?) async throws -> ChatLists {\n        let query = GetChatListsToAddChat(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds a chat to a chat list. A chat can't be simultaneously in Main and Archive chat lists, so it is automatically removed from another one if needed\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter chatList: The chat list. Use getChatListsToAddChat to get suitable chat lists\n    public func addChatToList(\n        chatId: Int64?,\n        chatList: ChatList?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddChatToList(\n            chatId: chatId,\n            chatList: chatList\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds a chat to a chat list. A chat can't be simultaneously in Main and Archive chat lists, so it is automatically removed from another one if needed\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter chatList: The chat list. Use getChatListsToAddChat to get suitable chat lists\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func addChatToList(\n        chatId: Int64?,\n        chatList: ChatList?\n    ) async throws -> Ok {\n        let query = AddChatToList(\n            chatId: chatId,\n            chatList: chatList\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a chat folder by its identifier\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Returns: Information about a chat folder by its identifier\n    public func getChatFolder(\n        chatFolderId: Int?,\n        completion: @escaping (Result<ChatFolder, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatFolder(\n            chatFolderId: chatFolderId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a chat folder by its identifier\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Returns: Information about a chat folder by its identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatFolder(chatFolderId: Int?) async throws -> ChatFolder {\n        let query = GetChatFolder(\n            chatFolderId: chatFolderId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Creates new chat folder. Returns information about the created chat folder. There can be up to getOption(\"chat_folder_count_max\") chat folders, but the limit can be increased with Telegram Premium\n    /// - Parameter folder: The new chat folder\n    /// - Returns: Information about the created chat folder\n    public func createChatFolder(\n        folder: ChatFolder?,\n        completion: @escaping (Result<ChatFolderInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateChatFolder(\n            folder: folder\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Creates new chat folder. Returns information about the created chat folder. There can be up to getOption(\"chat_folder_count_max\") chat folders, but the limit can be increased with Telegram Premium\n    /// - Parameter folder: The new chat folder\n    /// - Returns: Information about the created chat folder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createChatFolder(folder: ChatFolder?) async throws -> ChatFolderInfo {\n        let query = CreateChatFolder(\n            folder: folder\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits existing chat folder. Returns information about the edited chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Parameter folder: The edited chat folder\n    /// - Returns: Information about the edited chat folder\n    public func editChatFolder(\n        chatFolderId: Int?,\n        folder: ChatFolder?,\n        completion: @escaping (Result<ChatFolderInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = EditChatFolder(\n            chatFolderId: chatFolderId,\n            folder: folder\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits existing chat folder. Returns information about the edited chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Parameter folder: The edited chat folder\n    /// - Returns: Information about the edited chat folder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func editChatFolder(\n        chatFolderId: Int?,\n        folder: ChatFolder?\n    ) async throws -> ChatFolderInfo {\n        let query = EditChatFolder(\n            chatFolderId: chatFolderId,\n            folder: folder\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes existing chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Parameter leaveChatIds: Identifiers of the chats to leave. The chats must be pinned or always included in the folder\n    public func deleteChatFolder(\n        chatFolderId: Int?,\n        leaveChatIds: [Int64]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteChatFolder(\n            chatFolderId: chatFolderId,\n            leaveChatIds: leaveChatIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes existing chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Parameter leaveChatIds: Identifiers of the chats to leave. The chats must be pinned or always included in the folder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteChatFolder(\n        chatFolderId: Int?,\n        leaveChatIds: [Int64]?\n    ) async throws -> Ok {\n        let query = DeleteChatFolder(\n            chatFolderId: chatFolderId,\n            leaveChatIds: leaveChatIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns identifiers of pinned or always included chats from a chat folder, which are suggested to be left when the chat folder is deleted\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Returns: Identifiers of pinned or always included chats from a chat folder, which are suggested to be left when the chat folder is deleted\n    public func getChatFolderChatsToLeave(\n        chatFolderId: Int?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatFolderChatsToLeave(\n            chatFolderId: chatFolderId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns identifiers of pinned or always included chats from a chat folder, which are suggested to be left when the chat folder is deleted\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Returns: Identifiers of pinned or always included chats from a chat folder, which are suggested to be left when the chat folder is deleted\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatFolderChatsToLeave(chatFolderId: Int?) async throws -> Chats {\n        let query = GetChatFolderChatsToLeave(\n            chatFolderId: chatFolderId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns approximate number of chats in a being created chat folder. Main and archive chat lists must be fully preloaded for this function to work correctly\n    /// - Parameter folder: The new chat folder\n    /// - Returns: Approximate number of chats in a being created chat folder\n    public func getChatFolderChatCount(\n        folder: ChatFolder?,\n        completion: @escaping (Result<Count, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatFolderChatCount(\n            folder: folder\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns approximate number of chats in a being created chat folder. Main and archive chat lists must be fully preloaded for this function to work correctly\n    /// - Parameter folder: The new chat folder\n    /// - Returns: Approximate number of chats in a being created chat folder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatFolderChatCount(folder: ChatFolder?) async throws -> Count {\n        let query = GetChatFolderChatCount(\n            folder: folder\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the order of chat folders\n    /// - Parameter chatFolderIds: Identifiers of chat folders in the new correct order\n    /// - Parameter mainChatListPosition: Position of the main chat list among chat folders, 0-based. Can be non-zero only for Premium users\n    public func reorderChatFolders(\n        chatFolderIds: [Int]?,\n        mainChatListPosition: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderChatFolders(\n            chatFolderIds: chatFolderIds,\n            mainChatListPosition: mainChatListPosition\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the order of chat folders\n    /// - Parameter chatFolderIds: Identifiers of chat folders in the new correct order\n    /// - Parameter mainChatListPosition: Position of the main chat list among chat folders, 0-based. Can be non-zero only for Premium users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func reorderChatFolders(\n        chatFolderIds: [Int]?,\n        mainChatListPosition: Int?\n    ) async throws -> Ok {\n        let query = ReorderChatFolders(\n            chatFolderIds: chatFolderIds,\n            mainChatListPosition: mainChatListPosition\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether chat folder tags are enabled\n    /// - Parameter areTagsEnabled: Pass true to enable folder tags; pass false to disable them\n    public func toggleChatFolderTags(\n        areTagsEnabled: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleChatFolderTags(\n            areTagsEnabled: areTagsEnabled\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether chat folder tags are enabled\n    /// - Parameter areTagsEnabled: Pass true to enable folder tags; pass false to disable them\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleChatFolderTags(areTagsEnabled: Bool?) async throws -> Ok {\n        let query = ToggleChatFolderTags(\n            areTagsEnabled: areTagsEnabled\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns recommended chat folders for the current user\n    /// - Returns: Recommended chat folders for the current user\n    public func getRecommendedChatFolders(completion: @escaping (Result<RecommendedChatFolders, Swift.Error>) -> Void) throws {\n        let query = GetRecommendedChatFolders()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns recommended chat folders for the current user\n    /// - Returns: Recommended chat folders for the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getRecommendedChatFolders() async throws -> RecommendedChatFolders {\n        let query = GetRecommendedChatFolders()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns default icon name for a folder. Can be called synchronously\n    /// - Parameter folder: Chat folder\n    /// - Returns: Default icon name for a folder\n    public func getChatFolderDefaultIconName(\n        folder: ChatFolder?,\n        completion: @escaping (Result<ChatFolderIcon, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatFolderDefaultIconName(\n            folder: folder\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns default icon name for a folder. Can be called synchronously\n    /// - Parameter folder: Chat folder\n    /// - Returns: Default icon name for a folder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatFolderDefaultIconName(folder: ChatFolder?) async throws -> ChatFolderIcon {\n        let query = GetChatFolderDefaultIconName(\n            folder: folder\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns identifiers of chats from a chat folder, suitable for adding to a chat folder invite link\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Returns: Identifiers of chats from a chat folder, suitable for adding to a chat folder invite link\n    public func getChatsForChatFolderInviteLink(\n        chatFolderId: Int?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatsForChatFolderInviteLink(\n            chatFolderId: chatFolderId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns identifiers of chats from a chat folder, suitable for adding to a chat folder invite link\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Returns: Identifiers of chats from a chat folder, suitable for adding to a chat folder invite link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatsForChatFolderInviteLink(chatFolderId: Int?) async throws -> Chats {\n        let query = GetChatsForChatFolderInviteLink(\n            chatFolderId: chatFolderId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Creates a new invite link for a chat folder. A link can be created for a chat folder if it has only pinned and included chats\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Parameter chatIds: Identifiers of chats to be accessible by the invite link. Use getChatsForChatFolderInviteLink to get suitable chats. Basic groups will be automatically converted to supergroups before link creation\n    /// - Parameter name: Name of the link; 0-32 characters\n    public func createChatFolderInviteLink(\n        chatFolderId: Int?,\n        chatIds: [Int64]?,\n        name: String?,\n        completion: @escaping (Result<ChatFolderInviteLink, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateChatFolderInviteLink(\n            chatFolderId: chatFolderId,\n            chatIds: chatIds,\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Creates a new invite link for a chat folder. A link can be created for a chat folder if it has only pinned and included chats\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Parameter chatIds: Identifiers of chats to be accessible by the invite link. Use getChatsForChatFolderInviteLink to get suitable chats. Basic groups will be automatically converted to supergroups before link creation\n    /// - Parameter name: Name of the link; 0-32 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createChatFolderInviteLink(\n        chatFolderId: Int?,\n        chatIds: [Int64]?,\n        name: String?\n    ) async throws -> ChatFolderInviteLink {\n        let query = CreateChatFolderInviteLink(\n            chatFolderId: chatFolderId,\n            chatIds: chatIds,\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns invite links created by the current user for a shareable chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Returns: Invite links created by the current user for a shareable chat folder\n    public func getChatFolderInviteLinks(\n        chatFolderId: Int?,\n        completion: @escaping (Result<ChatFolderInviteLinks, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatFolderInviteLinks(\n            chatFolderId: chatFolderId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns invite links created by the current user for a shareable chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Returns: Invite links created by the current user for a shareable chat folder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatFolderInviteLinks(chatFolderId: Int?) async throws -> ChatFolderInviteLinks {\n        let query = GetChatFolderInviteLinks(\n            chatFolderId: chatFolderId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits an invite link for a chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Parameter chatIds: New identifiers of chats to be accessible by the invite link. Use getChatsForChatFolderInviteLink to get suitable chats. Basic groups will be automatically converted to supergroups before link editing\n    /// - Parameter inviteLink: Invite link to be edited\n    /// - Parameter name: New name of the link; 0-32 characters\n    public func editChatFolderInviteLink(\n        chatFolderId: Int?,\n        chatIds: [Int64]?,\n        inviteLink: String?,\n        name: String?,\n        completion: @escaping (Result<ChatFolderInviteLink, Swift.Error>) -> Void\n    ) throws {\n        let query = EditChatFolderInviteLink(\n            chatFolderId: chatFolderId,\n            chatIds: chatIds,\n            inviteLink: inviteLink,\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits an invite link for a chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Parameter chatIds: New identifiers of chats to be accessible by the invite link. Use getChatsForChatFolderInviteLink to get suitable chats. Basic groups will be automatically converted to supergroups before link editing\n    /// - Parameter inviteLink: Invite link to be edited\n    /// - Parameter name: New name of the link; 0-32 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func editChatFolderInviteLink(\n        chatFolderId: Int?,\n        chatIds: [Int64]?,\n        inviteLink: String?,\n        name: String?\n    ) async throws -> ChatFolderInviteLink {\n        let query = EditChatFolderInviteLink(\n            chatFolderId: chatFolderId,\n            chatIds: chatIds,\n            inviteLink: inviteLink,\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes an invite link for a chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Parameter inviteLink: Invite link to be deleted\n    public func deleteChatFolderInviteLink(\n        chatFolderId: Int?,\n        inviteLink: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteChatFolderInviteLink(\n            chatFolderId: chatFolderId,\n            inviteLink: inviteLink\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes an invite link for a chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Parameter inviteLink: Invite link to be deleted\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteChatFolderInviteLink(\n        chatFolderId: Int?,\n        inviteLink: String?\n    ) async throws -> Ok {\n        let query = DeleteChatFolderInviteLink(\n            chatFolderId: chatFolderId,\n            inviteLink: inviteLink\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks the validity of an invite link for a chat folder and returns information about the corresponding chat folder\n    /// - Parameter inviteLink: Invite link to be checked\n    /// - Returns: Checks the validity of an invite link for a chat folder and returns information about the corresponding chat folder\n    public func checkChatFolderInviteLink(\n        inviteLink: String?,\n        completion: @escaping (Result<ChatFolderInviteLinkInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckChatFolderInviteLink(\n            inviteLink: inviteLink\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks the validity of an invite link for a chat folder and returns information about the corresponding chat folder\n    /// - Parameter inviteLink: Invite link to be checked\n    /// - Returns: Checks the validity of an invite link for a chat folder and returns information about the corresponding chat folder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func checkChatFolderInviteLink(inviteLink: String?) async throws -> ChatFolderInviteLinkInfo {\n        let query = CheckChatFolderInviteLink(\n            inviteLink: inviteLink\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds a chat folder by an invite link\n    /// - Parameter chatIds: Identifiers of the chats added to the chat folder. The chats are automatically joined if they aren't joined yet\n    /// - Parameter inviteLink: Invite link for the chat folder\n    public func addChatFolderByInviteLink(\n        chatIds: [Int64]?,\n        inviteLink: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddChatFolderByInviteLink(\n            chatIds: chatIds,\n            inviteLink: inviteLink\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds a chat folder by an invite link\n    /// - Parameter chatIds: Identifiers of the chats added to the chat folder. The chats are automatically joined if they aren't joined yet\n    /// - Parameter inviteLink: Invite link for the chat folder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func addChatFolderByInviteLink(\n        chatIds: [Int64]?,\n        inviteLink: String?\n    ) async throws -> Ok {\n        let query = AddChatFolderByInviteLink(\n            chatIds: chatIds,\n            inviteLink: inviteLink\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns new chats added to a shareable chat folder by its owner. The method must be called at most once in getOption(\"chat_folder_new_chats_update_period\") for the given chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Returns: New chats added to a shareable chat folder by its owner\n    public func getChatFolderNewChats(\n        chatFolderId: Int?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatFolderNewChats(\n            chatFolderId: chatFolderId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns new chats added to a shareable chat folder by its owner. The method must be called at most once in getOption(\"chat_folder_new_chats_update_period\") for the given chat folder\n    /// - Parameter chatFolderId: Chat folder identifier\n    /// - Returns: New chats added to a shareable chat folder by its owner\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatFolderNewChats(chatFolderId: Int?) async throws -> Chats {\n        let query = GetChatFolderNewChats(\n            chatFolderId: chatFolderId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Process new chats added to a shareable chat folder by its owner\n    /// - Parameter addedChatIds: Identifiers of the new chats, which are added to the chat folder. The chats are automatically joined if they aren't joined yet\n    /// - Parameter chatFolderId: Chat folder identifier\n    public func processChatFolderNewChats(\n        addedChatIds: [Int64]?,\n        chatFolderId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ProcessChatFolderNewChats(\n            addedChatIds: addedChatIds,\n            chatFolderId: chatFolderId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Process new chats added to a shareable chat folder by its owner\n    /// - Parameter addedChatIds: Identifiers of the new chats, which are added to the chat folder. The chats are automatically joined if they aren't joined yet\n    /// - Parameter chatFolderId: Chat folder identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func processChatFolderNewChats(\n        addedChatIds: [Int64]?,\n        chatFolderId: Int?\n    ) async throws -> Ok {\n        let query = ProcessChatFolderNewChats(\n            addedChatIds: addedChatIds,\n            chatFolderId: chatFolderId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns settings for automatic moving of chats to and from the Archive chat lists\n    /// - Returns: Settings for automatic moving of chats to and from the Archive chat lists\n    public func getArchiveChatListSettings(completion: @escaping (Result<ArchiveChatListSettings, Swift.Error>) -> Void) throws {\n        let query = GetArchiveChatListSettings()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns settings for automatic moving of chats to and from the Archive chat lists\n    /// - Returns: Settings for automatic moving of chats to and from the Archive chat lists\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getArchiveChatListSettings() async throws -> ArchiveChatListSettings {\n        let query = GetArchiveChatListSettings()\n        return try await self.execute(query: query)\n    }\n\n    /// Changes settings for automatic moving of chats to and from the Archive chat lists\n    /// - Parameter settings: New settings\n    public func setArchiveChatListSettings(\n        settings: ArchiveChatListSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetArchiveChatListSettings(\n            settings: settings\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes settings for automatic moving of chats to and from the Archive chat lists\n    /// - Parameter settings: New settings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setArchiveChatListSettings(settings: ArchiveChatListSettings?) async throws -> Ok {\n        let query = SetArchiveChatListSettings(\n            settings: settings\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the chat title. Supported only for basic groups, supergroups and channels. Requires can_change_info member right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter title: New title of the chat; 1-128 characters\n    public func setChatTitle(\n        chatId: Int64?,\n        title: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatTitle(\n            chatId: chatId,\n            title: title\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the chat title. Supported only for basic groups, supergroups and channels. Requires can_change_info member right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter title: New title of the chat; 1-128 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatTitle(\n        chatId: Int64?,\n        title: String?\n    ) async throws -> Ok {\n        let query = SetChatTitle(\n            chatId: chatId,\n            title: title\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the photo of a chat. Supported only for basic groups, supergroups and channels. Requires can_change_info member right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter photo: New chat photo; pass null to delete the chat photo\n    public func setChatPhoto(\n        chatId: Int64?,\n        photo: InputChatPhoto?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatPhoto(\n            chatId: chatId,\n            photo: photo\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the photo of a chat. Supported only for basic groups, supergroups and channels. Requires can_change_info member right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter photo: New chat photo; pass null to delete the chat photo\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatPhoto(\n        chatId: Int64?,\n        photo: InputChatPhoto?\n    ) async throws -> Ok {\n        let query = SetChatPhoto(\n            chatId: chatId,\n            photo: photo\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes accent color and background custom emoji of a channel chat. Requires can_change_info administrator right\n    /// - Parameter accentColorId: Identifier of the accent color to use. The chat must have at least accentColor.min_channel_chat_boost_level boost level to pass the corresponding color\n    /// - Parameter backgroundCustomEmojiId: Identifier of a custom emoji to be shown on the reply header and link preview background; 0 if none. Use chatBoostLevelFeatures.can_set_background_custom_emoji to check whether a custom emoji can be set\n    /// - Parameter chatId: Chat identifier\n    public func setChatAccentColor(\n        accentColorId: Int?,\n        backgroundCustomEmojiId: TdInt64?,\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatAccentColor(\n            accentColorId: accentColorId,\n            backgroundCustomEmojiId: backgroundCustomEmojiId,\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes accent color and background custom emoji of a channel chat. Requires can_change_info administrator right\n    /// - Parameter accentColorId: Identifier of the accent color to use. The chat must have at least accentColor.min_channel_chat_boost_level boost level to pass the corresponding color\n    /// - Parameter backgroundCustomEmojiId: Identifier of a custom emoji to be shown on the reply header and link preview background; 0 if none. Use chatBoostLevelFeatures.can_set_background_custom_emoji to check whether a custom emoji can be set\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatAccentColor(\n        accentColorId: Int?,\n        backgroundCustomEmojiId: TdInt64?,\n        chatId: Int64?\n    ) async throws -> Ok {\n        let query = SetChatAccentColor(\n            accentColorId: accentColorId,\n            backgroundCustomEmojiId: backgroundCustomEmojiId,\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes accent color and background custom emoji for profile of a supergroup or channel chat. Requires can_change_info administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter profileAccentColorId: Identifier of the accent color to use for profile; pass -1 if none. The chat must have at least profileAccentColor.min_supergroup_chat_boost_level for supergroups or profileAccentColor.min_channel_chat_boost_level for channels boost level to pass the corresponding color\n    /// - Parameter profileBackgroundCustomEmojiId: Identifier of a custom emoji to be shown on the chat's profile photo background; 0 if none. Use chatBoostLevelFeatures.can_set_profile_background_custom_emoji to check whether a custom emoji can be set\n    public func setChatProfileAccentColor(\n        chatId: Int64?,\n        profileAccentColorId: Int?,\n        profileBackgroundCustomEmojiId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatProfileAccentColor(\n            chatId: chatId,\n            profileAccentColorId: profileAccentColorId,\n            profileBackgroundCustomEmojiId: profileBackgroundCustomEmojiId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes accent color and background custom emoji for profile of a supergroup or channel chat. Requires can_change_info administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter profileAccentColorId: Identifier of the accent color to use for profile; pass -1 if none. The chat must have at least profileAccentColor.min_supergroup_chat_boost_level for supergroups or profileAccentColor.min_channel_chat_boost_level for channels boost level to pass the corresponding color\n    /// - Parameter profileBackgroundCustomEmojiId: Identifier of a custom emoji to be shown on the chat's profile photo background; 0 if none. Use chatBoostLevelFeatures.can_set_profile_background_custom_emoji to check whether a custom emoji can be set\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatProfileAccentColor(\n        chatId: Int64?,\n        profileAccentColorId: Int?,\n        profileBackgroundCustomEmojiId: TdInt64?\n    ) async throws -> Ok {\n        let query = SetChatProfileAccentColor(\n            chatId: chatId,\n            profileAccentColorId: profileAccentColorId,\n            profileBackgroundCustomEmojiId: profileBackgroundCustomEmojiId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the message auto-delete or self-destruct (for secret chats) time in a chat. Requires change_info administrator right in basic groups, supergroups and channels. Message auto-delete time can't be changed in a chat with the current user (Saved Messages) and the chat 777000 (Telegram).\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageAutoDeleteTime: New time value, in seconds; unless the chat is secret, it must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically\n    public func setChatMessageAutoDeleteTime(\n        chatId: Int64?,\n        messageAutoDeleteTime: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatMessageAutoDeleteTime(\n            chatId: chatId,\n            messageAutoDeleteTime: messageAutoDeleteTime\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the message auto-delete or self-destruct (for secret chats) time in a chat. Requires change_info administrator right in basic groups, supergroups and channels. Message auto-delete time can't be changed in a chat with the current user (Saved Messages) and the chat 777000 (Telegram).\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageAutoDeleteTime: New time value, in seconds; unless the chat is secret, it must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatMessageAutoDeleteTime(\n        chatId: Int64?,\n        messageAutoDeleteTime: Int?\n    ) async throws -> Ok {\n        let query = SetChatMessageAutoDeleteTime(\n            chatId: chatId,\n            messageAutoDeleteTime: messageAutoDeleteTime\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the emoji status of a chat. Use chatBoostLevelFeatures.can_set_emoji_status to check whether an emoji status can be set. Requires can_change_info administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter emojiStatus: New emoji status; pass null to remove emoji status\n    public func setChatEmojiStatus(\n        chatId: Int64?,\n        emojiStatus: EmojiStatus?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatEmojiStatus(\n            chatId: chatId,\n            emojiStatus: emojiStatus\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the emoji status of a chat. Use chatBoostLevelFeatures.can_set_emoji_status to check whether an emoji status can be set. Requires can_change_info administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter emojiStatus: New emoji status; pass null to remove emoji status\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatEmojiStatus(\n        chatId: Int64?,\n        emojiStatus: EmojiStatus?\n    ) async throws -> Ok {\n        let query = SetChatEmojiStatus(\n            chatId: chatId,\n            emojiStatus: emojiStatus\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the chat members permissions. Supported only for basic groups and supergroups. Requires can_restrict_members administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter permissions: New non-administrator members permissions in the chat\n    public func setChatPermissions(\n        chatId: Int64?,\n        permissions: ChatPermissions?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatPermissions(\n            chatId: chatId,\n            permissions: permissions\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the chat members permissions. Supported only for basic groups and supergroups. Requires can_restrict_members administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter permissions: New non-administrator members permissions in the chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatPermissions(\n        chatId: Int64?,\n        permissions: ChatPermissions?\n    ) async throws -> Ok {\n        let query = SetChatPermissions(\n            chatId: chatId,\n            permissions: permissions\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets the background in a specific chat. Supported only in private and secret chats with non-deleted users, and in chats with sufficient boost level and can_change_info administrator right\n    /// - Parameter background: The input background to use; pass null to create a new filled or chat theme background\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter darkThemeDimming: Dimming of the background in dark themes, as a percentage; 0-100. Applied only to Wallpaper and Fill types of background\n    /// - Parameter onlyForSelf: Pass true to set background only for self; pass false to set background for all chat users. Always false for backgrounds set in boosted chats. Background can be set for both users only by Telegram Premium users and if set background isn't of the type inputBackgroundPrevious\n    /// - Parameter type: Background type; pass null to use default background type for the chosen background; backgroundTypeChatTheme isn't supported for private and secret chats. Use chatBoostLevelFeatures.chat_theme_background_count and chatBoostLevelFeatures.can_set_custom_background to check whether the background type can be set in the boosted chat\n    public func setChatBackground(\n        background: InputBackground?,\n        chatId: Int64?,\n        darkThemeDimming: Int?,\n        onlyForSelf: Bool?,\n        type: BackgroundType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatBackground(\n            background: background,\n            chatId: chatId,\n            darkThemeDimming: darkThemeDimming,\n            onlyForSelf: onlyForSelf,\n            type: type\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets the background in a specific chat. Supported only in private and secret chats with non-deleted users, and in chats with sufficient boost level and can_change_info administrator right\n    /// - Parameter background: The input background to use; pass null to create a new filled or chat theme background\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter darkThemeDimming: Dimming of the background in dark themes, as a percentage; 0-100. Applied only to Wallpaper and Fill types of background\n    /// - Parameter onlyForSelf: Pass true to set background only for self; pass false to set background for all chat users. Always false for backgrounds set in boosted chats. Background can be set for both users only by Telegram Premium users and if set background isn't of the type inputBackgroundPrevious\n    /// - Parameter type: Background type; pass null to use default background type for the chosen background; backgroundTypeChatTheme isn't supported for private and secret chats. Use chatBoostLevelFeatures.chat_theme_background_count and chatBoostLevelFeatures.can_set_custom_background to check whether the background type can be set in the boosted chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatBackground(\n        background: InputBackground?,\n        chatId: Int64?,\n        darkThemeDimming: Int?,\n        onlyForSelf: Bool?,\n        type: BackgroundType?\n    ) async throws -> Ok {\n        let query = SetChatBackground(\n            background: background,\n            chatId: chatId,\n            darkThemeDimming: darkThemeDimming,\n            onlyForSelf: onlyForSelf,\n            type: type\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes background in a specific chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter restorePrevious: Pass true to restore previously set background. Can be used only in private and secret chats with non-deleted users if userFullInfo.set_chat_background == true. Supposed to be used from messageChatSetBackground messages with the currently set background that was set for both sides by the other user\n    public func deleteChatBackground(\n        chatId: Int64?,\n        restorePrevious: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteChatBackground(\n            chatId: chatId,\n            restorePrevious: restorePrevious\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes background in a specific chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter restorePrevious: Pass true to restore previously set background. Can be used only in private and secret chats with non-deleted users if userFullInfo.set_chat_background == true. Supposed to be used from messageChatSetBackground messages with the currently set background that was set for both sides by the other user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteChatBackground(\n        chatId: Int64?,\n        restorePrevious: Bool?\n    ) async throws -> Ok {\n        let query = DeleteChatBackground(\n            chatId: chatId,\n            restorePrevious: restorePrevious\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns available to the current user gift chat themes\n    /// - Parameter limit: The maximum number of chat themes to return\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: Available to the current user gift chat themes\n    public func getGiftChatThemes(\n        limit: Int?,\n        offset: String?,\n        completion: @escaping (Result<GiftChatThemes, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGiftChatThemes(\n            limit: limit,\n            offset: offset\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns available to the current user gift chat themes\n    /// - Parameter limit: The maximum number of chat themes to return\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: Available to the current user gift chat themes\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getGiftChatThemes(\n        limit: Int?,\n        offset: String?\n    ) async throws -> GiftChatThemes {\n        let query = GetGiftChatThemes(\n            limit: limit,\n            offset: offset\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the chat theme. Supported only in private and secret chats\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter theme: New chat theme; pass null to return the default theme\n    public func setChatTheme(\n        chatId: Int64?,\n        theme: InputChatTheme?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatTheme(\n            chatId: chatId,\n            theme: theme\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the chat theme. Supported only in private and secret chats\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter theme: New chat theme; pass null to return the default theme\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatTheme(\n        chatId: Int64?,\n        theme: InputChatTheme?\n    ) async throws -> Ok {\n        let query = SetChatTheme(\n            chatId: chatId,\n            theme: theme\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the draft message in a chat or a topic\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter draftMessage: New draft message; pass null to remove the draft. All files in draft message content must be of the type inputFileLocal. Media thumbnails and captions are ignored\n    /// - Parameter topicId: Topic in which the draft will be changed; pass null to change the draft for the chat itself\n    public func setChatDraftMessage(\n        chatId: Int64?,\n        draftMessage: DraftMessage?,\n        topicId: MessageTopic?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatDraftMessage(\n            chatId: chatId,\n            draftMessage: draftMessage,\n            topicId: topicId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the draft message in a chat or a topic\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter draftMessage: New draft message; pass null to remove the draft. All files in draft message content must be of the type inputFileLocal. Media thumbnails and captions are ignored\n    /// - Parameter topicId: Topic in which the draft will be changed; pass null to change the draft for the chat itself\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatDraftMessage(\n        chatId: Int64?,\n        draftMessage: DraftMessage?,\n        topicId: MessageTopic?\n    ) async throws -> Ok {\n        let query = SetChatDraftMessage(\n            chatId: chatId,\n            draftMessage: draftMessage,\n            topicId: topicId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the notification settings of a chat. Notification settings of a chat with the current user (Saved Messages) can't be changed\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter notificationSettings: New notification settings for the chat. If the chat is muted for more than 366 days, it is considered to be muted forever\n    public func setChatNotificationSettings(\n        chatId: Int64?,\n        notificationSettings: ChatNotificationSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatNotificationSettings(\n            chatId: chatId,\n            notificationSettings: notificationSettings\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the notification settings of a chat. Notification settings of a chat with the current user (Saved Messages) can't be changed\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter notificationSettings: New notification settings for the chat. If the chat is muted for more than 366 days, it is considered to be muted forever\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatNotificationSettings(\n        chatId: Int64?,\n        notificationSettings: ChatNotificationSettings?\n    ) async throws -> Ok {\n        let query = SetChatNotificationSettings(\n            chatId: chatId,\n            notificationSettings: notificationSettings\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the ability of users to save, forward, or copy chat content. Requires owner privileges in basic groups, supergroups and channels. Requires Telegram Premium to enable protected content in private chats. Not available in Saved Messages and private chats with bots or support accounts\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter hasProtectedContent: New value of has_protected_content\n    public func toggleChatHasProtectedContent(\n        chatId: Int64?,\n        hasProtectedContent: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleChatHasProtectedContent(\n            chatId: chatId,\n            hasProtectedContent: hasProtectedContent\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the ability of users to save, forward, or copy chat content. Requires owner privileges in basic groups, supergroups and channels. Requires Telegram Premium to enable protected content in private chats. Not available in Saved Messages and private chats with bots or support accounts\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter hasProtectedContent: New value of has_protected_content\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleChatHasProtectedContent(\n        chatId: Int64?,\n        hasProtectedContent: Bool?\n    ) async throws -> Ok {\n        let query = ToggleChatHasProtectedContent(\n            chatId: chatId,\n            hasProtectedContent: hasProtectedContent\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Processes request to disable has_protected_content in a chat\n    /// - Parameter approve: Pass true to approve the request; pass false to reject the request\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter requestMessageId: Identifier of the message with the request. The message must be incoming and has content of the type messageChatHasProtectedContentDisableRequested\n    public func processChatHasProtectedContentDisableRequest(\n        approve: Bool?,\n        chatId: Int64?,\n        requestMessageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ProcessChatHasProtectedContentDisableRequest(\n            approve: approve,\n            chatId: chatId,\n            requestMessageId: requestMessageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Processes request to disable has_protected_content in a chat\n    /// - Parameter approve: Pass true to approve the request; pass false to reject the request\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter requestMessageId: Identifier of the message with the request. The message must be incoming and has content of the type messageChatHasProtectedContentDisableRequested\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func processChatHasProtectedContentDisableRequest(\n        approve: Bool?,\n        chatId: Int64?,\n        requestMessageId: Int64?\n    ) async throws -> Ok {\n        let query = ProcessChatHasProtectedContentDisableRequest(\n            approve: approve,\n            chatId: chatId,\n            requestMessageId: requestMessageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the view_as_topics setting of a forum chat or Saved Messages\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter viewAsTopics: New value of view_as_topics\n    public func toggleChatViewAsTopics(\n        chatId: Int64?,\n        viewAsTopics: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleChatViewAsTopics(\n            chatId: chatId,\n            viewAsTopics: viewAsTopics\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the view_as_topics setting of a forum chat or Saved Messages\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter viewAsTopics: New value of view_as_topics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleChatViewAsTopics(\n        chatId: Int64?,\n        viewAsTopics: Bool?\n    ) async throws -> Ok {\n        let query = ToggleChatViewAsTopics(\n            chatId: chatId,\n            viewAsTopics: viewAsTopics\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the translatable state of a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isTranslatable: New value of is_translatable\n    public func toggleChatIsTranslatable(\n        chatId: Int64?,\n        isTranslatable: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleChatIsTranslatable(\n            chatId: chatId,\n            isTranslatable: isTranslatable\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the translatable state of a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isTranslatable: New value of is_translatable\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleChatIsTranslatable(\n        chatId: Int64?,\n        isTranslatable: Bool?\n    ) async throws -> Ok {\n        let query = ToggleChatIsTranslatable(\n            chatId: chatId,\n            isTranslatable: isTranslatable\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the marked as unread state of a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isMarkedAsUnread: New value of is_marked_as_unread\n    public func toggleChatIsMarkedAsUnread(\n        chatId: Int64?,\n        isMarkedAsUnread: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleChatIsMarkedAsUnread(\n            chatId: chatId,\n            isMarkedAsUnread: isMarkedAsUnread\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the marked as unread state of a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isMarkedAsUnread: New value of is_marked_as_unread\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleChatIsMarkedAsUnread(\n        chatId: Int64?,\n        isMarkedAsUnread: Bool?\n    ) async throws -> Ok {\n        let query = ToggleChatIsMarkedAsUnread(\n            chatId: chatId,\n            isMarkedAsUnread: isMarkedAsUnread\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the value of the default disable_notification parameter, used when a message is sent to a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter defaultDisableNotification: New value of default_disable_notification\n    public func toggleChatDefaultDisableNotification(\n        chatId: Int64?,\n        defaultDisableNotification: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleChatDefaultDisableNotification(\n            chatId: chatId,\n            defaultDisableNotification: defaultDisableNotification\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the value of the default disable_notification parameter, used when a message is sent to a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter defaultDisableNotification: New value of default_disable_notification\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleChatDefaultDisableNotification(\n        chatId: Int64?,\n        defaultDisableNotification: Bool?\n    ) async throws -> Ok {\n        let query = ToggleChatDefaultDisableNotification(\n            chatId: chatId,\n            defaultDisableNotification: defaultDisableNotification\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes reactions, available in a chat. Available for basic groups, supergroups, and channels. Requires can_change_info member right\n    /// - Parameter availableReactions: Reactions available in the chat. All explicitly specified emoji reactions must be active. In channel chats up to the chat's boost level custom emoji reactions can be explicitly specified\n    /// - Parameter chatId: Identifier of the chat\n    public func setChatAvailableReactions(\n        availableReactions: ChatAvailableReactions?,\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatAvailableReactions(\n            availableReactions: availableReactions,\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes reactions, available in a chat. Available for basic groups, supergroups, and channels. Requires can_change_info member right\n    /// - Parameter availableReactions: Reactions available in the chat. All explicitly specified emoji reactions must be active. In channel chats up to the chat's boost level custom emoji reactions can be explicitly specified\n    /// - Parameter chatId: Identifier of the chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatAvailableReactions(\n        availableReactions: ChatAvailableReactions?,\n        chatId: Int64?\n    ) async throws -> Ok {\n        let query = SetChatAvailableReactions(\n            availableReactions: availableReactions,\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes application-specific data associated with a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter clientData: New value of client_data\n    public func setChatClientData(\n        chatId: Int64?,\n        clientData: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatClientData(\n            chatId: chatId,\n            clientData: clientData\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes application-specific data associated with a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter clientData: New value of client_data\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatClientData(\n        chatId: Int64?,\n        clientData: String?\n    ) async throws -> Ok {\n        let query = SetChatClientData(\n            chatId: chatId,\n            clientData: clientData\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes information about a chat. Available for basic groups, supergroups, and channels. Requires can_change_info member right\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter description: \n    public func setChatDescription(\n        chatId: Int64?,\n        description: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatDescription(\n            chatId: chatId,\n            description: description\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes information about a chat. Available for basic groups, supergroups, and channels. Requires can_change_info member right\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter description: \n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatDescription(\n        chatId: Int64?,\n        description: String?\n    ) async throws -> Ok {\n        let query = SetChatDescription(\n            chatId: chatId,\n            description: description\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the discussion group of a channel chat; requires can_change_info administrator right in the channel if it is specified\n    /// - Parameter chatId: Identifier of the channel chat. Pass 0 to remove a link from the supergroup passed in the second argument to a linked channel chat (requires can_pin_messages member right in the supergroup)\n    /// - Parameter discussionChatId: Identifier of a new channel's discussion group. Use 0 to remove the discussion group. Use the method getSuitableDiscussionChats to find all suitable groups. Basic group chats must be first upgraded to supergroup chats. If new chat members don't have access to old messages in the supergroup, then toggleSupergroupIsAllHistoryAvailable must be used first to change that\n    public func setChatDiscussionGroup(\n        chatId: Int64?,\n        discussionChatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatDiscussionGroup(\n            chatId: chatId,\n            discussionChatId: discussionChatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the discussion group of a channel chat; requires can_change_info administrator right in the channel if it is specified\n    /// - Parameter chatId: Identifier of the channel chat. Pass 0 to remove a link from the supergroup passed in the second argument to a linked channel chat (requires can_pin_messages member right in the supergroup)\n    /// - Parameter discussionChatId: Identifier of a new channel's discussion group. Use 0 to remove the discussion group. Use the method getSuitableDiscussionChats to find all suitable groups. Basic group chats must be first upgraded to supergroup chats. If new chat members don't have access to old messages in the supergroup, then toggleSupergroupIsAllHistoryAvailable must be used first to change that\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatDiscussionGroup(\n        chatId: Int64?,\n        discussionChatId: Int64?\n    ) async throws -> Ok {\n        let query = SetChatDiscussionGroup(\n            chatId: chatId,\n            discussionChatId: discussionChatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes direct messages group settings for a channel chat; requires owner privileges in the chat\n    /// - Parameter chatId: Identifier of the channel chat\n    /// - Parameter isEnabled: Pass true if the direct messages group is enabled for the channel chat; pass false otherwise\n    /// - Parameter paidMessageStarCount: The new number of Telegram Stars that must be paid for each message that is sent to the direct messages chat unless the sender is an administrator of the channel chat; 0-getOption(\"paid_message_star_count_max\"). The channel will receive getOption(\"paid_message_earnings_per_mille\") Telegram Stars for each 1000 Telegram Stars paid for message sending. Requires supergroupFullInfo.can_enable_paid_messages for positive amounts\n    public func setChatDirectMessagesGroup(\n        chatId: Int64?,\n        isEnabled: Bool?,\n        paidMessageStarCount: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatDirectMessagesGroup(\n            chatId: chatId,\n            isEnabled: isEnabled,\n            paidMessageStarCount: paidMessageStarCount\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes direct messages group settings for a channel chat; requires owner privileges in the chat\n    /// - Parameter chatId: Identifier of the channel chat\n    /// - Parameter isEnabled: Pass true if the direct messages group is enabled for the channel chat; pass false otherwise\n    /// - Parameter paidMessageStarCount: The new number of Telegram Stars that must be paid for each message that is sent to the direct messages chat unless the sender is an administrator of the channel chat; 0-getOption(\"paid_message_star_count_max\"). The channel will receive getOption(\"paid_message_earnings_per_mille\") Telegram Stars for each 1000 Telegram Stars paid for message sending. Requires supergroupFullInfo.can_enable_paid_messages for positive amounts\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatDirectMessagesGroup(\n        chatId: Int64?,\n        isEnabled: Bool?,\n        paidMessageStarCount: Int64?\n    ) async throws -> Ok {\n        let query = SetChatDirectMessagesGroup(\n            chatId: chatId,\n            isEnabled: isEnabled,\n            paidMessageStarCount: paidMessageStarCount\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the location of a chat. Available only for some location-based supergroups, use supergroupFullInfo.can_set_location to check whether the method is allowed to use\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter location: New location for the chat; must be valid and not null\n    public func setChatLocation(\n        chatId: Int64?,\n        location: ChatLocation?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatLocation(\n            chatId: chatId,\n            location: location\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the location of a chat. Available only for some location-based supergroups, use supergroupFullInfo.can_set_location to check whether the method is allowed to use\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter location: New location for the chat; must be valid and not null\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatLocation(\n        chatId: Int64?,\n        location: ChatLocation?\n    ) async throws -> Ok {\n        let query = SetChatLocation(\n            chatId: chatId,\n            location: location\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the slow mode delay of a chat. Available only for supergroups; requires can_restrict_members administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter slowModeDelay: New slow mode delay for the chat, in seconds; must be one of 0, 5, 10, 30, 60, 300, 900, 3600\n    public func setChatSlowModeDelay(\n        chatId: Int64?,\n        slowModeDelay: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatSlowModeDelay(\n            chatId: chatId,\n            slowModeDelay: slowModeDelay\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the slow mode delay of a chat. Available only for supergroups; requires can_restrict_members administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter slowModeDelay: New slow mode delay for the chat, in seconds; must be one of 0, 5, 10, 30, 60, 300, 900, 3600\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatSlowModeDelay(\n        chatId: Int64?,\n        slowModeDelay: Int?\n    ) async throws -> Ok {\n        let query = SetChatSlowModeDelay(\n            chatId: chatId,\n            slowModeDelay: slowModeDelay\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Pins a message in a chat. A message can be pinned only if messageProperties.can_be_pinned\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter disableNotification: Pass true to disable notification about the pinned message. Notifications are always disabled in channels and private chats\n    /// - Parameter messageId: Identifier of the new pinned message\n    /// - Parameter onlyForSelf: Pass true to pin the message only for self; private chats only\n    public func pinChatMessage(\n        chatId: Int64?,\n        disableNotification: Bool?,\n        messageId: Int64?,\n        onlyForSelf: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = PinChatMessage(\n            chatId: chatId,\n            disableNotification: disableNotification,\n            messageId: messageId,\n            onlyForSelf: onlyForSelf\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Pins a message in a chat. A message can be pinned only if messageProperties.can_be_pinned\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter disableNotification: Pass true to disable notification about the pinned message. Notifications are always disabled in channels and private chats\n    /// - Parameter messageId: Identifier of the new pinned message\n    /// - Parameter onlyForSelf: Pass true to pin the message only for self; private chats only\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func pinChatMessage(\n        chatId: Int64?,\n        disableNotification: Bool?,\n        messageId: Int64?,\n        onlyForSelf: Bool?\n    ) async throws -> Ok {\n        let query = PinChatMessage(\n            chatId: chatId,\n            disableNotification: disableNotification,\n            messageId: messageId,\n            onlyForSelf: onlyForSelf\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes a pinned message from a chat; requires can_pin_messages member right if the chat is a basic group or supergroup, or can_edit_messages administrator right if the chat is a channel\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter messageId: Identifier of the removed pinned message\n    public func unpinChatMessage(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = UnpinChatMessage(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes a pinned message from a chat; requires can_pin_messages member right if the chat is a basic group or supergroup, or can_edit_messages administrator right if the chat is a channel\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter messageId: Identifier of the removed pinned message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func unpinChatMessage(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = UnpinChatMessage(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes all pinned messages from a chat; requires can_pin_messages member right if the chat is a basic group or supergroup, or can_edit_messages administrator right if the chat is a channel\n    /// - Parameter chatId: Identifier of the chat\n    public func unpinAllChatMessages(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = UnpinAllChatMessages(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes all pinned messages from a chat; requires can_pin_messages member right if the chat is a basic group or supergroup, or can_edit_messages administrator right if the chat is a channel\n    /// - Parameter chatId: Identifier of the chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func unpinAllChatMessages(chatId: Int64?) async throws -> Ok {\n        let query = UnpinAllChatMessages(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds the current user as a new member to a chat. Private and secret chats can't be joined using this method. May return an error with a message \"INVITE_REQUEST_SENT\" if only a join request was created\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: May return an error with a message \"INVITE_REQUEST_SENT\" if only a join request was created\n    public func joinChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = JoinChat(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds the current user as a new member to a chat. Private and secret chats can't be joined using this method. May return an error with a message \"INVITE_REQUEST_SENT\" if only a join request was created\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: May return an error with a message \"INVITE_REQUEST_SENT\" if only a join request was created\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func joinChat(chatId: Int64?) async throws -> Ok {\n        let query = JoinChat(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes the current user from chat members. Private and secret chats can't be left using this method\n    /// - Parameter chatId: Chat identifier\n    public func leaveChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = LeaveChat(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes the current user from chat members. Private and secret chats can't be left using this method\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func leaveChat(chatId: Int64?) async throws -> Ok {\n        let query = LeaveChat(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds a new member to a chat; requires can_invite_users member right. Members can't be added to private or secret chats. Returns information about members that weren't added\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forwardLimit: The number of earlier messages from the chat to be forwarded to the new member; up to 100. Ignored for supergroups and channels, or if the added user is a bot\n    /// - Parameter userId: Identifier of the user\n    /// - Returns: Information about members that weren't added\n    public func addChatMember(\n        chatId: Int64?,\n        forwardLimit: Int?,\n        userId: Int64?,\n        completion: @escaping (Result<FailedToAddMembers, Swift.Error>) -> Void\n    ) throws {\n        let query = AddChatMember(\n            chatId: chatId,\n            forwardLimit: forwardLimit,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds a new member to a chat; requires can_invite_users member right. Members can't be added to private or secret chats. Returns information about members that weren't added\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter forwardLimit: The number of earlier messages from the chat to be forwarded to the new member; up to 100. Ignored for supergroups and channels, or if the added user is a bot\n    /// - Parameter userId: Identifier of the user\n    /// - Returns: Information about members that weren't added\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func addChatMember(\n        chatId: Int64?,\n        forwardLimit: Int?,\n        userId: Int64?\n    ) async throws -> FailedToAddMembers {\n        let query = AddChatMember(\n            chatId: chatId,\n            forwardLimit: forwardLimit,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds multiple new members to a chat; requires can_invite_users member right. Currently, this method is only available for supergroups and channels. This method can't be used to join a chat. Members can't be added to a channel if it has more than 200 members. Returns information about members that weren't added\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter userIds: Identifiers of the users to be added to the chat. The maximum number of added users is 20 for supergroups and 100 for channels\n    /// - Returns: Information about members that weren't added\n    public func addChatMembers(\n        chatId: Int64?,\n        userIds: [Int64]?,\n        completion: @escaping (Result<FailedToAddMembers, Swift.Error>) -> Void\n    ) throws {\n        let query = AddChatMembers(\n            chatId: chatId,\n            userIds: userIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds multiple new members to a chat; requires can_invite_users member right. Currently, this method is only available for supergroups and channels. This method can't be used to join a chat. Members can't be added to a channel if it has more than 200 members. Returns information about members that weren't added\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter userIds: Identifiers of the users to be added to the chat. The maximum number of added users is 20 for supergroups and 100 for channels\n    /// - Returns: Information about members that weren't added\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func addChatMembers(\n        chatId: Int64?,\n        userIds: [Int64]?\n    ) async throws -> FailedToAddMembers {\n        let query = AddChatMembers(\n            chatId: chatId,\n            userIds: userIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the status of a chat member; requires can_invite_users member right to add a chat member, can_promote_members administrator right to change administrator rights of the member, and can_restrict_members administrator right to change restrictions of a user. This function is currently not suitable for transferring chat ownership; use transferChatOwnership instead. Use addChatMember or banChatMember if some additional parameters needs to be passed\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter memberId: Member identifier. Chats can be only banned and unbanned in supergroups and channels\n    /// - Parameter status: The new status of the member in the chat\n    public func setChatMemberStatus(\n        chatId: Int64?,\n        memberId: MessageSender?,\n        status: ChatMemberStatus?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatMemberStatus(\n            chatId: chatId,\n            memberId: memberId,\n            status: status\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the status of a chat member; requires can_invite_users member right to add a chat member, can_promote_members administrator right to change administrator rights of the member, and can_restrict_members administrator right to change restrictions of a user. This function is currently not suitable for transferring chat ownership; use transferChatOwnership instead. Use addChatMember or banChatMember if some additional parameters needs to be passed\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter memberId: Member identifier. Chats can be only banned and unbanned in supergroups and channels\n    /// - Parameter status: The new status of the member in the chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatMemberStatus(\n        chatId: Int64?,\n        memberId: MessageSender?,\n        status: ChatMemberStatus?\n    ) async throws -> Ok {\n        let query = SetChatMemberStatus(\n            chatId: chatId,\n            memberId: memberId,\n            status: status\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the tag or custom title of a chat member; requires can_manage_tags administrator right to change tag of other users; for basic groups and supergroups only\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter tag: The new tag of the member in the chat; 0-16 characters without emoji\n    /// - Parameter userId: Identifier of the user, which tag is changed. Chats can't have member tags\n    public func setChatMemberTag(\n        chatId: Int64?,\n        tag: String?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatMemberTag(\n            chatId: chatId,\n            tag: tag,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the tag or custom title of a chat member; requires can_manage_tags administrator right to change tag of other users; for basic groups and supergroups only\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter tag: The new tag of the member in the chat; 0-16 characters without emoji\n    /// - Parameter userId: Identifier of the user, which tag is changed. Chats can't have member tags\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatMemberTag(\n        chatId: Int64?,\n        tag: String?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = SetChatMemberTag(\n            chatId: chatId,\n            tag: tag,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Bans a member in a chat; requires can_restrict_members administrator right. Members can't be banned in private or secret chats. In supergroups and channels, the user will not be able to return to the group on their own using invite links, etc., unless unbanned first\n    /// - Parameter bannedUntilDate: Point in time (Unix timestamp) when the user will be unbanned; 0 if never. If the user is banned for more than 366 days or for less than 30 seconds from the current time, the user is considered to be banned forever. Ignored in basic groups and if a chat is banned\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter memberId: Member identifier\n    /// - Parameter revokeMessages: Pass true to delete all messages in the chat for the user who is being removed. Always true for supergroups and channels\n    /// - Returns: In supergroups and channels, the user will not be able to return to the group on their own using invite links, etc\n    public func banChatMember(\n        bannedUntilDate: Int?,\n        chatId: Int64?,\n        memberId: MessageSender?,\n        revokeMessages: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = BanChatMember(\n            bannedUntilDate: bannedUntilDate,\n            chatId: chatId,\n            memberId: memberId,\n            revokeMessages: revokeMessages\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Bans a member in a chat; requires can_restrict_members administrator right. Members can't be banned in private or secret chats. In supergroups and channels, the user will not be able to return to the group on their own using invite links, etc., unless unbanned first\n    /// - Parameter bannedUntilDate: Point in time (Unix timestamp) when the user will be unbanned; 0 if never. If the user is banned for more than 366 days or for less than 30 seconds from the current time, the user is considered to be banned forever. Ignored in basic groups and if a chat is banned\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter memberId: Member identifier\n    /// - Parameter revokeMessages: Pass true to delete all messages in the chat for the user who is being removed. Always true for supergroups and channels\n    /// - Returns: In supergroups and channels, the user will not be able to return to the group on their own using invite links, etc\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func banChatMember(\n        bannedUntilDate: Int?,\n        chatId: Int64?,\n        memberId: MessageSender?,\n        revokeMessages: Bool?\n    ) async throws -> Ok {\n        let query = BanChatMember(\n            bannedUntilDate: bannedUntilDate,\n            chatId: chatId,\n            memberId: memberId,\n            revokeMessages: revokeMessages\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks whether the current session can be used to transfer a chat ownership to another user\n    public func canTransferOwnership(completion: @escaping (Result<CanTransferOwnershipResult, Swift.Error>) -> Void) throws {\n        let query = CanTransferOwnership()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks whether the current session can be used to transfer a chat ownership to another user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func canTransferOwnership() async throws -> CanTransferOwnershipResult {\n        let query = CanTransferOwnership()\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the owner of a chat; for basic groups, supergroups and channel chats only; requires owner privileges in the chat. Use the method canTransferOwnership to check whether the ownership can be transferred from the current session\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Parameter userId: Identifier of the user to which transfer the ownership. The ownership can't be transferred to a bot or to a deleted user\n    public func transferChatOwnership(\n        chatId: Int64?,\n        password: String?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = TransferChatOwnership(\n            chatId: chatId,\n            password: password,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the owner of a chat; for basic groups, supergroups and channel chats only; requires owner privileges in the chat. Use the method canTransferOwnership to check whether the ownership can be transferred from the current session\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Parameter userId: Identifier of the user to which transfer the ownership. The ownership can't be transferred to a bot or to a deleted user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func transferChatOwnership(\n        chatId: Int64?,\n        password: String?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = TransferChatOwnership(\n            chatId: chatId,\n            password: password,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the user who will become the owner of the chat after 7 days if the current user does not return to the supergroup or channel during that period or immediately for basic groups; requires owner privileges in the chat. Available only for supergroups, basic groups and channel chats\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The user who will become the owner of the chat after 7 days if the current user does not return to the supergroup or channel during that period or immediately for basic groups\n    public func getChatOwnerAfterLeaving(\n        chatId: Int64?,\n        completion: @escaping (Result<User, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatOwnerAfterLeaving(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the user who will become the owner of the chat after 7 days if the current user does not return to the supergroup or channel during that period or immediately for basic groups; requires owner privileges in the chat. Available only for supergroups, basic groups and channel chats\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The user who will become the owner of the chat after 7 days if the current user does not return to the supergroup or channel during that period or immediately for basic groups\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatOwnerAfterLeaving(chatId: Int64?) async throws -> User {\n        let query = GetChatOwnerAfterLeaving(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a single member of a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter memberId: Member identifier\n    /// - Returns: Information about a single member of a chat\n    public func getChatMember(\n        chatId: Int64?,\n        memberId: MessageSender?,\n        completion: @escaping (Result<ChatMember, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatMember(\n            chatId: chatId,\n            memberId: memberId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a single member of a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter memberId: Member identifier\n    /// - Returns: Information about a single member of a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatMember(\n        chatId: Int64?,\n        memberId: MessageSender?\n    ) async throws -> ChatMember {\n        let query = GetChatMember(\n            chatId: chatId,\n            memberId: memberId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for a specified query in the first name, last name and usernames of the members of a specified chat. Requires administrator rights if the chat is a channel\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter filter: The type of users to search for; pass null to search among all chat members\n    /// - Parameter limit: The maximum number of users to be returned; up to 200\n    /// - Parameter query: Query to search for\n    public func searchChatMembers(\n        chatId: Int64?,\n        filter: ChatMembersFilter?,\n        limit: Int?,\n        query: String?,\n        completion: @escaping (Result<ChatMembers, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchChatMembers(\n            chatId: chatId,\n            filter: filter,\n            limit: limit,\n            query: query\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for a specified query in the first name, last name and usernames of the members of a specified chat. Requires administrator rights if the chat is a channel\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter filter: The type of users to search for; pass null to search among all chat members\n    /// - Parameter limit: The maximum number of users to be returned; up to 200\n    /// - Parameter query: Query to search for\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchChatMembers(\n        chatId: Int64?,\n        filter: ChatMembersFilter?,\n        limit: Int?,\n        query: String?\n    ) async throws -> ChatMembers {\n        let query = SearchChatMembers(\n            chatId: chatId,\n            filter: filter,\n            limit: limit,\n            query: query\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a list of administrators of the chat with their custom titles\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: A list of administrators of the chat with their custom titles\n    public func getChatAdministrators(\n        chatId: Int64?,\n        completion: @escaping (Result<ChatAdministrators, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatAdministrators(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a list of administrators of the chat with their custom titles\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: A list of administrators of the chat with their custom titles\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatAdministrators(chatId: Int64?) async throws -> ChatAdministrators {\n        let query = GetChatAdministrators(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Clears message drafts in all chats\n    /// - Parameter excludeSecretChats: Pass true to keep local message drafts in secret chats\n    public func clearAllDraftMessages(\n        excludeSecretChats: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ClearAllDraftMessages(\n            excludeSecretChats: excludeSecretChats\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Clears message drafts in all chats\n    /// - Parameter excludeSecretChats: Pass true to keep local message drafts in secret chats\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func clearAllDraftMessages(excludeSecretChats: Bool?) async throws -> Ok {\n        let query = ClearAllDraftMessages(\n            excludeSecretChats: excludeSecretChats\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the current state of stake dice\n    /// - Returns: The current state of stake dice\n    public func getStakeDiceState(completion: @escaping (Result<StakeDiceState, Swift.Error>) -> Void) throws {\n        let query = GetStakeDiceState()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the current state of stake dice\n    /// - Returns: The current state of stake dice\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStakeDiceState() async throws -> StakeDiceState {\n        let query = GetStakeDiceState()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns saved notification sound by its identifier. Returns a 404 error if there is no saved notification sound with the specified identifier\n    /// - Parameter notificationSoundId: Identifier of the notification sound\n    /// - Returns: Saved notification sound by its identifier. Returns a 404 error if there is no saved notification sound with the specified identifier\n    public func getSavedNotificationSound(\n        notificationSoundId: TdInt64?,\n        completion: @escaping (Result<NotificationSound, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSavedNotificationSound(\n            notificationSoundId: notificationSoundId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns saved notification sound by its identifier. Returns a 404 error if there is no saved notification sound with the specified identifier\n    /// - Parameter notificationSoundId: Identifier of the notification sound\n    /// - Returns: Saved notification sound by its identifier. Returns a 404 error if there is no saved notification sound with the specified identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getSavedNotificationSound(notificationSoundId: TdInt64?) async throws -> NotificationSound {\n        let query = GetSavedNotificationSound(\n            notificationSoundId: notificationSoundId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of saved notification sounds. If a sound isn't in the list, then default sound needs to be used\n    /// - Returns: The list of saved notification sounds\n    public func getSavedNotificationSounds(completion: @escaping (Result<NotificationSounds, Swift.Error>) -> Void) throws {\n        let query = GetSavedNotificationSounds()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of saved notification sounds. If a sound isn't in the list, then default sound needs to be used\n    /// - Returns: The list of saved notification sounds\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getSavedNotificationSounds() async throws -> NotificationSounds {\n        let query = GetSavedNotificationSounds()\n        return try await self.execute(query: query)\n    }\n\n    /// Adds a new notification sound to the list of saved notification sounds. The new notification sound is added to the top of the list. If it is already in the list, its position isn't changed\n    /// - Parameter sound: Notification sound file to add\n    public func addSavedNotificationSound(\n        sound: InputFile?,\n        completion: @escaping (Result<NotificationSound, Swift.Error>) -> Void\n    ) throws {\n        let query = AddSavedNotificationSound(\n            sound: sound\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds a new notification sound to the list of saved notification sounds. The new notification sound is added to the top of the list. If it is already in the list, its position isn't changed\n    /// - Parameter sound: Notification sound file to add\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func addSavedNotificationSound(sound: InputFile?) async throws -> NotificationSound {\n        let query = AddSavedNotificationSound(\n            sound: sound\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes a notification sound from the list of saved notification sounds\n    /// - Parameter notificationSoundId: Identifier of the notification sound\n    public func removeSavedNotificationSound(\n        notificationSoundId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveSavedNotificationSound(\n            notificationSoundId: notificationSoundId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes a notification sound from the list of saved notification sounds\n    /// - Parameter notificationSoundId: Identifier of the notification sound\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeSavedNotificationSound(notificationSoundId: TdInt64?) async throws -> Ok {\n        let query = RemoveSavedNotificationSound(\n            notificationSoundId: notificationSoundId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of chats with non-default notification settings for new messages\n    /// - Parameter compareSound: Pass true to include in the response chats with only non-default sound\n    /// - Parameter scope: If specified, only chats from the scope will be returned; pass null to return chats from all scopes\n    /// - Returns: The list of chats with non-default notification settings for new messages\n    public func getChatNotificationSettingsExceptions(\n        compareSound: Bool?,\n        scope: NotificationSettingsScope?,\n        completion: @escaping (Result<Chats, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatNotificationSettingsExceptions(\n            compareSound: compareSound,\n            scope: scope\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of chats with non-default notification settings for new messages\n    /// - Parameter compareSound: Pass true to include in the response chats with only non-default sound\n    /// - Parameter scope: If specified, only chats from the scope will be returned; pass null to return chats from all scopes\n    /// - Returns: The list of chats with non-default notification settings for new messages\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatNotificationSettingsExceptions(\n        compareSound: Bool?,\n        scope: NotificationSettingsScope?\n    ) async throws -> Chats {\n        let query = GetChatNotificationSettingsExceptions(\n            compareSound: compareSound,\n            scope: scope\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the notification settings for chats of a given type\n    /// - Parameter scope: Types of chats for which to return the notification settings information\n    /// - Returns: The notification settings for chats of a given type\n    public func getScopeNotificationSettings(\n        scope: NotificationSettingsScope?,\n        completion: @escaping (Result<ScopeNotificationSettings, Swift.Error>) -> Void\n    ) throws {\n        let query = GetScopeNotificationSettings(\n            scope: scope\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the notification settings for chats of a given type\n    /// - Parameter scope: Types of chats for which to return the notification settings information\n    /// - Returns: The notification settings for chats of a given type\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getScopeNotificationSettings(scope: NotificationSettingsScope?) async throws -> ScopeNotificationSettings {\n        let query = GetScopeNotificationSettings(\n            scope: scope\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes notification settings for chats of a given type\n    /// - Parameter notificationSettings: The new notification settings for the given scope\n    /// - Parameter scope: Types of chats for which to change the notification settings\n    public func setScopeNotificationSettings(\n        notificationSettings: ScopeNotificationSettings?,\n        scope: NotificationSettingsScope?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetScopeNotificationSettings(\n            notificationSettings: notificationSettings,\n            scope: scope\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes notification settings for chats of a given type\n    /// - Parameter notificationSettings: The new notification settings for the given scope\n    /// - Parameter scope: Types of chats for which to change the notification settings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setScopeNotificationSettings(\n        notificationSettings: ScopeNotificationSettings?,\n        scope: NotificationSettingsScope?\n    ) async throws -> Ok {\n        let query = SetScopeNotificationSettings(\n            notificationSettings: notificationSettings,\n            scope: scope\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes notification settings for reactions\n    /// - Parameter notificationSettings: The new notification settings for reactions\n    public func setReactionNotificationSettings(\n        notificationSettings: ReactionNotificationSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetReactionNotificationSettings(\n            notificationSettings: notificationSettings\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes notification settings for reactions\n    /// - Parameter notificationSettings: The new notification settings for reactions\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setReactionNotificationSettings(notificationSettings: ReactionNotificationSettings?) async throws -> Ok {\n        let query = SetReactionNotificationSettings(\n            notificationSettings: notificationSettings\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Resets all chat and scope notification settings to their default values. By default, all chats are unmuted and message previews are shown\n    public func resetAllNotificationSettings(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ResetAllNotificationSettings()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Resets all chat and scope notification settings to their default values. By default, all chats are unmuted and message previews are shown\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func resetAllNotificationSettings() async throws -> Ok {\n        let query = ResetAllNotificationSettings()\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the pinned state of a chat. There can be up to getOption(\"pinned_chat_count_max\")/getOption(\"pinned_archived_chat_count_max\") pinned non-secret chats and the same number of secret chats in the main/archive chat list. The limit can be increased with Telegram Premium\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter chatList: Chat list in which to change the pinned state of the chat\n    /// - Parameter isPinned: Pass true to pin the chat; pass false to unpin it\n    public func toggleChatIsPinned(\n        chatId: Int64?,\n        chatList: ChatList?,\n        isPinned: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleChatIsPinned(\n            chatId: chatId,\n            chatList: chatList,\n            isPinned: isPinned\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the pinned state of a chat. There can be up to getOption(\"pinned_chat_count_max\")/getOption(\"pinned_archived_chat_count_max\") pinned non-secret chats and the same number of secret chats in the main/archive chat list. The limit can be increased with Telegram Premium\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter chatList: Chat list in which to change the pinned state of the chat\n    /// - Parameter isPinned: Pass true to pin the chat; pass false to unpin it\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleChatIsPinned(\n        chatId: Int64?,\n        chatList: ChatList?,\n        isPinned: Bool?\n    ) async throws -> Ok {\n        let query = ToggleChatIsPinned(\n            chatId: chatId,\n            chatList: chatList,\n            isPinned: isPinned\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the order of pinned chats\n    /// - Parameter chatIds: The new list of pinned chats\n    /// - Parameter chatList: Chat list in which to change the order of pinned chats\n    public func setPinnedChats(\n        chatIds: [Int64]?,\n        chatList: ChatList?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetPinnedChats(\n            chatIds: chatIds,\n            chatList: chatList\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the order of pinned chats\n    /// - Parameter chatIds: The new list of pinned chats\n    /// - Parameter chatList: Chat list in which to change the order of pinned chats\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setPinnedChats(\n        chatIds: [Int64]?,\n        chatList: ChatList?\n    ) async throws -> Ok {\n        let query = SetPinnedChats(\n            chatIds: chatIds,\n            chatList: chatList\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Traverses all chats in a chat list and marks all messages in the chats as read\n    /// - Parameter chatList: Chat list in which to mark all chats as read\n    public func readChatList(\n        chatList: ChatList?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReadChatList(\n            chatList: chatList\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Traverses all chats in a chat list and marks all messages in the chats as read\n    /// - Parameter chatList: Chat list in which to mark all chats as read\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func readChatList(chatList: ChatList?) async throws -> Ok {\n        let query = ReadChatList(\n            chatList: chatList\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the current weather in the given location\n    /// - Parameter location: The location\n    /// - Returns: The current weather in the given location\n    public func getCurrentWeather(\n        location: Location?,\n        completion: @escaping (Result<CurrentWeather, Swift.Error>) -> Void\n    ) throws {\n        let query = GetCurrentWeather(\n            location: location\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the current weather in the given location\n    /// - Parameter location: The location\n    /// - Returns: The current weather in the given location\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getCurrentWeather(location: Location?) async throws -> CurrentWeather {\n        let query = GetCurrentWeather(\n            location: location\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a story\n    /// - Parameter onlyLocal: Pass true to get only locally available information without sending network requests\n    /// - Parameter storyId: Story identifier\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    /// - Returns: A story\n    public func getStory(\n        onlyLocal: Bool?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<Story, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStory(\n            onlyLocal: onlyLocal,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a story\n    /// - Parameter onlyLocal: Pass true to get only locally available information without sending network requests\n    /// - Parameter storyId: Story identifier\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    /// - Returns: A story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStory(\n        onlyLocal: Bool?,\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) async throws -> Story {\n        let query = GetStory(\n            onlyLocal: onlyLocal,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns supergroup and channel chats in which the current user has the right to post stories. The chats must be rechecked with canPostStory before actually trying to post a story there\n    /// - Returns: Supergroup and channel chats in which the current user has the right to post stories\n    public func getChatsToPostStories(completion: @escaping (Result<Chats, Swift.Error>) -> Void) throws {\n        let query = GetChatsToPostStories()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns supergroup and channel chats in which the current user has the right to post stories. The chats must be rechecked with canPostStory before actually trying to post a story there\n    /// - Returns: Supergroup and channel chats in which the current user has the right to post stories\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatsToPostStories() async throws -> Chats {\n        let query = GetChatsToPostStories()\n        return try await self.execute(query: query)\n    }\n\n    /// Checks whether the current user can post a story on behalf of a chat; requires can_post_stories administrator right for supergroup and channel chats\n    /// - Parameter chatId: Chat identifier. Pass Saved Messages chat identifier when posting a story on behalf of the current user\n    public func canPostStory(\n        chatId: Int64?,\n        completion: @escaping (Result<CanPostStoryResult, Swift.Error>) -> Void\n    ) throws {\n        let query = CanPostStory(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks whether the current user can post a story on behalf of a chat; requires can_post_stories administrator right for supergroup and channel chats\n    /// - Parameter chatId: Chat identifier. Pass Saved Messages chat identifier when posting a story on behalf of the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func canPostStory(chatId: Int64?) async throws -> CanPostStoryResult {\n        let query = CanPostStory(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Posts a new story on behalf of a chat; requires can_post_stories administrator right for supergroup and channel chats. Returns a temporary story\n    /// - Parameter activePeriod: Period after which the story is moved to archive, in seconds; must be one of 6 * 3600, 12 * 3600, 86400, or 2 * 86400 for Telegram Premium users, and 86400 otherwise\n    /// - Parameter albumIds: Identifiers of story albums to which the story will be added upon posting. An album can have up to getOption(\"story_album_size_max\") stories\n    /// - Parameter areas: Clickable rectangle areas to be shown on the story media; pass null if none\n    /// - Parameter caption: Story caption; pass null to use an empty caption; 0-getOption(\"story_caption_length_max\") characters; can have entities only if getOption(\"can_use_text_entities_in_story_caption\")\n    /// - Parameter chatId: Identifier of the chat that will post the story. Pass Saved Messages chat identifier when posting a story on behalf of the current user\n    /// - Parameter content: Content of the story\n    /// - Parameter fromStoryFullId: Full identifier of the original story, which content was used to create the story; pass null if the story isn't repost of another story\n    /// - Parameter isPostedToChatPage: Pass true to keep the story accessible after expiration\n    /// - Parameter privacySettings: The privacy settings for the story; ignored for stories posted on behalf of supergroup and channel chats\n    /// - Parameter protectContent: Pass true if the content of the story must be protected from forwarding and screenshotting\n    /// - Returns: A temporary story\n    public func postStory(\n        activePeriod: Int?,\n        albumIds: [Int]?,\n        areas: InputStoryAreas?,\n        caption: FormattedText?,\n        chatId: Int64?,\n        content: InputStoryContent?,\n        fromStoryFullId: StoryFullId?,\n        isPostedToChatPage: Bool?,\n        privacySettings: StoryPrivacySettings?,\n        protectContent: Bool?,\n        completion: @escaping (Result<Story, Swift.Error>) -> Void\n    ) throws {\n        let query = PostStory(\n            activePeriod: activePeriod,\n            albumIds: albumIds,\n            areas: areas,\n            caption: caption,\n            chatId: chatId,\n            content: content,\n            fromStoryFullId: fromStoryFullId,\n            isPostedToChatPage: isPostedToChatPage,\n            privacySettings: privacySettings,\n            protectContent: protectContent\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Posts a new story on behalf of a chat; requires can_post_stories administrator right for supergroup and channel chats. Returns a temporary story\n    /// - Parameter activePeriod: Period after which the story is moved to archive, in seconds; must be one of 6 * 3600, 12 * 3600, 86400, or 2 * 86400 for Telegram Premium users, and 86400 otherwise\n    /// - Parameter albumIds: Identifiers of story albums to which the story will be added upon posting. An album can have up to getOption(\"story_album_size_max\") stories\n    /// - Parameter areas: Clickable rectangle areas to be shown on the story media; pass null if none\n    /// - Parameter caption: Story caption; pass null to use an empty caption; 0-getOption(\"story_caption_length_max\") characters; can have entities only if getOption(\"can_use_text_entities_in_story_caption\")\n    /// - Parameter chatId: Identifier of the chat that will post the story. Pass Saved Messages chat identifier when posting a story on behalf of the current user\n    /// - Parameter content: Content of the story\n    /// - Parameter fromStoryFullId: Full identifier of the original story, which content was used to create the story; pass null if the story isn't repost of another story\n    /// - Parameter isPostedToChatPage: Pass true to keep the story accessible after expiration\n    /// - Parameter privacySettings: The privacy settings for the story; ignored for stories posted on behalf of supergroup and channel chats\n    /// - Parameter protectContent: Pass true if the content of the story must be protected from forwarding and screenshotting\n    /// - Returns: A temporary story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func postStory(\n        activePeriod: Int?,\n        albumIds: [Int]?,\n        areas: InputStoryAreas?,\n        caption: FormattedText?,\n        chatId: Int64?,\n        content: InputStoryContent?,\n        fromStoryFullId: StoryFullId?,\n        isPostedToChatPage: Bool?,\n        privacySettings: StoryPrivacySettings?,\n        protectContent: Bool?\n    ) async throws -> Story {\n        let query = PostStory(\n            activePeriod: activePeriod,\n            albumIds: albumIds,\n            areas: areas,\n            caption: caption,\n            chatId: chatId,\n            content: content,\n            fromStoryFullId: fromStoryFullId,\n            isPostedToChatPage: isPostedToChatPage,\n            privacySettings: privacySettings,\n            protectContent: protectContent\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Starts a new live story on behalf of a chat; requires can_post_stories administrator right for channel chats\n    /// - Parameter chatId: Identifier of the chat that will start the live story. Pass Saved Messages chat identifier when starting a live story on behalf of the current user, or a channel chat identifier\n    /// - Parameter enableMessages: Pass true to allow viewers of the story to send messages\n    /// - Parameter isRtmpStream: Pass true to create an RTMP stream instead of an ordinary group call\n    /// - Parameter paidMessageStarCount: The minimum number of Telegram Stars that must be paid by viewers for each sent message to the call; 0-getOption(\"paid_group_call_message_star_count_max\")\n    /// - Parameter privacySettings: The privacy settings for the story; ignored for stories posted on behalf of channel chats\n    /// - Parameter protectContent: Pass true if the content of the story must be protected from screenshotting\n    public func startLiveStory(\n        chatId: Int64?,\n        enableMessages: Bool?,\n        isRtmpStream: Bool?,\n        paidMessageStarCount: Int64?,\n        privacySettings: StoryPrivacySettings?,\n        protectContent: Bool?,\n        completion: @escaping (Result<StartLiveStoryResult, Swift.Error>) -> Void\n    ) throws {\n        let query = StartLiveStory(\n            chatId: chatId,\n            enableMessages: enableMessages,\n            isRtmpStream: isRtmpStream,\n            paidMessageStarCount: paidMessageStarCount,\n            privacySettings: privacySettings,\n            protectContent: protectContent\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Starts a new live story on behalf of a chat; requires can_post_stories administrator right for channel chats\n    /// - Parameter chatId: Identifier of the chat that will start the live story. Pass Saved Messages chat identifier when starting a live story on behalf of the current user, or a channel chat identifier\n    /// - Parameter enableMessages: Pass true to allow viewers of the story to send messages\n    /// - Parameter isRtmpStream: Pass true to create an RTMP stream instead of an ordinary group call\n    /// - Parameter paidMessageStarCount: The minimum number of Telegram Stars that must be paid by viewers for each sent message to the call; 0-getOption(\"paid_group_call_message_star_count_max\")\n    /// - Parameter privacySettings: The privacy settings for the story; ignored for stories posted on behalf of channel chats\n    /// - Parameter protectContent: Pass true if the content of the story must be protected from screenshotting\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func startLiveStory(\n        chatId: Int64?,\n        enableMessages: Bool?,\n        isRtmpStream: Bool?,\n        paidMessageStarCount: Int64?,\n        privacySettings: StoryPrivacySettings?,\n        protectContent: Bool?\n    ) async throws -> StartLiveStoryResult {\n        let query = StartLiveStory(\n            chatId: chatId,\n            enableMessages: enableMessages,\n            isRtmpStream: isRtmpStream,\n            paidMessageStarCount: paidMessageStarCount,\n            privacySettings: privacySettings,\n            protectContent: protectContent\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes content and caption of a story. Can be called only if story.can_be_edited == true\n    /// - Parameter areas: New clickable rectangle areas to be shown on the story media; pass null to keep the current areas. Areas can't be edited if story content isn't changed\n    /// - Parameter caption: New story caption; pass null to keep the current caption\n    /// - Parameter content: New content of the story; pass null to keep the current content\n    /// - Parameter storyId: Identifier of the story to edit\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    public func editStory(\n        areas: InputStoryAreas?,\n        caption: FormattedText?,\n        content: InputStoryContent?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditStory(\n            areas: areas,\n            caption: caption,\n            content: content,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes content and caption of a story. Can be called only if story.can_be_edited == true\n    /// - Parameter areas: New clickable rectangle areas to be shown on the story media; pass null to keep the current areas. Areas can't be edited if story content isn't changed\n    /// - Parameter caption: New story caption; pass null to keep the current caption\n    /// - Parameter content: New content of the story; pass null to keep the current content\n    /// - Parameter storyId: Identifier of the story to edit\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func editStory(\n        areas: InputStoryAreas?,\n        caption: FormattedText?,\n        content: InputStoryContent?,\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) async throws -> Ok {\n        let query = EditStory(\n            areas: areas,\n            caption: caption,\n            content: content,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes cover of a video story. Can be called only if story.can_be_edited == true and the story isn't being edited now\n    /// - Parameter coverFrameTimestamp: New timestamp of the frame, which will be used as video thumbnail\n    /// - Parameter storyId: Identifier of the story to edit\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    public func editStoryCover(\n        coverFrameTimestamp: Double?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditStoryCover(\n            coverFrameTimestamp: coverFrameTimestamp,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes cover of a video story. Can be called only if story.can_be_edited == true and the story isn't being edited now\n    /// - Parameter coverFrameTimestamp: New timestamp of the frame, which will be used as video thumbnail\n    /// - Parameter storyId: Identifier of the story to edit\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func editStoryCover(\n        coverFrameTimestamp: Double?,\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) async throws -> Ok {\n        let query = EditStoryCover(\n            coverFrameTimestamp: coverFrameTimestamp,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes privacy settings of a story. The method can be called only for stories posted on behalf of the current user and if story.can_set_privacy_settings == true\n    /// - Parameter privacySettings: The new privacy settings for the story\n    /// - Parameter storyId: Identifier of the story\n    public func setStoryPrivacySettings(\n        privacySettings: StoryPrivacySettings?,\n        storyId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetStoryPrivacySettings(\n            privacySettings: privacySettings,\n            storyId: storyId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes privacy settings of a story. The method can be called only for stories posted on behalf of the current user and if story.can_set_privacy_settings == true\n    /// - Parameter privacySettings: The new privacy settings for the story\n    /// - Parameter storyId: Identifier of the story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setStoryPrivacySettings(\n        privacySettings: StoryPrivacySettings?,\n        storyId: Int?\n    ) async throws -> Ok {\n        let query = SetStoryPrivacySettings(\n            privacySettings: privacySettings,\n            storyId: storyId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether a story is accessible after expiration. Can be called only if story.can_toggle_is_posted_to_chat_page == true\n    /// - Parameter isPostedToChatPage: Pass true to make the story accessible after expiration; pass false to make it private\n    /// - Parameter storyId: Identifier of the story\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    public func toggleStoryIsPostedToChatPage(\n        isPostedToChatPage: Bool?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleStoryIsPostedToChatPage(\n            isPostedToChatPage: isPostedToChatPage,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether a story is accessible after expiration. Can be called only if story.can_toggle_is_posted_to_chat_page == true\n    /// - Parameter isPostedToChatPage: Pass true to make the story accessible after expiration; pass false to make it private\n    /// - Parameter storyId: Identifier of the story\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleStoryIsPostedToChatPage(\n        isPostedToChatPage: Bool?,\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleStoryIsPostedToChatPage(\n            isPostedToChatPage: isPostedToChatPage,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes a previously posted story. Can be called only if story.can_be_deleted == true\n    /// - Parameter storyId: Identifier of the story to delete\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    public func deleteStory(\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteStory(\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes a previously posted story. Can be called only if story.can_be_deleted == true\n    /// - Parameter storyId: Identifier of the story to delete\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteStory(\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) async throws -> Ok {\n        let query = DeleteStory(\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of chats with non-default notification settings for stories\n    /// - Returns: The list of chats with non-default notification settings for stories\n    public func getStoryNotificationSettingsExceptions(completion: @escaping (Result<Chats, Swift.Error>) -> Void) throws {\n        let query = GetStoryNotificationSettingsExceptions()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of chats with non-default notification settings for stories\n    /// - Returns: The list of chats with non-default notification settings for stories\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStoryNotificationSettingsExceptions() async throws -> Chats {\n        let query = GetStoryNotificationSettingsExceptions()\n        return try await self.execute(query: query)\n    }\n\n    /// Loads more active stories from a story list. The loaded stories will be sent through updates. Active stories are sorted by the pair (active_stories.order, active_stories.story_poster_chat_id) in descending order. Returns a 404 error if all active stories have been loaded\n    /// - Parameter storyList: The story list in which to load active stories\n    /// - Returns: A 404 error if all active stories have been loaded\n    public func loadActiveStories(\n        storyList: StoryList?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = LoadActiveStories(\n            storyList: storyList\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Loads more active stories from a story list. The loaded stories will be sent through updates. Active stories are sorted by the pair (active_stories.order, active_stories.story_poster_chat_id) in descending order. Returns a 404 error if all active stories have been loaded\n    /// - Parameter storyList: The story list in which to load active stories\n    /// - Returns: A 404 error if all active stories have been loaded\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func loadActiveStories(storyList: StoryList?) async throws -> Ok {\n        let query = LoadActiveStories(\n            storyList: storyList\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes story list in which stories from the chat are shown\n    /// - Parameter chatId: Identifier of the chat that posted stories\n    /// - Parameter storyList: New list for active stories posted by the chat\n    public func setChatActiveStoriesList(\n        chatId: Int64?,\n        storyList: StoryList?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatActiveStoriesList(\n            chatId: chatId,\n            storyList: storyList\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes story list in which stories from the chat are shown\n    /// - Parameter chatId: Identifier of the chat that posted stories\n    /// - Parameter storyList: New list for active stories posted by the chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatActiveStoriesList(\n        chatId: Int64?,\n        storyList: StoryList?\n    ) async throws -> Ok {\n        let query = SetChatActiveStoriesList(\n            chatId: chatId,\n            storyList: storyList\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of active stories posted by the given chat\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of active stories posted by the given chat\n    public func getChatActiveStories(\n        chatId: Int64?,\n        completion: @escaping (Result<ChatActiveStories, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatActiveStories(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of active stories posted by the given chat\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of active stories posted by the given chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatActiveStories(chatId: Int64?) async throws -> ChatActiveStories {\n        let query = GetChatActiveStories(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of stories that posted by the given chat to its chat page. If from_story_id == 0, then pinned stories are returned first. Then, stories are returned in reverse chronological order (i.e., in order of decreasing story_id). For optimal performance, the number of returned stories is chosen by TDLib\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter fromStoryId: Identifier of the story starting from which stories must be returned; use 0 to get results from pinned and the newest story\n    /// - Parameter limit: The maximum number of stories to be returned. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Returns: The list of stories that posted by the given chat to its chat page. If from_story_id == 0, then pinned stories are returned first. Then, stories are returned in reverse chronological order (i.e., in order of decreasing story_id). For optimal performance, the number of returned stories is chosen by TDLib\n    public func getChatPostedToChatPageStories(\n        chatId: Int64?,\n        fromStoryId: Int?,\n        limit: Int?,\n        completion: @escaping (Result<Stories, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatPostedToChatPageStories(\n            chatId: chatId,\n            fromStoryId: fromStoryId,\n            limit: limit\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of stories that posted by the given chat to its chat page. If from_story_id == 0, then pinned stories are returned first. Then, stories are returned in reverse chronological order (i.e., in order of decreasing story_id). For optimal performance, the number of returned stories is chosen by TDLib\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter fromStoryId: Identifier of the story starting from which stories must be returned; use 0 to get results from pinned and the newest story\n    /// - Parameter limit: The maximum number of stories to be returned. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Returns: The list of stories that posted by the given chat to its chat page. If from_story_id == 0, then pinned stories are returned first. Then, stories are returned in reverse chronological order (i.e., in order of decreasing story_id). For optimal performance, the number of returned stories is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatPostedToChatPageStories(\n        chatId: Int64?,\n        fromStoryId: Int?,\n        limit: Int?\n    ) async throws -> Stories {\n        let query = GetChatPostedToChatPageStories(\n            chatId: chatId,\n            fromStoryId: fromStoryId,\n            limit: limit\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of all stories posted by the given chat; requires can_edit_stories administrator right in the chat. The stories are returned in reverse chronological order (i.e., in order of decreasing story_id). For optimal performance, the number of returned stories is chosen by TDLib\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter fromStoryId: Identifier of the story starting from which stories must be returned; use 0 to get results from the last story\n    /// - Parameter limit: The maximum number of stories to be returned. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Returns: The list of all stories posted by the given chat. The stories are returned in reverse chronological order (i.e., in order of decreasing story_id). For optimal performance, the number of returned stories is chosen by TDLib\n    public func getChatArchivedStories(\n        chatId: Int64?,\n        fromStoryId: Int?,\n        limit: Int?,\n        completion: @escaping (Result<Stories, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatArchivedStories(\n            chatId: chatId,\n            fromStoryId: fromStoryId,\n            limit: limit\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of all stories posted by the given chat; requires can_edit_stories administrator right in the chat. The stories are returned in reverse chronological order (i.e., in order of decreasing story_id). For optimal performance, the number of returned stories is chosen by TDLib\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter fromStoryId: Identifier of the story starting from which stories must be returned; use 0 to get results from the last story\n    /// - Parameter limit: The maximum number of stories to be returned. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Returns: The list of all stories posted by the given chat. The stories are returned in reverse chronological order (i.e., in order of decreasing story_id). For optimal performance, the number of returned stories is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatArchivedStories(\n        chatId: Int64?,\n        fromStoryId: Int?,\n        limit: Int?\n    ) async throws -> Stories {\n        let query = GetChatArchivedStories(\n            chatId: chatId,\n            fromStoryId: fromStoryId,\n            limit: limit\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the list of pinned stories on a chat page; requires can_edit_stories administrator right in the chat\n    /// - Parameter chatId: Identifier of the chat that posted the stories\n    /// - Parameter storyIds: New list of pinned stories. All stories must be posted to the chat page first. There can be up to getOption(\"pinned_story_count_max\") pinned stories on a chat page\n    public func setChatPinnedStories(\n        chatId: Int64?,\n        storyIds: [Int]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatPinnedStories(\n            chatId: chatId,\n            storyIds: storyIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the list of pinned stories on a chat page; requires can_edit_stories administrator right in the chat\n    /// - Parameter chatId: Identifier of the chat that posted the stories\n    /// - Parameter storyIds: New list of pinned stories. All stories must be posted to the chat page first. There can be up to getOption(\"pinned_story_count_max\") pinned stories on a chat page\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatPinnedStories(\n        chatId: Int64?,\n        storyIds: [Int]?\n    ) async throws -> Ok {\n        let query = SetChatPinnedStories(\n            chatId: chatId,\n            storyIds: storyIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that a story is opened and is being viewed by the user\n    /// - Parameter storyId: The identifier of the story\n    /// - Parameter storyPosterChatId: The identifier of the chat that posted the opened story\n    public func openStory(\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = OpenStory(\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that a story is opened and is being viewed by the user\n    /// - Parameter storyId: The identifier of the story\n    /// - Parameter storyPosterChatId: The identifier of the chat that posted the opened story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func openStory(\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) async throws -> Ok {\n        let query = OpenStory(\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that a story is closed by the user\n    /// - Parameter storyId: The identifier of the story\n    /// - Parameter storyPosterChatId: The identifier of the poster of the story to close\n    public func closeStory(\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CloseStory(\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that a story is closed by the user\n    /// - Parameter storyId: The identifier of the story\n    /// - Parameter storyPosterChatId: The identifier of the poster of the story to close\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func closeStory(\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) async throws -> Ok {\n        let query = CloseStory(\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns reactions, which can be chosen for a story\n    /// - Parameter rowSize: Number of reaction per row, 5-25\n    /// - Returns: Reactions, which can be chosen for a story\n    public func getStoryAvailableReactions(\n        rowSize: Int?,\n        completion: @escaping (Result<AvailableReactions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStoryAvailableReactions(\n            rowSize: rowSize\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns reactions, which can be chosen for a story\n    /// - Parameter rowSize: Number of reaction per row, 5-25\n    /// - Returns: Reactions, which can be chosen for a story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStoryAvailableReactions(rowSize: Int?) async throws -> AvailableReactions {\n        let query = GetStoryAvailableReactions(\n            rowSize: rowSize\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes chosen reaction on a story that has already been sent; not supported for live stories\n    /// - Parameter reactionType: Type of the reaction to set; pass null to remove the reaction. Custom emoji reactions can be used only by Telegram Premium users. Paid reactions can't be set\n    /// - Parameter storyId: The identifier of the story\n    /// - Parameter storyPosterChatId: The identifier of the poster of the story\n    /// - Parameter updateRecentReactions: Pass true if the reaction needs to be added to recent reactions\n    public func setStoryReaction(\n        reactionType: ReactionType?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        updateRecentReactions: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetStoryReaction(\n            reactionType: reactionType,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId,\n            updateRecentReactions: updateRecentReactions\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes chosen reaction on a story that has already been sent; not supported for live stories\n    /// - Parameter reactionType: Type of the reaction to set; pass null to remove the reaction. Custom emoji reactions can be used only by Telegram Premium users. Paid reactions can't be set\n    /// - Parameter storyId: The identifier of the story\n    /// - Parameter storyPosterChatId: The identifier of the poster of the story\n    /// - Parameter updateRecentReactions: Pass true if the reaction needs to be added to recent reactions\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setStoryReaction(\n        reactionType: ReactionType?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        updateRecentReactions: Bool?\n    ) async throws -> Ok {\n        let query = SetStoryReaction(\n            reactionType: reactionType,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId,\n            updateRecentReactions: updateRecentReactions\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns interactions with a story. The method can be called only for stories posted on behalf of the current user\n    /// - Parameter limit: The maximum number of story interactions to return\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter onlyContacts: Pass true to get only interactions by contacts; pass false to get all relevant interactions\n    /// - Parameter preferForwards: Pass true to get forwards and reposts first, then reactions, then other views; pass false to get interactions sorted just by interaction date\n    /// - Parameter preferWithReaction: Pass true to get interactions with reaction first; pass false to get interactions sorted just by interaction date. Ignored if prefer_forwards == true\n    /// - Parameter query: Query to search for in names, usernames and titles; may be empty to get all relevant interactions\n    /// - Parameter storyId: Story identifier\n    /// - Returns: Interactions with a story\n    public func getStoryInteractions(\n        limit: Int?,\n        offset: String?,\n        onlyContacts: Bool?,\n        preferForwards: Bool?,\n        preferWithReaction: Bool?,\n        query: String?,\n        storyId: Int?,\n        completion: @escaping (Result<StoryInteractions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStoryInteractions(\n            limit: limit,\n            offset: offset,\n            onlyContacts: onlyContacts,\n            preferForwards: preferForwards,\n            preferWithReaction: preferWithReaction,\n            query: query,\n            storyId: storyId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns interactions with a story. The method can be called only for stories posted on behalf of the current user\n    /// - Parameter limit: The maximum number of story interactions to return\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter onlyContacts: Pass true to get only interactions by contacts; pass false to get all relevant interactions\n    /// - Parameter preferForwards: Pass true to get forwards and reposts first, then reactions, then other views; pass false to get interactions sorted just by interaction date\n    /// - Parameter preferWithReaction: Pass true to get interactions with reaction first; pass false to get interactions sorted just by interaction date. Ignored if prefer_forwards == true\n    /// - Parameter query: Query to search for in names, usernames and titles; may be empty to get all relevant interactions\n    /// - Parameter storyId: Story identifier\n    /// - Returns: Interactions with a story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStoryInteractions(\n        limit: Int?,\n        offset: String?,\n        onlyContacts: Bool?,\n        preferForwards: Bool?,\n        preferWithReaction: Bool?,\n        query: String?,\n        storyId: Int?\n    ) async throws -> StoryInteractions {\n        let query = GetStoryInteractions(\n            limit: limit,\n            offset: offset,\n            onlyContacts: onlyContacts,\n            preferForwards: preferForwards,\n            preferWithReaction: preferWithReaction,\n            query: query,\n            storyId: storyId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns interactions with a story posted in a chat. Can be used only if story is posted on behalf of a chat and the user is an administrator in the chat\n    /// - Parameter limit: The maximum number of story interactions to return\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter preferForwards: Pass true to get forwards and reposts first, then reactions, then other views; pass false to get interactions sorted just by interaction date\n    /// - Parameter reactionType: Pass the default heart reaction or a suggested reaction type to receive only interactions with the specified reaction type; pass null to receive all interactions; reactionTypePaid isn't supported\n    /// - Parameter storyId: Story identifier\n    /// - Parameter storyPosterChatId: The identifier of the poster of the story\n    /// - Returns: Interactions with a story posted in a chat\n    public func getChatStoryInteractions(\n        limit: Int?,\n        offset: String?,\n        preferForwards: Bool?,\n        reactionType: ReactionType?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<StoryInteractions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatStoryInteractions(\n            limit: limit,\n            offset: offset,\n            preferForwards: preferForwards,\n            reactionType: reactionType,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns interactions with a story posted in a chat. Can be used only if story is posted on behalf of a chat and the user is an administrator in the chat\n    /// - Parameter limit: The maximum number of story interactions to return\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter preferForwards: Pass true to get forwards and reposts first, then reactions, then other views; pass false to get interactions sorted just by interaction date\n    /// - Parameter reactionType: Pass the default heart reaction or a suggested reaction type to receive only interactions with the specified reaction type; pass null to receive all interactions; reactionTypePaid isn't supported\n    /// - Parameter storyId: Story identifier\n    /// - Parameter storyPosterChatId: The identifier of the poster of the story\n    /// - Returns: Interactions with a story posted in a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatStoryInteractions(\n        limit: Int?,\n        offset: String?,\n        preferForwards: Bool?,\n        reactionType: ReactionType?,\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) async throws -> StoryInteractions {\n        let query = GetChatStoryInteractions(\n            limit: limit,\n            offset: offset,\n            preferForwards: preferForwards,\n            reactionType: reactionType,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Reports a story to the Telegram moderators\n    /// - Parameter optionId: Option identifier chosen by the user; leave empty for the initial request\n    /// - Parameter storyId: The identifier of the story to report\n    /// - Parameter storyPosterChatId: The identifier of the poster of the story to report\n    /// - Parameter text: Additional report details; 0-1024 characters; leave empty for the initial request\n    public func reportStory(\n        optionId: Data?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        text: String?,\n        completion: @escaping (Result<ReportStoryResult, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportStory(\n            optionId: optionId,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId,\n            text: text\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Reports a story to the Telegram moderators\n    /// - Parameter optionId: Option identifier chosen by the user; leave empty for the initial request\n    /// - Parameter storyId: The identifier of the story to report\n    /// - Parameter storyPosterChatId: The identifier of the poster of the story to report\n    /// - Parameter text: Additional report details; 0-1024 characters; leave empty for the initial request\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func reportStory(\n        optionId: Data?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        text: String?\n    ) async throws -> ReportStoryResult {\n        let query = ReportStory(\n            optionId: optionId,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId,\n            text: text\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Activates stealth mode for stories, which hides all views of stories from the current user in the last \"story_stealth_mode_past_period\" seconds and for the next \"story_stealth_mode_future_period\" seconds; for Telegram Premium users only\n    public func activateStoryStealthMode(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ActivateStoryStealthMode()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Activates stealth mode for stories, which hides all views of stories from the current user in the last \"story_stealth_mode_past_period\" seconds and for the next \"story_stealth_mode_future_period\" seconds; for Telegram Premium users only\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func activateStoryStealthMode() async throws -> Ok {\n        let query = ActivateStoryStealthMode()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns forwards of a story as a message to public chats and reposts by public channels. Can be used only if the story is posted on behalf of the current user or story.can_get_statistics == true. For optimal performance, the number of returned messages and stories is chosen by TDLib\n    /// - Parameter limit: The maximum number of messages and stories to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter storyId: The identifier of the story\n    /// - Parameter storyPosterChatId: The identifier of the poster of the story\n    /// - Returns: Forwards of a story as a message to public chats and reposts by public channels. For optimal performance, the number of returned messages and stories is chosen by TDLib\n    public func getStoryPublicForwards(\n        limit: Int?,\n        offset: String?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<PublicForwards, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStoryPublicForwards(\n            limit: limit,\n            offset: offset,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns forwards of a story as a message to public chats and reposts by public channels. Can be used only if the story is posted on behalf of the current user or story.can_get_statistics == true. For optimal performance, the number of returned messages and stories is chosen by TDLib\n    /// - Parameter limit: The maximum number of messages and stories to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter storyId: The identifier of the story\n    /// - Parameter storyPosterChatId: The identifier of the poster of the story\n    /// - Returns: Forwards of a story as a message to public chats and reposts by public channels. For optimal performance, the number of returned messages and stories is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStoryPublicForwards(\n        limit: Int?,\n        offset: String?,\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) async throws -> PublicForwards {\n        let query = GetStoryPublicForwards(\n            limit: limit,\n            offset: offset,\n            storyId: storyId,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of story albums owned by the given chat\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of story albums owned by the given chat\n    public func getChatStoryAlbums(\n        chatId: Int64?,\n        completion: @escaping (Result<StoryAlbums, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatStoryAlbums(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of story albums owned by the given chat\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of story albums owned by the given chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatStoryAlbums(chatId: Int64?) async throws -> StoryAlbums {\n        let query = GetChatStoryAlbums(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of stories added to the given story album. For optimal performance, the number of returned stories is chosen by TDLib\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter limit: The maximum number of stories to be returned. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return; use 0 to get results from the first album story\n    /// - Parameter storyAlbumId: Story album identifier\n    /// - Returns: The list of stories added to the given story album. For optimal performance, the number of returned stories is chosen by TDLib\n    public func getStoryAlbumStories(\n        chatId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        storyAlbumId: Int?,\n        completion: @escaping (Result<Stories, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStoryAlbumStories(\n            chatId: chatId,\n            limit: limit,\n            offset: offset,\n            storyAlbumId: storyAlbumId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of stories added to the given story album. For optimal performance, the number of returned stories is chosen by TDLib\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter limit: The maximum number of stories to be returned. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return; use 0 to get results from the first album story\n    /// - Parameter storyAlbumId: Story album identifier\n    /// - Returns: The list of stories added to the given story album. For optimal performance, the number of returned stories is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStoryAlbumStories(\n        chatId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        storyAlbumId: Int?\n    ) async throws -> Stories {\n        let query = GetStoryAlbumStories(\n            chatId: chatId,\n            limit: limit,\n            offset: offset,\n            storyAlbumId: storyAlbumId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Creates an album of stories; requires can_edit_stories administrator right for supergroup and channel chats\n    /// - Parameter name: Name of the album; 1-12 characters\n    /// - Parameter storyIds: Identifiers of stories to add to the album; 0-getOption(\"story_album_size_max\") identifiers\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the stories\n    public func createStoryAlbum(\n        name: String?,\n        storyIds: [Int]?,\n        storyPosterChatId: Int64?,\n        completion: @escaping (Result<StoryAlbum, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateStoryAlbum(\n            name: name,\n            storyIds: storyIds,\n            storyPosterChatId: storyPosterChatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Creates an album of stories; requires can_edit_stories administrator right for supergroup and channel chats\n    /// - Parameter name: Name of the album; 1-12 characters\n    /// - Parameter storyIds: Identifiers of stories to add to the album; 0-getOption(\"story_album_size_max\") identifiers\n    /// - Parameter storyPosterChatId: Identifier of the chat that posted the stories\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createStoryAlbum(\n        name: String?,\n        storyIds: [Int]?,\n        storyPosterChatId: Int64?\n    ) async throws -> StoryAlbum {\n        let query = CreateStoryAlbum(\n            name: name,\n            storyIds: storyIds,\n            storyPosterChatId: storyPosterChatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes order of story albums. If the albums are owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter storyAlbumIds: New order of story albums\n    public func reorderStoryAlbums(\n        chatId: Int64?,\n        storyAlbumIds: [Int]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderStoryAlbums(\n            chatId: chatId,\n            storyAlbumIds: storyAlbumIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes order of story albums. If the albums are owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter storyAlbumIds: New order of story albums\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func reorderStoryAlbums(\n        chatId: Int64?,\n        storyAlbumIds: [Int]?\n    ) async throws -> Ok {\n        let query = ReorderStoryAlbums(\n            chatId: chatId,\n            storyAlbumIds: storyAlbumIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes a story album. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter storyAlbumId: Identifier of the story album\n    public func deleteStoryAlbum(\n        chatId: Int64?,\n        storyAlbumId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteStoryAlbum(\n            chatId: chatId,\n            storyAlbumId: storyAlbumId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes a story album. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter storyAlbumId: Identifier of the story album\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteStoryAlbum(\n        chatId: Int64?,\n        storyAlbumId: Int?\n    ) async throws -> Ok {\n        let query = DeleteStoryAlbum(\n            chatId: chatId,\n            storyAlbumId: storyAlbumId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes name of an album of stories. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat. Returns the changed album\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter name: New name of the album; 1-12 characters\n    /// - Parameter storyAlbumId: Identifier of the story album\n    /// - Returns: The changed album\n    public func setStoryAlbumName(\n        chatId: Int64?,\n        name: String?,\n        storyAlbumId: Int?,\n        completion: @escaping (Result<StoryAlbum, Swift.Error>) -> Void\n    ) throws {\n        let query = SetStoryAlbumName(\n            chatId: chatId,\n            name: name,\n            storyAlbumId: storyAlbumId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes name of an album of stories. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat. Returns the changed album\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter name: New name of the album; 1-12 characters\n    /// - Parameter storyAlbumId: Identifier of the story album\n    /// - Returns: The changed album\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func setStoryAlbumName(\n        chatId: Int64?,\n        name: String?,\n        storyAlbumId: Int?\n    ) async throws -> StoryAlbum {\n        let query = SetStoryAlbumName(\n            chatId: chatId,\n            name: name,\n            storyAlbumId: storyAlbumId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds stories to the beginning of a previously created story album. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat. Returns the changed album\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter storyAlbumId: Identifier of the story album\n    /// - Parameter storyIds: Identifier of the stories to add to the album; 1-getOption(\"story_album_size_max\") identifiers. If after addition the album has more than getOption(\"story_album_size_max\") stories, then the last one are removed from the album\n    /// - Returns: The changed album\n    public func addStoryAlbumStories(\n        chatId: Int64?,\n        storyAlbumId: Int?,\n        storyIds: [Int]?,\n        completion: @escaping (Result<StoryAlbum, Swift.Error>) -> Void\n    ) throws {\n        let query = AddStoryAlbumStories(\n            chatId: chatId,\n            storyAlbumId: storyAlbumId,\n            storyIds: storyIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds stories to the beginning of a previously created story album. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat. Returns the changed album\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter storyAlbumId: Identifier of the story album\n    /// - Parameter storyIds: Identifier of the stories to add to the album; 1-getOption(\"story_album_size_max\") identifiers. If after addition the album has more than getOption(\"story_album_size_max\") stories, then the last one are removed from the album\n    /// - Returns: The changed album\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func addStoryAlbumStories(\n        chatId: Int64?,\n        storyAlbumId: Int?,\n        storyIds: [Int]?\n    ) async throws -> StoryAlbum {\n        let query = AddStoryAlbumStories(\n            chatId: chatId,\n            storyAlbumId: storyAlbumId,\n            storyIds: storyIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes stories from an album. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat. Returns the changed album\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter storyAlbumId: Identifier of the story album\n    /// - Parameter storyIds: Identifier of the stories to remove from the album\n    /// - Returns: The changed album\n    public func removeStoryAlbumStories(\n        chatId: Int64?,\n        storyAlbumId: Int?,\n        storyIds: [Int]?,\n        completion: @escaping (Result<StoryAlbum, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveStoryAlbumStories(\n            chatId: chatId,\n            storyAlbumId: storyAlbumId,\n            storyIds: storyIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes stories from an album. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat. Returns the changed album\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter storyAlbumId: Identifier of the story album\n    /// - Parameter storyIds: Identifier of the stories to remove from the album\n    /// - Returns: The changed album\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func removeStoryAlbumStories(\n        chatId: Int64?,\n        storyAlbumId: Int?,\n        storyIds: [Int]?\n    ) async throws -> StoryAlbum {\n        let query = RemoveStoryAlbumStories(\n            chatId: chatId,\n            storyAlbumId: storyAlbumId,\n            storyIds: storyIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes order of stories in an album. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat. Returns the changed album\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter storyAlbumId: Identifier of the story album\n    /// - Parameter storyIds: Identifier of the stories to move to the beginning of the album. All other stories are placed in the current order after the specified stories\n    /// - Returns: The changed album\n    public func reorderStoryAlbumStories(\n        chatId: Int64?,\n        storyAlbumId: Int?,\n        storyIds: [Int]?,\n        completion: @escaping (Result<StoryAlbum, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderStoryAlbumStories(\n            chatId: chatId,\n            storyAlbumId: storyAlbumId,\n            storyIds: storyIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes order of stories in an album. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat. Returns the changed album\n    /// - Parameter chatId: Identifier of the chat that owns the stories\n    /// - Parameter storyAlbumId: Identifier of the story album\n    /// - Parameter storyIds: Identifier of the stories to move to the beginning of the album. All other stories are placed in the current order after the specified stories\n    /// - Returns: The changed album\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func reorderStoryAlbumStories(\n        chatId: Int64?,\n        storyAlbumId: Int?,\n        storyIds: [Int]?\n    ) async throws -> StoryAlbum {\n        let query = ReorderStoryAlbumStories(\n            chatId: chatId,\n            storyAlbumId: storyAlbumId,\n            storyIds: storyIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of features available on the specific chat boost level. This is an offline method\n    /// - Parameter isChannel: Pass true to get the list of features for channels; pass false to get the list of features for supergroups\n    /// - Parameter level: Chat boost level\n    /// - Returns: The list of features available on the specific chat boost level\n    public func getChatBoostLevelFeatures(\n        isChannel: Bool?,\n        level: Int?,\n        completion: @escaping (Result<ChatBoostLevelFeatures, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatBoostLevelFeatures(\n            isChannel: isChannel,\n            level: level\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of features available on the specific chat boost level. This is an offline method\n    /// - Parameter isChannel: Pass true to get the list of features for channels; pass false to get the list of features for supergroups\n    /// - Parameter level: Chat boost level\n    /// - Returns: The list of features available on the specific chat boost level\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatBoostLevelFeatures(\n        isChannel: Bool?,\n        level: Int?\n    ) async throws -> ChatBoostLevelFeatures {\n        let query = GetChatBoostLevelFeatures(\n            isChannel: isChannel,\n            level: level\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of features available for different chat boost levels. This is an offline method\n    /// - Parameter isChannel: Pass true to get the list of features for channels; pass false to get the list of features for supergroups\n    /// - Returns: The list of features available for different chat boost levels\n    public func getChatBoostFeatures(\n        isChannel: Bool?,\n        completion: @escaping (Result<ChatBoostFeatures, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatBoostFeatures(\n            isChannel: isChannel\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of features available for different chat boost levels. This is an offline method\n    /// - Parameter isChannel: Pass true to get the list of features for channels; pass false to get the list of features for supergroups\n    /// - Returns: The list of features available for different chat boost levels\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatBoostFeatures(isChannel: Bool?) async throws -> ChatBoostFeatures {\n        let query = GetChatBoostFeatures(\n            isChannel: isChannel\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of available chat boost slots for the current user\n    /// - Returns: The list of available chat boost slots for the current user\n    public func getAvailableChatBoostSlots(completion: @escaping (Result<ChatBoostSlots, Swift.Error>) -> Void) throws {\n        let query = GetAvailableChatBoostSlots()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of available chat boost slots for the current user\n    /// - Returns: The list of available chat boost slots for the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getAvailableChatBoostSlots() async throws -> ChatBoostSlots {\n        let query = GetAvailableChatBoostSlots()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the current boost status for a supergroup or a channel chat\n    /// - Parameter chatId: Identifier of the chat\n    /// - Returns: The current boost status for a supergroup or a channel chat\n    public func getChatBoostStatus(\n        chatId: Int64?,\n        completion: @escaping (Result<ChatBoostStatus, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatBoostStatus(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the current boost status for a supergroup or a channel chat\n    /// - Parameter chatId: Identifier of the chat\n    /// - Returns: The current boost status for a supergroup or a channel chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatBoostStatus(chatId: Int64?) async throws -> ChatBoostStatus {\n        let query = GetChatBoostStatus(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Boosts a chat and returns the list of available chat boost slots for the current user after the boost\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter slotIds: Identifiers of boost slots of the current user from which to apply boosts to the chat\n    /// - Returns: Boosts a chat and returns the list of available chat boost slots for the current user after the boost\n    public func boostChat(\n        chatId: Int64?,\n        slotIds: [Int]?,\n        completion: @escaping (Result<ChatBoostSlots, Swift.Error>) -> Void\n    ) throws {\n        let query = BoostChat(\n            chatId: chatId,\n            slotIds: slotIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Boosts a chat and returns the list of available chat boost slots for the current user after the boost\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter slotIds: Identifiers of boost slots of the current user from which to apply boosts to the chat\n    /// - Returns: Boosts a chat and returns the list of available chat boost slots for the current user after the boost\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func boostChat(\n        chatId: Int64?,\n        slotIds: [Int]?\n    ) async throws -> ChatBoostSlots {\n        let query = BoostChat(\n            chatId: chatId,\n            slotIds: slotIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an HTTPS link to boost the specified supergroup or channel chat\n    /// - Parameter chatId: Identifier of the chat\n    /// - Returns: An HTTPS link to boost the specified supergroup or channel chat\n    public func getChatBoostLink(\n        chatId: Int64?,\n        completion: @escaping (Result<ChatBoostLink, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatBoostLink(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an HTTPS link to boost the specified supergroup or channel chat\n    /// - Parameter chatId: Identifier of the chat\n    /// - Returns: An HTTPS link to boost the specified supergroup or channel chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatBoostLink(chatId: Int64?) async throws -> ChatBoostLink {\n        let query = GetChatBoostLink(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a link to boost a chat. Can be called for any internal link of the type internalLinkTypeChatBoost\n    /// - Parameter url: The link to boost a chat\n    /// - Returns: Information about a link to boost a chat\n    public func getChatBoostLinkInfo(\n        url: String?,\n        completion: @escaping (Result<ChatBoostLinkInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatBoostLinkInfo(\n            url: url\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a link to boost a chat. Can be called for any internal link of the type internalLinkTypeChatBoost\n    /// - Parameter url: The link to boost a chat\n    /// - Returns: Information about a link to boost a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatBoostLinkInfo(url: String?) async throws -> ChatBoostLinkInfo {\n        let query = GetChatBoostLinkInfo(\n            url: url\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of boosts applied to a chat; requires administrator rights in the chat\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter limit: The maximum number of boosts to be returned; up to 100. For optimal performance, the number of returned boosts can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter onlyGiftCodes: Pass true to receive only boosts received from gift codes and giveaways created by the chat\n    /// - Returns: The list of boosts applied to a chat\n    public func getChatBoosts(\n        chatId: Int64?,\n        limit: Int?,\n        offset: String?,\n        onlyGiftCodes: Bool?,\n        completion: @escaping (Result<FoundChatBoosts, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatBoosts(\n            chatId: chatId,\n            limit: limit,\n            offset: offset,\n            onlyGiftCodes: onlyGiftCodes\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of boosts applied to a chat; requires administrator rights in the chat\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter limit: The maximum number of boosts to be returned; up to 100. For optimal performance, the number of returned boosts can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter onlyGiftCodes: Pass true to receive only boosts received from gift codes and giveaways created by the chat\n    /// - Returns: The list of boosts applied to a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatBoosts(\n        chatId: Int64?,\n        limit: Int?,\n        offset: String?,\n        onlyGiftCodes: Bool?\n    ) async throws -> FoundChatBoosts {\n        let query = GetChatBoosts(\n            chatId: chatId,\n            limit: limit,\n            offset: offset,\n            onlyGiftCodes: onlyGiftCodes\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of boosts applied to a chat by a given user; requires administrator rights in the chat; for bots only\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter userId: Identifier of the user\n    /// - Returns: The list of boosts applied to a chat by a given user\n    public func getUserChatBoosts(\n        chatId: Int64?,\n        userId: Int64?,\n        completion: @escaping (Result<FoundChatBoosts, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUserChatBoosts(\n            chatId: chatId,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of boosts applied to a chat by a given user; requires administrator rights in the chat; for bots only\n    /// - Parameter chatId: Identifier of the chat\n    /// - Parameter userId: Identifier of the user\n    /// - Returns: The list of boosts applied to a chat by a given user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getUserChatBoosts(\n        chatId: Int64?,\n        userId: Int64?\n    ) async throws -> FoundChatBoosts {\n        let query = GetUserChatBoosts(\n            chatId: chatId,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a bot that can be added to attachment or side menu\n    /// - Parameter botUserId: Bot's user identifier\n    /// - Returns: Information about a bot that can be added to attachment or side menu\n    public func getAttachmentMenuBot(\n        botUserId: Int64?,\n        completion: @escaping (Result<AttachmentMenuBot, Swift.Error>) -> Void\n    ) throws {\n        let query = GetAttachmentMenuBot(\n            botUserId: botUserId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a bot that can be added to attachment or side menu\n    /// - Parameter botUserId: Bot's user identifier\n    /// - Returns: Information about a bot that can be added to attachment or side menu\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getAttachmentMenuBot(botUserId: Int64?) async throws -> AttachmentMenuBot {\n        let query = GetAttachmentMenuBot(\n            botUserId: botUserId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds or removes a bot to attachment and side menu. Bot can be added to the menu, only if userTypeBot.can_be_added_to_attachment_menu == true\n    /// - Parameter allowWriteAccess: Pass true if the current user allowed the bot to send them messages. Ignored if is_added is false\n    /// - Parameter botUserId: Bot's user identifier\n    /// - Parameter isAdded: Pass true to add the bot to attachment menu; pass false to remove the bot from attachment menu\n    public func toggleBotIsAddedToAttachmentMenu(\n        allowWriteAccess: Bool?,\n        botUserId: Int64?,\n        isAdded: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleBotIsAddedToAttachmentMenu(\n            allowWriteAccess: allowWriteAccess,\n            botUserId: botUserId,\n            isAdded: isAdded\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds or removes a bot to attachment and side menu. Bot can be added to the menu, only if userTypeBot.can_be_added_to_attachment_menu == true\n    /// - Parameter allowWriteAccess: Pass true if the current user allowed the bot to send them messages. Ignored if is_added is false\n    /// - Parameter botUserId: Bot's user identifier\n    /// - Parameter isAdded: Pass true to add the bot to attachment menu; pass false to remove the bot from attachment menu\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleBotIsAddedToAttachmentMenu(\n        allowWriteAccess: Bool?,\n        botUserId: Int64?,\n        isAdded: Bool?\n    ) async throws -> Ok {\n        let query = ToggleBotIsAddedToAttachmentMenu(\n            allowWriteAccess: allowWriteAccess,\n            botUserId: botUserId,\n            isAdded: isAdded\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns up to 8 emoji statuses, which must be shown right after the default Premium Badge in the emoji status list for self status\n    /// - Returns: Up to 8 emoji statuses, which must be shown right after the default Premium Badge in the emoji status list for self status\n    public func getThemedEmojiStatuses(completion: @escaping (Result<EmojiStatusCustomEmojis, Swift.Error>) -> Void) throws {\n        let query = GetThemedEmojiStatuses()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns up to 8 emoji statuses, which must be shown right after the default Premium Badge in the emoji status list for self status\n    /// - Returns: Up to 8 emoji statuses, which must be shown right after the default Premium Badge in the emoji status list for self status\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getThemedEmojiStatuses() async throws -> EmojiStatusCustomEmojis {\n        let query = GetThemedEmojiStatuses()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns recent emoji statuses for self status\n    /// - Returns: Recent emoji statuses for self status\n    public func getRecentEmojiStatuses(completion: @escaping (Result<EmojiStatuses, Swift.Error>) -> Void) throws {\n        let query = GetRecentEmojiStatuses()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns recent emoji statuses for self status\n    /// - Returns: Recent emoji statuses for self status\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getRecentEmojiStatuses() async throws -> EmojiStatuses {\n        let query = GetRecentEmojiStatuses()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns available upgraded gift emoji statuses for self status\n    /// - Returns: Available upgraded gift emoji statuses for self status\n    public func getUpgradedGiftEmojiStatuses(completion: @escaping (Result<EmojiStatuses, Swift.Error>) -> Void) throws {\n        let query = GetUpgradedGiftEmojiStatuses()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns available upgraded gift emoji statuses for self status\n    /// - Returns: Available upgraded gift emoji statuses for self status\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getUpgradedGiftEmojiStatuses() async throws -> EmojiStatuses {\n        let query = GetUpgradedGiftEmojiStatuses()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns default emoji statuses for self status\n    /// - Returns: Default emoji statuses for self status\n    public func getDefaultEmojiStatuses(completion: @escaping (Result<EmojiStatusCustomEmojis, Swift.Error>) -> Void) throws {\n        let query = GetDefaultEmojiStatuses()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns default emoji statuses for self status\n    /// - Returns: Default emoji statuses for self status\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getDefaultEmojiStatuses() async throws -> EmojiStatusCustomEmojis {\n        let query = GetDefaultEmojiStatuses()\n        return try await self.execute(query: query)\n    }\n\n    /// Clears the list of recently used emoji statuses for self status\n    public func clearRecentEmojiStatuses(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ClearRecentEmojiStatuses()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Clears the list of recently used emoji statuses for self status\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func clearRecentEmojiStatuses() async throws -> Ok {\n        let query = ClearRecentEmojiStatuses()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns up to 8 emoji statuses, which must be shown in the emoji status list for chats\n    /// - Returns: Up to 8 emoji statuses, which must be shown in the emoji status list for chats\n    public func getThemedChatEmojiStatuses(completion: @escaping (Result<EmojiStatusCustomEmojis, Swift.Error>) -> Void) throws {\n        let query = GetThemedChatEmojiStatuses()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns up to 8 emoji statuses, which must be shown in the emoji status list for chats\n    /// - Returns: Up to 8 emoji statuses, which must be shown in the emoji status list for chats\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getThemedChatEmojiStatuses() async throws -> EmojiStatusCustomEmojis {\n        let query = GetThemedChatEmojiStatuses()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns default emoji statuses for chats\n    /// - Returns: Default emoji statuses for chats\n    public func getDefaultChatEmojiStatuses(completion: @escaping (Result<EmojiStatusCustomEmojis, Swift.Error>) -> Void) throws {\n        let query = GetDefaultChatEmojiStatuses()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns default emoji statuses for chats\n    /// - Returns: Default emoji statuses for chats\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getDefaultChatEmojiStatuses() async throws -> EmojiStatusCustomEmojis {\n        let query = GetDefaultChatEmojiStatuses()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of emoji statuses, which can't be used as chat emoji status, even if they are from a sticker set with is_allowed_as_chat_emoji_status == true\n    /// - Returns: The list of emoji statuses, which can't be used as chat emoji status, even if they are from a sticker set with is_allowed_as_chat_emoji_status == true\n    public func getDisallowedChatEmojiStatuses(completion: @escaping (Result<EmojiStatusCustomEmojis, Swift.Error>) -> Void) throws {\n        let query = GetDisallowedChatEmojiStatuses()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of emoji statuses, which can't be used as chat emoji status, even if they are from a sticker set with is_allowed_as_chat_emoji_status == true\n    /// - Returns: The list of emoji statuses, which can't be used as chat emoji status, even if they are from a sticker set with is_allowed_as_chat_emoji_status == true\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getDisallowedChatEmojiStatuses() async throws -> EmojiStatusCustomEmojis {\n        let query = GetDisallowedChatEmojiStatuses()\n        return try await self.execute(query: query)\n    }\n\n    /// Downloads a file from the cloud. Download progress and completion of the download will be notified through updateFile updates\n    /// - Parameter fileId: Identifier of the file to download\n    /// - Parameter limit: Number of bytes which need to be downloaded starting from the \"offset\" position before the download will automatically be canceled; use 0 to download without a limit\n    /// - Parameter offset: The starting position from which the file needs to be downloaded\n    /// - Parameter priority: Priority of the download (1-32). The higher the priority, the earlier the file will be downloaded. If the priorities of two files are equal, then the last one for which downloadFile/addFileToDownloads was called will be downloaded first\n    /// - Parameter synchronous: Pass true to return response only after the file download has succeeded, has failed, has been canceled, or a new downloadFile request with different offset/limit parameters was sent; pass false to return file state immediately, just after the download has been started\n    public func downloadFile(\n        fileId: Int?,\n        limit: Int64?,\n        offset: Int64?,\n        priority: Int?,\n        synchronous: Bool?,\n        completion: @escaping (Result<File, Swift.Error>) -> Void\n    ) throws {\n        let query = DownloadFile(\n            fileId: fileId,\n            limit: limit,\n            offset: offset,\n            priority: priority,\n            synchronous: synchronous\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Downloads a file from the cloud. Download progress and completion of the download will be notified through updateFile updates\n    /// - Parameter fileId: Identifier of the file to download\n    /// - Parameter limit: Number of bytes which need to be downloaded starting from the \"offset\" position before the download will automatically be canceled; use 0 to download without a limit\n    /// - Parameter offset: The starting position from which the file needs to be downloaded\n    /// - Parameter priority: Priority of the download (1-32). The higher the priority, the earlier the file will be downloaded. If the priorities of two files are equal, then the last one for which downloadFile/addFileToDownloads was called will be downloaded first\n    /// - Parameter synchronous: Pass true to return response only after the file download has succeeded, has failed, has been canceled, or a new downloadFile request with different offset/limit parameters was sent; pass false to return file state immediately, just after the download has been started\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func downloadFile(\n        fileId: Int?,\n        limit: Int64?,\n        offset: Int64?,\n        priority: Int?,\n        synchronous: Bool?\n    ) async throws -> File {\n        let query = DownloadFile(\n            fileId: fileId,\n            limit: limit,\n            offset: offset,\n            priority: priority,\n            synchronous: synchronous\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns file downloaded prefix size from a given offset, in bytes\n    /// - Parameter fileId: Identifier of the file\n    /// - Parameter offset: Offset from which downloaded prefix size needs to be calculated\n    /// - Returns: File downloaded prefix size from a given offset, in bytes\n    public func getFileDownloadedPrefixSize(\n        fileId: Int?,\n        offset: Int64?,\n        completion: @escaping (Result<FileDownloadedPrefixSize, Swift.Error>) -> Void\n    ) throws {\n        let query = GetFileDownloadedPrefixSize(\n            fileId: fileId,\n            offset: offset\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns file downloaded prefix size from a given offset, in bytes\n    /// - Parameter fileId: Identifier of the file\n    /// - Parameter offset: Offset from which downloaded prefix size needs to be calculated\n    /// - Returns: File downloaded prefix size from a given offset, in bytes\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getFileDownloadedPrefixSize(\n        fileId: Int?,\n        offset: Int64?\n    ) async throws -> FileDownloadedPrefixSize {\n        let query = GetFileDownloadedPrefixSize(\n            fileId: fileId,\n            offset: offset\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Stops the downloading of a file. If a file has already been downloaded, does nothing\n    /// - Parameter fileId: Identifier of a file to stop downloading\n    /// - Parameter onlyIfPending: Pass true to stop downloading only if it hasn't been started, i.e. request hasn't been sent to server\n    public func cancelDownloadFile(\n        fileId: Int?,\n        onlyIfPending: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CancelDownloadFile(\n            fileId: fileId,\n            onlyIfPending: onlyIfPending\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Stops the downloading of a file. If a file has already been downloaded, does nothing\n    /// - Parameter fileId: Identifier of a file to stop downloading\n    /// - Parameter onlyIfPending: Pass true to stop downloading only if it hasn't been started, i.e. request hasn't been sent to server\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func cancelDownloadFile(\n        fileId: Int?,\n        onlyIfPending: Bool?\n    ) async throws -> Ok {\n        let query = CancelDownloadFile(\n            fileId: fileId,\n            onlyIfPending: onlyIfPending\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns suggested name for saving a file in a given directory\n    /// - Parameter directory: Directory in which the file is expected to be saved\n    /// - Parameter fileId: Identifier of the file\n    /// - Returns: Suggested name for saving a file in a given directory\n    public func getSuggestedFileName(\n        directory: String?,\n        fileId: Int?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSuggestedFileName(\n            directory: directory,\n            fileId: fileId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns suggested name for saving a file in a given directory\n    /// - Parameter directory: Directory in which the file is expected to be saved\n    /// - Parameter fileId: Identifier of the file\n    /// - Returns: Suggested name for saving a file in a given directory\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getSuggestedFileName(\n        directory: String?,\n        fileId: Int?\n    ) async throws -> Text {\n        let query = GetSuggestedFileName(\n            directory: directory,\n            fileId: fileId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Preliminarily uploads a file to the cloud before sending it in a message, which can be useful for uploading of being recorded voice and video notes. In all other cases there is no need to preliminary upload a file. Updates updateFile will be used to notify about upload progress. The upload will not be completed until the file is sent in a message\n    /// - Parameter file: File to upload\n    /// - Parameter fileType: File type; pass null if unknown\n    /// - Parameter priority: Priority of the upload (1-32). The higher the priority, the earlier the file will be uploaded. If the priorities of two files are equal, then the first one for which preliminaryUploadFile was called will be uploaded first\n    public func preliminaryUploadFile(\n        file: InputFile?,\n        fileType: FileType?,\n        priority: Int?,\n        completion: @escaping (Result<File, Swift.Error>) -> Void\n    ) throws {\n        let query = PreliminaryUploadFile(\n            file: file,\n            fileType: fileType,\n            priority: priority\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Preliminarily uploads a file to the cloud before sending it in a message, which can be useful for uploading of being recorded voice and video notes. In all other cases there is no need to preliminary upload a file. Updates updateFile will be used to notify about upload progress. The upload will not be completed until the file is sent in a message\n    /// - Parameter file: File to upload\n    /// - Parameter fileType: File type; pass null if unknown\n    /// - Parameter priority: Priority of the upload (1-32). The higher the priority, the earlier the file will be uploaded. If the priorities of two files are equal, then the first one for which preliminaryUploadFile was called will be uploaded first\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func preliminaryUploadFile(\n        file: InputFile?,\n        fileType: FileType?,\n        priority: Int?\n    ) async throws -> File {\n        let query = PreliminaryUploadFile(\n            file: file,\n            fileType: fileType,\n            priority: priority\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Stops the preliminary uploading of a file. Supported only for files uploaded by using preliminaryUploadFile\n    /// - Parameter fileId: Identifier of the file to stop uploading\n    public func cancelPreliminaryUploadFile(\n        fileId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CancelPreliminaryUploadFile(\n            fileId: fileId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Stops the preliminary uploading of a file. Supported only for files uploaded by using preliminaryUploadFile\n    /// - Parameter fileId: Identifier of the file to stop uploading\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func cancelPreliminaryUploadFile(fileId: Int?) async throws -> Ok {\n        let query = CancelPreliminaryUploadFile(\n            fileId: fileId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Writes a part of a generated file. This method is intended to be used only if the application has no direct access to TDLib's file system, because it is usually slower than a direct write to the destination file\n    /// - Parameter data: The data to write\n    /// - Parameter generationId: The identifier of the generation process\n    /// - Parameter offset: The offset from which to write the data to the file\n    public func writeGeneratedFilePart(\n        data: Data?,\n        generationId: TdInt64?,\n        offset: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = WriteGeneratedFilePart(\n            data: data,\n            generationId: generationId,\n            offset: offset\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Writes a part of a generated file. This method is intended to be used only if the application has no direct access to TDLib's file system, because it is usually slower than a direct write to the destination file\n    /// - Parameter data: The data to write\n    /// - Parameter generationId: The identifier of the generation process\n    /// - Parameter offset: The offset from which to write the data to the file\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func writeGeneratedFilePart(\n        data: Data?,\n        generationId: TdInt64?,\n        offset: Int64?\n    ) async throws -> Ok {\n        let query = WriteGeneratedFilePart(\n            data: data,\n            generationId: generationId,\n            offset: offset\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib on a file generation progress\n    /// - Parameter expectedSize: Expected size of the generated file, in bytes; 0 if unknown\n    /// - Parameter generationId: The identifier of the generation process\n    /// - Parameter localPrefixSize: The number of bytes already generated\n    public func setFileGenerationProgress(\n        expectedSize: Int64?,\n        generationId: TdInt64?,\n        localPrefixSize: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetFileGenerationProgress(\n            expectedSize: expectedSize,\n            generationId: generationId,\n            localPrefixSize: localPrefixSize\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib on a file generation progress\n    /// - Parameter expectedSize: Expected size of the generated file, in bytes; 0 if unknown\n    /// - Parameter generationId: The identifier of the generation process\n    /// - Parameter localPrefixSize: The number of bytes already generated\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setFileGenerationProgress(\n        expectedSize: Int64?,\n        generationId: TdInt64?,\n        localPrefixSize: Int64?\n    ) async throws -> Ok {\n        let query = SetFileGenerationProgress(\n            expectedSize: expectedSize,\n            generationId: generationId,\n            localPrefixSize: localPrefixSize\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Finishes the file generation\n    /// - Parameter error: If passed, the file generation has failed and must be terminated; pass null if the file generation succeeded\n    /// - Parameter generationId: The identifier of the generation process\n    public func finishFileGeneration(\n        error: Error?,\n        generationId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = FinishFileGeneration(\n            error: error,\n            generationId: generationId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Finishes the file generation\n    /// - Parameter error: If passed, the file generation has failed and must be terminated; pass null if the file generation succeeded\n    /// - Parameter generationId: The identifier of the generation process\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func finishFileGeneration(\n        error: Error?,\n        generationId: TdInt64?\n    ) async throws -> Ok {\n        let query = FinishFileGeneration(\n            error: error,\n            generationId: generationId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Reads a part of a file from the TDLib file cache and returns read bytes. This method is intended to be used only if the application has no direct access to TDLib's file system, because it is usually slower than a direct read from the file\n    /// - Parameter count: Number of bytes to read. An error will be returned if there are not enough bytes available in the file from the specified position. Pass 0 to read all available data from the specified position\n    /// - Parameter fileId: Identifier of the file. The file must be located in the TDLib file cache\n    /// - Parameter offset: The offset from which to read the file\n    /// - Returns: Reads a part of a file from the TDLib file cache and returns read bytes\n    public func readFilePart(\n        count: Int64?,\n        fileId: Int?,\n        offset: Int64?,\n        completion: @escaping (Result<TdData, Swift.Error>) -> Void\n    ) throws {\n        let query = ReadFilePart(\n            count: count,\n            fileId: fileId,\n            offset: offset\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Reads a part of a file from the TDLib file cache and returns read bytes. This method is intended to be used only if the application has no direct access to TDLib's file system, because it is usually slower than a direct read from the file\n    /// - Parameter count: Number of bytes to read. An error will be returned if there are not enough bytes available in the file from the specified position. Pass 0 to read all available data from the specified position\n    /// - Parameter fileId: Identifier of the file. The file must be located in the TDLib file cache\n    /// - Parameter offset: The offset from which to read the file\n    /// - Returns: Reads a part of a file from the TDLib file cache and returns read bytes\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func readFilePart(\n        count: Int64?,\n        fileId: Int?,\n        offset: Int64?\n    ) async throws -> TdData {\n        let query = ReadFilePart(\n            count: count,\n            fileId: fileId,\n            offset: offset\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes a file from the TDLib file cache\n    /// - Parameter fileId: Identifier of the file to delete\n    public func deleteFile(\n        fileId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteFile(\n            fileId: fileId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes a file from the TDLib file cache\n    /// - Parameter fileId: Identifier of the file to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteFile(fileId: Int?) async throws -> Ok {\n        let query = DeleteFile(\n            fileId: fileId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds a file from a message to the list of file downloads. Download progress and completion of the download will be notified through updateFile updates. If message database is used, the list of file downloads is persistent across application restarts. The downloading is independent of download using downloadFile, i.e. it continues if downloadFile is canceled or is used to download a part of the file\n    /// - Parameter chatId: Chat identifier of the message with the file\n    /// - Parameter fileId: Identifier of the file to download\n    /// - Parameter messageId: Message identifier\n    /// - Parameter priority: Priority of the download (1-32). The higher the priority, the earlier the file will be downloaded. If the priorities of two files are equal, then the last one for which downloadFile/addFileToDownloads was called will be downloaded first\n    public func addFileToDownloads(\n        chatId: Int64?,\n        fileId: Int?,\n        messageId: Int64?,\n        priority: Int?,\n        completion: @escaping (Result<File, Swift.Error>) -> Void\n    ) throws {\n        let query = AddFileToDownloads(\n            chatId: chatId,\n            fileId: fileId,\n            messageId: messageId,\n            priority: priority\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds a file from a message to the list of file downloads. Download progress and completion of the download will be notified through updateFile updates. If message database is used, the list of file downloads is persistent across application restarts. The downloading is independent of download using downloadFile, i.e. it continues if downloadFile is canceled or is used to download a part of the file\n    /// - Parameter chatId: Chat identifier of the message with the file\n    /// - Parameter fileId: Identifier of the file to download\n    /// - Parameter messageId: Message identifier\n    /// - Parameter priority: Priority of the download (1-32). The higher the priority, the earlier the file will be downloaded. If the priorities of two files are equal, then the last one for which downloadFile/addFileToDownloads was called will be downloaded first\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func addFileToDownloads(\n        chatId: Int64?,\n        fileId: Int?,\n        messageId: Int64?,\n        priority: Int?\n    ) async throws -> File {\n        let query = AddFileToDownloads(\n            chatId: chatId,\n            fileId: fileId,\n            messageId: messageId,\n            priority: priority\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes pause state of a file in the file download list\n    /// - Parameter fileId: Identifier of the downloaded file\n    /// - Parameter isPaused: Pass true if the download is paused\n    public func toggleDownloadIsPaused(\n        fileId: Int?,\n        isPaused: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleDownloadIsPaused(\n            fileId: fileId,\n            isPaused: isPaused\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes pause state of a file in the file download list\n    /// - Parameter fileId: Identifier of the downloaded file\n    /// - Parameter isPaused: Pass true if the download is paused\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleDownloadIsPaused(\n        fileId: Int?,\n        isPaused: Bool?\n    ) async throws -> Ok {\n        let query = ToggleDownloadIsPaused(\n            fileId: fileId,\n            isPaused: isPaused\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes pause state of all files in the file download list\n    /// - Parameter arePaused: Pass true to pause all downloads; pass false to unpause them\n    public func toggleAllDownloadsArePaused(\n        arePaused: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleAllDownloadsArePaused(\n            arePaused: arePaused\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes pause state of all files in the file download list\n    /// - Parameter arePaused: Pass true to pause all downloads; pass false to unpause them\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleAllDownloadsArePaused(arePaused: Bool?) async throws -> Ok {\n        let query = ToggleAllDownloadsArePaused(\n            arePaused: arePaused\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes a file from the file download list\n    /// - Parameter deleteFromCache: Pass true to delete the file from the TDLib file cache\n    /// - Parameter fileId: Identifier of the downloaded file\n    public func removeFileFromDownloads(\n        deleteFromCache: Bool?,\n        fileId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveFileFromDownloads(\n            deleteFromCache: deleteFromCache,\n            fileId: fileId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes a file from the file download list\n    /// - Parameter deleteFromCache: Pass true to delete the file from the TDLib file cache\n    /// - Parameter fileId: Identifier of the downloaded file\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeFileFromDownloads(\n        deleteFromCache: Bool?,\n        fileId: Int?\n    ) async throws -> Ok {\n        let query = RemoveFileFromDownloads(\n            deleteFromCache: deleteFromCache,\n            fileId: fileId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes all files from the file download list\n    /// - Parameter deleteFromCache: Pass true to delete the file from the TDLib file cache\n    /// - Parameter onlyActive: Pass true to remove only active downloads, including paused\n    /// - Parameter onlyCompleted: Pass true to remove only completed downloads\n    public func removeAllFilesFromDownloads(\n        deleteFromCache: Bool?,\n        onlyActive: Bool?,\n        onlyCompleted: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveAllFilesFromDownloads(\n            deleteFromCache: deleteFromCache,\n            onlyActive: onlyActive,\n            onlyCompleted: onlyCompleted\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes all files from the file download list\n    /// - Parameter deleteFromCache: Pass true to delete the file from the TDLib file cache\n    /// - Parameter onlyActive: Pass true to remove only active downloads, including paused\n    /// - Parameter onlyCompleted: Pass true to remove only completed downloads\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeAllFilesFromDownloads(\n        deleteFromCache: Bool?,\n        onlyActive: Bool?,\n        onlyCompleted: Bool?\n    ) async throws -> Ok {\n        let query = RemoveAllFilesFromDownloads(\n            deleteFromCache: deleteFromCache,\n            onlyActive: onlyActive,\n            onlyCompleted: onlyCompleted\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for files in the file download list or recently downloaded files from the list\n    /// - Parameter limit: The maximum number of files to be returned\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter onlyActive: Pass true to search only for active downloads, including paused\n    /// - Parameter onlyCompleted: Pass true to search only for completed downloads\n    /// - Parameter query: Query to search for; may be empty to return all downloaded files\n    public func searchFileDownloads(\n        limit: Int?,\n        offset: String?,\n        onlyActive: Bool?,\n        onlyCompleted: Bool?,\n        query: String?,\n        completion: @escaping (Result<FoundFileDownloads, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchFileDownloads(\n            limit: limit,\n            offset: offset,\n            onlyActive: onlyActive,\n            onlyCompleted: onlyCompleted,\n            query: query\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for files in the file download list or recently downloaded files from the list\n    /// - Parameter limit: The maximum number of files to be returned\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter onlyActive: Pass true to search only for active downloads, including paused\n    /// - Parameter onlyCompleted: Pass true to search only for completed downloads\n    /// - Parameter query: Query to search for; may be empty to return all downloaded files\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchFileDownloads(\n        limit: Int?,\n        offset: String?,\n        onlyActive: Bool?,\n        onlyCompleted: Bool?,\n        query: String?\n    ) async throws -> FoundFileDownloads {\n        let query = SearchFileDownloads(\n            limit: limit,\n            offset: offset,\n            onlyActive: onlyActive,\n            onlyCompleted: onlyCompleted,\n            query: query\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that application or reCAPTCHA verification has been completed. Can be called before authorization\n    /// - Parameter token: Play Integrity API token for the Android application, or secret from push notification for the iOS application for application verification, or reCAPTCHA token for reCAPTCHA verifications; pass an empty string to abort verification and receive the error \"VERIFICATION_FAILED\" for the request\n    /// - Parameter verificationId: Unique identifier for the verification process as received from updateApplicationVerificationRequired or updateApplicationRecaptchaVerificationRequired\n    public func setApplicationVerificationToken(\n        token: String?,\n        verificationId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetApplicationVerificationToken(\n            token: token,\n            verificationId: verificationId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that application or reCAPTCHA verification has been completed. Can be called before authorization\n    /// - Parameter token: Play Integrity API token for the Android application, or secret from push notification for the iOS application for application verification, or reCAPTCHA token for reCAPTCHA verifications; pass an empty string to abort verification and receive the error \"VERIFICATION_FAILED\" for the request\n    /// - Parameter verificationId: Unique identifier for the verification process as received from updateApplicationVerificationRequired or updateApplicationRecaptchaVerificationRequired\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setApplicationVerificationToken(\n        token: String?,\n        verificationId: Int64?\n    ) async throws -> Ok {\n        let query = SetApplicationVerificationToken(\n            token: token,\n            verificationId: verificationId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a file with messages exported from another application\n    /// - Parameter messageFileHead: Beginning of the message file; up to 100 first lines\n    /// - Returns: Information about a file with messages exported from another application\n    public func getMessageFileType(\n        messageFileHead: String?,\n        completion: @escaping (Result<MessageFileType, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageFileType(\n            messageFileHead: messageFileHead\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a file with messages exported from another application\n    /// - Parameter messageFileHead: Beginning of the message file; up to 100 first lines\n    /// - Returns: Information about a file with messages exported from another application\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMessageFileType(messageFileHead: String?) async throws -> MessageFileType {\n        let query = GetMessageFileType(\n            messageFileHead: messageFileHead\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a confirmation text to be shown to the user before starting message import\n    /// - Parameter chatId: Identifier of a chat to which the messages will be imported. It must be an identifier of a private chat with a mutual contact or an identifier of a supergroup chat with can_change_info member right\n    /// - Returns: A confirmation text to be shown to the user before starting message import\n    public func getMessageImportConfirmationText(\n        chatId: Int64?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageImportConfirmationText(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a confirmation text to be shown to the user before starting message import\n    /// - Parameter chatId: Identifier of a chat to which the messages will be imported. It must be an identifier of a private chat with a mutual contact or an identifier of a supergroup chat with can_change_info member right\n    /// - Returns: A confirmation text to be shown to the user before starting message import\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMessageImportConfirmationText(chatId: Int64?) async throws -> Text {\n        let query = GetMessageImportConfirmationText(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Imports messages exported from another application\n    /// - Parameter attachedFiles: Files used in the imported messages. Only inputFileLocal and inputFileGenerated are supported. The files must not be previously uploaded\n    /// - Parameter chatId: Identifier of a chat to which the messages will be imported. It must be an identifier of a private chat with a mutual contact or an identifier of a supergroup chat with can_change_info member right\n    /// - Parameter messageFile: File with messages to import. Only inputFileLocal and inputFileGenerated are supported. The file must not be previously uploaded\n    public func importMessages(\n        attachedFiles: [InputFile]?,\n        chatId: Int64?,\n        messageFile: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ImportMessages(\n            attachedFiles: attachedFiles,\n            chatId: chatId,\n            messageFile: messageFile\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Imports messages exported from another application\n    /// - Parameter attachedFiles: Files used in the imported messages. Only inputFileLocal and inputFileGenerated are supported. The files must not be previously uploaded\n    /// - Parameter chatId: Identifier of a chat to which the messages will be imported. It must be an identifier of a private chat with a mutual contact or an identifier of a supergroup chat with can_change_info member right\n    /// - Parameter messageFile: File with messages to import. Only inputFileLocal and inputFileGenerated are supported. The file must not be previously uploaded\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func importMessages(\n        attachedFiles: [InputFile]?,\n        chatId: Int64?,\n        messageFile: InputFile?\n    ) async throws -> Ok {\n        let query = ImportMessages(\n            attachedFiles: attachedFiles,\n            chatId: chatId,\n            messageFile: messageFile\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Replaces current primary invite link for a chat with a new primary invite link. Available for basic groups, supergroups, and channels. Requires administrator privileges and can_invite_users right\n    /// - Parameter chatId: Chat identifier\n    public func replacePrimaryChatInviteLink(\n        chatId: Int64?,\n        completion: @escaping (Result<ChatInviteLink, Swift.Error>) -> Void\n    ) throws {\n        let query = ReplacePrimaryChatInviteLink(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Replaces current primary invite link for a chat with a new primary invite link. Available for basic groups, supergroups, and channels. Requires administrator privileges and can_invite_users right\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func replacePrimaryChatInviteLink(chatId: Int64?) async throws -> ChatInviteLink {\n        let query = ReplacePrimaryChatInviteLink(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Creates a new invite link for a chat. Available for basic groups, supergroups, and channels. Requires administrator privileges and can_invite_users right in the chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter createsJoinRequest: Pass true if users joining the chat via the link need to be approved by chat administrators. In this case, member_limit must be 0\n    /// - Parameter expirationDate: Point in time (Unix timestamp) when the link will expire; pass 0 if never\n    /// - Parameter memberLimit: The maximum number of chat members that can join the chat via the link simultaneously; 0-99999; pass 0 if not limited\n    /// - Parameter name: Invite link name; 0-32 characters\n    public func createChatInviteLink(\n        chatId: Int64?,\n        createsJoinRequest: Bool?,\n        expirationDate: Int?,\n        memberLimit: Int?,\n        name: String?,\n        completion: @escaping (Result<ChatInviteLink, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateChatInviteLink(\n            chatId: chatId,\n            createsJoinRequest: createsJoinRequest,\n            expirationDate: expirationDate,\n            memberLimit: memberLimit,\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Creates a new invite link for a chat. Available for basic groups, supergroups, and channels. Requires administrator privileges and can_invite_users right in the chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter createsJoinRequest: Pass true if users joining the chat via the link need to be approved by chat administrators. In this case, member_limit must be 0\n    /// - Parameter expirationDate: Point in time (Unix timestamp) when the link will expire; pass 0 if never\n    /// - Parameter memberLimit: The maximum number of chat members that can join the chat via the link simultaneously; 0-99999; pass 0 if not limited\n    /// - Parameter name: Invite link name; 0-32 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createChatInviteLink(\n        chatId: Int64?,\n        createsJoinRequest: Bool?,\n        expirationDate: Int?,\n        memberLimit: Int?,\n        name: String?\n    ) async throws -> ChatInviteLink {\n        let query = CreateChatInviteLink(\n            chatId: chatId,\n            createsJoinRequest: createsJoinRequest,\n            expirationDate: expirationDate,\n            memberLimit: memberLimit,\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Creates a new subscription invite link for a channel chat. Requires can_invite_users right in the chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter name: Invite link name; 0-32 characters\n    /// - Parameter subscriptionPricing: Information about subscription plan that will be applied to the users joining the chat via the link. Subscription period must be 2592000 in production environment, and 60 or 300 if Telegram test environment is used\n    public func createChatSubscriptionInviteLink(\n        chatId: Int64?,\n        name: String?,\n        subscriptionPricing: StarSubscriptionPricing?,\n        completion: @escaping (Result<ChatInviteLink, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateChatSubscriptionInviteLink(\n            chatId: chatId,\n            name: name,\n            subscriptionPricing: subscriptionPricing\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Creates a new subscription invite link for a channel chat. Requires can_invite_users right in the chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter name: Invite link name; 0-32 characters\n    /// - Parameter subscriptionPricing: Information about subscription plan that will be applied to the users joining the chat via the link. Subscription period must be 2592000 in production environment, and 60 or 300 if Telegram test environment is used\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createChatSubscriptionInviteLink(\n        chatId: Int64?,\n        name: String?,\n        subscriptionPricing: StarSubscriptionPricing?\n    ) async throws -> ChatInviteLink {\n        let query = CreateChatSubscriptionInviteLink(\n            chatId: chatId,\n            name: name,\n            subscriptionPricing: subscriptionPricing\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits a non-primary invite link for a chat. Available for basic groups, supergroups, and channels. If the link creates a subscription, then expiration_date, member_limit and creates_join_request must not be used. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter createsJoinRequest: Pass true if users joining the chat via the link need to be approved by chat administrators. In this case, member_limit must be 0\n    /// - Parameter expirationDate: Point in time (Unix timestamp) when the link will expire; pass 0 if never\n    /// - Parameter inviteLink: Invite link to be edited\n    /// - Parameter memberLimit: The maximum number of chat members that can join the chat via the link simultaneously; 0-99999; pass 0 if not limited\n    /// - Parameter name: Invite link name; 0-32 characters\n    public func editChatInviteLink(\n        chatId: Int64?,\n        createsJoinRequest: Bool?,\n        expirationDate: Int?,\n        inviteLink: String?,\n        memberLimit: Int?,\n        name: String?,\n        completion: @escaping (Result<ChatInviteLink, Swift.Error>) -> Void\n    ) throws {\n        let query = EditChatInviteLink(\n            chatId: chatId,\n            createsJoinRequest: createsJoinRequest,\n            expirationDate: expirationDate,\n            inviteLink: inviteLink,\n            memberLimit: memberLimit,\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits a non-primary invite link for a chat. Available for basic groups, supergroups, and channels. If the link creates a subscription, then expiration_date, member_limit and creates_join_request must not be used. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter createsJoinRequest: Pass true if users joining the chat via the link need to be approved by chat administrators. In this case, member_limit must be 0\n    /// - Parameter expirationDate: Point in time (Unix timestamp) when the link will expire; pass 0 if never\n    /// - Parameter inviteLink: Invite link to be edited\n    /// - Parameter memberLimit: The maximum number of chat members that can join the chat via the link simultaneously; 0-99999; pass 0 if not limited\n    /// - Parameter name: Invite link name; 0-32 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func editChatInviteLink(\n        chatId: Int64?,\n        createsJoinRequest: Bool?,\n        expirationDate: Int?,\n        inviteLink: String?,\n        memberLimit: Int?,\n        name: String?\n    ) async throws -> ChatInviteLink {\n        let query = EditChatInviteLink(\n            chatId: chatId,\n            createsJoinRequest: createsJoinRequest,\n            expirationDate: expirationDate,\n            inviteLink: inviteLink,\n            memberLimit: memberLimit,\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits a subscription invite link for a channel chat. Requires can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link to be edited\n    /// - Parameter name: Invite link name; 0-32 characters\n    public func editChatSubscriptionInviteLink(\n        chatId: Int64?,\n        inviteLink: String?,\n        name: String?,\n        completion: @escaping (Result<ChatInviteLink, Swift.Error>) -> Void\n    ) throws {\n        let query = EditChatSubscriptionInviteLink(\n            chatId: chatId,\n            inviteLink: inviteLink,\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits a subscription invite link for a channel chat. Requires can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link to be edited\n    /// - Parameter name: Invite link name; 0-32 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func editChatSubscriptionInviteLink(\n        chatId: Int64?,\n        inviteLink: String?,\n        name: String?\n    ) async throws -> ChatInviteLink {\n        let query = EditChatSubscriptionInviteLink(\n            chatId: chatId,\n            inviteLink: inviteLink,\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about an invite link. Requires administrator privileges and can_invite_users right in the chat to get own links and owner privileges to get other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link to get\n    /// - Returns: Information about an invite link\n    public func getChatInviteLink(\n        chatId: Int64?,\n        inviteLink: String?,\n        completion: @escaping (Result<ChatInviteLink, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatInviteLink(\n            chatId: chatId,\n            inviteLink: inviteLink\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about an invite link. Requires administrator privileges and can_invite_users right in the chat to get own links and owner privileges to get other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link to get\n    /// - Returns: Information about an invite link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatInviteLink(\n        chatId: Int64?,\n        inviteLink: String?\n    ) async throws -> ChatInviteLink {\n        let query = GetChatInviteLink(\n            chatId: chatId,\n            inviteLink: inviteLink\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of chat administrators with number of their invite links. Requires owner privileges in the chat\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of chat administrators with number of their invite links\n    public func getChatInviteLinkCounts(\n        chatId: Int64?,\n        completion: @escaping (Result<ChatInviteLinkCounts, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatInviteLinkCounts(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of chat administrators with number of their invite links. Requires owner privileges in the chat\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of chat administrators with number of their invite links\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatInviteLinkCounts(chatId: Int64?) async throws -> ChatInviteLinkCounts {\n        let query = GetChatInviteLinkCounts(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns invite links for a chat created by specified administrator. Requires administrator privileges and can_invite_users right in the chat to get own links and owner privileges to get other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter creatorUserId: User identifier of a chat administrator. Must be an identifier of the current user for non-owner\n    /// - Parameter isRevoked: Pass true if revoked links needs to be returned instead of active or expired\n    /// - Parameter limit: The maximum number of invite links to return; up to 100\n    /// - Parameter offsetDate: Creation date of an invite link starting after which to return invite links; use 0 to get results from the beginning\n    /// - Parameter offsetInviteLink: Invite link starting after which to return invite links; use empty string to get results from the beginning\n    /// - Returns: Invite links for a chat created by specified administrator\n    public func getChatInviteLinks(\n        chatId: Int64?,\n        creatorUserId: Int64?,\n        isRevoked: Bool?,\n        limit: Int?,\n        offsetDate: Int?,\n        offsetInviteLink: String?,\n        completion: @escaping (Result<ChatInviteLinks, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatInviteLinks(\n            chatId: chatId,\n            creatorUserId: creatorUserId,\n            isRevoked: isRevoked,\n            limit: limit,\n            offsetDate: offsetDate,\n            offsetInviteLink: offsetInviteLink\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns invite links for a chat created by specified administrator. Requires administrator privileges and can_invite_users right in the chat to get own links and owner privileges to get other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter creatorUserId: User identifier of a chat administrator. Must be an identifier of the current user for non-owner\n    /// - Parameter isRevoked: Pass true if revoked links needs to be returned instead of active or expired\n    /// - Parameter limit: The maximum number of invite links to return; up to 100\n    /// - Parameter offsetDate: Creation date of an invite link starting after which to return invite links; use 0 to get results from the beginning\n    /// - Parameter offsetInviteLink: Invite link starting after which to return invite links; use empty string to get results from the beginning\n    /// - Returns: Invite links for a chat created by specified administrator\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatInviteLinks(\n        chatId: Int64?,\n        creatorUserId: Int64?,\n        isRevoked: Bool?,\n        limit: Int?,\n        offsetDate: Int?,\n        offsetInviteLink: String?\n    ) async throws -> ChatInviteLinks {\n        let query = GetChatInviteLinks(\n            chatId: chatId,\n            creatorUserId: creatorUserId,\n            isRevoked: isRevoked,\n            limit: limit,\n            offsetDate: offsetDate,\n            offsetInviteLink: offsetInviteLink\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns chat members joined a chat via an invite link. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link for which to return chat members\n    /// - Parameter limit: The maximum number of chat members to return; up to 100\n    /// - Parameter offsetMember: A chat member from which to return next chat members; pass null to get results from the beginning\n    /// - Parameter onlyWithExpiredSubscription: Pass true if the link is a subscription link and only members with expired subscription must be returned\n    /// - Returns: Chat members joined a chat via an invite link\n    public func getChatInviteLinkMembers(\n        chatId: Int64?,\n        inviteLink: String?,\n        limit: Int?,\n        offsetMember: ChatInviteLinkMember?,\n        onlyWithExpiredSubscription: Bool?,\n        completion: @escaping (Result<ChatInviteLinkMembers, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatInviteLinkMembers(\n            chatId: chatId,\n            inviteLink: inviteLink,\n            limit: limit,\n            offsetMember: offsetMember,\n            onlyWithExpiredSubscription: onlyWithExpiredSubscription\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns chat members joined a chat via an invite link. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link for which to return chat members\n    /// - Parameter limit: The maximum number of chat members to return; up to 100\n    /// - Parameter offsetMember: A chat member from which to return next chat members; pass null to get results from the beginning\n    /// - Parameter onlyWithExpiredSubscription: Pass true if the link is a subscription link and only members with expired subscription must be returned\n    /// - Returns: Chat members joined a chat via an invite link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatInviteLinkMembers(\n        chatId: Int64?,\n        inviteLink: String?,\n        limit: Int?,\n        offsetMember: ChatInviteLinkMember?,\n        onlyWithExpiredSubscription: Bool?\n    ) async throws -> ChatInviteLinkMembers {\n        let query = GetChatInviteLinkMembers(\n            chatId: chatId,\n            inviteLink: inviteLink,\n            limit: limit,\n            offsetMember: offsetMember,\n            onlyWithExpiredSubscription: onlyWithExpiredSubscription\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Revokes invite link for a chat. Available for basic groups, supergroups, and channels. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links. If a primary link is revoked, then additionally to the revoked link returns new primary link\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link to be revoked\n    /// - Returns: If a primary link is revoked, then additionally to the revoked link returns new primary link\n    public func revokeChatInviteLink(\n        chatId: Int64?,\n        inviteLink: String?,\n        completion: @escaping (Result<ChatInviteLinks, Swift.Error>) -> Void\n    ) throws {\n        let query = RevokeChatInviteLink(\n            chatId: chatId,\n            inviteLink: inviteLink\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Revokes invite link for a chat. Available for basic groups, supergroups, and channels. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links. If a primary link is revoked, then additionally to the revoked link returns new primary link\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link to be revoked\n    /// - Returns: If a primary link is revoked, then additionally to the revoked link returns new primary link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func revokeChatInviteLink(\n        chatId: Int64?,\n        inviteLink: String?\n    ) async throws -> ChatInviteLinks {\n        let query = RevokeChatInviteLink(\n            chatId: chatId,\n            inviteLink: inviteLink\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes revoked chat invite links. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link to revoke\n    public func deleteRevokedChatInviteLink(\n        chatId: Int64?,\n        inviteLink: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteRevokedChatInviteLink(\n            chatId: chatId,\n            inviteLink: inviteLink\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes revoked chat invite links. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link to revoke\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteRevokedChatInviteLink(\n        chatId: Int64?,\n        inviteLink: String?\n    ) async throws -> Ok {\n        let query = DeleteRevokedChatInviteLink(\n            chatId: chatId,\n            inviteLink: inviteLink\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes all revoked chat invite links created by a given chat administrator. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter creatorUserId: User identifier of a chat administrator, which links will be deleted. Must be an identifier of the current user for non-owner\n    public func deleteAllRevokedChatInviteLinks(\n        chatId: Int64?,\n        creatorUserId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteAllRevokedChatInviteLinks(\n            chatId: chatId,\n            creatorUserId: creatorUserId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes all revoked chat invite links created by a given chat administrator. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter creatorUserId: User identifier of a chat administrator, which links will be deleted. Must be an identifier of the current user for non-owner\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteAllRevokedChatInviteLinks(\n        chatId: Int64?,\n        creatorUserId: Int64?\n    ) async throws -> Ok {\n        let query = DeleteAllRevokedChatInviteLinks(\n            chatId: chatId,\n            creatorUserId: creatorUserId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks the validity of an invite link for a chat and returns information about the corresponding chat\n    /// - Parameter inviteLink: Invite link to be checked\n    /// - Returns: Checks the validity of an invite link for a chat and returns information about the corresponding chat\n    public func checkChatInviteLink(\n        inviteLink: String?,\n        completion: @escaping (Result<ChatInviteLinkInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckChatInviteLink(\n            inviteLink: inviteLink\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks the validity of an invite link for a chat and returns information about the corresponding chat\n    /// - Parameter inviteLink: Invite link to be checked\n    /// - Returns: Checks the validity of an invite link for a chat and returns information about the corresponding chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func checkChatInviteLink(inviteLink: String?) async throws -> ChatInviteLinkInfo {\n        let query = CheckChatInviteLink(\n            inviteLink: inviteLink\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Uses an invite link to add the current user to the chat if possible. May return an error with a message \"INVITE_REQUEST_SENT\" if only a join request was created\n    /// - Parameter inviteLink: Invite link to use\n    /// - Returns: May return an error with a message \"INVITE_REQUEST_SENT\" if only a join request was created\n    public func joinChatByInviteLink(\n        inviteLink: String?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = JoinChatByInviteLink(\n            inviteLink: inviteLink\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Uses an invite link to add the current user to the chat if possible. May return an error with a message \"INVITE_REQUEST_SENT\" if only a join request was created\n    /// - Parameter inviteLink: Invite link to use\n    /// - Returns: May return an error with a message \"INVITE_REQUEST_SENT\" if only a join request was created\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func joinChatByInviteLink(inviteLink: String?) async throws -> Chat {\n        let query = JoinChatByInviteLink(\n            inviteLink: inviteLink\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns pending join requests in a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link for which to return join requests. If empty, all join requests will be returned. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter limit: The maximum number of requests to join the chat to return\n    /// - Parameter offsetRequest: A chat join request from which to return next requests; pass null to get results from the beginning\n    /// - Parameter query: A query to search for in the first names, last names and usernames of the users to return\n    /// - Returns: Pending join requests in a chat\n    public func getChatJoinRequests(\n        chatId: Int64?,\n        inviteLink: String?,\n        limit: Int?,\n        offsetRequest: ChatJoinRequest?,\n        query: String?,\n        completion: @escaping (Result<ChatJoinRequests, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatJoinRequests(\n            chatId: chatId,\n            inviteLink: inviteLink,\n            limit: limit,\n            offsetRequest: offsetRequest,\n            query: query\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns pending join requests in a chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link for which to return join requests. If empty, all join requests will be returned. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    /// - Parameter limit: The maximum number of requests to join the chat to return\n    /// - Parameter offsetRequest: A chat join request from which to return next requests; pass null to get results from the beginning\n    /// - Parameter query: A query to search for in the first names, last names and usernames of the users to return\n    /// - Returns: Pending join requests in a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatJoinRequests(\n        chatId: Int64?,\n        inviteLink: String?,\n        limit: Int?,\n        offsetRequest: ChatJoinRequest?,\n        query: String?\n    ) async throws -> ChatJoinRequests {\n        let query = GetChatJoinRequests(\n            chatId: chatId,\n            inviteLink: inviteLink,\n            limit: limit,\n            offsetRequest: offsetRequest,\n            query: query\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Handles a pending join request in a chat\n    /// - Parameter approve: Pass true to approve the request; pass false to decline it\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter userId: Identifier of the user who sent the request\n    public func processChatJoinRequest(\n        approve: Bool?,\n        chatId: Int64?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ProcessChatJoinRequest(\n            approve: approve,\n            chatId: chatId,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Handles a pending join request in a chat\n    /// - Parameter approve: Pass true to approve the request; pass false to decline it\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter userId: Identifier of the user who sent the request\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func processChatJoinRequest(\n        approve: Bool?,\n        chatId: Int64?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = ProcessChatJoinRequest(\n            approve: approve,\n            chatId: chatId,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Handles all pending join requests for a given link in a chat\n    /// - Parameter approve: Pass true to approve all requests; pass false to decline them\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link for which to process join requests. If empty, all join requests will be processed. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    public func processChatJoinRequests(\n        approve: Bool?,\n        chatId: Int64?,\n        inviteLink: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ProcessChatJoinRequests(\n            approve: approve,\n            chatId: chatId,\n            inviteLink: inviteLink\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Handles all pending join requests for a given link in a chat\n    /// - Parameter approve: Pass true to approve all requests; pass false to decline them\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter inviteLink: Invite link for which to process join requests. If empty, all join requests will be processed. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func processChatJoinRequests(\n        approve: Bool?,\n        chatId: Int64?,\n        inviteLink: String?\n    ) async throws -> Ok {\n        let query = ProcessChatJoinRequests(\n            approve: approve,\n            chatId: chatId,\n            inviteLink: inviteLink\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Approves a suggested post in a channel direct messages chat\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter messageId: Identifier of the message with the suggested post. Use messageProperties.can_be_approved to check whether the suggested post can be approved\n    /// - Parameter sendDate: Point in time (Unix timestamp) when the post is expected to be published; pass 0 if the date has already been chosen. If specified, then the date must be in the future, but at most getOption(\"suggested_post_send_delay_max\") seconds in the future\n    public func approveSuggestedPost(\n        chatId: Int64?,\n        messageId: Int64?,\n        sendDate: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ApproveSuggestedPost(\n            chatId: chatId,\n            messageId: messageId,\n            sendDate: sendDate\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Approves a suggested post in a channel direct messages chat\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter messageId: Identifier of the message with the suggested post. Use messageProperties.can_be_approved to check whether the suggested post can be approved\n    /// - Parameter sendDate: Point in time (Unix timestamp) when the post is expected to be published; pass 0 if the date has already been chosen. If specified, then the date must be in the future, but at most getOption(\"suggested_post_send_delay_max\") seconds in the future\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func approveSuggestedPost(\n        chatId: Int64?,\n        messageId: Int64?,\n        sendDate: Int?\n    ) async throws -> Ok {\n        let query = ApproveSuggestedPost(\n            chatId: chatId,\n            messageId: messageId,\n            sendDate: sendDate\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Declines a suggested post in a channel direct messages chat\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter comment: Comment for the creator of the suggested post; 0-128 characters\n    /// - Parameter messageId: Identifier of the message with the suggested post. Use messageProperties.can_be_declined to check whether the suggested post can be declined\n    public func declineSuggestedPost(\n        chatId: Int64?,\n        comment: String?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeclineSuggestedPost(\n            chatId: chatId,\n            comment: comment,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Declines a suggested post in a channel direct messages chat\n    /// - Parameter chatId: Chat identifier of the channel direct messages chat\n    /// - Parameter comment: Comment for the creator of the suggested post; 0-128 characters\n    /// - Parameter messageId: Identifier of the message with the suggested post. Use messageProperties.can_be_declined to check whether the suggested post can be declined\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func declineSuggestedPost(\n        chatId: Int64?,\n        comment: String?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = DeclineSuggestedPost(\n            chatId: chatId,\n            comment: comment,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends a suggested post based on a previously sent message in a channel direct messages chat. Can be also used to suggest price or time change for an existing suggested post. Returns the sent message\n    /// - Parameter chatId: Identifier of the channel direct messages chat\n    /// - Parameter messageId: Identifier of the message in the chat which will be sent as suggested post. Use messageProperties.can_add_offer to check whether an offer can be added or messageProperties.can_edit_suggested_post_info to check whether price or time of sending of the post can be changed\n    /// - Parameter options: Options to be used to send the message. New information about the suggested post must always be specified\n    /// - Returns: The sent message\n    public func addOffer(\n        chatId: Int64?,\n        messageId: Int64?,\n        options: MessageSendOptions?,\n        completion: @escaping (Result<Message, Swift.Error>) -> Void\n    ) throws {\n        let query = AddOffer(\n            chatId: chatId,\n            messageId: messageId,\n            options: options\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends a suggested post based on a previously sent message in a channel direct messages chat. Can be also used to suggest price or time change for an existing suggested post. Returns the sent message\n    /// - Parameter chatId: Identifier of the channel direct messages chat\n    /// - Parameter messageId: Identifier of the message in the chat which will be sent as suggested post. Use messageProperties.can_add_offer to check whether an offer can be added or messageProperties.can_edit_suggested_post_info to check whether price or time of sending of the post can be changed\n    /// - Parameter options: Options to be used to send the message. New information about the suggested post must always be specified\n    /// - Returns: The sent message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func addOffer(\n        chatId: Int64?,\n        messageId: Int64?,\n        options: MessageSendOptions?\n    ) async throws -> Message {\n        let query = AddOffer(\n            chatId: chatId,\n            messageId: messageId,\n            options: options\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Creates a new call\n    /// - Parameter isVideo: Pass true to create a video call\n    /// - Parameter `protocol`: The call protocols supported by the application\n    /// - Parameter userId: Identifier of the user to be called\n    public func createCall(\n        isVideo: Bool?,\n        `protocol`: CallProtocol?,\n        userId: Int64?,\n        completion: @escaping (Result<CallId, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateCall(\n            isVideo: isVideo,\n            protocol: `protocol`,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Creates a new call\n    /// - Parameter isVideo: Pass true to create a video call\n    /// - Parameter `protocol`: The call protocols supported by the application\n    /// - Parameter userId: Identifier of the user to be called\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createCall(\n        isVideo: Bool?,\n        `protocol`: CallProtocol?,\n        userId: Int64?\n    ) async throws -> CallId {\n        let query = CreateCall(\n            isVideo: isVideo,\n            protocol: `protocol`,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Accepts an incoming call\n    /// - Parameter callId: Call identifier\n    /// - Parameter `protocol`: The call protocols supported by the application\n    public func acceptCall(\n        callId: Int?,\n        `protocol`: CallProtocol?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AcceptCall(\n            callId: callId,\n            protocol: `protocol`\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Accepts an incoming call\n    /// - Parameter callId: Call identifier\n    /// - Parameter `protocol`: The call protocols supported by the application\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func acceptCall(\n        callId: Int?,\n        `protocol`: CallProtocol?\n    ) async throws -> Ok {\n        let query = AcceptCall(\n            callId: callId,\n            protocol: `protocol`\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends call signaling data\n    /// - Parameter callId: Call identifier\n    /// - Parameter data: The data\n    public func sendCallSignalingData(\n        callId: Int?,\n        data: Data?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendCallSignalingData(\n            callId: callId,\n            data: data\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends call signaling data\n    /// - Parameter callId: Call identifier\n    /// - Parameter data: The data\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func sendCallSignalingData(\n        callId: Int?,\n        data: Data?\n    ) async throws -> Ok {\n        let query = SendCallSignalingData(\n            callId: callId,\n            data: data\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Discards a call\n    /// - Parameter callId: Call identifier\n    /// - Parameter connectionId: Identifier of the connection used during the call\n    /// - Parameter duration: The call duration, in seconds\n    /// - Parameter inviteLink: If the call was upgraded to a group call, pass invite link to the group call\n    /// - Parameter isDisconnected: Pass true if the user was disconnected\n    /// - Parameter isVideo: Pass true if the call was a video call\n    public func discardCall(\n        callId: Int?,\n        connectionId: TdInt64?,\n        duration: Int?,\n        inviteLink: String?,\n        isDisconnected: Bool?,\n        isVideo: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DiscardCall(\n            callId: callId,\n            connectionId: connectionId,\n            duration: duration,\n            inviteLink: inviteLink,\n            isDisconnected: isDisconnected,\n            isVideo: isVideo\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Discards a call\n    /// - Parameter callId: Call identifier\n    /// - Parameter connectionId: Identifier of the connection used during the call\n    /// - Parameter duration: The call duration, in seconds\n    /// - Parameter inviteLink: If the call was upgraded to a group call, pass invite link to the group call\n    /// - Parameter isDisconnected: Pass true if the user was disconnected\n    /// - Parameter isVideo: Pass true if the call was a video call\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func discardCall(\n        callId: Int?,\n        connectionId: TdInt64?,\n        duration: Int?,\n        inviteLink: String?,\n        isDisconnected: Bool?,\n        isVideo: Bool?\n    ) async throws -> Ok {\n        let query = DiscardCall(\n            callId: callId,\n            connectionId: connectionId,\n            duration: duration,\n            inviteLink: inviteLink,\n            isDisconnected: isDisconnected,\n            isVideo: isVideo\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends a call rating\n    /// - Parameter callId: Call identifier\n    /// - Parameter comment: An optional user comment if the rating is less than 5\n    /// - Parameter problems: List of the exact types of problems with the call, specified by the user\n    /// - Parameter rating: Call rating; 1-5\n    public func sendCallRating(\n        callId: InputCall?,\n        comment: String?,\n        problems: [CallProblem]?,\n        rating: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendCallRating(\n            callId: callId,\n            comment: comment,\n            problems: problems,\n            rating: rating\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends a call rating\n    /// - Parameter callId: Call identifier\n    /// - Parameter comment: An optional user comment if the rating is less than 5\n    /// - Parameter problems: List of the exact types of problems with the call, specified by the user\n    /// - Parameter rating: Call rating; 1-5\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func sendCallRating(\n        callId: InputCall?,\n        comment: String?,\n        problems: [CallProblem]?,\n        rating: Int?\n    ) async throws -> Ok {\n        let query = SendCallRating(\n            callId: callId,\n            comment: comment,\n            problems: problems,\n            rating: rating\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends debug information for a call to Telegram servers\n    /// - Parameter callId: Call identifier\n    /// - Parameter debugInformation: Debug information in application-specific format\n    public func sendCallDebugInformation(\n        callId: InputCall?,\n        debugInformation: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendCallDebugInformation(\n            callId: callId,\n            debugInformation: debugInformation\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends debug information for a call to Telegram servers\n    /// - Parameter callId: Call identifier\n    /// - Parameter debugInformation: Debug information in application-specific format\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func sendCallDebugInformation(\n        callId: InputCall?,\n        debugInformation: String?\n    ) async throws -> Ok {\n        let query = SendCallDebugInformation(\n            callId: callId,\n            debugInformation: debugInformation\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends log file for a call to Telegram servers\n    /// - Parameter callId: Call identifier\n    /// - Parameter logFile: Call log file. Only inputFileLocal and inputFileGenerated are supported\n    public func sendCallLog(\n        callId: InputCall?,\n        logFile: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendCallLog(\n            callId: callId,\n            logFile: logFile\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends log file for a call to Telegram servers\n    /// - Parameter callId: Call identifier\n    /// - Parameter logFile: Call log file. Only inputFileLocal and inputFileGenerated are supported\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func sendCallLog(\n        callId: InputCall?,\n        logFile: InputFile?\n    ) async throws -> Ok {\n        let query = SendCallLog(\n            callId: callId,\n            logFile: logFile\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of participant identifiers, on whose behalf a video chat in the chat can be joined\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of participant identifiers, on whose behalf a video chat in the chat can be joined\n    public func getVideoChatAvailableParticipants(\n        chatId: Int64?,\n        completion: @escaping (Result<MessageSenders, Swift.Error>) -> Void\n    ) throws {\n        let query = GetVideoChatAvailableParticipants(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of participant identifiers, on whose behalf a video chat in the chat can be joined\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: The list of participant identifiers, on whose behalf a video chat in the chat can be joined\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getVideoChatAvailableParticipants(chatId: Int64?) async throws -> MessageSenders {\n        let query = GetVideoChatAvailableParticipants(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes default participant identifier, on whose behalf a video chat in the chat will be joined\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter defaultParticipantId: Default group call participant identifier to join the video chats in the chat\n    public func setVideoChatDefaultParticipant(\n        chatId: Int64?,\n        defaultParticipantId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetVideoChatDefaultParticipant(\n            chatId: chatId,\n            defaultParticipantId: defaultParticipantId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes default participant identifier, on whose behalf a video chat in the chat will be joined\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter defaultParticipantId: Default group call participant identifier to join the video chats in the chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setVideoChatDefaultParticipant(\n        chatId: Int64?,\n        defaultParticipantId: MessageSender?\n    ) async throws -> Ok {\n        let query = SetVideoChatDefaultParticipant(\n            chatId: chatId,\n            defaultParticipantId: defaultParticipantId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Creates a video chat (a group call bound to a chat); for basic groups, supergroups and channels only; requires can_manage_video_chats administrator right\n    /// - Parameter chatId: Identifier of a chat in which the video chat will be created\n    /// - Parameter isRtmpStream: Pass true to create an RTMP stream instead of an ordinary video chat\n    /// - Parameter startDate: Point in time (Unix timestamp) when the group call is expected to be started by an administrator; 0 to start the video chat immediately. The date must be at least 10 seconds and at most 8 days in the future\n    /// - Parameter title: Group call title; if empty, chat title will be used\n    public func createVideoChat(\n        chatId: Int64?,\n        isRtmpStream: Bool?,\n        startDate: Int?,\n        title: String?,\n        completion: @escaping (Result<GroupCallId, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateVideoChat(\n            chatId: chatId,\n            isRtmpStream: isRtmpStream,\n            startDate: startDate,\n            title: title\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Creates a video chat (a group call bound to a chat); for basic groups, supergroups and channels only; requires can_manage_video_chats administrator right\n    /// - Parameter chatId: Identifier of a chat in which the video chat will be created\n    /// - Parameter isRtmpStream: Pass true to create an RTMP stream instead of an ordinary video chat\n    /// - Parameter startDate: Point in time (Unix timestamp) when the group call is expected to be started by an administrator; 0 to start the video chat immediately. The date must be at least 10 seconds and at most 8 days in the future\n    /// - Parameter title: Group call title; if empty, chat title will be used\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createVideoChat(\n        chatId: Int64?,\n        isRtmpStream: Bool?,\n        startDate: Int?,\n        title: String?\n    ) async throws -> GroupCallId {\n        let query = CreateVideoChat(\n            chatId: chatId,\n            isRtmpStream: isRtmpStream,\n            startDate: startDate,\n            title: title\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Creates a new group call that isn't bound to a chat\n    /// - Parameter joinParameters: Parameters to join the call; pass null to only create call link without joining the call\n    public func createGroupCall(\n        joinParameters: GroupCallJoinParameters?,\n        completion: @escaping (Result<GroupCallInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateGroupCall(\n            joinParameters: joinParameters\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Creates a new group call that isn't bound to a chat\n    /// - Parameter joinParameters: Parameters to join the call; pass null to only create call link without joining the call\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createGroupCall(joinParameters: GroupCallJoinParameters?) async throws -> GroupCallInfo {\n        let query = CreateGroupCall(\n            joinParameters: joinParameters\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns RTMP URL for streaming to the video chat of a chat; requires can_manage_video_chats administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: RTMP URL for streaming to the video chat of a chat\n    public func getVideoChatRtmpUrl(\n        chatId: Int64?,\n        completion: @escaping (Result<RtmpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetVideoChatRtmpUrl(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns RTMP URL for streaming to the video chat of a chat; requires can_manage_video_chats administrator right\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: RTMP URL for streaming to the video chat of a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getVideoChatRtmpUrl(chatId: Int64?) async throws -> RtmpUrl {\n        let query = GetVideoChatRtmpUrl(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Replaces the current RTMP URL for streaming to the video chat of a chat; requires owner privileges in the chat\n    /// - Parameter chatId: Chat identifier\n    public func replaceVideoChatRtmpUrl(\n        chatId: Int64?,\n        completion: @escaping (Result<RtmpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = ReplaceVideoChatRtmpUrl(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Replaces the current RTMP URL for streaming to the video chat of a chat; requires owner privileges in the chat\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func replaceVideoChatRtmpUrl(chatId: Int64?) async throws -> RtmpUrl {\n        let query = ReplaceVideoChatRtmpUrl(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns RTMP URL for streaming to a live story; requires can_post_stories administrator right for channel chats\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: RTMP URL for streaming to a live story\n    public func getLiveStoryRtmpUrl(\n        chatId: Int64?,\n        completion: @escaping (Result<RtmpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLiveStoryRtmpUrl(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns RTMP URL for streaming to a live story; requires can_post_stories administrator right for channel chats\n    /// - Parameter chatId: Chat identifier\n    /// - Returns: RTMP URL for streaming to a live story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getLiveStoryRtmpUrl(chatId: Int64?) async throws -> RtmpUrl {\n        let query = GetLiveStoryRtmpUrl(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Replaces the current RTMP URL for streaming to a live story; requires owner privileges for channel chats\n    /// - Parameter chatId: Chat identifier\n    public func replaceLiveStoryRtmpUrl(\n        chatId: Int64?,\n        completion: @escaping (Result<RtmpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = ReplaceLiveStoryRtmpUrl(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Replaces the current RTMP URL for streaming to a live story; requires owner privileges for channel chats\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func replaceLiveStoryRtmpUrl(chatId: Int64?) async throws -> RtmpUrl {\n        let query = ReplaceLiveStoryRtmpUrl(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a group call\n    /// - Parameter groupCallId: Group call identifier\n    /// - Returns: Information about a group call\n    public func getGroupCall(\n        groupCallId: Int?,\n        completion: @escaping (Result<GroupCall, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGroupCall(\n            groupCallId: groupCallId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a group call\n    /// - Parameter groupCallId: Group call identifier\n    /// - Returns: Information about a group call\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getGroupCall(groupCallId: Int?) async throws -> GroupCall {\n        let query = GetGroupCall(\n            groupCallId: groupCallId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Starts a scheduled video chat\n    /// - Parameter groupCallId: Group call identifier of the video chat\n    public func startScheduledVideoChat(\n        groupCallId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = StartScheduledVideoChat(\n            groupCallId: groupCallId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Starts a scheduled video chat\n    /// - Parameter groupCallId: Group call identifier of the video chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func startScheduledVideoChat(groupCallId: Int?) async throws -> Ok {\n        let query = StartScheduledVideoChat(\n            groupCallId: groupCallId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether the current user will receive a notification when the video chat starts; for scheduled video chats only\n    /// - Parameter enabledStartNotification: New value of the enabled_start_notification setting\n    /// - Parameter groupCallId: Group call identifier\n    public func toggleVideoChatEnabledStartNotification(\n        enabledStartNotification: Bool?,\n        groupCallId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleVideoChatEnabledStartNotification(\n            enabledStartNotification: enabledStartNotification,\n            groupCallId: groupCallId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether the current user will receive a notification when the video chat starts; for scheduled video chats only\n    /// - Parameter enabledStartNotification: New value of the enabled_start_notification setting\n    /// - Parameter groupCallId: Group call identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleVideoChatEnabledStartNotification(\n        enabledStartNotification: Bool?,\n        groupCallId: Int?\n    ) async throws -> Ok {\n        let query = ToggleVideoChatEnabledStartNotification(\n            enabledStartNotification: enabledStartNotification,\n            groupCallId: groupCallId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Joins a regular group call that is not bound to a chat\n    /// - Parameter inputGroupCall: The group call to join\n    /// - Parameter joinParameters: Parameters to join the call\n    public func joinGroupCall(\n        inputGroupCall: InputGroupCall?,\n        joinParameters: GroupCallJoinParameters?,\n        completion: @escaping (Result<GroupCallInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = JoinGroupCall(\n            inputGroupCall: inputGroupCall,\n            joinParameters: joinParameters\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Joins a regular group call that is not bound to a chat\n    /// - Parameter inputGroupCall: The group call to join\n    /// - Parameter joinParameters: Parameters to join the call\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func joinGroupCall(\n        inputGroupCall: InputGroupCall?,\n        joinParameters: GroupCallJoinParameters?\n    ) async throws -> GroupCallInfo {\n        let query = JoinGroupCall(\n            inputGroupCall: inputGroupCall,\n            joinParameters: joinParameters\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Joins an active video chat. Returns join response payload for tgcalls\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter inviteHash: Invite hash as received from internalLinkTypeVideoChat\n    /// - Parameter joinParameters: Parameters to join the call\n    /// - Parameter participantId: Identifier of a group call participant, which will be used to join the call; pass null to join as self\n    /// - Returns: Join response payload for tgcalls\n    public func joinVideoChat(\n        groupCallId: Int?,\n        inviteHash: String?,\n        joinParameters: GroupCallJoinParameters?,\n        participantId: MessageSender?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = JoinVideoChat(\n            groupCallId: groupCallId,\n            inviteHash: inviteHash,\n            joinParameters: joinParameters,\n            participantId: participantId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Joins an active video chat. Returns join response payload for tgcalls\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter inviteHash: Invite hash as received from internalLinkTypeVideoChat\n    /// - Parameter joinParameters: Parameters to join the call\n    /// - Parameter participantId: Identifier of a group call participant, which will be used to join the call; pass null to join as self\n    /// - Returns: Join response payload for tgcalls\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func joinVideoChat(\n        groupCallId: Int?,\n        inviteHash: String?,\n        joinParameters: GroupCallJoinParameters?,\n        participantId: MessageSender?\n    ) async throws -> Text {\n        let query = JoinVideoChat(\n            groupCallId: groupCallId,\n            inviteHash: inviteHash,\n            joinParameters: joinParameters,\n            participantId: participantId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Joins a group call of an active live story. Returns join response payload for tgcalls\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter joinParameters: Parameters to join the call\n    /// - Returns: Join response payload for tgcalls\n    public func joinLiveStory(\n        groupCallId: Int?,\n        joinParameters: GroupCallJoinParameters?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = JoinLiveStory(\n            groupCallId: groupCallId,\n            joinParameters: joinParameters\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Joins a group call of an active live story. Returns join response payload for tgcalls\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter joinParameters: Parameters to join the call\n    /// - Returns: Join response payload for tgcalls\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func joinLiveStory(\n        groupCallId: Int?,\n        joinParameters: GroupCallJoinParameters?\n    ) async throws -> Text {\n        let query = JoinLiveStory(\n            groupCallId: groupCallId,\n            joinParameters: joinParameters\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Starts screen sharing in a joined group call; not supported in live stories. Returns join response payload for tgcalls\n    /// - Parameter audioSourceId: Screen sharing audio channel synchronization source identifier; received from tgcalls\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter payload: Group call join payload; received from tgcalls\n    /// - Returns: Join response payload for tgcalls\n    public func startGroupCallScreenSharing(\n        audioSourceId: Int?,\n        groupCallId: Int?,\n        payload: String?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = StartGroupCallScreenSharing(\n            audioSourceId: audioSourceId,\n            groupCallId: groupCallId,\n            payload: payload\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Starts screen sharing in a joined group call; not supported in live stories. Returns join response payload for tgcalls\n    /// - Parameter audioSourceId: Screen sharing audio channel synchronization source identifier; received from tgcalls\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter payload: Group call join payload; received from tgcalls\n    /// - Returns: Join response payload for tgcalls\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func startGroupCallScreenSharing(\n        audioSourceId: Int?,\n        groupCallId: Int?,\n        payload: String?\n    ) async throws -> Text {\n        let query = StartGroupCallScreenSharing(\n            audioSourceId: audioSourceId,\n            groupCallId: groupCallId,\n            payload: payload\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Pauses or unpauses screen sharing in a joined group call; not supported in live stories\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isPaused: Pass true to pause screen sharing; pass false to unpause it\n    public func toggleGroupCallScreenSharingIsPaused(\n        groupCallId: Int?,\n        isPaused: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleGroupCallScreenSharingIsPaused(\n            groupCallId: groupCallId,\n            isPaused: isPaused\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Pauses or unpauses screen sharing in a joined group call; not supported in live stories\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isPaused: Pass true to pause screen sharing; pass false to unpause it\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleGroupCallScreenSharingIsPaused(\n        groupCallId: Int?,\n        isPaused: Bool?\n    ) async throws -> Ok {\n        let query = ToggleGroupCallScreenSharingIsPaused(\n            groupCallId: groupCallId,\n            isPaused: isPaused\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Ends screen sharing in a joined group call; not supported in live stories\n    /// - Parameter groupCallId: Group call identifier\n    public func endGroupCallScreenSharing(\n        groupCallId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EndGroupCallScreenSharing(\n            groupCallId: groupCallId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Ends screen sharing in a joined group call; not supported in live stories\n    /// - Parameter groupCallId: Group call identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func endGroupCallScreenSharing(groupCallId: Int?) async throws -> Ok {\n        let query = EndGroupCallScreenSharing(\n            groupCallId: groupCallId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets title of a video chat; requires groupCall.can_be_managed right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter title: New group call title; 1-64 characters\n    public func setVideoChatTitle(\n        groupCallId: Int?,\n        title: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetVideoChatTitle(\n            groupCallId: groupCallId,\n            title: title\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets title of a video chat; requires groupCall.can_be_managed right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter title: New group call title; 1-64 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setVideoChatTitle(\n        groupCallId: Int?,\n        title: String?\n    ) async throws -> Ok {\n        let query = SetVideoChatTitle(\n            groupCallId: groupCallId,\n            title: title\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether new participants of a video chat can be unmuted only by administrators of the video chat. Requires groupCall.can_toggle_mute_new_participants right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter muteNewParticipants: New value of the mute_new_participants setting\n    public func toggleVideoChatMuteNewParticipants(\n        groupCallId: Int?,\n        muteNewParticipants: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleVideoChatMuteNewParticipants(\n            groupCallId: groupCallId,\n            muteNewParticipants: muteNewParticipants\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether new participants of a video chat can be unmuted only by administrators of the video chat. Requires groupCall.can_toggle_mute_new_participants right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter muteNewParticipants: New value of the mute_new_participants setting\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleVideoChatMuteNewParticipants(\n        groupCallId: Int?,\n        muteNewParticipants: Bool?\n    ) async throws -> Ok {\n        let query = ToggleVideoChatMuteNewParticipants(\n            groupCallId: groupCallId,\n            muteNewParticipants: muteNewParticipants\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether participants of a group call can send messages there. Requires groupCall.can_toggle_are_messages_allowed right\n    /// - Parameter areMessagesAllowed: New value of the are_messages_allowed setting\n    /// - Parameter groupCallId: Group call identifier\n    public func toggleGroupCallAreMessagesAllowed(\n        areMessagesAllowed: Bool?,\n        groupCallId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleGroupCallAreMessagesAllowed(\n            areMessagesAllowed: areMessagesAllowed,\n            groupCallId: groupCallId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether participants of a group call can send messages there. Requires groupCall.can_toggle_are_messages_allowed right\n    /// - Parameter areMessagesAllowed: New value of the are_messages_allowed setting\n    /// - Parameter groupCallId: Group call identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleGroupCallAreMessagesAllowed(\n        areMessagesAllowed: Bool?,\n        groupCallId: Int?\n    ) async throws -> Ok {\n        let query = ToggleGroupCallAreMessagesAllowed(\n            areMessagesAllowed: areMessagesAllowed,\n            groupCallId: groupCallId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about the user or the chat that streams to a live story; for live stories that aren't an RTMP stream only\n    /// - Parameter groupCallId: Group call identifier\n    /// - Returns: Information about the user or the chat that streams to a live story\n    public func getLiveStoryStreamer(\n        groupCallId: Int?,\n        completion: @escaping (Result<GroupCallParticipant, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLiveStoryStreamer(\n            groupCallId: groupCallId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about the user or the chat that streams to a live story; for live stories that aren't an RTMP stream only\n    /// - Parameter groupCallId: Group call identifier\n    /// - Returns: Information about the user or the chat that streams to a live story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getLiveStoryStreamer(groupCallId: Int?) async throws -> GroupCallParticipant {\n        let query = GetLiveStoryStreamer(\n            groupCallId: groupCallId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of message sender identifiers, on whose behalf messages can be sent to a live story\n    /// - Parameter groupCallId: Group call identifier\n    /// - Returns: The list of message sender identifiers, on whose behalf messages can be sent to a live story\n    public func getLiveStoryAvailableMessageSenders(\n        groupCallId: Int?,\n        completion: @escaping (Result<ChatMessageSenders, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLiveStoryAvailableMessageSenders(\n            groupCallId: groupCallId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of message sender identifiers, on whose behalf messages can be sent to a live story\n    /// - Parameter groupCallId: Group call identifier\n    /// - Returns: The list of message sender identifiers, on whose behalf messages can be sent to a live story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getLiveStoryAvailableMessageSenders(groupCallId: Int?) async throws -> ChatMessageSenders {\n        let query = GetLiveStoryAvailableMessageSenders(\n            groupCallId: groupCallId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Selects a message sender to send messages in a live story call\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter messageSenderId: New message sender for the group call\n    public func setLiveStoryMessageSender(\n        groupCallId: Int?,\n        messageSenderId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetLiveStoryMessageSender(\n            groupCallId: groupCallId,\n            messageSenderId: messageSenderId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Selects a message sender to send messages in a live story call\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter messageSenderId: New message sender for the group call\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setLiveStoryMessageSender(\n        groupCallId: Int?,\n        messageSenderId: MessageSender?\n    ) async throws -> Ok {\n        let query = SetLiveStoryMessageSender(\n            groupCallId: groupCallId,\n            messageSenderId: messageSenderId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends a message to other participants of a group call. Requires groupCall.can_send_messages right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter paidMessageStarCount: The number of Telegram Stars the user agreed to pay to send the message; for live stories only; 0-getOption(\"paid_group_call_message_star_count_max\"). Must be 0 for messages sent to live stories posted by the current user\n    /// - Parameter text: Text of the message to send; 1-getOption(\"group_call_message_text_length_max\") characters for non-live-stories; see updateGroupCallMessageLevels for live story restrictions, which depends on paid_message_star_count. Can't contain line feeds for live stories. Can contain only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities for live stories\n    public func sendGroupCallMessage(\n        groupCallId: Int?,\n        paidMessageStarCount: Int64?,\n        text: FormattedText?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendGroupCallMessage(\n            groupCallId: groupCallId,\n            paidMessageStarCount: paidMessageStarCount,\n            text: text\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends a message to other participants of a group call. Requires groupCall.can_send_messages right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter paidMessageStarCount: The number of Telegram Stars the user agreed to pay to send the message; for live stories only; 0-getOption(\"paid_group_call_message_star_count_max\"). Must be 0 for messages sent to live stories posted by the current user\n    /// - Parameter text: Text of the message to send; 1-getOption(\"group_call_message_text_length_max\") characters for non-live-stories; see updateGroupCallMessageLevels for live story restrictions, which depends on paid_message_star_count. Can't contain line feeds for live stories. Can contain only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities for live stories\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func sendGroupCallMessage(\n        groupCallId: Int?,\n        paidMessageStarCount: Int64?,\n        text: FormattedText?\n    ) async throws -> Ok {\n        let query = SendGroupCallMessage(\n            groupCallId: groupCallId,\n            paidMessageStarCount: paidMessageStarCount,\n            text: text\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds pending paid reaction in a live story group call. Can't be used in live stories posted by the current user. Call commitPendingLiveStoryReactions or removePendingLiveStoryReactions to actually send all pending reactions when the undo timer is over or abort the sending\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter starCount: Number of Telegram Stars to be used for the reaction. The total number of pending paid reactions must not exceed getOption(\"paid_group_call_message_star_count_max\")\n    public func addPendingLiveStoryReaction(\n        groupCallId: Int?,\n        starCount: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddPendingLiveStoryReaction(\n            groupCallId: groupCallId,\n            starCount: starCount\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds pending paid reaction in a live story group call. Can't be used in live stories posted by the current user. Call commitPendingLiveStoryReactions or removePendingLiveStoryReactions to actually send all pending reactions when the undo timer is over or abort the sending\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter starCount: Number of Telegram Stars to be used for the reaction. The total number of pending paid reactions must not exceed getOption(\"paid_group_call_message_star_count_max\")\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func addPendingLiveStoryReaction(\n        groupCallId: Int?,\n        starCount: Int64?\n    ) async throws -> Ok {\n        let query = AddPendingLiveStoryReaction(\n            groupCallId: groupCallId,\n            starCount: starCount\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Applies all pending paid reactions in a live story group call\n    /// - Parameter groupCallId: Group call identifier\n    public func commitPendingLiveStoryReactions(\n        groupCallId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CommitPendingLiveStoryReactions(\n            groupCallId: groupCallId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Applies all pending paid reactions in a live story group call\n    /// - Parameter groupCallId: Group call identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func commitPendingLiveStoryReactions(groupCallId: Int?) async throws -> Ok {\n        let query = CommitPendingLiveStoryReactions(\n            groupCallId: groupCallId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes all pending paid reactions in a live story group call\n    /// - Parameter groupCallId: Group call identifier\n    public func removePendingLiveStoryReactions(\n        groupCallId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemovePendingLiveStoryReactions(\n            groupCallId: groupCallId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes all pending paid reactions in a live story group call\n    /// - Parameter groupCallId: Group call identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removePendingLiveStoryReactions(groupCallId: Int?) async throws -> Ok {\n        let query = RemovePendingLiveStoryReactions(\n            groupCallId: groupCallId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes messages in a group call; for live story calls only. Requires groupCallMessage.can_be_deleted right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter messageIds: Identifiers of the messages to be deleted\n    /// - Parameter reportSpam: Pass true to report the messages as spam\n    public func deleteGroupCallMessages(\n        groupCallId: Int?,\n        messageIds: [Int]?,\n        reportSpam: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteGroupCallMessages(\n            groupCallId: groupCallId,\n            messageIds: messageIds,\n            reportSpam: reportSpam\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes messages in a group call; for live story calls only. Requires groupCallMessage.can_be_deleted right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter messageIds: Identifiers of the messages to be deleted\n    /// - Parameter reportSpam: Pass true to report the messages as spam\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteGroupCallMessages(\n        groupCallId: Int?,\n        messageIds: [Int]?,\n        reportSpam: Bool?\n    ) async throws -> Ok {\n        let query = DeleteGroupCallMessages(\n            groupCallId: groupCallId,\n            messageIds: messageIds,\n            reportSpam: reportSpam\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes all messages sent by the specified message sender in a group call; for live story calls only. Requires groupCall.can_delete_messages right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter reportSpam: Pass true to report the messages as spam\n    /// - Parameter senderId: Identifier of the sender of messages to delete\n    public func deleteGroupCallMessagesBySender(\n        groupCallId: Int?,\n        reportSpam: Bool?,\n        senderId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteGroupCallMessagesBySender(\n            groupCallId: groupCallId,\n            reportSpam: reportSpam,\n            senderId: senderId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes all messages sent by the specified message sender in a group call; for live story calls only. Requires groupCall.can_delete_messages right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter reportSpam: Pass true to report the messages as spam\n    /// - Parameter senderId: Identifier of the sender of messages to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteGroupCallMessagesBySender(\n        groupCallId: Int?,\n        reportSpam: Bool?,\n        senderId: MessageSender?\n    ) async throws -> Ok {\n        let query = DeleteGroupCallMessagesBySender(\n            groupCallId: groupCallId,\n            reportSpam: reportSpam,\n            senderId: senderId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of top live story donors\n    /// - Parameter groupCallId: Group call identifier of the live story\n    /// - Returns: The list of top live story donors\n    public func getLiveStoryTopDonors(\n        groupCallId: Int?,\n        completion: @escaping (Result<LiveStoryDonors, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLiveStoryTopDonors(\n            groupCallId: groupCallId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of top live story donors\n    /// - Parameter groupCallId: Group call identifier of the live story\n    /// - Returns: The list of top live story donors\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getLiveStoryTopDonors(groupCallId: Int?) async throws -> LiveStoryDonors {\n        let query = GetLiveStoryTopDonors(\n            groupCallId: groupCallId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Invites a user to an active group call; for group calls not bound to a chat only. Sends a service message of the type messageGroupCall. The group call can have at most getOption(\"group_call_participant_count_max\") participants\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isVideo: Pass true if the group call is a video call\n    /// - Parameter userId: User identifier\n    public func inviteGroupCallParticipant(\n        groupCallId: Int?,\n        isVideo: Bool?,\n        userId: Int64?,\n        completion: @escaping (Result<InviteGroupCallParticipantResult, Swift.Error>) -> Void\n    ) throws {\n        let query = InviteGroupCallParticipant(\n            groupCallId: groupCallId,\n            isVideo: isVideo,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Invites a user to an active group call; for group calls not bound to a chat only. Sends a service message of the type messageGroupCall. The group call can have at most getOption(\"group_call_participant_count_max\") participants\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isVideo: Pass true if the group call is a video call\n    /// - Parameter userId: User identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func inviteGroupCallParticipant(\n        groupCallId: Int?,\n        isVideo: Bool?,\n        userId: Int64?\n    ) async throws -> InviteGroupCallParticipantResult {\n        let query = InviteGroupCallParticipant(\n            groupCallId: groupCallId,\n            isVideo: isVideo,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Declines an invitation to an active group call via messageGroupCall. Can be called both by the sender and the receiver of the invitation\n    /// - Parameter chatId: Identifier of the chat with the message\n    /// - Parameter messageId: Identifier of the message of the type messageGroupCall\n    public func declineGroupCallInvitation(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeclineGroupCallInvitation(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Declines an invitation to an active group call via messageGroupCall. Can be called both by the sender and the receiver of the invitation\n    /// - Parameter chatId: Identifier of the chat with the message\n    /// - Parameter messageId: Identifier of the message of the type messageGroupCall\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func declineGroupCallInvitation(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = DeclineGroupCallInvitation(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Bans users from a group call not bound to a chat; requires groupCall.is_owned. Only the owner of the group call can invite the banned users back\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter userIds: Identifiers of group call participants to ban; identifiers of unknown users from the update updateGroupCallParticipants can be also passed to the method\n    public func banGroupCallParticipants(\n        groupCallId: Int?,\n        userIds: [TdInt64]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = BanGroupCallParticipants(\n            groupCallId: groupCallId,\n            userIds: userIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Bans users from a group call not bound to a chat; requires groupCall.is_owned. Only the owner of the group call can invite the banned users back\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter userIds: Identifiers of group call participants to ban; identifiers of unknown users from the update updateGroupCallParticipants can be also passed to the method\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func banGroupCallParticipants(\n        groupCallId: Int?,\n        userIds: [TdInt64]?\n    ) async throws -> Ok {\n        let query = BanGroupCallParticipants(\n            groupCallId: groupCallId,\n            userIds: userIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Invites users to an active video chat. Sends a service message of the type messageInviteVideoChatParticipants to the chat bound to the group call\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter userIds: User identifiers. At most 10 users can be invited simultaneously\n    public func inviteVideoChatParticipants(\n        groupCallId: Int?,\n        userIds: [Int64]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = InviteVideoChatParticipants(\n            groupCallId: groupCallId,\n            userIds: userIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Invites users to an active video chat. Sends a service message of the type messageInviteVideoChatParticipants to the chat bound to the group call\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter userIds: User identifiers. At most 10 users can be invited simultaneously\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func inviteVideoChatParticipants(\n        groupCallId: Int?,\n        userIds: [Int64]?\n    ) async throws -> Ok {\n        let query = InviteVideoChatParticipants(\n            groupCallId: groupCallId,\n            userIds: userIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns invite link to a video chat in a public chat\n    /// - Parameter canSelfUnmute: Pass true if the invite link needs to contain an invite hash, passing which to joinVideoChat would allow the invited user to unmute themselves. Requires groupCall.can_be_managed right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Returns: Invite link to a video chat in a public chat\n    public func getVideoChatInviteLink(\n        canSelfUnmute: Bool?,\n        groupCallId: Int?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetVideoChatInviteLink(\n            canSelfUnmute: canSelfUnmute,\n            groupCallId: groupCallId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns invite link to a video chat in a public chat\n    /// - Parameter canSelfUnmute: Pass true if the invite link needs to contain an invite hash, passing which to joinVideoChat would allow the invited user to unmute themselves. Requires groupCall.can_be_managed right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Returns: Invite link to a video chat in a public chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getVideoChatInviteLink(\n        canSelfUnmute: Bool?,\n        groupCallId: Int?\n    ) async throws -> HttpUrl {\n        let query = GetVideoChatInviteLink(\n            canSelfUnmute: canSelfUnmute,\n            groupCallId: groupCallId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Revokes invite link for a group call. Requires groupCall.can_be_managed right for video chats or groupCall.is_owned otherwise\n    /// - Parameter groupCallId: Group call identifier\n    public func revokeGroupCallInviteLink(\n        groupCallId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RevokeGroupCallInviteLink(\n            groupCallId: groupCallId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Revokes invite link for a group call. Requires groupCall.can_be_managed right for video chats or groupCall.is_owned otherwise\n    /// - Parameter groupCallId: Group call identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func revokeGroupCallInviteLink(groupCallId: Int?) async throws -> Ok {\n        let query = RevokeGroupCallInviteLink(\n            groupCallId: groupCallId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Starts recording of an active group call; for video chats only. Requires groupCall.can_be_managed right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter recordVideo: Pass true to record a video file instead of an audio file\n    /// - Parameter title: Group call recording title; 0-64 characters\n    /// - Parameter usePortraitOrientation: Pass true to use portrait orientation for video instead of landscape one\n    public func startGroupCallRecording(\n        groupCallId: Int?,\n        recordVideo: Bool?,\n        title: String?,\n        usePortraitOrientation: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = StartGroupCallRecording(\n            groupCallId: groupCallId,\n            recordVideo: recordVideo,\n            title: title,\n            usePortraitOrientation: usePortraitOrientation\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Starts recording of an active group call; for video chats only. Requires groupCall.can_be_managed right\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter recordVideo: Pass true to record a video file instead of an audio file\n    /// - Parameter title: Group call recording title; 0-64 characters\n    /// - Parameter usePortraitOrientation: Pass true to use portrait orientation for video instead of landscape one\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func startGroupCallRecording(\n        groupCallId: Int?,\n        recordVideo: Bool?,\n        title: String?,\n        usePortraitOrientation: Bool?\n    ) async throws -> Ok {\n        let query = StartGroupCallRecording(\n            groupCallId: groupCallId,\n            recordVideo: recordVideo,\n            title: title,\n            usePortraitOrientation: usePortraitOrientation\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Ends recording of an active group call; for video chats only. Requires groupCall.can_be_managed right\n    /// - Parameter groupCallId: Group call identifier\n    public func endGroupCallRecording(\n        groupCallId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EndGroupCallRecording(\n            groupCallId: groupCallId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Ends recording of an active group call; for video chats only. Requires groupCall.can_be_managed right\n    /// - Parameter groupCallId: Group call identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func endGroupCallRecording(groupCallId: Int?) async throws -> Ok {\n        let query = EndGroupCallRecording(\n            groupCallId: groupCallId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether current user's video is paused\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isMyVideoPaused: Pass true if the current user's video is paused\n    public func toggleGroupCallIsMyVideoPaused(\n        groupCallId: Int?,\n        isMyVideoPaused: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleGroupCallIsMyVideoPaused(\n            groupCallId: groupCallId,\n            isMyVideoPaused: isMyVideoPaused\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether current user's video is paused\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isMyVideoPaused: Pass true if the current user's video is paused\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleGroupCallIsMyVideoPaused(\n        groupCallId: Int?,\n        isMyVideoPaused: Bool?\n    ) async throws -> Ok {\n        let query = ToggleGroupCallIsMyVideoPaused(\n            groupCallId: groupCallId,\n            isMyVideoPaused: isMyVideoPaused\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether current user's video is enabled\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isMyVideoEnabled: Pass true if the current user's video is enabled\n    public func toggleGroupCallIsMyVideoEnabled(\n        groupCallId: Int?,\n        isMyVideoEnabled: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleGroupCallIsMyVideoEnabled(\n            groupCallId: groupCallId,\n            isMyVideoEnabled: isMyVideoEnabled\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether current user's video is enabled\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isMyVideoEnabled: Pass true if the current user's video is enabled\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleGroupCallIsMyVideoEnabled(\n        groupCallId: Int?,\n        isMyVideoEnabled: Bool?\n    ) async throws -> Ok {\n        let query = ToggleGroupCallIsMyVideoEnabled(\n            groupCallId: groupCallId,\n            isMyVideoEnabled: isMyVideoEnabled\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the minimum number of Telegram Stars that must be paid by general participant for each sent message to a live story call. Requires groupCall.can_be_managed right\n    /// - Parameter groupCallId: Group call identifier; must be an identifier of a live story call\n    /// - Parameter paidMessageStarCount: The new minimum number of Telegram Stars; 0-getOption(\"paid_group_call_message_star_count_max\")\n    public func setGroupCallPaidMessageStarCount(\n        groupCallId: Int?,\n        paidMessageStarCount: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetGroupCallPaidMessageStarCount(\n            groupCallId: groupCallId,\n            paidMessageStarCount: paidMessageStarCount\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the minimum number of Telegram Stars that must be paid by general participant for each sent message to a live story call. Requires groupCall.can_be_managed right\n    /// - Parameter groupCallId: Group call identifier; must be an identifier of a live story call\n    /// - Parameter paidMessageStarCount: The new minimum number of Telegram Stars; 0-getOption(\"paid_group_call_message_star_count_max\")\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setGroupCallPaidMessageStarCount(\n        groupCallId: Int?,\n        paidMessageStarCount: Int64?\n    ) async throws -> Ok {\n        let query = SetGroupCallPaidMessageStarCount(\n            groupCallId: groupCallId,\n            paidMessageStarCount: paidMessageStarCount\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that speaking state of a participant of an active group call has changed. Returns identifier of the participant if it is found\n    /// - Parameter audioSource: Group call participant's synchronization audio source identifier, or 0 for the current user\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isSpeaking: Pass true if the user is speaking\n    /// - Returns: Identifier of the participant if it is found\n    public func setGroupCallParticipantIsSpeaking(\n        audioSource: Int?,\n        groupCallId: Int?,\n        isSpeaking: Bool?,\n        completion: @escaping (Result<MessageSender, Swift.Error>) -> Void\n    ) throws {\n        let query = SetGroupCallParticipantIsSpeaking(\n            audioSource: audioSource,\n            groupCallId: groupCallId,\n            isSpeaking: isSpeaking\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that speaking state of a participant of an active group call has changed. Returns identifier of the participant if it is found\n    /// - Parameter audioSource: Group call participant's synchronization audio source identifier, or 0 for the current user\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isSpeaking: Pass true if the user is speaking\n    /// - Returns: Identifier of the participant if it is found\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func setGroupCallParticipantIsSpeaking(\n        audioSource: Int?,\n        groupCallId: Int?,\n        isSpeaking: Bool?\n    ) async throws -> MessageSender {\n        let query = SetGroupCallParticipantIsSpeaking(\n            audioSource: audioSource,\n            groupCallId: groupCallId,\n            isSpeaking: isSpeaking\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether a participant of an active group call is muted, unmuted, or allowed to unmute themselves; not supported for live stories\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isMuted: Pass true to mute the user; pass false to unmute them\n    /// - Parameter participantId: Participant identifier\n    public func toggleGroupCallParticipantIsMuted(\n        groupCallId: Int?,\n        isMuted: Bool?,\n        participantId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleGroupCallParticipantIsMuted(\n            groupCallId: groupCallId,\n            isMuted: isMuted,\n            participantId: participantId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether a participant of an active group call is muted, unmuted, or allowed to unmute themselves; not supported for live stories\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isMuted: Pass true to mute the user; pass false to unmute them\n    /// - Parameter participantId: Participant identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleGroupCallParticipantIsMuted(\n        groupCallId: Int?,\n        isMuted: Bool?,\n        participantId: MessageSender?\n    ) async throws -> Ok {\n        let query = ToggleGroupCallParticipantIsMuted(\n            groupCallId: groupCallId,\n            isMuted: isMuted,\n            participantId: participantId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes volume level of a participant of an active group call; not supported for live stories. If the current user can manage the group call or is the owner of the group call, then the participant's volume level will be changed for all users with the default volume level\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter participantId: Participant identifier\n    /// - Parameter volumeLevel: New participant's volume level; 1-20000 in hundreds of percents\n    public func setGroupCallParticipantVolumeLevel(\n        groupCallId: Int?,\n        participantId: MessageSender?,\n        volumeLevel: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetGroupCallParticipantVolumeLevel(\n            groupCallId: groupCallId,\n            participantId: participantId,\n            volumeLevel: volumeLevel\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes volume level of a participant of an active group call; not supported for live stories. If the current user can manage the group call or is the owner of the group call, then the participant's volume level will be changed for all users with the default volume level\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter participantId: Participant identifier\n    /// - Parameter volumeLevel: New participant's volume level; 1-20000 in hundreds of percents\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setGroupCallParticipantVolumeLevel(\n        groupCallId: Int?,\n        participantId: MessageSender?,\n        volumeLevel: Int?\n    ) async throws -> Ok {\n        let query = SetGroupCallParticipantVolumeLevel(\n            groupCallId: groupCallId,\n            participantId: participantId,\n            volumeLevel: volumeLevel\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether a group call participant hand is rased; for video chats only\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isHandRaised: Pass true if the user's hand needs to be raised. Only self hand can be raised. Requires groupCall.can_be_managed right to lower other's hand\n    /// - Parameter participantId: Participant identifier\n    public func toggleGroupCallParticipantIsHandRaised(\n        groupCallId: Int?,\n        isHandRaised: Bool?,\n        participantId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleGroupCallParticipantIsHandRaised(\n            groupCallId: groupCallId,\n            isHandRaised: isHandRaised,\n            participantId: participantId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether a group call participant hand is rased; for video chats only\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter isHandRaised: Pass true if the user's hand needs to be raised. Only self hand can be raised. Requires groupCall.can_be_managed right to lower other's hand\n    /// - Parameter participantId: Participant identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleGroupCallParticipantIsHandRaised(\n        groupCallId: Int?,\n        isHandRaised: Bool?,\n        participantId: MessageSender?\n    ) async throws -> Ok {\n        let query = ToggleGroupCallParticipantIsHandRaised(\n            groupCallId: groupCallId,\n            isHandRaised: isHandRaised,\n            participantId: participantId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about participants of a non-joined group call that is not bound to a chat\n    /// - Parameter inputGroupCall: The group call which participants will be returned\n    /// - Parameter limit: The maximum number of participants to return; must be positive\n    /// - Returns: Information about participants of a non-joined group call that is not bound to a chat\n    public func getGroupCallParticipants(\n        inputGroupCall: InputGroupCall?,\n        limit: Int?,\n        completion: @escaping (Result<GroupCallParticipants, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGroupCallParticipants(\n            inputGroupCall: inputGroupCall,\n            limit: limit\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about participants of a non-joined group call that is not bound to a chat\n    /// - Parameter inputGroupCall: The group call which participants will be returned\n    /// - Parameter limit: The maximum number of participants to return; must be positive\n    /// - Returns: Information about participants of a non-joined group call that is not bound to a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getGroupCallParticipants(\n        inputGroupCall: InputGroupCall?,\n        limit: Int?\n    ) async throws -> GroupCallParticipants {\n        let query = GetGroupCallParticipants(\n            inputGroupCall: inputGroupCall,\n            limit: limit\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Loads more participants of a group call; not supported in live stories. The loaded participants will be received through updates. Use the field groupCall.loaded_all_participants to check whether all participants have already been loaded\n    /// - Parameter groupCallId: Group call identifier. The group call must be previously received through getGroupCall and must be joined or being joined\n    /// - Parameter limit: The maximum number of participants to load; up to 100\n    public func loadGroupCallParticipants(\n        groupCallId: Int?,\n        limit: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = LoadGroupCallParticipants(\n            groupCallId: groupCallId,\n            limit: limit\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Loads more participants of a group call; not supported in live stories. The loaded participants will be received through updates. Use the field groupCall.loaded_all_participants to check whether all participants have already been loaded\n    /// - Parameter groupCallId: Group call identifier. The group call must be previously received through getGroupCall and must be joined or being joined\n    /// - Parameter limit: The maximum number of participants to load; up to 100\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func loadGroupCallParticipants(\n        groupCallId: Int?,\n        limit: Int?\n    ) async throws -> Ok {\n        let query = LoadGroupCallParticipants(\n            groupCallId: groupCallId,\n            limit: limit\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Leaves a group call\n    /// - Parameter groupCallId: Group call identifier\n    public func leaveGroupCall(\n        groupCallId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = LeaveGroupCall(\n            groupCallId: groupCallId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Leaves a group call\n    /// - Parameter groupCallId: Group call identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func leaveGroupCall(groupCallId: Int?) async throws -> Ok {\n        let query = LeaveGroupCall(\n            groupCallId: groupCallId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Ends a group call. Requires groupCall.can_be_managed right for video chats and live stories or groupCall.is_owned otherwise\n    /// - Parameter groupCallId: Group call identifier\n    public func endGroupCall(\n        groupCallId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EndGroupCall(\n            groupCallId: groupCallId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Ends a group call. Requires groupCall.can_be_managed right for video chats and live stories or groupCall.is_owned otherwise\n    /// - Parameter groupCallId: Group call identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func endGroupCall(groupCallId: Int?) async throws -> Ok {\n        let query = EndGroupCall(\n            groupCallId: groupCallId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about available streams in a video chat or a live story\n    /// - Parameter groupCallId: Group call identifier\n    /// - Returns: Information about available streams in a video chat or a live story\n    public func getGroupCallStreams(\n        groupCallId: Int?,\n        completion: @escaping (Result<GroupCallStreams, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGroupCallStreams(\n            groupCallId: groupCallId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about available streams in a video chat or a live story\n    /// - Parameter groupCallId: Group call identifier\n    /// - Returns: Information about available streams in a video chat or a live story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getGroupCallStreams(groupCallId: Int?) async throws -> GroupCallStreams {\n        let query = GetGroupCallStreams(\n            groupCallId: groupCallId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a file with a segment of a video chat or live story in a modified OGG format for audio or MPEG-4 format for video\n    /// - Parameter channelId: Identifier of an audio/video channel to get as received from tgcalls\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter scale: Segment duration scale; 0-1. Segment's duration is 1000/(2**scale) milliseconds\n    /// - Parameter timeOffset: Point in time when the stream segment begins; Unix timestamp in milliseconds\n    /// - Parameter videoQuality: Video quality as received from tgcalls; pass null to get the worst available quality\n    /// - Returns: A file with a segment of a video chat or live story in a modified OGG format for audio or MPEG-4 format for video\n    public func getGroupCallStreamSegment(\n        channelId: Int?,\n        groupCallId: Int?,\n        scale: Int?,\n        timeOffset: Int64?,\n        videoQuality: GroupCallVideoQuality?,\n        completion: @escaping (Result<TdData, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGroupCallStreamSegment(\n            channelId: channelId,\n            groupCallId: groupCallId,\n            scale: scale,\n            timeOffset: timeOffset,\n            videoQuality: videoQuality\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a file with a segment of a video chat or live story in a modified OGG format for audio or MPEG-4 format for video\n    /// - Parameter channelId: Identifier of an audio/video channel to get as received from tgcalls\n    /// - Parameter groupCallId: Group call identifier\n    /// - Parameter scale: Segment duration scale; 0-1. Segment's duration is 1000/(2**scale) milliseconds\n    /// - Parameter timeOffset: Point in time when the stream segment begins; Unix timestamp in milliseconds\n    /// - Parameter videoQuality: Video quality as received from tgcalls; pass null to get the worst available quality\n    /// - Returns: A file with a segment of a video chat or live story in a modified OGG format for audio or MPEG-4 format for video\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getGroupCallStreamSegment(\n        channelId: Int?,\n        groupCallId: Int?,\n        scale: Int?,\n        timeOffset: Int64?,\n        videoQuality: GroupCallVideoQuality?\n    ) async throws -> TdData {\n        let query = GetGroupCallStreamSegment(\n            channelId: channelId,\n            groupCallId: groupCallId,\n            scale: scale,\n            timeOffset: timeOffset,\n            videoQuality: videoQuality\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Encrypts group call data before sending them over network using tgcalls\n    /// - Parameter data: Data to encrypt\n    /// - Parameter dataChannel: Data channel for which data is encrypted\n    /// - Parameter groupCallId: Group call identifier. The call must not be a video chat\n    /// - Parameter unencryptedPrefixSize: Size of data prefix that must be kept unencrypted\n    public func encryptGroupCallData(\n        data: Data?,\n        dataChannel: GroupCallDataChannel?,\n        groupCallId: Int?,\n        unencryptedPrefixSize: Int?,\n        completion: @escaping (Result<TdData, Swift.Error>) -> Void\n    ) throws {\n        let query = EncryptGroupCallData(\n            data: data,\n            dataChannel: dataChannel,\n            groupCallId: groupCallId,\n            unencryptedPrefixSize: unencryptedPrefixSize\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Encrypts group call data before sending them over network using tgcalls\n    /// - Parameter data: Data to encrypt\n    /// - Parameter dataChannel: Data channel for which data is encrypted\n    /// - Parameter groupCallId: Group call identifier. The call must not be a video chat\n    /// - Parameter unencryptedPrefixSize: Size of data prefix that must be kept unencrypted\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func encryptGroupCallData(\n        data: Data?,\n        dataChannel: GroupCallDataChannel?,\n        groupCallId: Int?,\n        unencryptedPrefixSize: Int?\n    ) async throws -> TdData {\n        let query = EncryptGroupCallData(\n            data: data,\n            dataChannel: dataChannel,\n            groupCallId: groupCallId,\n            unencryptedPrefixSize: unencryptedPrefixSize\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Decrypts group call data received by tgcalls\n    /// - Parameter data: Data to decrypt\n    /// - Parameter dataChannel: Data channel for which data was encrypted; pass null if unknown\n    /// - Parameter groupCallId: Group call identifier. The call must not be a video chat\n    /// - Parameter participantId: Identifier of the group call participant, which sent the data\n    public func decryptGroupCallData(\n        data: Data?,\n        dataChannel: GroupCallDataChannel?,\n        groupCallId: Int?,\n        participantId: MessageSender?,\n        completion: @escaping (Result<TdData, Swift.Error>) -> Void\n    ) throws {\n        let query = DecryptGroupCallData(\n            data: data,\n            dataChannel: dataChannel,\n            groupCallId: groupCallId,\n            participantId: participantId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Decrypts group call data received by tgcalls\n    /// - Parameter data: Data to decrypt\n    /// - Parameter dataChannel: Data channel for which data was encrypted; pass null if unknown\n    /// - Parameter groupCallId: Group call identifier. The call must not be a video chat\n    /// - Parameter participantId: Identifier of the group call participant, which sent the data\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func decryptGroupCallData(\n        data: Data?,\n        dataChannel: GroupCallDataChannel?,\n        groupCallId: Int?,\n        participantId: MessageSender?\n    ) async throws -> TdData {\n        let query = DecryptGroupCallData(\n            data: data,\n            dataChannel: dataChannel,\n            groupCallId: groupCallId,\n            participantId: participantId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the block list of a message sender. Currently, only users and supergroup chats can be blocked\n    /// - Parameter blockList: New block list for the message sender; pass null to unblock the message sender\n    /// - Parameter senderId: Identifier of a message sender to block/unblock\n    public func setMessageSenderBlockList(\n        blockList: BlockList?,\n        senderId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetMessageSenderBlockList(\n            blockList: blockList,\n            senderId: senderId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the block list of a message sender. Currently, only users and supergroup chats can be blocked\n    /// - Parameter blockList: New block list for the message sender; pass null to unblock the message sender\n    /// - Parameter senderId: Identifier of a message sender to block/unblock\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setMessageSenderBlockList(\n        blockList: BlockList?,\n        senderId: MessageSender?\n    ) async throws -> Ok {\n        let query = SetMessageSenderBlockList(\n            blockList: blockList,\n            senderId: senderId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Blocks an original sender of a message in the Replies chat\n    /// - Parameter deleteAllMessages: Pass true to delete all messages from the same sender\n    /// - Parameter deleteMessage: Pass true to delete the message\n    /// - Parameter messageId: The identifier of an incoming message in the Replies chat\n    /// - Parameter reportSpam: Pass true to report the sender to the Telegram moderators\n    public func blockMessageSenderFromReplies(\n        deleteAllMessages: Bool?,\n        deleteMessage: Bool?,\n        messageId: Int64?,\n        reportSpam: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = BlockMessageSenderFromReplies(\n            deleteAllMessages: deleteAllMessages,\n            deleteMessage: deleteMessage,\n            messageId: messageId,\n            reportSpam: reportSpam\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Blocks an original sender of a message in the Replies chat\n    /// - Parameter deleteAllMessages: Pass true to delete all messages from the same sender\n    /// - Parameter deleteMessage: Pass true to delete the message\n    /// - Parameter messageId: The identifier of an incoming message in the Replies chat\n    /// - Parameter reportSpam: Pass true to report the sender to the Telegram moderators\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func blockMessageSenderFromReplies(\n        deleteAllMessages: Bool?,\n        deleteMessage: Bool?,\n        messageId: Int64?,\n        reportSpam: Bool?\n    ) async throws -> Ok {\n        let query = BlockMessageSenderFromReplies(\n            deleteAllMessages: deleteAllMessages,\n            deleteMessage: deleteMessage,\n            messageId: messageId,\n            reportSpam: reportSpam\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns users and chats that were blocked by the current user\n    /// - Parameter blockList: Block list from which to return users\n    /// - Parameter limit: The maximum number of users and chats to return; up to 100\n    /// - Parameter offset: Number of users and chats to skip in the result; must be non-negative\n    /// - Returns: Users and chats that were blocked by the current user\n    public func getBlockedMessageSenders(\n        blockList: BlockList?,\n        limit: Int?,\n        offset: Int?,\n        completion: @escaping (Result<MessageSenders, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBlockedMessageSenders(\n            blockList: blockList,\n            limit: limit,\n            offset: offset\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns users and chats that were blocked by the current user\n    /// - Parameter blockList: Block list from which to return users\n    /// - Parameter limit: The maximum number of users and chats to return; up to 100\n    /// - Parameter offset: Number of users and chats to skip in the result; must be non-negative\n    /// - Returns: Users and chats that were blocked by the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getBlockedMessageSenders(\n        blockList: BlockList?,\n        limit: Int?,\n        offset: Int?\n    ) async throws -> MessageSenders {\n        let query = GetBlockedMessageSenders(\n            blockList: blockList,\n            limit: limit,\n            offset: offset\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds a user to the contact list or edits an existing contact by their user identifier\n    /// - Parameter contact: The contact to add or edit; phone number may be empty and needs to be specified only if known\n    /// - Parameter sharePhoneNumber: Pass true to share the current user's phone number with the new contact. A corresponding rule to userPrivacySettingShowPhoneNumber will be added if needed. Use the field userFullInfo.need_phone_number_privacy_exception to check whether the current user needs to be asked to share their phone number\n    /// - Parameter userId: Identifier of the user\n    public func addContact(\n        contact: ImportedContact?,\n        sharePhoneNumber: Bool?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddContact(\n            contact: contact,\n            sharePhoneNumber: sharePhoneNumber,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds a user to the contact list or edits an existing contact by their user identifier\n    /// - Parameter contact: The contact to add or edit; phone number may be empty and needs to be specified only if known\n    /// - Parameter sharePhoneNumber: Pass true to share the current user's phone number with the new contact. A corresponding rule to userPrivacySettingShowPhoneNumber will be added if needed. Use the field userFullInfo.need_phone_number_privacy_exception to check whether the current user needs to be asked to share their phone number\n    /// - Parameter userId: Identifier of the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func addContact(\n        contact: ImportedContact?,\n        sharePhoneNumber: Bool?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = AddContact(\n            contact: contact,\n            sharePhoneNumber: sharePhoneNumber,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds new contacts or edits existing contacts by their phone numbers; contacts' user identifiers are ignored\n    /// - Parameter contacts: The list of contacts to import or edit\n    public func importContacts(\n        contacts: [ImportedContact]?,\n        completion: @escaping (Result<ImportedContacts, Swift.Error>) -> Void\n    ) throws {\n        let query = ImportContacts(\n            contacts: contacts\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds new contacts or edits existing contacts by their phone numbers; contacts' user identifiers are ignored\n    /// - Parameter contacts: The list of contacts to import or edit\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func importContacts(contacts: [ImportedContact]?) async throws -> ImportedContacts {\n        let query = ImportContacts(\n            contacts: contacts\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns all contacts of the user\n    /// - Returns: All contacts of the user\n    public func getContacts(completion: @escaping (Result<Users, Swift.Error>) -> Void) throws {\n        let query = GetContacts()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns all contacts of the user\n    /// - Returns: All contacts of the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getContacts() async throws -> Users {\n        let query = GetContacts()\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for the specified query in the first names, last names and usernames of the known user contacts\n    /// - Parameter limit: The maximum number of users to be returned\n    /// - Parameter query: Query to search for; may be empty to return all contacts\n    public func searchContacts(\n        limit: Int?,\n        query: String?,\n        completion: @escaping (Result<Users, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchContacts(\n            limit: limit,\n            query: query\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for the specified query in the first names, last names and usernames of the known user contacts\n    /// - Parameter limit: The maximum number of users to be returned\n    /// - Parameter query: Query to search for; may be empty to return all contacts\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchContacts(\n        limit: Int?,\n        query: String?\n    ) async throws -> Users {\n        let query = SearchContacts(\n            limit: limit,\n            query: query\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes users from the contact list\n    /// - Parameter userIds: Identifiers of users to be deleted\n    public func removeContacts(\n        userIds: [Int64]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveContacts(\n            userIds: userIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes users from the contact list\n    /// - Parameter userIds: Identifiers of users to be deleted\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeContacts(userIds: [Int64]?) async throws -> Ok {\n        let query = RemoveContacts(\n            userIds: userIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the total number of imported contacts\n    /// - Returns: The total number of imported contacts\n    public func getImportedContactCount(completion: @escaping (Result<Count, Swift.Error>) -> Void) throws {\n        let query = GetImportedContactCount()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the total number of imported contacts\n    /// - Returns: The total number of imported contacts\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getImportedContactCount() async throws -> Count {\n        let query = GetImportedContactCount()\n        return try await self.execute(query: query)\n    }\n\n    /// Changes imported contacts using the list of contacts saved on the device. Imports newly added contacts and, if at least the file database is enabled, deletes recently deleted contacts. Query result depends on the result of the previous query, so only one query is possible at the same time\n    /// - Parameter contacts: The new list of contacts to import\n    public func changeImportedContacts(\n        contacts: [ImportedContact]?,\n        completion: @escaping (Result<ImportedContacts, Swift.Error>) -> Void\n    ) throws {\n        let query = ChangeImportedContacts(\n            contacts: contacts\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes imported contacts using the list of contacts saved on the device. Imports newly added contacts and, if at least the file database is enabled, deletes recently deleted contacts. Query result depends on the result of the previous query, so only one query is possible at the same time\n    /// - Parameter contacts: The new list of contacts to import\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func changeImportedContacts(contacts: [ImportedContact]?) async throws -> ImportedContacts {\n        let query = ChangeImportedContacts(\n            contacts: contacts\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Clears all imported contacts, contact list remains unchanged\n    public func clearImportedContacts(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ClearImportedContacts()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Clears all imported contacts, contact list remains unchanged\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func clearImportedContacts() async throws -> Ok {\n        let query = ClearImportedContacts()\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the list of close friends of the current user\n    /// - Parameter userIds: User identifiers of close friends; the users must be contacts of the current user\n    public func setCloseFriends(\n        userIds: [Int64]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetCloseFriends(\n            userIds: userIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the list of close friends of the current user\n    /// - Parameter userIds: User identifiers of close friends; the users must be contacts of the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setCloseFriends(userIds: [Int64]?) async throws -> Ok {\n        let query = SetCloseFriends(\n            userIds: userIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns all close friends of the current user\n    /// - Returns: All close friends of the current user\n    public func getCloseFriends(completion: @escaping (Result<Users, Swift.Error>) -> Void) throws {\n        let query = GetCloseFriends()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns all close friends of the current user\n    /// - Returns: All close friends of the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getCloseFriends() async throws -> Users {\n        let query = GetCloseFriends()\n        return try await self.execute(query: query)\n    }\n\n    /// Changes a personal profile photo of a contact user\n    /// - Parameter photo: Profile photo to set; pass null to delete the photo; inputChatPhotoPrevious isn't supported in this function\n    /// - Parameter userId: User identifier\n    public func setUserPersonalProfilePhoto(\n        photo: InputChatPhoto?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetUserPersonalProfilePhoto(\n            photo: photo,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes a personal profile photo of a contact user\n    /// - Parameter photo: Profile photo to set; pass null to delete the photo; inputChatPhotoPrevious isn't supported in this function\n    /// - Parameter userId: User identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setUserPersonalProfilePhoto(\n        photo: InputChatPhoto?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = SetUserPersonalProfilePhoto(\n            photo: photo,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes a note of a contact user\n    /// - Parameter note: Note to set for the user; 0-getOption(\"user_note_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed\n    /// - Parameter userId: User identifier\n    public func setUserNote(\n        note: FormattedText?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetUserNote(\n            note: note,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes a note of a contact user\n    /// - Parameter note: Note to set for the user; 0-getOption(\"user_note_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed\n    /// - Parameter userId: User identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setUserNote(\n        note: FormattedText?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = SetUserNote(\n            note: note,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Suggests a profile photo to another regular user with common messages and allowing non-paid messages\n    /// - Parameter photo: Profile photo to suggest; inputChatPhotoPrevious isn't supported in this function\n    /// - Parameter userId: User identifier\n    public func suggestUserProfilePhoto(\n        photo: InputChatPhoto?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SuggestUserProfilePhoto(\n            photo: photo,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Suggests a profile photo to another regular user with common messages and allowing non-paid messages\n    /// - Parameter photo: Profile photo to suggest; inputChatPhotoPrevious isn't supported in this function\n    /// - Parameter userId: User identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func suggestUserProfilePhoto(\n        photo: InputChatPhoto?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = SuggestUserProfilePhoto(\n            photo: photo,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Suggests a birthdate to another regular user with common messages and allowing non-paid messages\n    /// - Parameter birthdate: Birthdate to suggest\n    /// - Parameter userId: User identifier\n    public func suggestUserBirthdate(\n        birthdate: Birthdate?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SuggestUserBirthdate(\n            birthdate: birthdate,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Suggests a birthdate to another regular user with common messages and allowing non-paid messages\n    /// - Parameter birthdate: Birthdate to suggest\n    /// - Parameter userId: User identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func suggestUserBirthdate(\n        birthdate: Birthdate?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = SuggestUserBirthdate(\n            birthdate: birthdate,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether the bot can manage emoji status of the current user\n    /// - Parameter botUserId: User identifier of the bot\n    /// - Parameter canManageEmojiStatus: Pass true if the bot is allowed to change emoji status of the user; pass false otherwise\n    public func toggleBotCanManageEmojiStatus(\n        botUserId: Int64?,\n        canManageEmojiStatus: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleBotCanManageEmojiStatus(\n            botUserId: botUserId,\n            canManageEmojiStatus: canManageEmojiStatus\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether the bot can manage emoji status of the current user\n    /// - Parameter botUserId: User identifier of the bot\n    /// - Parameter canManageEmojiStatus: Pass true if the bot is allowed to change emoji status of the user; pass false otherwise\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleBotCanManageEmojiStatus(\n        botUserId: Int64?,\n        canManageEmojiStatus: Bool?\n    ) async throws -> Ok {\n        let query = ToggleBotCanManageEmojiStatus(\n            botUserId: botUserId,\n            canManageEmojiStatus: canManageEmojiStatus\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the emoji status of a user; for bots only\n    /// - Parameter emojiStatus: New emoji status; pass null to switch to the default badge\n    /// - Parameter userId: Identifier of the user\n    public func setUserEmojiStatus(\n        emojiStatus: EmojiStatus?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetUserEmojiStatus(\n            emojiStatus: emojiStatus,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the emoji status of a user; for bots only\n    /// - Parameter emojiStatus: New emoji status; pass null to switch to the default badge\n    /// - Parameter userId: Identifier of the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setUserEmojiStatus(\n        emojiStatus: EmojiStatus?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = SetUserEmojiStatus(\n            emojiStatus: emojiStatus,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns messages in the personal chat of a given user; for bots only\n    /// - Parameter limit: The maximum number of messages to be returned; 1-20\n    /// - Parameter userId: User identifier\n    /// - Returns: Messages in the personal chat of a given user\n    public func getPersonalChatHistory(\n        limit: Int?,\n        userId: Int64?,\n        completion: @escaping (Result<Messages, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPersonalChatHistory(\n            limit: limit,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns messages in the personal chat of a given user; for bots only\n    /// - Parameter limit: The maximum number of messages to be returned; 1-20\n    /// - Parameter userId: User identifier\n    /// - Returns: Messages in the personal chat of a given user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPersonalChatHistory(\n        limit: Int?,\n        userId: Int64?\n    ) async throws -> Messages {\n        let query = GetPersonalChatHistory(\n            limit: limit,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches a user by their phone number. Returns a 404 error if the user can't be found\n    /// - Parameter onlyLocal: Pass true to get only locally available information without sending network requests\n    /// - Parameter phoneNumber: Phone number to search for\n    /// - Returns: A 404 error if the user can't be found\n    public func searchUserByPhoneNumber(\n        onlyLocal: Bool?,\n        phoneNumber: String?,\n        completion: @escaping (Result<User, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchUserByPhoneNumber(\n            onlyLocal: onlyLocal,\n            phoneNumber: phoneNumber\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches a user by their phone number. Returns a 404 error if the user can't be found\n    /// - Parameter onlyLocal: Pass true to get only locally available information without sending network requests\n    /// - Parameter phoneNumber: Phone number to search for\n    /// - Returns: A 404 error if the user can't be found\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchUserByPhoneNumber(\n        onlyLocal: Bool?,\n        phoneNumber: String?\n    ) async throws -> User {\n        let query = SearchUserByPhoneNumber(\n            onlyLocal: onlyLocal,\n            phoneNumber: phoneNumber\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Shares the phone number of the current user with a mutual contact. Supposed to be called when the user clicks on chatActionBarSharePhoneNumber\n    /// - Parameter userId: Identifier of the user with whom to share the phone number. The user must be a mutual contact\n    public func sharePhoneNumber(\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SharePhoneNumber(\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Shares the phone number of the current user with a mutual contact. Supposed to be called when the user clicks on chatActionBarSharePhoneNumber\n    /// - Parameter userId: Identifier of the user with whom to share the phone number. The user must be a mutual contact\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func sharePhoneNumber(userId: Int64?) async throws -> Ok {\n        let query = SharePhoneNumber(\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the profile photos of a user. Personal and public photo aren't returned\n    /// - Parameter limit: The maximum number of photos to be returned; up to 100\n    /// - Parameter offset: The number of photos to skip; must be non-negative\n    /// - Parameter userId: User identifier\n    /// - Returns: The profile photos of a user. Personal and public photo aren't returned\n    public func getUserProfilePhotos(\n        limit: Int?,\n        offset: Int?,\n        userId: Int64?,\n        completion: @escaping (Result<ChatPhotos, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUserProfilePhotos(\n            limit: limit,\n            offset: offset,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the profile photos of a user. Personal and public photo aren't returned\n    /// - Parameter limit: The maximum number of photos to be returned; up to 100\n    /// - Parameter offset: The number of photos to skip; must be non-negative\n    /// - Parameter userId: User identifier\n    /// - Returns: The profile photos of a user. Personal and public photo aren't returned\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getUserProfilePhotos(\n        limit: Int?,\n        offset: Int?,\n        userId: Int64?\n    ) async throws -> ChatPhotos {\n        let query = GetUserProfilePhotos(\n            limit: limit,\n            offset: offset,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of profile audio files of a user\n    /// - Parameter limit: The maximum number of audio files to be returned; up to 100\n    /// - Parameter offset: The number of audio files to skip; must be non-negative\n    /// - Parameter userId: User identifier\n    /// - Returns: The list of profile audio files of a user\n    public func getUserProfileAudios(\n        limit: Int?,\n        offset: Int?,\n        userId: Int64?,\n        completion: @escaping (Result<Audios, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUserProfileAudios(\n            limit: limit,\n            offset: offset,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of profile audio files of a user\n    /// - Parameter limit: The maximum number of audio files to be returned; up to 100\n    /// - Parameter offset: The number of audio files to skip; must be non-negative\n    /// - Parameter userId: User identifier\n    /// - Returns: The list of profile audio files of a user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getUserProfileAudios(\n        limit: Int?,\n        offset: Int?,\n        userId: Int64?\n    ) async throws -> Audios {\n        let query = GetUserProfileAudios(\n            limit: limit,\n            offset: offset,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks whether a file is in the profile audio files of the current user. Returns a 404 error if it isn't\n    /// - Parameter fileId: Identifier of the audio file to check\n    /// - Returns: A 404 error if it isn't\n    public func isProfileAudio(\n        fileId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = IsProfileAudio(\n            fileId: fileId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks whether a file is in the profile audio files of the current user. Returns a 404 error if it isn't\n    /// - Parameter fileId: Identifier of the audio file to check\n    /// - Returns: A 404 error if it isn't\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func isProfileAudio(fileId: Int?) async throws -> Ok {\n        let query = IsProfileAudio(\n            fileId: fileId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds an audio file to the beginning of the profile audio files of the current user\n    /// - Parameter audio: The audio file to be added\n    /// - Parameter duration: Duration of the audio, in seconds; may be replaced by the server; ignored for already uploaded files\n    /// - Parameter performer: Performer of the audio; 0-64 characters, may be replaced by the server; ignored for already uploaded files\n    /// - Parameter title: Title of the audio; 0-64 characters; may be replaced by the server; ignored for already uploaded files\n    public func addProfileAudio(\n        audio: InputFile?,\n        duration: Int?,\n        performer: String?,\n        title: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddProfileAudio(\n            audio: audio,\n            duration: duration,\n            performer: performer,\n            title: title\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds an audio file to the beginning of the profile audio files of the current user\n    /// - Parameter audio: The audio file to be added\n    /// - Parameter duration: Duration of the audio, in seconds; may be replaced by the server; ignored for already uploaded files\n    /// - Parameter performer: Performer of the audio; 0-64 characters, may be replaced by the server; ignored for already uploaded files\n    /// - Parameter title: Title of the audio; 0-64 characters; may be replaced by the server; ignored for already uploaded files\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func addProfileAudio(\n        audio: InputFile?,\n        duration: Int?,\n        performer: String?,\n        title: String?\n    ) async throws -> Ok {\n        let query = AddProfileAudio(\n            audio: audio,\n            duration: duration,\n            performer: performer,\n            title: title\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes position of an audio file in the profile audio files of the current user\n    /// - Parameter afterFileId: Identifier of the file from profile audio files after which the file will be positioned; pass 0 to move the file to the beginning of the list\n    /// - Parameter fileId: Identifier of the file from profile audio files, which position will be changed\n    public func setProfileAudioPosition(\n        afterFileId: Int?,\n        fileId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetProfileAudioPosition(\n            afterFileId: afterFileId,\n            fileId: fileId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes position of an audio file in the profile audio files of the current user\n    /// - Parameter afterFileId: Identifier of the file from profile audio files after which the file will be positioned; pass 0 to move the file to the beginning of the list\n    /// - Parameter fileId: Identifier of the file from profile audio files, which position will be changed\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setProfileAudioPosition(\n        afterFileId: Int?,\n        fileId: Int?\n    ) async throws -> Ok {\n        let query = SetProfileAudioPosition(\n            afterFileId: afterFileId,\n            fileId: fileId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes an audio file from the profile audio files of the current user\n    /// - Parameter fileId: Identifier of the audio file to be removed\n    public func removeProfileAudio(\n        fileId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveProfileAudio(\n            fileId: fileId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes an audio file from the profile audio files of the current user\n    /// - Parameter fileId: Identifier of the audio file to be removed\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeProfileAudio(fileId: Int?) async throws -> Ok {\n        let query = RemoveProfileAudio(\n            fileId: fileId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns outline of a sticker. This is an offline method. Returns a 404 error if the outline isn't known\n    /// - Parameter forAnimatedEmoji: Pass true to get the outline scaled for animated emoji\n    /// - Parameter forClickedAnimatedEmojiMessage: Pass true to get the outline scaled for clicked animated emoji message\n    /// - Parameter stickerFileId: File identifier of the sticker\n    /// - Returns: Outline of a sticker. Returns a 404 error if the outline isn't known\n    public func getStickerOutline(\n        forAnimatedEmoji: Bool?,\n        forClickedAnimatedEmojiMessage: Bool?,\n        stickerFileId: Int?,\n        completion: @escaping (Result<Outline, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStickerOutline(\n            forAnimatedEmoji: forAnimatedEmoji,\n            forClickedAnimatedEmojiMessage: forClickedAnimatedEmojiMessage,\n            stickerFileId: stickerFileId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns outline of a sticker. This is an offline method. Returns a 404 error if the outline isn't known\n    /// - Parameter forAnimatedEmoji: Pass true to get the outline scaled for animated emoji\n    /// - Parameter forClickedAnimatedEmojiMessage: Pass true to get the outline scaled for clicked animated emoji message\n    /// - Parameter stickerFileId: File identifier of the sticker\n    /// - Returns: Outline of a sticker. Returns a 404 error if the outline isn't known\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStickerOutline(\n        forAnimatedEmoji: Bool?,\n        forClickedAnimatedEmojiMessage: Bool?,\n        stickerFileId: Int?\n    ) async throws -> Outline {\n        let query = GetStickerOutline(\n            forAnimatedEmoji: forAnimatedEmoji,\n            forClickedAnimatedEmojiMessage: forClickedAnimatedEmojiMessage,\n            stickerFileId: stickerFileId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns outline of a sticker as an SVG path. This is an offline method. Returns an empty string if the outline isn't known\n    /// - Parameter forAnimatedEmoji: Pass true to get the outline scaled for animated emoji\n    /// - Parameter forClickedAnimatedEmojiMessage: Pass true to get the outline scaled for clicked animated emoji message\n    /// - Parameter stickerFileId: File identifier of the sticker\n    /// - Returns: Outline of a sticker as an SVG path. Returns an empty string if the outline isn't known\n    public func getStickerOutlineSvgPath(\n        forAnimatedEmoji: Bool?,\n        forClickedAnimatedEmojiMessage: Bool?,\n        stickerFileId: Int?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStickerOutlineSvgPath(\n            forAnimatedEmoji: forAnimatedEmoji,\n            forClickedAnimatedEmojiMessage: forClickedAnimatedEmojiMessage,\n            stickerFileId: stickerFileId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns outline of a sticker as an SVG path. This is an offline method. Returns an empty string if the outline isn't known\n    /// - Parameter forAnimatedEmoji: Pass true to get the outline scaled for animated emoji\n    /// - Parameter forClickedAnimatedEmojiMessage: Pass true to get the outline scaled for clicked animated emoji message\n    /// - Parameter stickerFileId: File identifier of the sticker\n    /// - Returns: Outline of a sticker as an SVG path. Returns an empty string if the outline isn't known\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStickerOutlineSvgPath(\n        forAnimatedEmoji: Bool?,\n        forClickedAnimatedEmojiMessage: Bool?,\n        stickerFileId: Int?\n    ) async throws -> Text {\n        let query = GetStickerOutlineSvgPath(\n            forAnimatedEmoji: forAnimatedEmoji,\n            forClickedAnimatedEmojiMessage: forClickedAnimatedEmojiMessage,\n            stickerFileId: stickerFileId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns stickers from the installed sticker sets that correspond to any of the given emoji or can be found by sticker-specific keywords. If the query is non-empty, then favorite, recently used or trending stickers may also be returned\n    /// - Parameter chatId: Chat identifier for which to return stickers. Available custom emoji stickers may be different for different chats\n    /// - Parameter limit: The maximum number of stickers to be returned\n    /// - Parameter query: Search query; a space-separated list of emojis or a keyword prefix. If empty, returns all known installed stickers\n    /// - Parameter stickerType: Type of the stickers to return\n    /// - Returns: Stickers from the installed sticker sets that correspond to any of the given emoji or can be found by sticker-specific keywords. If the query is non-empty, then favorite, recently used or trending stickers may also be returned\n    public func getStickers(\n        chatId: Int64?,\n        limit: Int?,\n        query: String?,\n        stickerType: StickerType?,\n        completion: @escaping (Result<Stickers, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStickers(\n            chatId: chatId,\n            limit: limit,\n            query: query,\n            stickerType: stickerType\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns stickers from the installed sticker sets that correspond to any of the given emoji or can be found by sticker-specific keywords. If the query is non-empty, then favorite, recently used or trending stickers may also be returned\n    /// - Parameter chatId: Chat identifier for which to return stickers. Available custom emoji stickers may be different for different chats\n    /// - Parameter limit: The maximum number of stickers to be returned\n    /// - Parameter query: Search query; a space-separated list of emojis or a keyword prefix. If empty, returns all known installed stickers\n    /// - Parameter stickerType: Type of the stickers to return\n    /// - Returns: Stickers from the installed sticker sets that correspond to any of the given emoji or can be found by sticker-specific keywords. If the query is non-empty, then favorite, recently used or trending stickers may also be returned\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStickers(\n        chatId: Int64?,\n        limit: Int?,\n        query: String?,\n        stickerType: StickerType?\n    ) async throws -> Stickers {\n        let query = GetStickers(\n            chatId: chatId,\n            limit: limit,\n            query: query,\n            stickerType: stickerType\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns unique emoji that correspond to stickers to be found by the getStickers(sticker_type, query, 1000000, chat_id)\n    /// - Parameter chatId: Chat identifier for which to find stickers\n    /// - Parameter query: Search query\n    /// - Parameter returnOnlyMainEmoji: Pass true if only main emoji for each found sticker must be included in the result\n    /// - Parameter stickerType: Type of the stickers to search for\n    /// - Returns: Unique emoji that correspond to stickers to be found by the getStickers(sticker_type, query, 1000000, chat_id)\n    public func getAllStickerEmojis(\n        chatId: Int64?,\n        query: String?,\n        returnOnlyMainEmoji: Bool?,\n        stickerType: StickerType?,\n        completion: @escaping (Result<Emojis, Swift.Error>) -> Void\n    ) throws {\n        let query = GetAllStickerEmojis(\n            chatId: chatId,\n            query: query,\n            returnOnlyMainEmoji: returnOnlyMainEmoji,\n            stickerType: stickerType\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns unique emoji that correspond to stickers to be found by the getStickers(sticker_type, query, 1000000, chat_id)\n    /// - Parameter chatId: Chat identifier for which to find stickers\n    /// - Parameter query: Search query\n    /// - Parameter returnOnlyMainEmoji: Pass true if only main emoji for each found sticker must be included in the result\n    /// - Parameter stickerType: Type of the stickers to search for\n    /// - Returns: Unique emoji that correspond to stickers to be found by the getStickers(sticker_type, query, 1000000, chat_id)\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getAllStickerEmojis(\n        chatId: Int64?,\n        query: String?,\n        returnOnlyMainEmoji: Bool?,\n        stickerType: StickerType?\n    ) async throws -> Emojis {\n        let query = GetAllStickerEmojis(\n            chatId: chatId,\n            query: query,\n            returnOnlyMainEmoji: returnOnlyMainEmoji,\n            stickerType: stickerType\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for stickers from public sticker sets that correspond to any of the given emoji\n    /// - Parameter emojis: Space-separated list of emojis to search for\n    /// - Parameter inputLanguageCodes: List of possible IETF language tags of the user's input language; may be empty if unknown\n    /// - Parameter limit: The maximum number of stickers to be returned; 0-100\n    /// - Parameter offset: The offset from which to return the stickers; must be non-negative\n    /// - Parameter query: Query to search for; may be empty to search for emoji only\n    /// - Parameter stickerType: Type of the stickers to return\n    public func searchStickers(\n        emojis: String?,\n        inputLanguageCodes: [String]?,\n        limit: Int?,\n        offset: Int?,\n        query: String?,\n        stickerType: StickerType?,\n        completion: @escaping (Result<Stickers, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchStickers(\n            emojis: emojis,\n            inputLanguageCodes: inputLanguageCodes,\n            limit: limit,\n            offset: offset,\n            query: query,\n            stickerType: stickerType\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for stickers from public sticker sets that correspond to any of the given emoji\n    /// - Parameter emojis: Space-separated list of emojis to search for\n    /// - Parameter inputLanguageCodes: List of possible IETF language tags of the user's input language; may be empty if unknown\n    /// - Parameter limit: The maximum number of stickers to be returned; 0-100\n    /// - Parameter offset: The offset from which to return the stickers; must be non-negative\n    /// - Parameter query: Query to search for; may be empty to search for emoji only\n    /// - Parameter stickerType: Type of the stickers to return\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchStickers(\n        emojis: String?,\n        inputLanguageCodes: [String]?,\n        limit: Int?,\n        offset: Int?,\n        query: String?,\n        stickerType: StickerType?\n    ) async throws -> Stickers {\n        let query = SearchStickers(\n            emojis: emojis,\n            inputLanguageCodes: inputLanguageCodes,\n            limit: limit,\n            offset: offset,\n            query: query,\n            stickerType: stickerType\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns greeting stickers from regular sticker sets that can be used for the start page of other users\n    /// - Returns: Greeting stickers from regular sticker sets that can be used for the start page of other users\n    public func getGreetingStickers(completion: @escaping (Result<Stickers, Swift.Error>) -> Void) throws {\n        let query = GetGreetingStickers()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns greeting stickers from regular sticker sets that can be used for the start page of other users\n    /// - Returns: Greeting stickers from regular sticker sets that can be used for the start page of other users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getGreetingStickers() async throws -> Stickers {\n        let query = GetGreetingStickers()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns premium stickers from regular sticker sets\n    /// - Parameter limit: The maximum number of stickers to be returned; 0-100\n    /// - Returns: Premium stickers from regular sticker sets\n    public func getPremiumStickers(\n        limit: Int?,\n        completion: @escaping (Result<Stickers, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPremiumStickers(\n            limit: limit\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns premium stickers from regular sticker sets\n    /// - Parameter limit: The maximum number of stickers to be returned; 0-100\n    /// - Returns: Premium stickers from regular sticker sets\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPremiumStickers(limit: Int?) async throws -> Stickers {\n        let query = GetPremiumStickers(\n            limit: limit\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a list of installed sticker sets\n    /// - Parameter stickerType: Type of the sticker sets to return\n    /// - Returns: A list of installed sticker sets\n    public func getInstalledStickerSets(\n        stickerType: StickerType?,\n        completion: @escaping (Result<StickerSets, Swift.Error>) -> Void\n    ) throws {\n        let query = GetInstalledStickerSets(\n            stickerType: stickerType\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a list of installed sticker sets\n    /// - Parameter stickerType: Type of the sticker sets to return\n    /// - Returns: A list of installed sticker sets\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getInstalledStickerSets(stickerType: StickerType?) async throws -> StickerSets {\n        let query = GetInstalledStickerSets(\n            stickerType: stickerType\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a list of archived sticker sets\n    /// - Parameter limit: The maximum number of sticker sets to return; up to 100\n    /// - Parameter offsetStickerSetId: Identifier of the sticker set from which to return the result; use 0 to get results from the beginning\n    /// - Parameter stickerType: Type of the sticker sets to return\n    /// - Returns: A list of archived sticker sets\n    public func getArchivedStickerSets(\n        limit: Int?,\n        offsetStickerSetId: TdInt64?,\n        stickerType: StickerType?,\n        completion: @escaping (Result<StickerSets, Swift.Error>) -> Void\n    ) throws {\n        let query = GetArchivedStickerSets(\n            limit: limit,\n            offsetStickerSetId: offsetStickerSetId,\n            stickerType: stickerType\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a list of archived sticker sets\n    /// - Parameter limit: The maximum number of sticker sets to return; up to 100\n    /// - Parameter offsetStickerSetId: Identifier of the sticker set from which to return the result; use 0 to get results from the beginning\n    /// - Parameter stickerType: Type of the sticker sets to return\n    /// - Returns: A list of archived sticker sets\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getArchivedStickerSets(\n        limit: Int?,\n        offsetStickerSetId: TdInt64?,\n        stickerType: StickerType?\n    ) async throws -> StickerSets {\n        let query = GetArchivedStickerSets(\n            limit: limit,\n            offsetStickerSetId: offsetStickerSetId,\n            stickerType: stickerType\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a list of trending sticker sets. For optimal performance, the number of returned sticker sets is chosen by TDLib\n    /// - Parameter limit: The maximum number of sticker sets to be returned; up to 100. For optimal performance, the number of returned sticker sets is chosen by TDLib and can be smaller than the specified limit, even if the end of the list has not been reached\n    /// - Parameter offset: The offset from which to return the sticker sets; must be non-negative\n    /// - Parameter stickerType: Type of the sticker sets to return\n    /// - Returns: A list of trending sticker sets. For optimal performance, the number of returned sticker sets is chosen by TDLib\n    public func getTrendingStickerSets(\n        limit: Int?,\n        offset: Int?,\n        stickerType: StickerType?,\n        completion: @escaping (Result<TrendingStickerSets, Swift.Error>) -> Void\n    ) throws {\n        let query = GetTrendingStickerSets(\n            limit: limit,\n            offset: offset,\n            stickerType: stickerType\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a list of trending sticker sets. For optimal performance, the number of returned sticker sets is chosen by TDLib\n    /// - Parameter limit: The maximum number of sticker sets to be returned; up to 100. For optimal performance, the number of returned sticker sets is chosen by TDLib and can be smaller than the specified limit, even if the end of the list has not been reached\n    /// - Parameter offset: The offset from which to return the sticker sets; must be non-negative\n    /// - Parameter stickerType: Type of the sticker sets to return\n    /// - Returns: A list of trending sticker sets. For optimal performance, the number of returned sticker sets is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getTrendingStickerSets(\n        limit: Int?,\n        offset: Int?,\n        stickerType: StickerType?\n    ) async throws -> TrendingStickerSets {\n        let query = GetTrendingStickerSets(\n            limit: limit,\n            offset: offset,\n            stickerType: stickerType\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a list of sticker sets attached to a file, including regular, mask, and emoji sticker sets. Currently, only animations, photos, and videos can have attached sticker sets\n    /// - Parameter fileId: File identifier\n    /// - Returns: A list of sticker sets attached to a file, including regular, mask, and emoji sticker sets\n    public func getAttachedStickerSets(\n        fileId: Int?,\n        completion: @escaping (Result<StickerSets, Swift.Error>) -> Void\n    ) throws {\n        let query = GetAttachedStickerSets(\n            fileId: fileId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a list of sticker sets attached to a file, including regular, mask, and emoji sticker sets. Currently, only animations, photos, and videos can have attached sticker sets\n    /// - Parameter fileId: File identifier\n    /// - Returns: A list of sticker sets attached to a file, including regular, mask, and emoji sticker sets\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getAttachedStickerSets(fileId: Int?) async throws -> StickerSets {\n        let query = GetAttachedStickerSets(\n            fileId: fileId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a sticker set by its identifier\n    /// - Parameter setId: Identifier of the sticker set\n    /// - Returns: Information about a sticker set by its identifier\n    public func getStickerSet(\n        setId: TdInt64?,\n        completion: @escaping (Result<StickerSet, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStickerSet(\n            setId: setId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a sticker set by its identifier\n    /// - Parameter setId: Identifier of the sticker set\n    /// - Returns: Information about a sticker set by its identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStickerSet(setId: TdInt64?) async throws -> StickerSet {\n        let query = GetStickerSet(\n            setId: setId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns name of a sticker set by its identifier\n    /// - Parameter setId: Identifier of the sticker set\n    /// - Returns: Name of a sticker set by its identifier\n    public func getStickerSetName(\n        setId: TdInt64?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStickerSetName(\n            setId: setId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns name of a sticker set by its identifier\n    /// - Parameter setId: Identifier of the sticker set\n    /// - Returns: Name of a sticker set by its identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStickerSetName(setId: TdInt64?) async throws -> Text {\n        let query = GetStickerSetName(\n            setId: setId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for a sticker set by its name\n    /// - Parameter ignoreCache: Pass true to ignore local cache of sticker sets and always send a network request\n    /// - Parameter name: Name of the sticker set\n    public func searchStickerSet(\n        ignoreCache: Bool?,\n        name: String?,\n        completion: @escaping (Result<StickerSet, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchStickerSet(\n            ignoreCache: ignoreCache,\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for a sticker set by its name\n    /// - Parameter ignoreCache: Pass true to ignore local cache of sticker sets and always send a network request\n    /// - Parameter name: Name of the sticker set\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchStickerSet(\n        ignoreCache: Bool?,\n        name: String?\n    ) async throws -> StickerSet {\n        let query = SearchStickerSet(\n            ignoreCache: ignoreCache,\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for installed sticker sets by looking for specified query in their title and name\n    /// - Parameter limit: The maximum number of sticker sets to return\n    /// - Parameter query: Query to search for\n    /// - Parameter stickerType: Type of the sticker sets to search for\n    public func searchInstalledStickerSets(\n        limit: Int?,\n        query: String?,\n        stickerType: StickerType?,\n        completion: @escaping (Result<StickerSets, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchInstalledStickerSets(\n            limit: limit,\n            query: query,\n            stickerType: stickerType\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for installed sticker sets by looking for specified query in their title and name\n    /// - Parameter limit: The maximum number of sticker sets to return\n    /// - Parameter query: Query to search for\n    /// - Parameter stickerType: Type of the sticker sets to search for\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchInstalledStickerSets(\n        limit: Int?,\n        query: String?,\n        stickerType: StickerType?\n    ) async throws -> StickerSets {\n        let query = SearchInstalledStickerSets(\n            limit: limit,\n            query: query,\n            stickerType: stickerType\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for sticker sets by looking for specified query in their title and name. Excludes installed sticker sets from the results\n    /// - Parameter query: Query to search for\n    /// - Parameter stickerType: Type of the sticker sets to return\n    public func searchStickerSets(\n        query: String?,\n        stickerType: StickerType?,\n        completion: @escaping (Result<StickerSets, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchStickerSets(\n            query: query,\n            stickerType: stickerType\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for sticker sets by looking for specified query in their title and name. Excludes installed sticker sets from the results\n    /// - Parameter query: Query to search for\n    /// - Parameter stickerType: Type of the sticker sets to return\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchStickerSets(\n        query: String?,\n        stickerType: StickerType?\n    ) async throws -> StickerSets {\n        let query = SearchStickerSets(\n            query: query,\n            stickerType: stickerType\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Installs/uninstalls or activates/archives a sticker set\n    /// - Parameter isArchived: The new value of is_archived. A sticker set can't be installed and archived simultaneously\n    /// - Parameter isInstalled: The new value of is_installed\n    /// - Parameter setId: Identifier of the sticker set\n    public func changeStickerSet(\n        isArchived: Bool?,\n        isInstalled: Bool?,\n        setId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ChangeStickerSet(\n            isArchived: isArchived,\n            isInstalled: isInstalled,\n            setId: setId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Installs/uninstalls or activates/archives a sticker set\n    /// - Parameter isArchived: The new value of is_archived. A sticker set can't be installed and archived simultaneously\n    /// - Parameter isInstalled: The new value of is_installed\n    /// - Parameter setId: Identifier of the sticker set\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func changeStickerSet(\n        isArchived: Bool?,\n        isInstalled: Bool?,\n        setId: TdInt64?\n    ) async throws -> Ok {\n        let query = ChangeStickerSet(\n            isArchived: isArchived,\n            isInstalled: isInstalled,\n            setId: setId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs the server that some trending sticker sets have been viewed by the user\n    /// - Parameter stickerSetIds: Identifiers of viewed trending sticker sets\n    public func viewTrendingStickerSets(\n        stickerSetIds: [TdInt64]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ViewTrendingStickerSets(\n            stickerSetIds: stickerSetIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs the server that some trending sticker sets have been viewed by the user\n    /// - Parameter stickerSetIds: Identifiers of viewed trending sticker sets\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func viewTrendingStickerSets(stickerSetIds: [TdInt64]?) async throws -> Ok {\n        let query = ViewTrendingStickerSets(\n            stickerSetIds: stickerSetIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the order of installed sticker sets\n    /// - Parameter stickerSetIds: Identifiers of installed sticker sets in the new correct order\n    /// - Parameter stickerType: Type of the sticker sets to reorder\n    public func reorderInstalledStickerSets(\n        stickerSetIds: [TdInt64]?,\n        stickerType: StickerType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderInstalledStickerSets(\n            stickerSetIds: stickerSetIds,\n            stickerType: stickerType\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the order of installed sticker sets\n    /// - Parameter stickerSetIds: Identifiers of installed sticker sets in the new correct order\n    /// - Parameter stickerType: Type of the sticker sets to reorder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func reorderInstalledStickerSets(\n        stickerSetIds: [TdInt64]?,\n        stickerType: StickerType?\n    ) async throws -> Ok {\n        let query = ReorderInstalledStickerSets(\n            stickerSetIds: stickerSetIds,\n            stickerType: stickerType\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a list of recently used stickers\n    /// - Parameter isAttached: Pass true to return stickers and masks that were recently attached to photos or video files; pass false to return recently sent stickers\n    /// - Returns: A list of recently used stickers\n    public func getRecentStickers(\n        isAttached: Bool?,\n        completion: @escaping (Result<Stickers, Swift.Error>) -> Void\n    ) throws {\n        let query = GetRecentStickers(\n            isAttached: isAttached\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a list of recently used stickers\n    /// - Parameter isAttached: Pass true to return stickers and masks that were recently attached to photos or video files; pass false to return recently sent stickers\n    /// - Returns: A list of recently used stickers\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getRecentStickers(isAttached: Bool?) async throws -> Stickers {\n        let query = GetRecentStickers(\n            isAttached: isAttached\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Manually adds a new sticker to the list of recently used stickers. The new sticker is added to the top of the list. If the sticker was already in the list, it is removed from the list first. Only stickers belonging to a sticker set or in WEBP or WEBM format can be added to this list. Emoji stickers can't be added to recent stickers\n    /// - Parameter isAttached: Pass true to add the sticker to the list of stickers recently attached to photo or video files; pass false to add the sticker to the list of recently sent stickers\n    /// - Parameter sticker: Sticker file to add\n    public func addRecentSticker(\n        isAttached: Bool?,\n        sticker: InputFile?,\n        completion: @escaping (Result<Stickers, Swift.Error>) -> Void\n    ) throws {\n        let query = AddRecentSticker(\n            isAttached: isAttached,\n            sticker: sticker\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Manually adds a new sticker to the list of recently used stickers. The new sticker is added to the top of the list. If the sticker was already in the list, it is removed from the list first. Only stickers belonging to a sticker set or in WEBP or WEBM format can be added to this list. Emoji stickers can't be added to recent stickers\n    /// - Parameter isAttached: Pass true to add the sticker to the list of stickers recently attached to photo or video files; pass false to add the sticker to the list of recently sent stickers\n    /// - Parameter sticker: Sticker file to add\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func addRecentSticker(\n        isAttached: Bool?,\n        sticker: InputFile?\n    ) async throws -> Stickers {\n        let query = AddRecentSticker(\n            isAttached: isAttached,\n            sticker: sticker\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes a sticker from the list of recently used stickers\n    /// - Parameter isAttached: Pass true to remove the sticker from the list of stickers recently attached to photo or video files; pass false to remove the sticker from the list of recently sent stickers\n    /// - Parameter sticker: Sticker file to delete\n    public func removeRecentSticker(\n        isAttached: Bool?,\n        sticker: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveRecentSticker(\n            isAttached: isAttached,\n            sticker: sticker\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes a sticker from the list of recently used stickers\n    /// - Parameter isAttached: Pass true to remove the sticker from the list of stickers recently attached to photo or video files; pass false to remove the sticker from the list of recently sent stickers\n    /// - Parameter sticker: Sticker file to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeRecentSticker(\n        isAttached: Bool?,\n        sticker: InputFile?\n    ) async throws -> Ok {\n        let query = RemoveRecentSticker(\n            isAttached: isAttached,\n            sticker: sticker\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Clears the list of recently used stickers\n    /// - Parameter isAttached: Pass true to clear the list of stickers recently attached to photo or video files; pass false to clear the list of recently sent stickers\n    public func clearRecentStickers(\n        isAttached: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ClearRecentStickers(\n            isAttached: isAttached\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Clears the list of recently used stickers\n    /// - Parameter isAttached: Pass true to clear the list of stickers recently attached to photo or video files; pass false to clear the list of recently sent stickers\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func clearRecentStickers(isAttached: Bool?) async throws -> Ok {\n        let query = ClearRecentStickers(\n            isAttached: isAttached\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns favorite stickers\n    /// - Returns: Favorite stickers\n    public func getFavoriteStickers(completion: @escaping (Result<Stickers, Swift.Error>) -> Void) throws {\n        let query = GetFavoriteStickers()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns favorite stickers\n    /// - Returns: Favorite stickers\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getFavoriteStickers() async throws -> Stickers {\n        let query = GetFavoriteStickers()\n        return try await self.execute(query: query)\n    }\n\n    /// Adds a new sticker to the list of favorite stickers. The new sticker is added to the top of the list. If the sticker was already in the list, it is removed from the list first. Only stickers belonging to a sticker set or in WEBP or WEBM format can be added to this list. Emoji stickers can't be added to favorite stickers\n    /// - Parameter sticker: Sticker file to add\n    public func addFavoriteSticker(\n        sticker: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddFavoriteSticker(\n            sticker: sticker\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds a new sticker to the list of favorite stickers. The new sticker is added to the top of the list. If the sticker was already in the list, it is removed from the list first. Only stickers belonging to a sticker set or in WEBP or WEBM format can be added to this list. Emoji stickers can't be added to favorite stickers\n    /// - Parameter sticker: Sticker file to add\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func addFavoriteSticker(sticker: InputFile?) async throws -> Ok {\n        let query = AddFavoriteSticker(\n            sticker: sticker\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes a sticker from the list of favorite stickers\n    /// - Parameter sticker: Sticker file to delete from the list\n    public func removeFavoriteSticker(\n        sticker: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveFavoriteSticker(\n            sticker: sticker\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes a sticker from the list of favorite stickers\n    /// - Parameter sticker: Sticker file to delete from the list\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeFavoriteSticker(sticker: InputFile?) async throws -> Ok {\n        let query = RemoveFavoriteSticker(\n            sticker: sticker\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns emoji corresponding to a sticker. The list is only for informational purposes, because a sticker is always sent with a fixed emoji from the corresponding Sticker object\n    /// - Parameter sticker: Sticker file identifier\n    /// - Returns: Emoji corresponding to a sticker\n    public func getStickerEmojis(\n        sticker: InputFile?,\n        completion: @escaping (Result<Emojis, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStickerEmojis(\n            sticker: sticker\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns emoji corresponding to a sticker. The list is only for informational purposes, because a sticker is always sent with a fixed emoji from the corresponding Sticker object\n    /// - Parameter sticker: Sticker file identifier\n    /// - Returns: Emoji corresponding to a sticker\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStickerEmojis(sticker: InputFile?) async throws -> Emojis {\n        let query = GetStickerEmojis(\n            sticker: sticker\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for emojis by keywords. Supported only if the file database is enabled. Order of results is unspecified\n    /// - Parameter inputLanguageCodes: List of possible IETF language tags of the user's input language; may be empty if unknown\n    /// - Parameter text: Text to search for\n    public func searchEmojis(\n        inputLanguageCodes: [String]?,\n        text: String?,\n        completion: @escaping (Result<EmojiKeywords, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchEmojis(\n            inputLanguageCodes: inputLanguageCodes,\n            text: text\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for emojis by keywords. Supported only if the file database is enabled. Order of results is unspecified\n    /// - Parameter inputLanguageCodes: List of possible IETF language tags of the user's input language; may be empty if unknown\n    /// - Parameter text: Text to search for\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchEmojis(\n        inputLanguageCodes: [String]?,\n        text: String?\n    ) async throws -> EmojiKeywords {\n        let query = SearchEmojis(\n            inputLanguageCodes: inputLanguageCodes,\n            text: text\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns emojis matching the keyword. Supported only if the file database is enabled. Order of results is unspecified\n    /// - Parameter inputLanguageCodes: List of possible IETF language tags of the user's input language; may be empty if unknown\n    /// - Parameter text: Text to search for\n    /// - Returns: Emojis matching the keyword\n    public func getKeywordEmojis(\n        inputLanguageCodes: [String]?,\n        text: String?,\n        completion: @escaping (Result<Emojis, Swift.Error>) -> Void\n    ) throws {\n        let query = GetKeywordEmojis(\n            inputLanguageCodes: inputLanguageCodes,\n            text: text\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns emojis matching the keyword. Supported only if the file database is enabled. Order of results is unspecified\n    /// - Parameter inputLanguageCodes: List of possible IETF language tags of the user's input language; may be empty if unknown\n    /// - Parameter text: Text to search for\n    /// - Returns: Emojis matching the keyword\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getKeywordEmojis(\n        inputLanguageCodes: [String]?,\n        text: String?\n    ) async throws -> Emojis {\n        let query = GetKeywordEmojis(\n            inputLanguageCodes: inputLanguageCodes,\n            text: text\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns available emoji categories\n    /// - Parameter type: Type of emoji categories to return; pass null to get default emoji categories\n    /// - Returns: Available emoji categories\n    public func getEmojiCategories(\n        type: EmojiCategoryType?,\n        completion: @escaping (Result<EmojiCategories, Swift.Error>) -> Void\n    ) throws {\n        let query = GetEmojiCategories(\n            type: type\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns available emoji categories\n    /// - Parameter type: Type of emoji categories to return; pass null to get default emoji categories\n    /// - Returns: Available emoji categories\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getEmojiCategories(type: EmojiCategoryType?) async throws -> EmojiCategories {\n        let query = GetEmojiCategories(\n            type: type\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an animated emoji corresponding to a given emoji. Returns a 404 error if the emoji has no animated emoji\n    /// - Parameter emoji: The emoji\n    /// - Returns: An animated emoji corresponding to a given emoji. Returns a 404 error if the emoji has no animated emoji\n    public func getAnimatedEmoji(\n        emoji: String?,\n        completion: @escaping (Result<AnimatedEmoji, Swift.Error>) -> Void\n    ) throws {\n        let query = GetAnimatedEmoji(\n            emoji: emoji\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an animated emoji corresponding to a given emoji. Returns a 404 error if the emoji has no animated emoji\n    /// - Parameter emoji: The emoji\n    /// - Returns: An animated emoji corresponding to a given emoji. Returns a 404 error if the emoji has no animated emoji\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getAnimatedEmoji(emoji: String?) async throws -> AnimatedEmoji {\n        let query = GetAnimatedEmoji(\n            emoji: emoji\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an HTTP URL which can be used to automatically log in to the translation platform and suggest new emoji replacements. The URL will be valid for 30 seconds after generation\n    /// - Parameter languageCode: Language code for which the emoji replacements will be suggested\n    /// - Returns: An HTTP URL which can be used to automatically log in to the translation platform and suggest new emoji replacements\n    public func getEmojiSuggestionsUrl(\n        languageCode: String?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetEmojiSuggestionsUrl(\n            languageCode: languageCode\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an HTTP URL which can be used to automatically log in to the translation platform and suggest new emoji replacements. The URL will be valid for 30 seconds after generation\n    /// - Parameter languageCode: Language code for which the emoji replacements will be suggested\n    /// - Returns: An HTTP URL which can be used to automatically log in to the translation platform and suggest new emoji replacements\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getEmojiSuggestionsUrl(languageCode: String?) async throws -> HttpUrl {\n        let query = GetEmojiSuggestionsUrl(\n            languageCode: languageCode\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of custom emoji stickers by their identifiers. Stickers are returned in arbitrary order. Only found stickers are returned\n    /// - Parameter customEmojiIds: Identifiers of custom emoji stickers. At most 200 custom emoji stickers can be received simultaneously\n    /// - Returns: The list of custom emoji stickers by their identifiers. Stickers are returned in arbitrary order. Only found stickers are returned\n    public func getCustomEmojiStickers(\n        customEmojiIds: [TdInt64]?,\n        completion: @escaping (Result<Stickers, Swift.Error>) -> Void\n    ) throws {\n        let query = GetCustomEmojiStickers(\n            customEmojiIds: customEmojiIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of custom emoji stickers by their identifiers. Stickers are returned in arbitrary order. Only found stickers are returned\n    /// - Parameter customEmojiIds: Identifiers of custom emoji stickers. At most 200 custom emoji stickers can be received simultaneously\n    /// - Returns: The list of custom emoji stickers by their identifiers. Stickers are returned in arbitrary order. Only found stickers are returned\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getCustomEmojiStickers(customEmojiIds: [TdInt64]?) async throws -> Stickers {\n        let query = GetCustomEmojiStickers(\n            customEmojiIds: customEmojiIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns default list of custom emoji stickers for placing on a chat photo\n    /// - Returns: Default list of custom emoji stickers for placing on a chat photo\n    public func getDefaultChatPhotoCustomEmojiStickers(completion: @escaping (Result<Stickers, Swift.Error>) -> Void) throws {\n        let query = GetDefaultChatPhotoCustomEmojiStickers()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns default list of custom emoji stickers for placing on a chat photo\n    /// - Returns: Default list of custom emoji stickers for placing on a chat photo\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getDefaultChatPhotoCustomEmojiStickers() async throws -> Stickers {\n        let query = GetDefaultChatPhotoCustomEmojiStickers()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns default list of custom emoji stickers for placing on a profile photo\n    /// - Returns: Default list of custom emoji stickers for placing on a profile photo\n    public func getDefaultProfilePhotoCustomEmojiStickers(completion: @escaping (Result<Stickers, Swift.Error>) -> Void) throws {\n        let query = GetDefaultProfilePhotoCustomEmojiStickers()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns default list of custom emoji stickers for placing on a profile photo\n    /// - Returns: Default list of custom emoji stickers for placing on a profile photo\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getDefaultProfilePhotoCustomEmojiStickers() async throws -> Stickers {\n        let query = GetDefaultProfilePhotoCustomEmojiStickers()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns default list of custom emoji stickers for reply background\n    /// - Returns: Default list of custom emoji stickers for reply background\n    public func getDefaultBackgroundCustomEmojiStickers(completion: @escaping (Result<Stickers, Swift.Error>) -> Void) throws {\n        let query = GetDefaultBackgroundCustomEmojiStickers()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns default list of custom emoji stickers for reply background\n    /// - Returns: Default list of custom emoji stickers for reply background\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getDefaultBackgroundCustomEmojiStickers() async throws -> Stickers {\n        let query = GetDefaultBackgroundCustomEmojiStickers()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns saved animations\n    /// - Returns: Saved animations\n    public func getSavedAnimations(completion: @escaping (Result<Animations, Swift.Error>) -> Void) throws {\n        let query = GetSavedAnimations()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns saved animations\n    /// - Returns: Saved animations\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getSavedAnimations() async throws -> Animations {\n        let query = GetSavedAnimations()\n        return try await self.execute(query: query)\n    }\n\n    /// Manually adds a new animation to the list of saved animations. The new animation is added to the beginning of the list. If the animation was already in the list, it is removed first. Only non-secret video animations with MIME type \"video/mp4\" can be added to the list\n    /// - Parameter animation: The animation file to be added. Only animations known to the server (i.e., successfully sent via a message) can be added to the list\n    public func addSavedAnimation(\n        animation: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddSavedAnimation(\n            animation: animation\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Manually adds a new animation to the list of saved animations. The new animation is added to the beginning of the list. If the animation was already in the list, it is removed first. Only non-secret video animations with MIME type \"video/mp4\" can be added to the list\n    /// - Parameter animation: The animation file to be added. Only animations known to the server (i.e., successfully sent via a message) can be added to the list\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func addSavedAnimation(animation: InputFile?) async throws -> Ok {\n        let query = AddSavedAnimation(\n            animation: animation\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes an animation from the list of saved animations\n    /// - Parameter animation: Animation file to be removed\n    public func removeSavedAnimation(\n        animation: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveSavedAnimation(\n            animation: animation\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes an animation from the list of saved animations\n    /// - Parameter animation: Animation file to be removed\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeSavedAnimation(animation: InputFile?) async throws -> Ok {\n        let query = RemoveSavedAnimation(\n            animation: animation\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns up to 20 recently used inline bots in the order of their last usage\n    /// - Returns: Up to 20 recently used inline bots in the order of their last usage\n    public func getRecentInlineBots(completion: @escaping (Result<Users, Swift.Error>) -> Void) throws {\n        let query = GetRecentInlineBots()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns up to 20 recently used inline bots in the order of their last usage\n    /// - Returns: Up to 20 recently used inline bots in the order of their last usage\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getRecentInlineBots() async throws -> Users {\n        let query = GetRecentInlineBots()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of bots owned by the current user\n    /// - Returns: The list of bots owned by the current user\n    public func getOwnedBots(completion: @escaping (Result<Users, Swift.Error>) -> Void) throws {\n        let query = GetOwnedBots()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of bots owned by the current user\n    /// - Returns: The list of bots owned by the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getOwnedBots() async throws -> Users {\n        let query = GetOwnedBots()\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for recently used hashtags by their prefix\n    /// - Parameter limit: The maximum number of hashtags to be returned\n    /// - Parameter prefix: Hashtag prefix to search for\n    public func searchHashtags(\n        limit: Int?,\n        prefix: String?,\n        completion: @escaping (Result<Hashtags, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchHashtags(\n            limit: limit,\n            prefix: prefix\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for recently used hashtags by their prefix\n    /// - Parameter limit: The maximum number of hashtags to be returned\n    /// - Parameter prefix: Hashtag prefix to search for\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchHashtags(\n        limit: Int?,\n        prefix: String?\n    ) async throws -> Hashtags {\n        let query = SearchHashtags(\n            limit: limit,\n            prefix: prefix\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes a hashtag from the list of recently used hashtags\n    /// - Parameter hashtag: Hashtag to delete\n    public func removeRecentHashtag(\n        hashtag: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveRecentHashtag(\n            hashtag: hashtag\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes a hashtag from the list of recently used hashtags\n    /// - Parameter hashtag: Hashtag to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeRecentHashtag(hashtag: String?) async throws -> Ok {\n        let query = RemoveRecentHashtag(\n            hashtag: hashtag\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a link preview by the text of a message. Do not call this function too often. Returns a 404 error if the text has no link preview\n    /// - Parameter linkPreviewOptions: Options to be used for generation of the link preview; pass null to use default link preview options\n    /// - Parameter text: Message text with formatting\n    /// - Returns: A link preview by the text of a message. Returns a 404 error if the text has no link preview\n    public func getLinkPreview(\n        linkPreviewOptions: LinkPreviewOptions?,\n        text: FormattedText?,\n        completion: @escaping (Result<LinkPreview, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLinkPreview(\n            linkPreviewOptions: linkPreviewOptions,\n            text: text\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a link preview by the text of a message. Do not call this function too often. Returns a 404 error if the text has no link preview\n    /// - Parameter linkPreviewOptions: Options to be used for generation of the link preview; pass null to use default link preview options\n    /// - Parameter text: Message text with formatting\n    /// - Returns: A link preview by the text of a message. Returns a 404 error if the text has no link preview\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getLinkPreview(\n        linkPreviewOptions: LinkPreviewOptions?,\n        text: FormattedText?\n    ) async throws -> LinkPreview {\n        let query = GetLinkPreview(\n            linkPreviewOptions: linkPreviewOptions,\n            text: text\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an instant view version of a web page if available. This is an offline method if only_local is true. Returns a 404 error if the web page has no instant view page\n    /// - Parameter onlyLocal: Pass true to get only locally available information without sending network requests\n    /// - Parameter url: The web page URL\n    /// - Returns: An instant view version of a web page if available. Returns a 404 error if the web page has no instant view page\n    public func getWebPageInstantView(\n        onlyLocal: Bool?,\n        url: String?,\n        completion: @escaping (Result<WebPageInstantView, Swift.Error>) -> Void\n    ) throws {\n        let query = GetWebPageInstantView(\n            onlyLocal: onlyLocal,\n            url: url\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an instant view version of a web page if available. This is an offline method if only_local is true. Returns a 404 error if the web page has no instant view page\n    /// - Parameter onlyLocal: Pass true to get only locally available information without sending network requests\n    /// - Parameter url: The web page URL\n    /// - Returns: An instant view version of a web page if available. Returns a 404 error if the web page has no instant view page\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getWebPageInstantView(\n        onlyLocal: Bool?,\n        url: String?\n    ) async throws -> WebPageInstantView {\n        let query = GetWebPageInstantView(\n            onlyLocal: onlyLocal,\n            url: url\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes a profile photo for the current user\n    /// - Parameter isPublic: Pass true to set the public photo, which will be visible even if the main photo is hidden by privacy settings\n    /// - Parameter photo: Profile photo to set\n    public func setProfilePhoto(\n        isPublic: Bool?,\n        photo: InputChatPhoto?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetProfilePhoto(\n            isPublic: isPublic,\n            photo: photo\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes a profile photo for the current user\n    /// - Parameter isPublic: Pass true to set the public photo, which will be visible even if the main photo is hidden by privacy settings\n    /// - Parameter photo: Profile photo to set\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setProfilePhoto(\n        isPublic: Bool?,\n        photo: InputChatPhoto?\n    ) async throws -> Ok {\n        let query = SetProfilePhoto(\n            isPublic: isPublic,\n            photo: photo\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes a profile photo\n    /// - Parameter profilePhotoId: Identifier of the profile photo to delete\n    public func deleteProfilePhoto(\n        profilePhotoId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteProfilePhoto(\n            profilePhotoId: profilePhotoId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes a profile photo\n    /// - Parameter profilePhotoId: Identifier of the profile photo to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteProfilePhoto(profilePhotoId: TdInt64?) async throws -> Ok {\n        let query = DeleteProfilePhoto(\n            profilePhotoId: profilePhotoId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes accent color and background custom emoji for the current user; for Telegram Premium users only\n    /// - Parameter accentColorId: Identifier of the accent color to use\n    /// - Parameter backgroundCustomEmojiId: Identifier of a custom emoji to be shown on the reply header and link preview background; 0 if none\n    public func setAccentColor(\n        accentColorId: Int?,\n        backgroundCustomEmojiId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetAccentColor(\n            accentColorId: accentColorId,\n            backgroundCustomEmojiId: backgroundCustomEmojiId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes accent color and background custom emoji for the current user; for Telegram Premium users only\n    /// - Parameter accentColorId: Identifier of the accent color to use\n    /// - Parameter backgroundCustomEmojiId: Identifier of a custom emoji to be shown on the reply header and link preview background; 0 if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setAccentColor(\n        accentColorId: Int?,\n        backgroundCustomEmojiId: TdInt64?\n    ) async throws -> Ok {\n        let query = SetAccentColor(\n            accentColorId: accentColorId,\n            backgroundCustomEmojiId: backgroundCustomEmojiId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes color scheme for the current user based on an owned or a hosted upgraded gift; for Telegram Premium users only\n    /// - Parameter upgradedGiftColorsId: Identifier of the upgradedGiftColors scheme to use\n    public func setUpgradedGiftColors(\n        upgradedGiftColorsId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetUpgradedGiftColors(\n            upgradedGiftColorsId: upgradedGiftColorsId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes color scheme for the current user based on an owned or a hosted upgraded gift; for Telegram Premium users only\n    /// - Parameter upgradedGiftColorsId: Identifier of the upgradedGiftColors scheme to use\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setUpgradedGiftColors(upgradedGiftColorsId: TdInt64?) async throws -> Ok {\n        let query = SetUpgradedGiftColors(\n            upgradedGiftColorsId: upgradedGiftColorsId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes accent color and background custom emoji for profile of the current user; for Telegram Premium users only\n    /// - Parameter profileAccentColorId: Identifier of the accent color to use for profile; pass -1 if none\n    /// - Parameter profileBackgroundCustomEmojiId: Identifier of a custom emoji to be shown on the user's profile photo background; 0 if none\n    public func setProfileAccentColor(\n        profileAccentColorId: Int?,\n        profileBackgroundCustomEmojiId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetProfileAccentColor(\n            profileAccentColorId: profileAccentColorId,\n            profileBackgroundCustomEmojiId: profileBackgroundCustomEmojiId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes accent color and background custom emoji for profile of the current user; for Telegram Premium users only\n    /// - Parameter profileAccentColorId: Identifier of the accent color to use for profile; pass -1 if none\n    /// - Parameter profileBackgroundCustomEmojiId: Identifier of a custom emoji to be shown on the user's profile photo background; 0 if none\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setProfileAccentColor(\n        profileAccentColorId: Int?,\n        profileBackgroundCustomEmojiId: TdInt64?\n    ) async throws -> Ok {\n        let query = SetProfileAccentColor(\n            profileAccentColorId: profileAccentColorId,\n            profileBackgroundCustomEmojiId: profileBackgroundCustomEmojiId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the first and last name of the current user\n    /// - Parameter firstName: The new value of the first name for the current user; 1-64 characters\n    /// - Parameter lastName: The new value of the optional last name for the current user; 0-64 characters\n    public func setName(\n        firstName: String?,\n        lastName: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetName(\n            firstName: firstName,\n            lastName: lastName\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the first and last name of the current user\n    /// - Parameter firstName: The new value of the first name for the current user; 1-64 characters\n    /// - Parameter lastName: The new value of the optional last name for the current user; 0-64 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setName(\n        firstName: String?,\n        lastName: String?\n    ) async throws -> Ok {\n        let query = SetName(\n            firstName: firstName,\n            lastName: lastName\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the bio of the current user\n    /// - Parameter bio: The new value of the user bio; 0-getOption(\"bio_length_max\") characters without line feeds\n    public func setBio(\n        bio: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBio(\n            bio: bio\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the bio of the current user\n    /// - Parameter bio: The new value of the user bio; 0-getOption(\"bio_length_max\") characters without line feeds\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setBio(bio: String?) async throws -> Ok {\n        let query = SetBio(\n            bio: bio\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the editable username of the current user\n    /// - Parameter username: The new value of the username. Use an empty string to remove the username. The username can't be completely removed if there is another active or disabled username\n    public func setUsername(\n        username: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetUsername(\n            username: username\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the editable username of the current user\n    /// - Parameter username: The new value of the username. Use an empty string to remove the username. The username can't be completely removed if there is another active or disabled username\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setUsername(username: String?) async throws -> Ok {\n        let query = SetUsername(\n            username: username\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes active state for a username of the current user. The editable username can't be disabled. May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\n    /// - Parameter isActive: Pass true to activate the username; pass false to disable it\n    /// - Parameter username: The username to change\n    /// - Returns: May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\n    public func toggleUsernameIsActive(\n        isActive: Bool?,\n        username: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleUsernameIsActive(\n            isActive: isActive,\n            username: username\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes active state for a username of the current user. The editable username can't be disabled. May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\n    /// - Parameter isActive: Pass true to activate the username; pass false to disable it\n    /// - Parameter username: The username to change\n    /// - Returns: May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleUsernameIsActive(\n        isActive: Bool?,\n        username: String?\n    ) async throws -> Ok {\n        let query = ToggleUsernameIsActive(\n            isActive: isActive,\n            username: username\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes order of active usernames of the current user\n    /// - Parameter usernames: The new order of active usernames. All currently active usernames must be specified\n    public func reorderActiveUsernames(\n        usernames: [String]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderActiveUsernames(\n            usernames: usernames\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes order of active usernames of the current user\n    /// - Parameter usernames: The new order of active usernames. All currently active usernames must be specified\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func reorderActiveUsernames(usernames: [String]?) async throws -> Ok {\n        let query = ReorderActiveUsernames(\n            usernames: usernames\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the birthdate of the current user\n    /// - Parameter birthdate: The new value of the current user's birthdate; pass null to remove the birthdate\n    public func setBirthdate(\n        birthdate: Birthdate?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBirthdate(\n            birthdate: birthdate\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the birthdate of the current user\n    /// - Parameter birthdate: The new value of the current user's birthdate; pass null to remove the birthdate\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setBirthdate(birthdate: Birthdate?) async throws -> Ok {\n        let query = SetBirthdate(\n            birthdate: birthdate\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the main profile tab of the current user\n    /// - Parameter mainProfileTab: The new value of the main profile tab\n    public func setMainProfileTab(\n        mainProfileTab: ProfileTab?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetMainProfileTab(\n            mainProfileTab: mainProfileTab\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the main profile tab of the current user\n    /// - Parameter mainProfileTab: The new value of the main profile tab\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setMainProfileTab(mainProfileTab: ProfileTab?) async throws -> Ok {\n        let query = SetMainProfileTab(\n            mainProfileTab: mainProfileTab\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the personal chat of the current user\n    /// - Parameter chatId: Identifier of the new personal chat; pass 0 to remove the chat. Use getSuitablePersonalChats to get suitable chats\n    public func setPersonalChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetPersonalChat(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the personal chat of the current user\n    /// - Parameter chatId: Identifier of the new personal chat; pass 0 to remove the chat. Use getSuitablePersonalChats to get suitable chats\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setPersonalChat(chatId: Int64?) async throws -> Ok {\n        let query = SetPersonalChat(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the emoji status of the current user; for Telegram Premium users only\n    /// - Parameter emojiStatus: New emoji status; pass null to switch to the default badge\n    public func setEmojiStatus(\n        emojiStatus: EmojiStatus?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetEmojiStatus(\n            emojiStatus: emojiStatus\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the emoji status of the current user; for Telegram Premium users only\n    /// - Parameter emojiStatus: New emoji status; pass null to switch to the default badge\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setEmojiStatus(emojiStatus: EmojiStatus?) async throws -> Ok {\n        let query = SetEmojiStatus(\n            emojiStatus: emojiStatus\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether the current user has sponsored messages enabled. The setting has no effect for users without Telegram Premium for which sponsored messages are always enabled\n    /// - Parameter hasSponsoredMessagesEnabled: Pass true to enable sponsored messages for the current user; false to disable them\n    public func toggleHasSponsoredMessagesEnabled(\n        hasSponsoredMessagesEnabled: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleHasSponsoredMessagesEnabled(\n            hasSponsoredMessagesEnabled: hasSponsoredMessagesEnabled\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether the current user has sponsored messages enabled. The setting has no effect for users without Telegram Premium for which sponsored messages are always enabled\n    /// - Parameter hasSponsoredMessagesEnabled: Pass true to enable sponsored messages for the current user; false to disable them\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleHasSponsoredMessagesEnabled(hasSponsoredMessagesEnabled: Bool?) async throws -> Ok {\n        let query = ToggleHasSponsoredMessagesEnabled(\n            hasSponsoredMessagesEnabled: hasSponsoredMessagesEnabled\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the business location of the current user. Requires Telegram Business subscription\n    /// - Parameter location: The new location of the business; pass null to remove the location\n    public func setBusinessLocation(\n        location: BusinessLocation?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessLocation(\n            location: location\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the business location of the current user. Requires Telegram Business subscription\n    /// - Parameter location: The new location of the business; pass null to remove the location\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setBusinessLocation(location: BusinessLocation?) async throws -> Ok {\n        let query = SetBusinessLocation(\n            location: location\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the business opening hours of the current user. Requires Telegram Business subscription\n    /// - Parameter openingHours: The new opening hours of the business; pass null to remove the opening hours; up to 28 time intervals can be specified\n    public func setBusinessOpeningHours(\n        openingHours: BusinessOpeningHours?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessOpeningHours(\n            openingHours: openingHours\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the business opening hours of the current user. Requires Telegram Business subscription\n    /// - Parameter openingHours: The new opening hours of the business; pass null to remove the opening hours; up to 28 time intervals can be specified\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setBusinessOpeningHours(openingHours: BusinessOpeningHours?) async throws -> Ok {\n        let query = SetBusinessOpeningHours(\n            openingHours: openingHours\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the business greeting message settings of the current user. Requires Telegram Business subscription\n    /// - Parameter greetingMessageSettings: The new settings for the greeting message of the business; pass null to disable the greeting message\n    public func setBusinessGreetingMessageSettings(\n        greetingMessageSettings: BusinessGreetingMessageSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessGreetingMessageSettings(\n            greetingMessageSettings: greetingMessageSettings\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the business greeting message settings of the current user. Requires Telegram Business subscription\n    /// - Parameter greetingMessageSettings: The new settings for the greeting message of the business; pass null to disable the greeting message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setBusinessGreetingMessageSettings(greetingMessageSettings: BusinessGreetingMessageSettings?) async throws -> Ok {\n        let query = SetBusinessGreetingMessageSettings(\n            greetingMessageSettings: greetingMessageSettings\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the business away message settings of the current user. Requires Telegram Business subscription\n    /// - Parameter awayMessageSettings: The new settings for the away message of the business; pass null to disable the away message\n    public func setBusinessAwayMessageSettings(\n        awayMessageSettings: BusinessAwayMessageSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessAwayMessageSettings(\n            awayMessageSettings: awayMessageSettings\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the business away message settings of the current user. Requires Telegram Business subscription\n    /// - Parameter awayMessageSettings: The new settings for the away message of the business; pass null to disable the away message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setBusinessAwayMessageSettings(awayMessageSettings: BusinessAwayMessageSettings?) async throws -> Ok {\n        let query = SetBusinessAwayMessageSettings(\n            awayMessageSettings: awayMessageSettings\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the business start page of the current user. Requires Telegram Business subscription\n    /// - Parameter startPage: The new start page of the business; pass null to remove custom start page\n    public func setBusinessStartPage(\n        startPage: InputBusinessStartPage?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessStartPage(\n            startPage: startPage\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the business start page of the current user. Requires Telegram Business subscription\n    /// - Parameter startPage: The new start page of the business; pass null to remove custom start page\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setBusinessStartPage(startPage: InputBusinessStartPage?) async throws -> Ok {\n        let query = SetBusinessStartPage(\n            startPage: startPage\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends a code to the specified phone number. Aborts previous phone number verification if there was one. On success, returns information about the sent code\n    /// - Parameter phoneNumber: The phone number, in international format\n    /// - Parameter settings: Settings for the authentication of the user's phone number; pass null to use default settings\n    /// - Parameter type: Type of the request for which the code is sent\n    /// - Returns: On success, returns information about the sent code\n    public func sendPhoneNumberCode(\n        phoneNumber: String?,\n        settings: PhoneNumberAuthenticationSettings?,\n        type: PhoneNumberCodeType?,\n        completion: @escaping (Result<AuthenticationCodeInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = SendPhoneNumberCode(\n            phoneNumber: phoneNumber,\n            settings: settings,\n            type: type\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends a code to the specified phone number. Aborts previous phone number verification if there was one. On success, returns information about the sent code\n    /// - Parameter phoneNumber: The phone number, in international format\n    /// - Parameter settings: Settings for the authentication of the user's phone number; pass null to use default settings\n    /// - Parameter type: Type of the request for which the code is sent\n    /// - Returns: On success, returns information about the sent code\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func sendPhoneNumberCode(\n        phoneNumber: String?,\n        settings: PhoneNumberAuthenticationSettings?,\n        type: PhoneNumberCodeType?\n    ) async throws -> AuthenticationCodeInfo {\n        let query = SendPhoneNumberCode(\n            phoneNumber: phoneNumber,\n            settings: settings,\n            type: type\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends Firebase Authentication SMS to the specified phone number. Works only when received a code of the type authenticationCodeTypeFirebaseAndroid or authenticationCodeTypeFirebaseIos\n    /// - Parameter token: Play Integrity API or SafetyNet Attestation API token for the Android application, or secret from push notification for the iOS application\n    public func sendPhoneNumberFirebaseSms(\n        token: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendPhoneNumberFirebaseSms(\n            token: token\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends Firebase Authentication SMS to the specified phone number. Works only when received a code of the type authenticationCodeTypeFirebaseAndroid or authenticationCodeTypeFirebaseIos\n    /// - Parameter token: Play Integrity API or SafetyNet Attestation API token for the Android application, or secret from push notification for the iOS application\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func sendPhoneNumberFirebaseSms(token: String?) async throws -> Ok {\n        let query = SendPhoneNumberFirebaseSms(\n            token: token\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Reports that authentication code wasn't delivered via SMS to the specified phone number; for official mobile applications only\n    /// - Parameter mobileNetworkCode: Current mobile network code\n    public func reportPhoneNumberCodeMissing(\n        mobileNetworkCode: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportPhoneNumberCodeMissing(\n            mobileNetworkCode: mobileNetworkCode\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Reports that authentication code wasn't delivered via SMS to the specified phone number; for official mobile applications only\n    /// - Parameter mobileNetworkCode: Current mobile network code\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func reportPhoneNumberCodeMissing(mobileNetworkCode: String?) async throws -> Ok {\n        let query = ReportPhoneNumberCodeMissing(\n            mobileNetworkCode: mobileNetworkCode\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Resends the authentication code sent to a phone number. Works only if the previously received authenticationCodeInfo next_code_type was not null and the server-specified timeout has passed\n    /// - Parameter reason: Reason of code resending; pass null if unknown\n    public func resendPhoneNumberCode(\n        reason: ResendCodeReason?,\n        completion: @escaping (Result<AuthenticationCodeInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = ResendPhoneNumberCode(\n            reason: reason\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Resends the authentication code sent to a phone number. Works only if the previously received authenticationCodeInfo next_code_type was not null and the server-specified timeout has passed\n    /// - Parameter reason: Reason of code resending; pass null if unknown\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func resendPhoneNumberCode(reason: ResendCodeReason?) async throws -> AuthenticationCodeInfo {\n        let query = ResendPhoneNumberCode(\n            reason: reason\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks the authentication code and completes the request for which the code was sent if appropriate\n    /// - Parameter code: Authentication code to check\n    public func checkPhoneNumberCode(\n        code: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckPhoneNumberCode(\n            code: code\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks the authentication code and completes the request for which the code was sent if appropriate\n    /// - Parameter code: Authentication code to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func checkPhoneNumberCode(code: String?) async throws -> Ok {\n        let query = CheckPhoneNumberCode(\n            code: code\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the business bot that is connected to the current user account. Returns a 404 error if there is no connected bot\n    /// - Returns: The business bot that is connected to the current user account. Returns a 404 error if there is no connected bot\n    public func getBusinessConnectedBot(completion: @escaping (Result<BusinessConnectedBot, Swift.Error>) -> Void) throws {\n        let query = GetBusinessConnectedBot()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the business bot that is connected to the current user account. Returns a 404 error if there is no connected bot\n    /// - Returns: The business bot that is connected to the current user account. Returns a 404 error if there is no connected bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getBusinessConnectedBot() async throws -> BusinessConnectedBot {\n        let query = GetBusinessConnectedBot()\n        return try await self.execute(query: query)\n    }\n\n    /// Adds or changes business bot that is connected to the current user account\n    /// - Parameter bot: Connection settings for the bot\n    public func setBusinessConnectedBot(\n        bot: BusinessConnectedBot?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBusinessConnectedBot(\n            bot: bot\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds or changes business bot that is connected to the current user account\n    /// - Parameter bot: Connection settings for the bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setBusinessConnectedBot(bot: BusinessConnectedBot?) async throws -> Ok {\n        let query = SetBusinessConnectedBot(\n            bot: bot\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes the business bot that is connected to the current user account\n    /// - Parameter botUserId: Unique user identifier for the bot\n    public func deleteBusinessConnectedBot(\n        botUserId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteBusinessConnectedBot(\n            botUserId: botUserId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes the business bot that is connected to the current user account\n    /// - Parameter botUserId: Unique user identifier for the bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteBusinessConnectedBot(botUserId: Int64?) async throws -> Ok {\n        let query = DeleteBusinessConnectedBot(\n            botUserId: botUserId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Pauses or resumes the connected business bot in a specific chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isPaused: Pass true to pause the connected bot in the chat; pass false to resume the bot\n    public func toggleBusinessConnectedBotChatIsPaused(\n        chatId: Int64?,\n        isPaused: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleBusinessConnectedBotChatIsPaused(\n            chatId: chatId,\n            isPaused: isPaused\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Pauses or resumes the connected business bot in a specific chat\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isPaused: Pass true to pause the connected bot in the chat; pass false to resume the bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleBusinessConnectedBotChatIsPaused(\n        chatId: Int64?,\n        isPaused: Bool?\n    ) async throws -> Ok {\n        let query = ToggleBusinessConnectedBotChatIsPaused(\n            chatId: chatId,\n            isPaused: isPaused\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes the connected business bot from a specific chat by adding the chat to businessRecipients.excluded_chat_ids\n    /// - Parameter chatId: Chat identifier\n    public func removeBusinessConnectedBotFromChat(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveBusinessConnectedBotFromChat(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes the connected business bot from a specific chat by adding the chat to businessRecipients.excluded_chat_ids\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeBusinessConnectedBotFromChat(chatId: Int64?) async throws -> Ok {\n        let query = RemoveBusinessConnectedBotFromChat(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns business chat links created for the current account\n    /// - Returns: Business chat links created for the current account\n    public func getBusinessChatLinks(completion: @escaping (Result<BusinessChatLinks, Swift.Error>) -> Void) throws {\n        let query = GetBusinessChatLinks()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns business chat links created for the current account\n    /// - Returns: Business chat links created for the current account\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getBusinessChatLinks() async throws -> BusinessChatLinks {\n        let query = GetBusinessChatLinks()\n        return try await self.execute(query: query)\n    }\n\n    /// Creates a business chat link for the current account. Requires Telegram Business subscription. There can be up to getOption(\"business_chat_link_count_max\") links created. Returns the created link\n    /// - Parameter linkInfo: Information about the link to create\n    /// - Returns: The created link\n    public func createBusinessChatLink(\n        linkInfo: InputBusinessChatLink?,\n        completion: @escaping (Result<BusinessChatLink, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateBusinessChatLink(\n            linkInfo: linkInfo\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Creates a business chat link for the current account. Requires Telegram Business subscription. There can be up to getOption(\"business_chat_link_count_max\") links created. Returns the created link\n    /// - Parameter linkInfo: Information about the link to create\n    /// - Returns: The created link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createBusinessChatLink(linkInfo: InputBusinessChatLink?) async throws -> BusinessChatLink {\n        let query = CreateBusinessChatLink(\n            linkInfo: linkInfo\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits a business chat link of the current account. Requires Telegram Business subscription. Returns the edited link\n    /// - Parameter link: The link to edit\n    /// - Parameter linkInfo: New description of the link\n    /// - Returns: The edited link\n    public func editBusinessChatLink(\n        link: String?,\n        linkInfo: InputBusinessChatLink?,\n        completion: @escaping (Result<BusinessChatLink, Swift.Error>) -> Void\n    ) throws {\n        let query = EditBusinessChatLink(\n            link: link,\n            linkInfo: linkInfo\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits a business chat link of the current account. Requires Telegram Business subscription. Returns the edited link\n    /// - Parameter link: The link to edit\n    /// - Parameter linkInfo: New description of the link\n    /// - Returns: The edited link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func editBusinessChatLink(\n        link: String?,\n        linkInfo: InputBusinessChatLink?\n    ) async throws -> BusinessChatLink {\n        let query = EditBusinessChatLink(\n            link: link,\n            linkInfo: linkInfo\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes a business chat link of the current account\n    /// - Parameter link: The link to delete\n    public func deleteBusinessChatLink(\n        link: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteBusinessChatLink(\n            link: link\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes a business chat link of the current account\n    /// - Parameter link: The link to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteBusinessChatLink(link: String?) async throws -> Ok {\n        let query = DeleteBusinessChatLink(\n            link: link\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a business chat link\n    /// - Parameter linkName: Name of the link\n    /// - Returns: Information about a business chat link\n    public func getBusinessChatLinkInfo(\n        linkName: String?,\n        completion: @escaping (Result<BusinessChatLinkInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBusinessChatLinkInfo(\n            linkName: linkName\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a business chat link\n    /// - Parameter linkName: Name of the link\n    /// - Returns: Information about a business chat link\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getBusinessChatLinkInfo(linkName: String?) async throws -> BusinessChatLinkInfo {\n        let query = GetBusinessChatLinkInfo(\n            linkName: linkName\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an HTTPS link, which can be used to get information about the current user\n    /// - Returns: An HTTPS link, which can be used to get information about the current user\n    public func getUserLink(completion: @escaping (Result<UserLink, Swift.Error>) -> Void) throws {\n        let query = GetUserLink()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an HTTPS link, which can be used to get information about the current user\n    /// - Returns: An HTTPS link, which can be used to get information about the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getUserLink() async throws -> UserLink {\n        let query = GetUserLink()\n        return try await self.execute(query: query)\n    }\n\n    /// Searches a user by a token from the user's link\n    /// - Parameter token: Token to search for\n    public func searchUserByToken(\n        token: String?,\n        completion: @escaping (Result<User, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchUserByToken(\n            token: token\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches a user by a token from the user's link\n    /// - Parameter token: Token to search for\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchUserByToken(token: String?) async throws -> User {\n        let query = SearchUserByToken(\n            token: token\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets the list of commands supported by the bot for the given user scope and language; for bots only\n    /// - Parameter commands: List of the bot's commands\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code. If empty, the commands will be applied to all users from the given scope, for which language there are no dedicated commands\n    /// - Parameter scope: The scope to which the commands are relevant; pass null to change commands in the default bot command scope\n    public func setCommands(\n        commands: [BotCommand]?,\n        languageCode: String?,\n        scope: BotCommandScope?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetCommands(\n            commands: commands,\n            languageCode: languageCode,\n            scope: scope\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets the list of commands supported by the bot for the given user scope and language; for bots only\n    /// - Parameter commands: List of the bot's commands\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code. If empty, the commands will be applied to all users from the given scope, for which language there are no dedicated commands\n    /// - Parameter scope: The scope to which the commands are relevant; pass null to change commands in the default bot command scope\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setCommands(\n        commands: [BotCommand]?,\n        languageCode: String?,\n        scope: BotCommandScope?\n    ) async throws -> Ok {\n        let query = SetCommands(\n            commands: commands,\n            languageCode: languageCode,\n            scope: scope\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes commands supported by the bot for the given user scope and language; for bots only\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code or an empty string\n    /// - Parameter scope: The scope to which the commands are relevant; pass null to delete commands in the default bot command scope\n    public func deleteCommands(\n        languageCode: String?,\n        scope: BotCommandScope?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteCommands(\n            languageCode: languageCode,\n            scope: scope\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes commands supported by the bot for the given user scope and language; for bots only\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code or an empty string\n    /// - Parameter scope: The scope to which the commands are relevant; pass null to delete commands in the default bot command scope\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteCommands(\n        languageCode: String?,\n        scope: BotCommandScope?\n    ) async throws -> Ok {\n        let query = DeleteCommands(\n            languageCode: languageCode,\n            scope: scope\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of commands supported by the bot for the given user scope and language; for bots only\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code or an empty string\n    /// - Parameter scope: The scope to which the commands are relevant; pass null to get commands in the default bot command scope\n    /// - Returns: The list of commands supported by the bot for the given user scope and language\n    public func getCommands(\n        languageCode: String?,\n        scope: BotCommandScope?,\n        completion: @escaping (Result<BotCommands, Swift.Error>) -> Void\n    ) throws {\n        let query = GetCommands(\n            languageCode: languageCode,\n            scope: scope\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of commands supported by the bot for the given user scope and language; for bots only\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code or an empty string\n    /// - Parameter scope: The scope to which the commands are relevant; pass null to get commands in the default bot command scope\n    /// - Returns: The list of commands supported by the bot for the given user scope and language\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getCommands(\n        languageCode: String?,\n        scope: BotCommandScope?\n    ) async throws -> BotCommands {\n        let query = GetCommands(\n            languageCode: languageCode,\n            scope: scope\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets menu button for the given user or for all users; for bots only\n    /// - Parameter menuButton: New menu button\n    /// - Parameter userId: Identifier of the user or 0 to set menu button for all users\n    public func setMenuButton(\n        menuButton: BotMenuButton?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetMenuButton(\n            menuButton: menuButton,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets menu button for the given user or for all users; for bots only\n    /// - Parameter menuButton: New menu button\n    /// - Parameter userId: Identifier of the user or 0 to set menu button for all users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setMenuButton(\n        menuButton: BotMenuButton?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = SetMenuButton(\n            menuButton: menuButton,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns menu button set by the bot for the given user; for bots only\n    /// - Parameter userId: Identifier of the user or 0 to get the default menu button\n    /// - Returns: Menu button set by the bot for the given user\n    public func getMenuButton(\n        userId: Int64?,\n        completion: @escaping (Result<BotMenuButton, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMenuButton(\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns menu button set by the bot for the given user; for bots only\n    /// - Parameter userId: Identifier of the user or 0 to get the default menu button\n    /// - Returns: Menu button set by the bot for the given user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMenuButton(userId: Int64?) async throws -> BotMenuButton {\n        let query = GetMenuButton(\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets default administrator rights for adding the bot to basic group and supergroup chats; for bots only\n    /// - Parameter defaultGroupAdministratorRights: Default administrator rights for adding the bot to basic group and supergroup chats; pass null to remove default rights\n    public func setDefaultGroupAdministratorRights(\n        defaultGroupAdministratorRights: ChatAdministratorRights?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetDefaultGroupAdministratorRights(\n            defaultGroupAdministratorRights: defaultGroupAdministratorRights\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets default administrator rights for adding the bot to basic group and supergroup chats; for bots only\n    /// - Parameter defaultGroupAdministratorRights: Default administrator rights for adding the bot to basic group and supergroup chats; pass null to remove default rights\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setDefaultGroupAdministratorRights(defaultGroupAdministratorRights: ChatAdministratorRights?) async throws -> Ok {\n        let query = SetDefaultGroupAdministratorRights(\n            defaultGroupAdministratorRights: defaultGroupAdministratorRights\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets default administrator rights for adding the bot to channel chats; for bots only\n    /// - Parameter defaultChannelAdministratorRights: Default administrator rights for adding the bot to channels; pass null to remove default rights\n    public func setDefaultChannelAdministratorRights(\n        defaultChannelAdministratorRights: ChatAdministratorRights?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetDefaultChannelAdministratorRights(\n            defaultChannelAdministratorRights: defaultChannelAdministratorRights\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets default administrator rights for adding the bot to channel chats; for bots only\n    /// - Parameter defaultChannelAdministratorRights: Default administrator rights for adding the bot to channels; pass null to remove default rights\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setDefaultChannelAdministratorRights(defaultChannelAdministratorRights: ChatAdministratorRights?) async throws -> Ok {\n        let query = SetDefaultChannelAdministratorRights(\n            defaultChannelAdministratorRights: defaultChannelAdministratorRights\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks whether the specified bot can send messages to the user. Returns a 404 error if can't and the access can be granted by call to allowBotToSendMessages\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Returns: A 404 error if can't and the access can be granted by call to allowBotToSendMessages\n    public func canBotSendMessages(\n        botUserId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CanBotSendMessages(\n            botUserId: botUserId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks whether the specified bot can send messages to the user. Returns a 404 error if can't and the access can be granted by call to allowBotToSendMessages\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Returns: A 404 error if can't and the access can be granted by call to allowBotToSendMessages\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func canBotSendMessages(botUserId: Int64?) async throws -> Ok {\n        let query = CanBotSendMessages(\n            botUserId: botUserId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Allows the specified bot to send messages to the user\n    /// - Parameter botUserId: Identifier of the target bot\n    public func allowBotToSendMessages(\n        botUserId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AllowBotToSendMessages(\n            botUserId: botUserId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Allows the specified bot to send messages to the user\n    /// - Parameter botUserId: Identifier of the target bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func allowBotToSendMessages(botUserId: Int64?) async throws -> Ok {\n        let query = AllowBotToSendMessages(\n            botUserId: botUserId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends a custom request from a Web App\n    /// - Parameter botUserId: Identifier of the bot\n    /// - Parameter method: The method name\n    /// - Parameter parameters: JSON-serialized method parameters\n    public func sendWebAppCustomRequest(\n        botUserId: Int64?,\n        method: String?,\n        parameters: String?,\n        completion: @escaping (Result<CustomRequestResult, Swift.Error>) -> Void\n    ) throws {\n        let query = SendWebAppCustomRequest(\n            botUserId: botUserId,\n            method: method,\n            parameters: parameters\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends a custom request from a Web App\n    /// - Parameter botUserId: Identifier of the bot\n    /// - Parameter method: The method name\n    /// - Parameter parameters: JSON-serialized method parameters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func sendWebAppCustomRequest(\n        botUserId: Int64?,\n        method: String?,\n        parameters: String?\n    ) async throws -> CustomRequestResult {\n        let query = SendWebAppCustomRequest(\n            botUserId: botUserId,\n            method: method,\n            parameters: parameters\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of media previews of a bot\n    /// - Parameter botUserId: Identifier of the target bot. The bot must have the main Web App\n    /// - Returns: The list of media previews of a bot\n    public func getBotMediaPreviews(\n        botUserId: Int64?,\n        completion: @escaping (Result<BotMediaPreviews, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBotMediaPreviews(\n            botUserId: botUserId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of media previews of a bot\n    /// - Parameter botUserId: Identifier of the target bot. The bot must have the main Web App\n    /// - Returns: The list of media previews of a bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getBotMediaPreviews(botUserId: Int64?) async throws -> BotMediaPreviews {\n        let query = GetBotMediaPreviews(\n            botUserId: botUserId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of media previews for the given language and the list of languages for which the bot has dedicated previews\n    /// - Parameter botUserId: Identifier of the target bot. The bot must be owned and must have the main Web App\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code for which to get previews. If empty, then default previews are returned\n    /// - Returns: The list of media previews for the given language and the list of languages for which the bot has dedicated previews\n    public func getBotMediaPreviewInfo(\n        botUserId: Int64?,\n        languageCode: String?,\n        completion: @escaping (Result<BotMediaPreviewInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBotMediaPreviewInfo(\n            botUserId: botUserId,\n            languageCode: languageCode\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of media previews for the given language and the list of languages for which the bot has dedicated previews\n    /// - Parameter botUserId: Identifier of the target bot. The bot must be owned and must have the main Web App\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code for which to get previews. If empty, then default previews are returned\n    /// - Returns: The list of media previews for the given language and the list of languages for which the bot has dedicated previews\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getBotMediaPreviewInfo(\n        botUserId: Int64?,\n        languageCode: String?\n    ) async throws -> BotMediaPreviewInfo {\n        let query = GetBotMediaPreviewInfo(\n            botUserId: botUserId,\n            languageCode: languageCode\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds a new media preview to the beginning of the list of media previews of a bot. Returns the added preview after addition is completed server-side. The total number of previews must not exceed getOption(\"bot_media_preview_count_max\") for the given language\n    /// - Parameter botUserId: Identifier of the target bot. The bot must be owned and must have the main Web App\n    /// - Parameter content: Content of the added preview\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code for which preview is added. If empty, then the preview will be shown to all users for whose languages there are no dedicated previews. If non-empty, then there must be an official language pack of the same name, which is returned by getLocalizationTargetInfo\n    /// - Returns: The added preview after addition is completed server-side\n    public func addBotMediaPreview(\n        botUserId: Int64?,\n        content: InputStoryContent?,\n        languageCode: String?,\n        completion: @escaping (Result<BotMediaPreview, Swift.Error>) -> Void\n    ) throws {\n        let query = AddBotMediaPreview(\n            botUserId: botUserId,\n            content: content,\n            languageCode: languageCode\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds a new media preview to the beginning of the list of media previews of a bot. Returns the added preview after addition is completed server-side. The total number of previews must not exceed getOption(\"bot_media_preview_count_max\") for the given language\n    /// - Parameter botUserId: Identifier of the target bot. The bot must be owned and must have the main Web App\n    /// - Parameter content: Content of the added preview\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code for which preview is added. If empty, then the preview will be shown to all users for whose languages there are no dedicated previews. If non-empty, then there must be an official language pack of the same name, which is returned by getLocalizationTargetInfo\n    /// - Returns: The added preview after addition is completed server-side\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func addBotMediaPreview(\n        botUserId: Int64?,\n        content: InputStoryContent?,\n        languageCode: String?\n    ) async throws -> BotMediaPreview {\n        let query = AddBotMediaPreview(\n            botUserId: botUserId,\n            content: content,\n            languageCode: languageCode\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Replaces media preview in the list of media previews of a bot. Returns the new preview after edit is completed server-side\n    /// - Parameter botUserId: Identifier of the target bot. The bot must be owned and must have the main Web App\n    /// - Parameter content: Content of the new preview\n    /// - Parameter fileId: File identifier of the media to replace\n    /// - Parameter languageCode: Language code of the media preview to edit\n    /// - Returns: The new preview after edit is completed server-side\n    public func editBotMediaPreview(\n        botUserId: Int64?,\n        content: InputStoryContent?,\n        fileId: Int?,\n        languageCode: String?,\n        completion: @escaping (Result<BotMediaPreview, Swift.Error>) -> Void\n    ) throws {\n        let query = EditBotMediaPreview(\n            botUserId: botUserId,\n            content: content,\n            fileId: fileId,\n            languageCode: languageCode\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Replaces media preview in the list of media previews of a bot. Returns the new preview after edit is completed server-side\n    /// - Parameter botUserId: Identifier of the target bot. The bot must be owned and must have the main Web App\n    /// - Parameter content: Content of the new preview\n    /// - Parameter fileId: File identifier of the media to replace\n    /// - Parameter languageCode: Language code of the media preview to edit\n    /// - Returns: The new preview after edit is completed server-side\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func editBotMediaPreview(\n        botUserId: Int64?,\n        content: InputStoryContent?,\n        fileId: Int?,\n        languageCode: String?\n    ) async throws -> BotMediaPreview {\n        let query = EditBotMediaPreview(\n            botUserId: botUserId,\n            content: content,\n            fileId: fileId,\n            languageCode: languageCode\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes order of media previews in the list of media previews of a bot\n    /// - Parameter botUserId: Identifier of the target bot. The bot must be owned and must have the main Web App\n    /// - Parameter fileIds: File identifiers of the media in the new order\n    /// - Parameter languageCode: Language code of the media previews to reorder\n    public func reorderBotMediaPreviews(\n        botUserId: Int64?,\n        fileIds: [Int]?,\n        languageCode: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderBotMediaPreviews(\n            botUserId: botUserId,\n            fileIds: fileIds,\n            languageCode: languageCode\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes order of media previews in the list of media previews of a bot\n    /// - Parameter botUserId: Identifier of the target bot. The bot must be owned and must have the main Web App\n    /// - Parameter fileIds: File identifiers of the media in the new order\n    /// - Parameter languageCode: Language code of the media previews to reorder\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func reorderBotMediaPreviews(\n        botUserId: Int64?,\n        fileIds: [Int]?,\n        languageCode: String?\n    ) async throws -> Ok {\n        let query = ReorderBotMediaPreviews(\n            botUserId: botUserId,\n            fileIds: fileIds,\n            languageCode: languageCode\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes media previews from the list of media previews of a bot\n    /// - Parameter botUserId: Identifier of the target bot. The bot must be owned and must have the main Web App\n    /// - Parameter fileIds: File identifiers of the media to delete\n    /// - Parameter languageCode: Language code of the media previews to delete\n    public func deleteBotMediaPreviews(\n        botUserId: Int64?,\n        fileIds: [Int]?,\n        languageCode: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteBotMediaPreviews(\n            botUserId: botUserId,\n            fileIds: fileIds,\n            languageCode: languageCode\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes media previews from the list of media previews of a bot\n    /// - Parameter botUserId: Identifier of the target bot. The bot must be owned and must have the main Web App\n    /// - Parameter fileIds: File identifiers of the media to delete\n    /// - Parameter languageCode: Language code of the media previews to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteBotMediaPreviews(\n        botUserId: Int64?,\n        fileIds: [Int]?,\n        languageCode: String?\n    ) async throws -> Ok {\n        let query = DeleteBotMediaPreviews(\n            botUserId: botUserId,\n            fileIds: fileIds,\n            languageCode: languageCode\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks whether a username can be set for a new bot. Use checkChatUsername to check username for other chat types\n    /// - Parameter username: Username to be checked\n    public func checkBotUsername(\n        username: String?,\n        completion: @escaping (Result<CheckChatUsernameResult, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckBotUsername(\n            username: username\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks whether a username can be set for a new bot. Use checkChatUsername to check username for other chat types\n    /// - Parameter username: Username to be checked\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func checkBotUsername(username: String?) async throws -> CheckChatUsernameResult {\n        let query = CheckBotUsername(\n            username: username\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Creates a bot which will be managed by another bot. Returns the created bot. May return an error with a message \"BOT_CREATE_LIMIT_EXCEEDED\" if the user already owns the maximum allowed number of bots as per premiumLimitTypeOwnedBotCount. An internal link \"https://t.me/BotFather?start=deletebot\" can be processed to handle the error\n    /// - Parameter managerBotUserId: Identifier of the bot that will manage the created bot\n    /// - Parameter name: Name of the bot; 1-64 characters\n    /// - Parameter username: Username of the bot. The username must end with \"bot\". Use checkBotUsername to find whether the name is suitable\n    /// - Parameter viaLink: Pass true if the bot is created from an internalLinkTypeRequestManagedBot link\n    /// - Returns: The created bot. May return an error with a message \"BOT_CREATE_LIMIT_EXCEEDED\" if the user already owns the maximum allowed number of bots as per premiumLimitTypeOwnedBotCount\n    public func createBot(\n        managerBotUserId: Int64?,\n        name: String?,\n        username: String?,\n        viaLink: Bool?,\n        completion: @escaping (Result<User, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateBot(\n            managerBotUserId: managerBotUserId,\n            name: name,\n            username: username,\n            viaLink: viaLink\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Creates a bot which will be managed by another bot. Returns the created bot. May return an error with a message \"BOT_CREATE_LIMIT_EXCEEDED\" if the user already owns the maximum allowed number of bots as per premiumLimitTypeOwnedBotCount. An internal link \"https://t.me/BotFather?start=deletebot\" can be processed to handle the error\n    /// - Parameter managerBotUserId: Identifier of the bot that will manage the created bot\n    /// - Parameter name: Name of the bot; 1-64 characters\n    /// - Parameter username: Username of the bot. The username must end with \"bot\". Use checkBotUsername to find whether the name is suitable\n    /// - Parameter viaLink: Pass true if the bot is created from an internalLinkTypeRequestManagedBot link\n    /// - Returns: The created bot. May return an error with a message \"BOT_CREATE_LIMIT_EXCEEDED\" if the user already owns the maximum allowed number of bots as per premiumLimitTypeOwnedBotCount\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createBot(\n        managerBotUserId: Int64?,\n        name: String?,\n        username: String?,\n        viaLink: Bool?\n    ) async throws -> User {\n        let query = CreateBot(\n            managerBotUserId: managerBotUserId,\n            name: name,\n            username: username,\n            viaLink: viaLink\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns token of a managed bot; for bots only\n    /// - Parameter botUserId: Identifier of the managed bot\n    /// - Parameter revoke: Pass true to revoke the current token and create a new one\n    /// - Returns: Token of a managed bot\n    public func getManagedBotToken(\n        botUserId: Int64?,\n        revoke: Bool?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetManagedBotToken(\n            botUserId: botUserId,\n            revoke: revoke\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns token of a managed bot; for bots only\n    /// - Parameter botUserId: Identifier of the managed bot\n    /// - Parameter revoke: Pass true to revoke the current token and create a new one\n    /// - Returns: Token of a managed bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getManagedBotToken(\n        botUserId: Int64?,\n        revoke: Bool?\n    ) async throws -> Text {\n        let query = GetManagedBotToken(\n            botUserId: botUserId,\n            revoke: revoke\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns access settings of a managed bot; for bots only\n    /// - Parameter botUserId: Identifier of the managed bot\n    /// - Returns: Access settings of a managed bot\n    public func getManagedBotAccessSettings(\n        botUserId: Int64?,\n        completion: @escaping (Result<BotAccessSettings, Swift.Error>) -> Void\n    ) throws {\n        let query = GetManagedBotAccessSettings(\n            botUserId: botUserId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns access settings of a managed bot; for bots only\n    /// - Parameter botUserId: Identifier of the managed bot\n    /// - Returns: Access settings of a managed bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getManagedBotAccessSettings(botUserId: Int64?) async throws -> BotAccessSettings {\n        let query = GetManagedBotAccessSettings(\n            botUserId: botUserId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets access settings of a managed bot; for bots only\n    /// - Parameter botUserId: Identifier of the managed bot\n    /// - Parameter settings: New access settings\n    public func setManagedBotAccessSettings(\n        botUserId: Int64?,\n        settings: BotAccessSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetManagedBotAccessSettings(\n            botUserId: botUserId,\n            settings: settings\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets access settings of a managed bot; for bots only\n    /// - Parameter botUserId: Identifier of the managed bot\n    /// - Parameter settings: New access settings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setManagedBotAccessSettings(\n        botUserId: Int64?,\n        settings: BotAccessSettings?\n    ) async throws -> Ok {\n        let query = SetManagedBotAccessSettings(\n            botUserId: botUserId,\n            settings: settings\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets the name of a bot. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code. If empty, the name will be shown to all users for whose languages there is no dedicated name\n    /// - Parameter name: New bot's name on the specified language; 0-64 characters; must be non-empty if language code is empty\n    public func setBotName(\n        botUserId: Int64?,\n        languageCode: String?,\n        name: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBotName(\n            botUserId: botUserId,\n            languageCode: languageCode,\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets the name of a bot. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code. If empty, the name will be shown to all users for whose languages there is no dedicated name\n    /// - Parameter name: New bot's name on the specified language; 0-64 characters; must be non-empty if language code is empty\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setBotName(\n        botUserId: Int64?,\n        languageCode: String?,\n        name: String?\n    ) async throws -> Ok {\n        let query = SetBotName(\n            botUserId: botUserId,\n            languageCode: languageCode,\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the name of a bot in the given language. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code or an empty string\n    /// - Returns: The name of a bot in the given language\n    public func getBotName(\n        botUserId: Int64?,\n        languageCode: String?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBotName(\n            botUserId: botUserId,\n            languageCode: languageCode\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the name of a bot in the given language. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code or an empty string\n    /// - Returns: The name of a bot in the given language\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getBotName(\n        botUserId: Int64?,\n        languageCode: String?\n    ) async throws -> Text {\n        let query = GetBotName(\n            botUserId: botUserId,\n            languageCode: languageCode\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes a profile photo for a bot\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter photo: Profile photo to set; pass null to delete the chat photo\n    public func setBotProfilePhoto(\n        botUserId: Int64?,\n        photo: InputChatPhoto?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBotProfilePhoto(\n            botUserId: botUserId,\n            photo: photo\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes a profile photo for a bot\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter photo: Profile photo to set; pass null to delete the chat photo\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setBotProfilePhoto(\n        botUserId: Int64?,\n        photo: InputChatPhoto?\n    ) async throws -> Ok {\n        let query = SetBotProfilePhoto(\n            botUserId: botUserId,\n            photo: photo\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes active state for a username of a bot. The editable username can be disabled only if there are other active usernames. May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter isActive: Pass true to activate the username; pass false to disable it\n    /// - Parameter username: The username to change\n    /// - Returns: May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\n    public func toggleBotUsernameIsActive(\n        botUserId: Int64?,\n        isActive: Bool?,\n        username: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleBotUsernameIsActive(\n            botUserId: botUserId,\n            isActive: isActive,\n            username: username\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes active state for a username of a bot. The editable username can be disabled only if there are other active usernames. May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter isActive: Pass true to activate the username; pass false to disable it\n    /// - Parameter username: The username to change\n    /// - Returns: May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleBotUsernameIsActive(\n        botUserId: Int64?,\n        isActive: Bool?,\n        username: String?\n    ) async throws -> Ok {\n        let query = ToggleBotUsernameIsActive(\n            botUserId: botUserId,\n            isActive: isActive,\n            username: username\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes order of active usernames of a bot. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter usernames: The new order of active usernames. All currently active usernames must be specified\n    public func reorderBotActiveUsernames(\n        botUserId: Int64?,\n        usernames: [String]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderBotActiveUsernames(\n            botUserId: botUserId,\n            usernames: usernames\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes order of active usernames of a bot. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter usernames: The new order of active usernames. All currently active usernames must be specified\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func reorderBotActiveUsernames(\n        botUserId: Int64?,\n        usernames: [String]?\n    ) async throws -> Ok {\n        let query = ReorderBotActiveUsernames(\n            botUserId: botUserId,\n            usernames: usernames\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets the text shown in the chat with a bot if the chat is empty. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter description: \n    /// - Parameter languageCode: A two-letter ISO 639-1 language code. If empty, the description will be shown to all users for whose languages there is no dedicated description\n    public func setBotInfoDescription(\n        botUserId: Int64?,\n        description: String?,\n        languageCode: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBotInfoDescription(\n            botUserId: botUserId,\n            description: description,\n            languageCode: languageCode\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets the text shown in the chat with a bot if the chat is empty. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter description: \n    /// - Parameter languageCode: A two-letter ISO 639-1 language code. If empty, the description will be shown to all users for whose languages there is no dedicated description\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setBotInfoDescription(\n        botUserId: Int64?,\n        description: String?,\n        languageCode: String?\n    ) async throws -> Ok {\n        let query = SetBotInfoDescription(\n            botUserId: botUserId,\n            description: description,\n            languageCode: languageCode\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the text shown in the chat with a bot if the chat is empty in the given language. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code or an empty string\n    /// - Returns: The text shown in the chat with a bot if the chat is empty in the given language\n    public func getBotInfoDescription(\n        botUserId: Int64?,\n        languageCode: String?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBotInfoDescription(\n            botUserId: botUserId,\n            languageCode: languageCode\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the text shown in the chat with a bot if the chat is empty in the given language. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code or an empty string\n    /// - Returns: The text shown in the chat with a bot if the chat is empty in the given language\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getBotInfoDescription(\n        botUserId: Int64?,\n        languageCode: String?\n    ) async throws -> Text {\n        let query = GetBotInfoDescription(\n            botUserId: botUserId,\n            languageCode: languageCode\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets the text shown on a bot's profile page and sent together with the link when users share the bot. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code. If empty, the short description will be shown to all users for whose languages there is no dedicated description\n    /// - Parameter shortDescription: New bot's short description on the specified language\n    public func setBotInfoShortDescription(\n        botUserId: Int64?,\n        languageCode: String?,\n        shortDescription: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBotInfoShortDescription(\n            botUserId: botUserId,\n            languageCode: languageCode,\n            shortDescription: shortDescription\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets the text shown on a bot's profile page and sent together with the link when users share the bot. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code. If empty, the short description will be shown to all users for whose languages there is no dedicated description\n    /// - Parameter shortDescription: New bot's short description on the specified language\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setBotInfoShortDescription(\n        botUserId: Int64?,\n        languageCode: String?,\n        shortDescription: String?\n    ) async throws -> Ok {\n        let query = SetBotInfoShortDescription(\n            botUserId: botUserId,\n            languageCode: languageCode,\n            shortDescription: shortDescription\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the text shown on a bot's profile page and sent together with the link when users share the bot in the given language. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code or an empty string\n    /// - Returns: The text shown on a bot's profile page and sent together with the link when users share the bot in the given language\n    public func getBotInfoShortDescription(\n        botUserId: Int64?,\n        languageCode: String?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBotInfoShortDescription(\n            botUserId: botUserId,\n            languageCode: languageCode\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the text shown on a bot's profile page and sent together with the link when users share the bot in the given language. Can be called only if userTypeBot.can_be_edited == true\n    /// - Parameter botUserId: Identifier of the target bot\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code or an empty string\n    /// - Returns: The text shown on a bot's profile page and sent together with the link when users share the bot in the given language\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getBotInfoShortDescription(\n        botUserId: Int64?,\n        languageCode: String?\n    ) async throws -> Text {\n        let query = GetBotInfoShortDescription(\n            botUserId: botUserId,\n            languageCode: languageCode\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the verification status of a user or a chat by an owned bot\n    /// - Parameter botUserId: Identifier of the owned bot, which will verify the user or the chat\n    /// - Parameter customDescription: Custom description of verification reason; 0-getOption(\"bot_verification_custom_description_length_max\"). If empty, then \"was verified by organization \"organization_name\"\" will be used as description. Can be specified only if the bot is allowed to provide custom description\n    /// - Parameter verifiedId: Identifier of the user or the supergroup or channel chat, which will be verified by the bot\n    public func setMessageSenderBotVerification(\n        botUserId: Int64?,\n        customDescription: String?,\n        verifiedId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetMessageSenderBotVerification(\n            botUserId: botUserId,\n            customDescription: customDescription,\n            verifiedId: verifiedId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the verification status of a user or a chat by an owned bot\n    /// - Parameter botUserId: Identifier of the owned bot, which will verify the user or the chat\n    /// - Parameter customDescription: Custom description of verification reason; 0-getOption(\"bot_verification_custom_description_length_max\"). If empty, then \"was verified by organization \"organization_name\"\" will be used as description. Can be specified only if the bot is allowed to provide custom description\n    /// - Parameter verifiedId: Identifier of the user or the supergroup or channel chat, which will be verified by the bot\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setMessageSenderBotVerification(\n        botUserId: Int64?,\n        customDescription: String?,\n        verifiedId: MessageSender?\n    ) async throws -> Ok {\n        let query = SetMessageSenderBotVerification(\n            botUserId: botUserId,\n            customDescription: customDescription,\n            verifiedId: verifiedId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes the verification status of a user or a chat by an owned bot\n    /// - Parameter botUserId: Identifier of the owned bot, which verified the user or the chat\n    /// - Parameter verifiedId: Identifier of the user or the supergroup or channel chat, which verification is removed\n    public func removeMessageSenderBotVerification(\n        botUserId: Int64?,\n        verifiedId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveMessageSenderBotVerification(\n            botUserId: botUserId,\n            verifiedId: verifiedId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes the verification status of a user or a chat by an owned bot\n    /// - Parameter botUserId: Identifier of the owned bot, which verified the user or the chat\n    /// - Parameter verifiedId: Identifier of the user or the supergroup or channel chat, which verification is removed\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeMessageSenderBotVerification(\n        botUserId: Int64?,\n        verifiedId: MessageSender?\n    ) async throws -> Ok {\n        let query = RemoveMessageSenderBotVerification(\n            botUserId: botUserId,\n            verifiedId: verifiedId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns all active sessions of the current user\n    /// - Returns: All active sessions of the current user\n    public func getActiveSessions(completion: @escaping (Result<Sessions, Swift.Error>) -> Void) throws {\n        let query = GetActiveSessions()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns all active sessions of the current user\n    /// - Returns: All active sessions of the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getActiveSessions() async throws -> Sessions {\n        let query = GetActiveSessions()\n        return try await self.execute(query: query)\n    }\n\n    /// Terminates a session of the current user\n    /// - Parameter sessionId: Session identifier\n    public func terminateSession(\n        sessionId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = TerminateSession(\n            sessionId: sessionId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Terminates a session of the current user\n    /// - Parameter sessionId: Session identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func terminateSession(sessionId: TdInt64?) async throws -> Ok {\n        let query = TerminateSession(\n            sessionId: sessionId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Terminates all other sessions of the current user\n    public func terminateAllOtherSessions(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = TerminateAllOtherSessions()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Terminates all other sessions of the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func terminateAllOtherSessions() async throws -> Ok {\n        let query = TerminateAllOtherSessions()\n        return try await self.execute(query: query)\n    }\n\n    /// Confirms an unconfirmed session of the current user from another device\n    /// - Parameter sessionId: Session identifier\n    public func confirmSession(\n        sessionId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ConfirmSession(\n            sessionId: sessionId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Confirms an unconfirmed session of the current user from another device\n    /// - Parameter sessionId: Session identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func confirmSession(sessionId: TdInt64?) async throws -> Ok {\n        let query = ConfirmSession(\n            sessionId: sessionId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether a session can accept incoming calls\n    /// - Parameter canAcceptCalls: Pass true to allow accepting incoming calls by the session; pass false otherwise\n    /// - Parameter sessionId: Session identifier\n    public func toggleSessionCanAcceptCalls(\n        canAcceptCalls: Bool?,\n        sessionId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSessionCanAcceptCalls(\n            canAcceptCalls: canAcceptCalls,\n            sessionId: sessionId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether a session can accept incoming calls\n    /// - Parameter canAcceptCalls: Pass true to allow accepting incoming calls by the session; pass false otherwise\n    /// - Parameter sessionId: Session identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleSessionCanAcceptCalls(\n        canAcceptCalls: Bool?,\n        sessionId: TdInt64?\n    ) async throws -> Ok {\n        let query = ToggleSessionCanAcceptCalls(\n            canAcceptCalls: canAcceptCalls,\n            sessionId: sessionId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether a session can accept incoming secret chats\n    /// - Parameter canAcceptSecretChats: Pass true to allow accepting secret chats by the session; pass false otherwise\n    /// - Parameter sessionId: Session identifier\n    public func toggleSessionCanAcceptSecretChats(\n        canAcceptSecretChats: Bool?,\n        sessionId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSessionCanAcceptSecretChats(\n            canAcceptSecretChats: canAcceptSecretChats,\n            sessionId: sessionId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether a session can accept incoming secret chats\n    /// - Parameter canAcceptSecretChats: Pass true to allow accepting secret chats by the session; pass false otherwise\n    /// - Parameter sessionId: Session identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleSessionCanAcceptSecretChats(\n        canAcceptSecretChats: Bool?,\n        sessionId: TdInt64?\n    ) async throws -> Ok {\n        let query = ToggleSessionCanAcceptSecretChats(\n            canAcceptSecretChats: canAcceptSecretChats,\n            sessionId: sessionId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the period of inactivity after which sessions will automatically be terminated\n    /// - Parameter inactiveSessionTtlDays: New number of days of inactivity before sessions will be automatically terminated; 1-366 days\n    public func setInactiveSessionTtl(\n        inactiveSessionTtlDays: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetInactiveSessionTtl(\n            inactiveSessionTtlDays: inactiveSessionTtlDays\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the period of inactivity after which sessions will automatically be terminated\n    /// - Parameter inactiveSessionTtlDays: New number of days of inactivity before sessions will be automatically terminated; 1-366 days\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setInactiveSessionTtl(inactiveSessionTtlDays: Int?) async throws -> Ok {\n        let query = SetInactiveSessionTtl(\n            inactiveSessionTtlDays: inactiveSessionTtlDays\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns all website where the current user used Telegram to log in\n    /// - Returns: All website where the current user used Telegram to log in\n    public func getConnectedWebsites(completion: @escaping (Result<ConnectedWebsites, Swift.Error>) -> Void) throws {\n        let query = GetConnectedWebsites()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns all website where the current user used Telegram to log in\n    /// - Returns: All website where the current user used Telegram to log in\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getConnectedWebsites() async throws -> ConnectedWebsites {\n        let query = GetConnectedWebsites()\n        return try await self.execute(query: query)\n    }\n\n    /// Disconnects website from the current user's Telegram account\n    /// - Parameter websiteId: Website identifier\n    public func disconnectWebsite(\n        websiteId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DisconnectWebsite(\n            websiteId: websiteId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Disconnects website from the current user's Telegram account\n    /// - Parameter websiteId: Website identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func disconnectWebsite(websiteId: TdInt64?) async throws -> Ok {\n        let query = DisconnectWebsite(\n            websiteId: websiteId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Disconnects all websites from the current user's Telegram account\n    public func disconnectAllWebsites(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = DisconnectAllWebsites()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Disconnects all websites from the current user's Telegram account\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func disconnectAllWebsites() async throws -> Ok {\n        let query = DisconnectAllWebsites()\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the editable username of a supergroup or channel, requires owner privileges in the supergroup or channel\n    /// - Parameter supergroupId: Identifier of the supergroup or channel\n    /// - Parameter username: New value of the username. Use an empty string to remove the username. The username can't be completely removed if there is another active or disabled username\n    public func setSupergroupUsername(\n        supergroupId: Int64?,\n        username: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetSupergroupUsername(\n            supergroupId: supergroupId,\n            username: username\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the editable username of a supergroup or channel, requires owner privileges in the supergroup or channel\n    /// - Parameter supergroupId: Identifier of the supergroup or channel\n    /// - Parameter username: New value of the username. Use an empty string to remove the username. The username can't be completely removed if there is another active or disabled username\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setSupergroupUsername(\n        supergroupId: Int64?,\n        username: String?\n    ) async throws -> Ok {\n        let query = SetSupergroupUsername(\n            supergroupId: supergroupId,\n            username: username\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes active state for a username of a supergroup or channel, requires owner privileges in the supergroup or channel. The editable username can't be disabled. May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\n    /// - Parameter isActive: Pass true to activate the username; pass false to disable it\n    /// - Parameter supergroupId: Identifier of the supergroup or channel\n    /// - Parameter username: The username to change\n    /// - Returns: May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\n    public func toggleSupergroupUsernameIsActive(\n        isActive: Bool?,\n        supergroupId: Int64?,\n        username: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupUsernameIsActive(\n            isActive: isActive,\n            supergroupId: supergroupId,\n            username: username\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes active state for a username of a supergroup or channel, requires owner privileges in the supergroup or channel. The editable username can't be disabled. May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\n    /// - Parameter isActive: Pass true to activate the username; pass false to disable it\n    /// - Parameter supergroupId: Identifier of the supergroup or channel\n    /// - Parameter username: The username to change\n    /// - Returns: May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleSupergroupUsernameIsActive(\n        isActive: Bool?,\n        supergroupId: Int64?,\n        username: String?\n    ) async throws -> Ok {\n        let query = ToggleSupergroupUsernameIsActive(\n            isActive: isActive,\n            supergroupId: supergroupId,\n            username: username\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Disables all active non-editable usernames of a supergroup or channel, requires owner privileges in the supergroup or channel\n    /// - Parameter supergroupId: Identifier of the supergroup or channel\n    public func disableAllSupergroupUsernames(\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DisableAllSupergroupUsernames(\n            supergroupId: supergroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Disables all active non-editable usernames of a supergroup or channel, requires owner privileges in the supergroup or channel\n    /// - Parameter supergroupId: Identifier of the supergroup or channel\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func disableAllSupergroupUsernames(supergroupId: Int64?) async throws -> Ok {\n        let query = DisableAllSupergroupUsernames(\n            supergroupId: supergroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes order of active usernames of a supergroup or channel, requires owner privileges in the supergroup or channel\n    /// - Parameter supergroupId: Identifier of the supergroup or channel\n    /// - Parameter usernames: The new order of active usernames. All currently active usernames must be specified\n    public func reorderSupergroupActiveUsernames(\n        supergroupId: Int64?,\n        usernames: [String]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderSupergroupActiveUsernames(\n            supergroupId: supergroupId,\n            usernames: usernames\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes order of active usernames of a supergroup or channel, requires owner privileges in the supergroup or channel\n    /// - Parameter supergroupId: Identifier of the supergroup or channel\n    /// - Parameter usernames: The new order of active usernames. All currently active usernames must be specified\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func reorderSupergroupActiveUsernames(\n        supergroupId: Int64?,\n        usernames: [String]?\n    ) async throws -> Ok {\n        let query = ReorderSupergroupActiveUsernames(\n            supergroupId: supergroupId,\n            usernames: usernames\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the sticker set of a supergroup; requires can_change_info administrator right\n    /// - Parameter stickerSetId: New value of the supergroup sticker set identifier. Use 0 to remove the supergroup sticker set\n    /// - Parameter supergroupId: Identifier of the supergroup\n    public func setSupergroupStickerSet(\n        stickerSetId: TdInt64?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetSupergroupStickerSet(\n            stickerSetId: stickerSetId,\n            supergroupId: supergroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the sticker set of a supergroup; requires can_change_info administrator right\n    /// - Parameter stickerSetId: New value of the supergroup sticker set identifier. Use 0 to remove the supergroup sticker set\n    /// - Parameter supergroupId: Identifier of the supergroup\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setSupergroupStickerSet(\n        stickerSetId: TdInt64?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = SetSupergroupStickerSet(\n            stickerSetId: stickerSetId,\n            supergroupId: supergroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the custom emoji sticker set of a supergroup; requires can_change_info administrator right. The chat must have at least chatBoostFeatures.min_custom_emoji_sticker_set_boost_level boost level to pass the corresponding color\n    /// - Parameter customEmojiStickerSetId: New value of the custom emoji sticker set identifier for the supergroup. Use 0 to remove the custom emoji sticker set in the supergroup\n    /// - Parameter supergroupId: Identifier of the supergroup\n    public func setSupergroupCustomEmojiStickerSet(\n        customEmojiStickerSetId: TdInt64?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetSupergroupCustomEmojiStickerSet(\n            customEmojiStickerSetId: customEmojiStickerSetId,\n            supergroupId: supergroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the custom emoji sticker set of a supergroup; requires can_change_info administrator right. The chat must have at least chatBoostFeatures.min_custom_emoji_sticker_set_boost_level boost level to pass the corresponding color\n    /// - Parameter customEmojiStickerSetId: New value of the custom emoji sticker set identifier for the supergroup. Use 0 to remove the custom emoji sticker set in the supergroup\n    /// - Parameter supergroupId: Identifier of the supergroup\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setSupergroupCustomEmojiStickerSet(\n        customEmojiStickerSetId: TdInt64?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = SetSupergroupCustomEmojiStickerSet(\n            customEmojiStickerSetId: customEmojiStickerSetId,\n            supergroupId: supergroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the number of times the supergroup must be boosted by a user to ignore slow mode and chat permission restrictions; requires can_restrict_members administrator right\n    /// - Parameter supergroupId: Identifier of the supergroup\n    /// - Parameter unrestrictBoostCount: New value of the unrestrict_boost_count supergroup setting; 0-8. Use 0 to remove the setting\n    public func setSupergroupUnrestrictBoostCount(\n        supergroupId: Int64?,\n        unrestrictBoostCount: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetSupergroupUnrestrictBoostCount(\n            supergroupId: supergroupId,\n            unrestrictBoostCount: unrestrictBoostCount\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the number of times the supergroup must be boosted by a user to ignore slow mode and chat permission restrictions; requires can_restrict_members administrator right\n    /// - Parameter supergroupId: Identifier of the supergroup\n    /// - Parameter unrestrictBoostCount: New value of the unrestrict_boost_count supergroup setting; 0-8. Use 0 to remove the setting\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setSupergroupUnrestrictBoostCount(\n        supergroupId: Int64?,\n        unrestrictBoostCount: Int?\n    ) async throws -> Ok {\n        let query = SetSupergroupUnrestrictBoostCount(\n            supergroupId: supergroupId,\n            unrestrictBoostCount: unrestrictBoostCount\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the main profile tab of the channel; requires can_change_info administrator right\n    /// - Parameter mainProfileTab: The new value of the main profile tab\n    /// - Parameter supergroupId: Identifier of the channel\n    public func setSupergroupMainProfileTab(\n        mainProfileTab: ProfileTab?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetSupergroupMainProfileTab(\n            mainProfileTab: mainProfileTab,\n            supergroupId: supergroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the main profile tab of the channel; requires can_change_info administrator right\n    /// - Parameter mainProfileTab: The new value of the main profile tab\n    /// - Parameter supergroupId: Identifier of the channel\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setSupergroupMainProfileTab(\n        mainProfileTab: ProfileTab?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = SetSupergroupMainProfileTab(\n            mainProfileTab: mainProfileTab,\n            supergroupId: supergroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether sender signature or link to the account is added to sent messages in a channel; requires can_change_info member right\n    /// - Parameter showMessageSender: New value of show_message_sender\n    /// - Parameter signMessages: New value of sign_messages\n    /// - Parameter supergroupId: Identifier of the channel\n    public func toggleSupergroupSignMessages(\n        showMessageSender: Bool?,\n        signMessages: Bool?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupSignMessages(\n            showMessageSender: showMessageSender,\n            signMessages: signMessages,\n            supergroupId: supergroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether sender signature or link to the account is added to sent messages in a channel; requires can_change_info member right\n    /// - Parameter showMessageSender: New value of show_message_sender\n    /// - Parameter signMessages: New value of sign_messages\n    /// - Parameter supergroupId: Identifier of the channel\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleSupergroupSignMessages(\n        showMessageSender: Bool?,\n        signMessages: Bool?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleSupergroupSignMessages(\n            showMessageSender: showMessageSender,\n            signMessages: signMessages,\n            supergroupId: supergroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether joining is mandatory to send messages to a discussion supergroup; requires can_restrict_members administrator right\n    /// - Parameter joinToSendMessages: New value of join_to_send_messages\n    /// - Parameter supergroupId: Identifier of the supergroup that isn't a broadcast group\n    public func toggleSupergroupJoinToSendMessages(\n        joinToSendMessages: Bool?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupJoinToSendMessages(\n            joinToSendMessages: joinToSendMessages,\n            supergroupId: supergroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether joining is mandatory to send messages to a discussion supergroup; requires can_restrict_members administrator right\n    /// - Parameter joinToSendMessages: New value of join_to_send_messages\n    /// - Parameter supergroupId: Identifier of the supergroup that isn't a broadcast group\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleSupergroupJoinToSendMessages(\n        joinToSendMessages: Bool?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleSupergroupJoinToSendMessages(\n            joinToSendMessages: joinToSendMessages,\n            supergroupId: supergroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether all users directly joining the supergroup need to be approved by supergroup administrators; requires can_restrict_members administrator right\n    /// - Parameter joinByRequest: New value of join_by_request\n    /// - Parameter supergroupId: Identifier of the supergroup that isn't a broadcast group and isn't a channel direct message group\n    public func toggleSupergroupJoinByRequest(\n        joinByRequest: Bool?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupJoinByRequest(\n            joinByRequest: joinByRequest,\n            supergroupId: supergroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether all users directly joining the supergroup need to be approved by supergroup administrators; requires can_restrict_members administrator right\n    /// - Parameter joinByRequest: New value of join_by_request\n    /// - Parameter supergroupId: Identifier of the supergroup that isn't a broadcast group and isn't a channel direct message group\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleSupergroupJoinByRequest(\n        joinByRequest: Bool?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleSupergroupJoinByRequest(\n            joinByRequest: joinByRequest,\n            supergroupId: supergroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether the message history of a supergroup is available to new members; requires can_change_info member right\n    /// - Parameter isAllHistoryAvailable: The new value of is_all_history_available\n    /// - Parameter supergroupId: The identifier of the supergroup\n    public func toggleSupergroupIsAllHistoryAvailable(\n        isAllHistoryAvailable: Bool?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupIsAllHistoryAvailable(\n            isAllHistoryAvailable: isAllHistoryAvailable,\n            supergroupId: supergroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether the message history of a supergroup is available to new members; requires can_change_info member right\n    /// - Parameter isAllHistoryAvailable: The new value of is_all_history_available\n    /// - Parameter supergroupId: The identifier of the supergroup\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleSupergroupIsAllHistoryAvailable(\n        isAllHistoryAvailable: Bool?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleSupergroupIsAllHistoryAvailable(\n            isAllHistoryAvailable: isAllHistoryAvailable,\n            supergroupId: supergroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether sponsored messages are shown in the channel chat; requires owner privileges in the channel. The chat must have at least chatBoostFeatures.min_sponsored_message_disable_boost_level boost level to disable sponsored messages\n    /// - Parameter canHaveSponsoredMessages: The new value of can_have_sponsored_messages\n    /// - Parameter supergroupId: The identifier of the channel\n    public func toggleSupergroupCanHaveSponsoredMessages(\n        canHaveSponsoredMessages: Bool?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupCanHaveSponsoredMessages(\n            canHaveSponsoredMessages: canHaveSponsoredMessages,\n            supergroupId: supergroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether sponsored messages are shown in the channel chat; requires owner privileges in the channel. The chat must have at least chatBoostFeatures.min_sponsored_message_disable_boost_level boost level to disable sponsored messages\n    /// - Parameter canHaveSponsoredMessages: The new value of can_have_sponsored_messages\n    /// - Parameter supergroupId: The identifier of the channel\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleSupergroupCanHaveSponsoredMessages(\n        canHaveSponsoredMessages: Bool?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleSupergroupCanHaveSponsoredMessages(\n            canHaveSponsoredMessages: canHaveSponsoredMessages,\n            supergroupId: supergroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether messages are automatically translated in the channel chat; requires can_change_info administrator right in the channel. The chat must have at least chatBoostFeatures.min_automatic_translation_boost_level boost level to enable automatic translation\n    /// - Parameter hasAutomaticTranslation: The new value of has_automatic_translation\n    /// - Parameter supergroupId: The identifier of the channel\n    public func toggleSupergroupHasAutomaticTranslation(\n        hasAutomaticTranslation: Bool?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupHasAutomaticTranslation(\n            hasAutomaticTranslation: hasAutomaticTranslation,\n            supergroupId: supergroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether messages are automatically translated in the channel chat; requires can_change_info administrator right in the channel. The chat must have at least chatBoostFeatures.min_automatic_translation_boost_level boost level to enable automatic translation\n    /// - Parameter hasAutomaticTranslation: The new value of has_automatic_translation\n    /// - Parameter supergroupId: The identifier of the channel\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleSupergroupHasAutomaticTranslation(\n        hasAutomaticTranslation: Bool?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleSupergroupHasAutomaticTranslation(\n            hasAutomaticTranslation: hasAutomaticTranslation,\n            supergroupId: supergroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether non-administrators can receive only administrators and bots using getSupergroupMembers or searchChatMembers. Can be called only if supergroupFullInfo.can_hide_members == true\n    /// - Parameter hasHiddenMembers: New value of has_hidden_members\n    /// - Parameter supergroupId: Identifier of the supergroup\n    public func toggleSupergroupHasHiddenMembers(\n        hasHiddenMembers: Bool?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupHasHiddenMembers(\n            hasHiddenMembers: hasHiddenMembers,\n            supergroupId: supergroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether non-administrators can receive only administrators and bots using getSupergroupMembers or searchChatMembers. Can be called only if supergroupFullInfo.can_hide_members == true\n    /// - Parameter hasHiddenMembers: New value of has_hidden_members\n    /// - Parameter supergroupId: Identifier of the supergroup\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleSupergroupHasHiddenMembers(\n        hasHiddenMembers: Bool?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleSupergroupHasHiddenMembers(\n            hasHiddenMembers: hasHiddenMembers,\n            supergroupId: supergroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether aggressive anti-spam checks are enabled in the supergroup. Can be called only if supergroupFullInfo.can_toggle_aggressive_anti_spam == true\n    /// - Parameter hasAggressiveAntiSpamEnabled: The new value of has_aggressive_anti_spam_enabled\n    /// - Parameter supergroupId: The identifier of the supergroup, which isn't a broadcast group\n    public func toggleSupergroupHasAggressiveAntiSpamEnabled(\n        hasAggressiveAntiSpamEnabled: Bool?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupHasAggressiveAntiSpamEnabled(\n            hasAggressiveAntiSpamEnabled: hasAggressiveAntiSpamEnabled,\n            supergroupId: supergroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether aggressive anti-spam checks are enabled in the supergroup. Can be called only if supergroupFullInfo.can_toggle_aggressive_anti_spam == true\n    /// - Parameter hasAggressiveAntiSpamEnabled: The new value of has_aggressive_anti_spam_enabled\n    /// - Parameter supergroupId: The identifier of the supergroup, which isn't a broadcast group\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleSupergroupHasAggressiveAntiSpamEnabled(\n        hasAggressiveAntiSpamEnabled: Bool?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleSupergroupHasAggressiveAntiSpamEnabled(\n            hasAggressiveAntiSpamEnabled: hasAggressiveAntiSpamEnabled,\n            supergroupId: supergroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether the supergroup is a forum; requires owner privileges in the supergroup. Discussion supergroups can't be converted to forums\n    /// - Parameter hasForumTabs: New value of has_forum_tabs; ignored if is_forum is false\n    /// - Parameter isForum: New value of is_forum\n    /// - Parameter supergroupId: Identifier of the supergroup\n    public func toggleSupergroupIsForum(\n        hasForumTabs: Bool?,\n        isForum: Bool?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupIsForum(\n            hasForumTabs: hasForumTabs,\n            isForum: isForum,\n            supergroupId: supergroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether the supergroup is a forum; requires owner privileges in the supergroup. Discussion supergroups can't be converted to forums\n    /// - Parameter hasForumTabs: New value of has_forum_tabs; ignored if is_forum is false\n    /// - Parameter isForum: New value of is_forum\n    /// - Parameter supergroupId: Identifier of the supergroup\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleSupergroupIsForum(\n        hasForumTabs: Bool?,\n        isForum: Bool?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleSupergroupIsForum(\n            hasForumTabs: hasForumTabs,\n            isForum: isForum,\n            supergroupId: supergroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Upgrades supergroup to a broadcast group; requires owner privileges in the supergroup\n    /// - Parameter supergroupId: Identifier of the supergroup\n    public func toggleSupergroupIsBroadcastGroup(\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleSupergroupIsBroadcastGroup(\n            supergroupId: supergroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Upgrades supergroup to a broadcast group; requires owner privileges in the supergroup\n    /// - Parameter supergroupId: Identifier of the supergroup\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleSupergroupIsBroadcastGroup(supergroupId: Int64?) async throws -> Ok {\n        let query = ToggleSupergroupIsBroadcastGroup(\n            supergroupId: supergroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Reports messages in a supergroup as spam; requires administrator rights in the supergroup\n    /// - Parameter messageIds: Identifiers of messages to report. Use messageProperties.can_report_supergroup_spam to check whether the message can be reported\n    /// - Parameter supergroupId: Supergroup identifier\n    public func reportSupergroupSpam(\n        messageIds: [Int64]?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportSupergroupSpam(\n            messageIds: messageIds,\n            supergroupId: supergroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Reports messages in a supergroup as spam; requires administrator rights in the supergroup\n    /// - Parameter messageIds: Identifiers of messages to report. Use messageProperties.can_report_supergroup_spam to check whether the message can be reported\n    /// - Parameter supergroupId: Supergroup identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func reportSupergroupSpam(\n        messageIds: [Int64]?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ReportSupergroupSpam(\n            messageIds: messageIds,\n            supergroupId: supergroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Reports a false deletion of a message by aggressive anti-spam checks; requires administrator rights in the supergroup. Can be called only for messages from chatEventMessageDeleted with can_report_anti_spam_false_positive == true\n    /// - Parameter messageId: Identifier of the erroneously deleted message from chatEventMessageDeleted\n    /// - Parameter supergroupId: Supergroup identifier\n    public func reportSupergroupAntiSpamFalsePositive(\n        messageId: Int64?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportSupergroupAntiSpamFalsePositive(\n            messageId: messageId,\n            supergroupId: supergroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Reports a false deletion of a message by aggressive anti-spam checks; requires administrator rights in the supergroup. Can be called only for messages from chatEventMessageDeleted with can_report_anti_spam_false_positive == true\n    /// - Parameter messageId: Identifier of the erroneously deleted message from chatEventMessageDeleted\n    /// - Parameter supergroupId: Supergroup identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func reportSupergroupAntiSpamFalsePositive(\n        messageId: Int64?,\n        supergroupId: Int64?\n    ) async throws -> Ok {\n        let query = ReportSupergroupAntiSpamFalsePositive(\n            messageId: messageId,\n            supergroupId: supergroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about members or banned users in a supergroup or channel. Can be used only if supergroupFullInfo.can_get_members == true; additionally, administrator privileges may be required for some filters\n    /// - Parameter filter: The type of users to return; pass null to use supergroupMembersFilterRecent\n    /// - Parameter limit: The maximum number of users to be returned; up to 200\n    /// - Parameter offset: Number of users to skip\n    /// - Parameter supergroupId: Identifier of the supergroup or channel\n    /// - Returns: Information about members or banned users in a supergroup or channel\n    public func getSupergroupMembers(\n        filter: SupergroupMembersFilter?,\n        limit: Int?,\n        offset: Int?,\n        supergroupId: Int64?,\n        completion: @escaping (Result<ChatMembers, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSupergroupMembers(\n            filter: filter,\n            limit: limit,\n            offset: offset,\n            supergroupId: supergroupId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about members or banned users in a supergroup or channel. Can be used only if supergroupFullInfo.can_get_members == true; additionally, administrator privileges may be required for some filters\n    /// - Parameter filter: The type of users to return; pass null to use supergroupMembersFilterRecent\n    /// - Parameter limit: The maximum number of users to be returned; up to 200\n    /// - Parameter offset: Number of users to skip\n    /// - Parameter supergroupId: Identifier of the supergroup or channel\n    /// - Returns: Information about members or banned users in a supergroup or channel\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getSupergroupMembers(\n        filter: SupergroupMembersFilter?,\n        limit: Int?,\n        offset: Int?,\n        supergroupId: Int64?\n    ) async throws -> ChatMembers {\n        let query = GetSupergroupMembers(\n            filter: filter,\n            limit: limit,\n            offset: offset,\n            supergroupId: supergroupId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Closes a secret chat, effectively transferring its state to secretChatStateClosed\n    /// - Parameter secretChatId: Secret chat identifier\n    public func closeSecretChat(\n        secretChatId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CloseSecretChat(\n            secretChatId: secretChatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Closes a secret chat, effectively transferring its state to secretChatStateClosed\n    /// - Parameter secretChatId: Secret chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func closeSecretChat(secretChatId: Int?) async throws -> Ok {\n        let query = CloseSecretChat(\n            secretChatId: secretChatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a list of service actions taken by chat members and administrators in the last 48 hours. Available only for supergroups and channels. Requires administrator rights. Returns results in reverse chronological order (i.e., in order of decreasing event_id)\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter filters: The types of events to return; pass null to get chat events of all types\n    /// - Parameter fromEventId: Identifier of an event from which to return results. Use 0 to get results from the latest events\n    /// - Parameter limit: The maximum number of events to return; up to 100\n    /// - Parameter query: Search query by which to filter events\n    /// - Parameter userIds: User identifiers by which to filter events. By default, events relating to all users will be returned\n    /// - Returns: A list of service actions taken by chat members and administrators in the last 48 hours. Returns results in reverse chronological order (i.e., in order of decreasing event_id)\n    public func getChatEventLog(\n        chatId: Int64?,\n        filters: ChatEventLogFilters?,\n        fromEventId: TdInt64?,\n        limit: Int?,\n        query: String?,\n        userIds: [Int64]?,\n        completion: @escaping (Result<ChatEvents, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatEventLog(\n            chatId: chatId,\n            filters: filters,\n            fromEventId: fromEventId,\n            limit: limit,\n            query: query,\n            userIds: userIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a list of service actions taken by chat members and administrators in the last 48 hours. Available only for supergroups and channels. Requires administrator rights. Returns results in reverse chronological order (i.e., in order of decreasing event_id)\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter filters: The types of events to return; pass null to get chat events of all types\n    /// - Parameter fromEventId: Identifier of an event from which to return results. Use 0 to get results from the latest events\n    /// - Parameter limit: The maximum number of events to return; up to 100\n    /// - Parameter query: Search query by which to filter events\n    /// - Parameter userIds: User identifiers by which to filter events. By default, events relating to all users will be returned\n    /// - Returns: A list of service actions taken by chat members and administrators in the last 48 hours. Returns results in reverse chronological order (i.e., in order of decreasing event_id)\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatEventLog(\n        chatId: Int64?,\n        filters: ChatEventLogFilters?,\n        fromEventId: TdInt64?,\n        limit: Int?,\n        query: String?,\n        userIds: [Int64]?\n    ) async throws -> ChatEvents {\n        let query = GetChatEventLog(\n            chatId: chatId,\n            filters: filters,\n            fromEventId: fromEventId,\n            limit: limit,\n            query: query,\n            userIds: userIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of supported time zones\n    /// - Returns: The list of supported time zones\n    public func getTimeZones(completion: @escaping (Result<TimeZones, Swift.Error>) -> Void) throws {\n        let query = GetTimeZones()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of supported time zones\n    /// - Returns: The list of supported time zones\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getTimeZones() async throws -> TimeZones {\n        let query = GetTimeZones()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an invoice payment form. This method must be called when the user presses inline button of the type inlineKeyboardButtonTypeBuy, or wants to buy access to media in a messagePaidMedia message\n    /// - Parameter inputInvoice: The invoice\n    /// - Parameter theme: Preferred payment form theme; pass null to use the default theme\n    /// - Returns: An invoice payment form\n    public func getPaymentForm(\n        inputInvoice: InputInvoice?,\n        theme: ThemeParameters?,\n        completion: @escaping (Result<PaymentForm, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPaymentForm(\n            inputInvoice: inputInvoice,\n            theme: theme\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an invoice payment form. This method must be called when the user presses inline button of the type inlineKeyboardButtonTypeBuy, or wants to buy access to media in a messagePaidMedia message\n    /// - Parameter inputInvoice: The invoice\n    /// - Parameter theme: Preferred payment form theme; pass null to use the default theme\n    /// - Returns: An invoice payment form\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPaymentForm(\n        inputInvoice: InputInvoice?,\n        theme: ThemeParameters?\n    ) async throws -> PaymentForm {\n        let query = GetPaymentForm(\n            inputInvoice: inputInvoice,\n            theme: theme\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Validates the order information provided by a user and returns the available shipping options for a flexible invoice\n    /// - Parameter allowSave: Pass true to save the order information\n    /// - Parameter inputInvoice: The invoice\n    /// - Parameter orderInfo: The order information, provided by the user; pass null if empty\n    /// - Returns: Validates the order information provided by a user and returns the available shipping options for a flexible invoice\n    public func validateOrderInfo(\n        allowSave: Bool?,\n        inputInvoice: InputInvoice?,\n        orderInfo: OrderInfo?,\n        completion: @escaping (Result<ValidatedOrderInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = ValidateOrderInfo(\n            allowSave: allowSave,\n            inputInvoice: inputInvoice,\n            orderInfo: orderInfo\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Validates the order information provided by a user and returns the available shipping options for a flexible invoice\n    /// - Parameter allowSave: Pass true to save the order information\n    /// - Parameter inputInvoice: The invoice\n    /// - Parameter orderInfo: The order information, provided by the user; pass null if empty\n    /// - Returns: Validates the order information provided by a user and returns the available shipping options for a flexible invoice\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func validateOrderInfo(\n        allowSave: Bool?,\n        inputInvoice: InputInvoice?,\n        orderInfo: OrderInfo?\n    ) async throws -> ValidatedOrderInfo {\n        let query = ValidateOrderInfo(\n            allowSave: allowSave,\n            inputInvoice: inputInvoice,\n            orderInfo: orderInfo\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends a filled-out payment form to the bot for final verification\n    /// - Parameter credentials: The credentials chosen by user for payment; pass null for a payment in Telegram Stars\n    /// - Parameter inputInvoice: The invoice\n    /// - Parameter orderInfoId: Identifier returned by validateOrderInfo, or an empty string\n    /// - Parameter paymentFormId: Payment form identifier returned by getPaymentForm\n    /// - Parameter shippingOptionId: Identifier of a chosen shipping option, if applicable\n    /// - Parameter tipAmount: Chosen by the user amount of tip in the smallest units of the currency\n    public func sendPaymentForm(\n        credentials: InputCredentials?,\n        inputInvoice: InputInvoice?,\n        orderInfoId: String?,\n        paymentFormId: TdInt64?,\n        shippingOptionId: String?,\n        tipAmount: Int64?,\n        completion: @escaping (Result<PaymentResult, Swift.Error>) -> Void\n    ) throws {\n        let query = SendPaymentForm(\n            credentials: credentials,\n            inputInvoice: inputInvoice,\n            orderInfoId: orderInfoId,\n            paymentFormId: paymentFormId,\n            shippingOptionId: shippingOptionId,\n            tipAmount: tipAmount\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends a filled-out payment form to the bot for final verification\n    /// - Parameter credentials: The credentials chosen by user for payment; pass null for a payment in Telegram Stars\n    /// - Parameter inputInvoice: The invoice\n    /// - Parameter orderInfoId: Identifier returned by validateOrderInfo, or an empty string\n    /// - Parameter paymentFormId: Payment form identifier returned by getPaymentForm\n    /// - Parameter shippingOptionId: Identifier of a chosen shipping option, if applicable\n    /// - Parameter tipAmount: Chosen by the user amount of tip in the smallest units of the currency\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func sendPaymentForm(\n        credentials: InputCredentials?,\n        inputInvoice: InputInvoice?,\n        orderInfoId: String?,\n        paymentFormId: TdInt64?,\n        shippingOptionId: String?,\n        tipAmount: Int64?\n    ) async throws -> PaymentResult {\n        let query = SendPaymentForm(\n            credentials: credentials,\n            inputInvoice: inputInvoice,\n            orderInfoId: orderInfoId,\n            paymentFormId: paymentFormId,\n            shippingOptionId: shippingOptionId,\n            tipAmount: tipAmount\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a successful payment\n    /// - Parameter chatId: Chat identifier of the messagePaymentSuccessful message\n    /// - Parameter messageId: Message identifier\n    /// - Returns: Information about a successful payment\n    public func getPaymentReceipt(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<PaymentReceipt, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPaymentReceipt(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a successful payment\n    /// - Parameter chatId: Chat identifier of the messagePaymentSuccessful message\n    /// - Parameter messageId: Message identifier\n    /// - Returns: Information about a successful payment\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPaymentReceipt(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> PaymentReceipt {\n        let query = GetPaymentReceipt(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns saved order information. Returns a 404 error if there is no saved order information\n    /// - Returns: Saved order information. Returns a 404 error if there is no saved order information\n    public func getSavedOrderInfo(completion: @escaping (Result<OrderInfo, Swift.Error>) -> Void) throws {\n        let query = GetSavedOrderInfo()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns saved order information. Returns a 404 error if there is no saved order information\n    /// - Returns: Saved order information. Returns a 404 error if there is no saved order information\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getSavedOrderInfo() async throws -> OrderInfo {\n        let query = GetSavedOrderInfo()\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes saved order information\n    public func deleteSavedOrderInfo(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = DeleteSavedOrderInfo()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes saved order information\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteSavedOrderInfo() async throws -> Ok {\n        let query = DeleteSavedOrderInfo()\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes saved credentials for all payment provider bots\n    public func deleteSavedCredentials(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = DeleteSavedCredentials()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes saved credentials for all payment provider bots\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteSavedCredentials() async throws -> Ok {\n        let query = DeleteSavedCredentials()\n        return try await self.execute(query: query)\n    }\n\n    /// Changes settings for gift receiving for the current user\n    /// - Parameter settings: The new settings\n    public func setGiftSettings(\n        settings: GiftSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetGiftSettings(\n            settings: settings\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes settings for gift receiving for the current user\n    /// - Parameter settings: The new settings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setGiftSettings(settings: GiftSettings?) async throws -> Ok {\n        let query = SetGiftSettings(\n            settings: settings\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns gifts that can be sent to other users and channel chats\n    /// - Returns: Gifts that can be sent to other users and channel chats\n    public func getAvailableGifts(completion: @escaping (Result<AvailableGifts, Swift.Error>) -> Void) throws {\n        let query = GetAvailableGifts()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns gifts that can be sent to other users and channel chats\n    /// - Returns: Gifts that can be sent to other users and channel chats\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getAvailableGifts() async throws -> AvailableGifts {\n        let query = GetAvailableGifts()\n        return try await self.execute(query: query)\n    }\n\n    /// Checks whether a gift with next_send_date in the future can be sent already\n    /// - Parameter giftId: Identifier of the gift to send\n    public func canSendGift(\n        giftId: TdInt64?,\n        completion: @escaping (Result<CanSendGiftResult, Swift.Error>) -> Void\n    ) throws {\n        let query = CanSendGift(\n            giftId: giftId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks whether a gift with next_send_date in the future can be sent already\n    /// - Parameter giftId: Identifier of the gift to send\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func canSendGift(giftId: TdInt64?) async throws -> CanSendGiftResult {\n        let query = CanSendGift(\n            giftId: giftId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends a gift to another user or channel chat. May return an error with a message \"STARGIFT_USAGE_LIMITED\" if the gift was sold out\n    /// - Parameter giftId: Identifier of the gift to send\n    /// - Parameter isPrivate: Pass true to show gift text and sender only to the gift receiver; otherwise, everyone will be able to see them\n    /// - Parameter ownerId: Identifier of the user or the channel chat that will receive the gift; limited gifts can't be sent to channel chats\n    /// - Parameter payForUpgrade: Pass true to additionally pay for the gift upgrade and allow the receiver to upgrade it for free\n    /// - Parameter text: Text to show along with the gift; 0-getOption(\"gift_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed. Must be empty if the receiver enabled paid messages\n    /// - Returns: May return an error with a message \"STARGIFT_USAGE_LIMITED\" if the gift was sold out\n    public func sendGift(\n        giftId: TdInt64?,\n        isPrivate: Bool?,\n        ownerId: MessageSender?,\n        payForUpgrade: Bool?,\n        text: FormattedText?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendGift(\n            giftId: giftId,\n            isPrivate: isPrivate,\n            ownerId: ownerId,\n            payForUpgrade: payForUpgrade,\n            text: text\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends a gift to another user or channel chat. May return an error with a message \"STARGIFT_USAGE_LIMITED\" if the gift was sold out\n    /// - Parameter giftId: Identifier of the gift to send\n    /// - Parameter isPrivate: Pass true to show gift text and sender only to the gift receiver; otherwise, everyone will be able to see them\n    /// - Parameter ownerId: Identifier of the user or the channel chat that will receive the gift; limited gifts can't be sent to channel chats\n    /// - Parameter payForUpgrade: Pass true to additionally pay for the gift upgrade and allow the receiver to upgrade it for free\n    /// - Parameter text: Text to show along with the gift; 0-getOption(\"gift_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed. Must be empty if the receiver enabled paid messages\n    /// - Returns: May return an error with a message \"STARGIFT_USAGE_LIMITED\" if the gift was sold out\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func sendGift(\n        giftId: TdInt64?,\n        isPrivate: Bool?,\n        ownerId: MessageSender?,\n        payForUpgrade: Bool?,\n        text: FormattedText?\n    ) async throws -> Ok {\n        let query = SendGift(\n            giftId: giftId,\n            isPrivate: isPrivate,\n            ownerId: ownerId,\n            payForUpgrade: payForUpgrade,\n            text: text\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns auction state for a gift\n    /// - Parameter auctionId: Unique identifier of the auction\n    /// - Returns: Auction state for a gift\n    public func getGiftAuctionState(\n        auctionId: String?,\n        completion: @escaping (Result<GiftAuctionState, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGiftAuctionState(\n            auctionId: auctionId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns auction state for a gift\n    /// - Parameter auctionId: Unique identifier of the auction\n    /// - Returns: Auction state for a gift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getGiftAuctionState(auctionId: String?) async throws -> GiftAuctionState {\n        let query = GetGiftAuctionState(\n            auctionId: auctionId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the gifts that were acquired by the current user on a gift auction\n    /// - Parameter giftId: Identifier of the auctioned gift\n    /// - Returns: The gifts that were acquired by the current user on a gift auction\n    public func getGiftAuctionAcquiredGifts(\n        giftId: TdInt64?,\n        completion: @escaping (Result<GiftAuctionAcquiredGifts, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGiftAuctionAcquiredGifts(\n            giftId: giftId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the gifts that were acquired by the current user on a gift auction\n    /// - Parameter giftId: Identifier of the auctioned gift\n    /// - Returns: The gifts that were acquired by the current user on a gift auction\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getGiftAuctionAcquiredGifts(giftId: TdInt64?) async throws -> GiftAuctionAcquiredGifts {\n        let query = GetGiftAuctionAcquiredGifts(\n            giftId: giftId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that a gift auction was opened by the user\n    /// - Parameter giftId: Identifier of the gift, which auction was opened\n    public func openGiftAuction(\n        giftId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = OpenGiftAuction(\n            giftId: giftId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that a gift auction was opened by the user\n    /// - Parameter giftId: Identifier of the gift, which auction was opened\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func openGiftAuction(giftId: TdInt64?) async throws -> Ok {\n        let query = OpenGiftAuction(\n            giftId: giftId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that a gift auction was closed by the user\n    /// - Parameter giftId: Identifier of the gift, which auction was closed\n    public func closeGiftAuction(\n        giftId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CloseGiftAuction(\n            giftId: giftId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that a gift auction was closed by the user\n    /// - Parameter giftId: Identifier of the gift, which auction was closed\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func closeGiftAuction(giftId: TdInt64?) async throws -> Ok {\n        let query = CloseGiftAuction(\n            giftId: giftId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Places a bid on an auction gift\n    /// - Parameter giftId: Identifier of the gift to place the bid on\n    /// - Parameter isPrivate: Pass true to show gift text and sender only to the gift receiver; otherwise, everyone will be able to see them\n    /// - Parameter starCount: The number of Telegram Stars to place in the bid\n    /// - Parameter text: Text to show along with the gift; 0-getOption(\"gift_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed. Must be empty if the receiver enabled paid messages\n    /// - Parameter userId: Identifier of the user who will receive the gift\n    public func placeGiftAuctionBid(\n        giftId: TdInt64?,\n        isPrivate: Bool?,\n        starCount: Int64?,\n        text: FormattedText?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = PlaceGiftAuctionBid(\n            giftId: giftId,\n            isPrivate: isPrivate,\n            starCount: starCount,\n            text: text,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Places a bid on an auction gift\n    /// - Parameter giftId: Identifier of the gift to place the bid on\n    /// - Parameter isPrivate: Pass true to show gift text and sender only to the gift receiver; otherwise, everyone will be able to see them\n    /// - Parameter starCount: The number of Telegram Stars to place in the bid\n    /// - Parameter text: Text to show along with the gift; 0-getOption(\"gift_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed. Must be empty if the receiver enabled paid messages\n    /// - Parameter userId: Identifier of the user who will receive the gift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func placeGiftAuctionBid(\n        giftId: TdInt64?,\n        isPrivate: Bool?,\n        starCount: Int64?,\n        text: FormattedText?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = PlaceGiftAuctionBid(\n            giftId: giftId,\n            isPrivate: isPrivate,\n            starCount: starCount,\n            text: text,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Increases a bid for an auction gift without changing gift text and receiver\n    /// - Parameter giftId: Identifier of the gift to put the bid on\n    /// - Parameter starCount: The number of Telegram Stars to put in the bid\n    public func increaseGiftAuctionBid(\n        giftId: TdInt64?,\n        starCount: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = IncreaseGiftAuctionBid(\n            giftId: giftId,\n            starCount: starCount\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Increases a bid for an auction gift without changing gift text and receiver\n    /// - Parameter giftId: Identifier of the gift to put the bid on\n    /// - Parameter starCount: The number of Telegram Stars to put in the bid\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func increaseGiftAuctionBid(\n        giftId: TdInt64?,\n        starCount: Int64?\n    ) async throws -> Ok {\n        let query = IncreaseGiftAuctionBid(\n            giftId: giftId,\n            starCount: starCount\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sells a gift for Telegram Stars; requires owner privileges for gifts owned by a chat\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request; for bots only\n    /// - Parameter receivedGiftId: Identifier of the gift\n    public func sellGift(\n        businessConnectionId: String?,\n        receivedGiftId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SellGift(\n            businessConnectionId: businessConnectionId,\n            receivedGiftId: receivedGiftId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sells a gift for Telegram Stars; requires owner privileges for gifts owned by a chat\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request; for bots only\n    /// - Parameter receivedGiftId: Identifier of the gift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func sellGift(\n        businessConnectionId: String?,\n        receivedGiftId: String?\n    ) async throws -> Ok {\n        let query = SellGift(\n            businessConnectionId: businessConnectionId,\n            receivedGiftId: receivedGiftId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether a gift is shown on the current user's or the channel's profile page; requires can_post_messages administrator right in the channel chat\n    /// - Parameter isSaved: Pass true to display the gift on the user's or the channel's profile page; pass false to remove it from the profile page\n    /// - Parameter receivedGiftId: Identifier of the gift\n    public func toggleGiftIsSaved(\n        isSaved: Bool?,\n        receivedGiftId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleGiftIsSaved(\n            isSaved: isSaved,\n            receivedGiftId: receivedGiftId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether a gift is shown on the current user's or the channel's profile page; requires can_post_messages administrator right in the channel chat\n    /// - Parameter isSaved: Pass true to display the gift on the user's or the channel's profile page; pass false to remove it from the profile page\n    /// - Parameter receivedGiftId: Identifier of the gift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleGiftIsSaved(\n        isSaved: Bool?,\n        receivedGiftId: String?\n    ) async throws -> Ok {\n        let query = ToggleGiftIsSaved(\n            isSaved: isSaved,\n            receivedGiftId: receivedGiftId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the list of pinned gifts on the current user's or the channel's profile page; requires can_post_messages administrator right in the channel chat\n    /// - Parameter ownerId: Identifier of the user or the channel chat that received the gifts\n    /// - Parameter receivedGiftIds: New list of pinned gifts. All gifts must be upgraded and saved on the profile page first. There can be up to getOption(\"pinned_gift_count_max\") pinned gifts\n    public func setPinnedGifts(\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetPinnedGifts(\n            ownerId: ownerId,\n            receivedGiftIds: receivedGiftIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the list of pinned gifts on the current user's or the channel's profile page; requires can_post_messages administrator right in the channel chat\n    /// - Parameter ownerId: Identifier of the user or the channel chat that received the gifts\n    /// - Parameter receivedGiftIds: New list of pinned gifts. All gifts must be upgraded and saved on the profile page first. There can be up to getOption(\"pinned_gift_count_max\") pinned gifts\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setPinnedGifts(\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?\n    ) async throws -> Ok {\n        let query = SetPinnedGifts(\n            ownerId: ownerId,\n            receivedGiftIds: receivedGiftIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Toggles whether notifications for new gifts received by a channel chat are sent to the current user; requires can_post_messages administrator right in the chat\n    /// - Parameter areEnabled: Pass true to enable notifications about new gifts owned by the channel chat; pass false to disable the notifications\n    /// - Parameter chatId: Identifier of the channel chat\n    public func toggleChatGiftNotifications(\n        areEnabled: Bool?,\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ToggleChatGiftNotifications(\n            areEnabled: areEnabled,\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Toggles whether notifications for new gifts received by a channel chat are sent to the current user; requires can_post_messages administrator right in the chat\n    /// - Parameter areEnabled: Pass true to enable notifications about new gifts owned by the channel chat; pass false to disable the notifications\n    /// - Parameter chatId: Identifier of the channel chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func toggleChatGiftNotifications(\n        areEnabled: Bool?,\n        chatId: Int64?\n    ) async throws -> Ok {\n        let query = ToggleChatGiftNotifications(\n            areEnabled: areEnabled,\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns examples of possible upgraded gifts for a regular gift\n    /// - Parameter regularGiftId: Identifier of the regular gift\n    /// - Returns: Examples of possible upgraded gifts for a regular gift\n    public func getGiftUpgradePreview(\n        regularGiftId: TdInt64?,\n        completion: @escaping (Result<GiftUpgradePreview, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGiftUpgradePreview(\n            regularGiftId: regularGiftId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns examples of possible upgraded gifts for a regular gift\n    /// - Parameter regularGiftId: Identifier of the regular gift\n    /// - Returns: Examples of possible upgraded gifts for a regular gift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getGiftUpgradePreview(regularGiftId: TdInt64?) async throws -> GiftUpgradePreview {\n        let query = GetGiftUpgradePreview(\n            regularGiftId: regularGiftId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns all possible variants of upgraded gifts for a regular gift\n    /// - Parameter regularGiftId: Identifier of the regular gift\n    /// - Parameter returnCraftModels: Pass true to get models that can be obtained by crafting a gift from upgraded gifts\n    /// - Parameter returnUpgradeModels: Pass true to get models that can be obtained by upgrading a regular gift\n    /// - Returns: All possible variants of upgraded gifts for a regular gift\n    public func getUpgradedGiftVariants(\n        regularGiftId: TdInt64?,\n        returnCraftModels: Bool?,\n        returnUpgradeModels: Bool?,\n        completion: @escaping (Result<GiftUpgradeVariants, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUpgradedGiftVariants(\n            regularGiftId: regularGiftId,\n            returnCraftModels: returnCraftModels,\n            returnUpgradeModels: returnUpgradeModels\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns all possible variants of upgraded gifts for a regular gift\n    /// - Parameter regularGiftId: Identifier of the regular gift\n    /// - Parameter returnCraftModels: Pass true to get models that can be obtained by crafting a gift from upgraded gifts\n    /// - Parameter returnUpgradeModels: Pass true to get models that can be obtained by upgrading a regular gift\n    /// - Returns: All possible variants of upgraded gifts for a regular gift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getUpgradedGiftVariants(\n        regularGiftId: TdInt64?,\n        returnCraftModels: Bool?,\n        returnUpgradeModels: Bool?\n    ) async throws -> GiftUpgradeVariants {\n        let query = GetUpgradedGiftVariants(\n            regularGiftId: regularGiftId,\n            returnCraftModels: returnCraftModels,\n            returnUpgradeModels: returnUpgradeModels\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Upgrades a regular gift\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request; for bots only\n    /// - Parameter keepOriginalDetails: Pass true to keep the original gift text, sender and receiver in the upgraded gift\n    /// - Parameter receivedGiftId: Identifier of the gift\n    /// - Parameter starCount: The Telegram Star amount required to pay for the upgrade. It the gift has prepaid_upgrade_star_count > 0, then pass 0, otherwise, pass gift.upgrade_star_count\n    public func upgradeGift(\n        businessConnectionId: String?,\n        keepOriginalDetails: Bool?,\n        receivedGiftId: String?,\n        starCount: Int64?,\n        completion: @escaping (Result<UpgradeGiftResult, Swift.Error>) -> Void\n    ) throws {\n        let query = UpgradeGift(\n            businessConnectionId: businessConnectionId,\n            keepOriginalDetails: keepOriginalDetails,\n            receivedGiftId: receivedGiftId,\n            starCount: starCount\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Upgrades a regular gift\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request; for bots only\n    /// - Parameter keepOriginalDetails: Pass true to keep the original gift text, sender and receiver in the upgraded gift\n    /// - Parameter receivedGiftId: Identifier of the gift\n    /// - Parameter starCount: The Telegram Star amount required to pay for the upgrade. It the gift has prepaid_upgrade_star_count > 0, then pass 0, otherwise, pass gift.upgrade_star_count\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func upgradeGift(\n        businessConnectionId: String?,\n        keepOriginalDetails: Bool?,\n        receivedGiftId: String?,\n        starCount: Int64?\n    ) async throws -> UpgradeGiftResult {\n        let query = UpgradeGift(\n            businessConnectionId: businessConnectionId,\n            keepOriginalDetails: keepOriginalDetails,\n            receivedGiftId: receivedGiftId,\n            starCount: starCount\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Pays for upgrade of a regular gift that is owned by another user or channel chat\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the gift\n    /// - Parameter prepaidUpgradeHash: Prepaid upgrade hash as received along with the gift\n    /// - Parameter starCount: The Telegram Star amount the user agreed to pay for the upgrade; must be equal to gift.upgrade_star_count\n    public func buyGiftUpgrade(\n        ownerId: MessageSender?,\n        prepaidUpgradeHash: String?,\n        starCount: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = BuyGiftUpgrade(\n            ownerId: ownerId,\n            prepaidUpgradeHash: prepaidUpgradeHash,\n            starCount: starCount\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Pays for upgrade of a regular gift that is owned by another user or channel chat\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the gift\n    /// - Parameter prepaidUpgradeHash: Prepaid upgrade hash as received along with the gift\n    /// - Parameter starCount: The Telegram Star amount the user agreed to pay for the upgrade; must be equal to gift.upgrade_star_count\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func buyGiftUpgrade(\n        ownerId: MessageSender?,\n        prepaidUpgradeHash: String?,\n        starCount: Int64?\n    ) async throws -> Ok {\n        let query = BuyGiftUpgrade(\n            ownerId: ownerId,\n            prepaidUpgradeHash: prepaidUpgradeHash,\n            starCount: starCount\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Crafts a new gift from other gifts that will be permanently lost\n    /// - Parameter receivedGiftIds: Identifier of the gifts to use for crafting. In the case of a successful craft, the resulting gift will have the number of the first gift. Consequently, the first gift must not have been withdrawn to the TON blockchain as an NFT and must have an empty gift_address\n    public func craftGift(\n        receivedGiftIds: [String]?,\n        completion: @escaping (Result<CraftGiftResult, Swift.Error>) -> Void\n    ) throws {\n        let query = CraftGift(\n            receivedGiftIds: receivedGiftIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Crafts a new gift from other gifts that will be permanently lost\n    /// - Parameter receivedGiftIds: Identifier of the gifts to use for crafting. In the case of a successful craft, the resulting gift will have the number of the first gift. Consequently, the first gift must not have been withdrawn to the TON blockchain as an NFT and must have an empty gift_address\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func craftGift(receivedGiftIds: [String]?) async throws -> CraftGiftResult {\n        let query = CraftGift(\n            receivedGiftIds: receivedGiftIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends an upgraded gift to another user or channel chat\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request; for bots only\n    /// - Parameter newOwnerId: Identifier of the user or the channel chat that will receive the gift\n    /// - Parameter receivedGiftId: Identifier of the gift\n    /// - Parameter starCount: The Telegram Star amount required to pay for the transfer\n    public func transferGift(\n        businessConnectionId: String?,\n        newOwnerId: MessageSender?,\n        receivedGiftId: String?,\n        starCount: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = TransferGift(\n            businessConnectionId: businessConnectionId,\n            newOwnerId: newOwnerId,\n            receivedGiftId: receivedGiftId,\n            starCount: starCount\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends an upgraded gift to another user or channel chat\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request; for bots only\n    /// - Parameter newOwnerId: Identifier of the user or the channel chat that will receive the gift\n    /// - Parameter receivedGiftId: Identifier of the gift\n    /// - Parameter starCount: The Telegram Star amount required to pay for the transfer\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func transferGift(\n        businessConnectionId: String?,\n        newOwnerId: MessageSender?,\n        receivedGiftId: String?,\n        starCount: Int64?\n    ) async throws -> Ok {\n        let query = TransferGift(\n            businessConnectionId: businessConnectionId,\n            newOwnerId: newOwnerId,\n            receivedGiftId: receivedGiftId,\n            starCount: starCount\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Drops original details for an upgraded gift\n    /// - Parameter receivedGiftId: Identifier of the gift\n    /// - Parameter starCount: The Telegram Star amount required to pay for the operation\n    public func dropGiftOriginalDetails(\n        receivedGiftId: String?,\n        starCount: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DropGiftOriginalDetails(\n            receivedGiftId: receivedGiftId,\n            starCount: starCount\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Drops original details for an upgraded gift\n    /// - Parameter receivedGiftId: Identifier of the gift\n    /// - Parameter starCount: The Telegram Star amount required to pay for the operation\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func dropGiftOriginalDetails(\n        receivedGiftId: String?,\n        starCount: Int64?\n    ) async throws -> Ok {\n        let query = DropGiftOriginalDetails(\n            receivedGiftId: receivedGiftId,\n            starCount: starCount\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends an upgraded gift that is available for resale to another user or channel chat; gifts already owned by the current user must be transferred using transferGift and can't be passed to the method\n    /// - Parameter giftName: Name of the upgraded gift to send\n    /// - Parameter ownerId: Identifier of the user or the channel chat that will receive the gift\n    /// - Parameter price: The price that the user agreed to pay for the gift\n    public func sendResoldGift(\n        giftName: String?,\n        ownerId: MessageSender?,\n        price: GiftResalePrice?,\n        completion: @escaping (Result<GiftResaleResult, Swift.Error>) -> Void\n    ) throws {\n        let query = SendResoldGift(\n            giftName: giftName,\n            ownerId: ownerId,\n            price: price\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends an upgraded gift that is available for resale to another user or channel chat; gifts already owned by the current user must be transferred using transferGift and can't be passed to the method\n    /// - Parameter giftName: Name of the upgraded gift to send\n    /// - Parameter ownerId: Identifier of the user or the channel chat that will receive the gift\n    /// - Parameter price: The price that the user agreed to pay for the gift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func sendResoldGift(\n        giftName: String?,\n        ownerId: MessageSender?,\n        price: GiftResalePrice?\n    ) async throws -> GiftResaleResult {\n        let query = SendResoldGift(\n            giftName: giftName,\n            ownerId: ownerId,\n            price: price\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends an offer to purchase an upgraded gift\n    /// - Parameter duration: Duration of the offer, in seconds; must be one of 21600, 43200, 86400, 129600, 172800, or 259200. Can also be 120 if Telegram test environment is used\n    /// - Parameter giftName: Name of the upgraded gift\n    /// - Parameter ownerId: Identifier of the user or the channel chat that currently owns the gift and will receive the offer\n    /// - Parameter paidMessageStarCount: The number of Telegram Stars the user agreed to pay additionally for sending of the offer message to the current gift owner; pass userFullInfo.outgoing_paid_message_star_count for users and 0 otherwise\n    /// - Parameter price: The price that the user agreed to pay for the gift\n    public func sendGiftPurchaseOffer(\n        duration: Int?,\n        giftName: String?,\n        ownerId: MessageSender?,\n        paidMessageStarCount: Int64?,\n        price: GiftResalePrice?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendGiftPurchaseOffer(\n            duration: duration,\n            giftName: giftName,\n            ownerId: ownerId,\n            paidMessageStarCount: paidMessageStarCount,\n            price: price\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends an offer to purchase an upgraded gift\n    /// - Parameter duration: Duration of the offer, in seconds; must be one of 21600, 43200, 86400, 129600, 172800, or 259200. Can also be 120 if Telegram test environment is used\n    /// - Parameter giftName: Name of the upgraded gift\n    /// - Parameter ownerId: Identifier of the user or the channel chat that currently owns the gift and will receive the offer\n    /// - Parameter paidMessageStarCount: The number of Telegram Stars the user agreed to pay additionally for sending of the offer message to the current gift owner; pass userFullInfo.outgoing_paid_message_star_count for users and 0 otherwise\n    /// - Parameter price: The price that the user agreed to pay for the gift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func sendGiftPurchaseOffer(\n        duration: Int?,\n        giftName: String?,\n        ownerId: MessageSender?,\n        paidMessageStarCount: Int64?,\n        price: GiftResalePrice?\n    ) async throws -> Ok {\n        let query = SendGiftPurchaseOffer(\n            duration: duration,\n            giftName: giftName,\n            ownerId: ownerId,\n            paidMessageStarCount: paidMessageStarCount,\n            price: price\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Handles a pending gift purchase offer\n    /// - Parameter accept: Pass true to accept the request; pass false to reject it\n    /// - Parameter messageId: Identifier of the message with the gift purchase offer\n    public func processGiftPurchaseOffer(\n        accept: Bool?,\n        messageId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ProcessGiftPurchaseOffer(\n            accept: accept,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Handles a pending gift purchase offer\n    /// - Parameter accept: Pass true to accept the request; pass false to reject it\n    /// - Parameter messageId: Identifier of the message with the gift purchase offer\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func processGiftPurchaseOffer(\n        accept: Bool?,\n        messageId: Int64?\n    ) async throws -> Ok {\n        let query = ProcessGiftPurchaseOffer(\n            accept: accept,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns gifts received by the given user or chat\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request; for bots only\n    /// - Parameter collectionId: Pass collection identifier to get gifts only from the specified collection; pass 0 to get gifts regardless of collections\n    /// - Parameter excludeHosted: Pass true to exclude gifts that are just hosted and are not owned by the owner\n    /// - Parameter excludeNonUpgradable: Pass true to exclude gifts that can be purchased limited number of times and can't be upgraded\n    /// - Parameter excludeSaved: Pass true to exclude gifts that are saved to the chat's profile page. Always false for gifts received by other users and channel chats without can_post_messages administrator right\n    /// - Parameter excludeUnlimited: Pass true to exclude gifts that can be purchased unlimited number of times\n    /// - Parameter excludeUnsaved: Pass true to exclude gifts that aren't saved to the chat's profile page. Always true for gifts received by other users and channel chats without can_post_messages administrator right\n    /// - Parameter excludeUpgradable: Pass true to exclude gifts that can be purchased limited number of times and can be upgraded\n    /// - Parameter excludeUpgraded: Pass true to exclude upgraded gifts\n    /// - Parameter excludeWithoutColors: Pass true to exclude gifts that can't be used in setUpgradedGiftColors\n    /// - Parameter limit: The maximum number of gifts to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter ownerId: Identifier of the gift receiver\n    /// - Parameter sortByPrice: Pass true to sort results by gift price instead of send date\n    /// - Returns: Gifts received by the given user or chat\n    public func getReceivedGifts(\n        businessConnectionId: String?,\n        collectionId: Int?,\n        excludeHosted: Bool?,\n        excludeNonUpgradable: Bool?,\n        excludeSaved: Bool?,\n        excludeUnlimited: Bool?,\n        excludeUnsaved: Bool?,\n        excludeUpgradable: Bool?,\n        excludeUpgraded: Bool?,\n        excludeWithoutColors: Bool?,\n        limit: Int?,\n        offset: String?,\n        ownerId: MessageSender?,\n        sortByPrice: Bool?,\n        completion: @escaping (Result<ReceivedGifts, Swift.Error>) -> Void\n    ) throws {\n        let query = GetReceivedGifts(\n            businessConnectionId: businessConnectionId,\n            collectionId: collectionId,\n            excludeHosted: excludeHosted,\n            excludeNonUpgradable: excludeNonUpgradable,\n            excludeSaved: excludeSaved,\n            excludeUnlimited: excludeUnlimited,\n            excludeUnsaved: excludeUnsaved,\n            excludeUpgradable: excludeUpgradable,\n            excludeUpgraded: excludeUpgraded,\n            excludeWithoutColors: excludeWithoutColors,\n            limit: limit,\n            offset: offset,\n            ownerId: ownerId,\n            sortByPrice: sortByPrice\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns gifts received by the given user or chat\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request; for bots only\n    /// - Parameter collectionId: Pass collection identifier to get gifts only from the specified collection; pass 0 to get gifts regardless of collections\n    /// - Parameter excludeHosted: Pass true to exclude gifts that are just hosted and are not owned by the owner\n    /// - Parameter excludeNonUpgradable: Pass true to exclude gifts that can be purchased limited number of times and can't be upgraded\n    /// - Parameter excludeSaved: Pass true to exclude gifts that are saved to the chat's profile page. Always false for gifts received by other users and channel chats without can_post_messages administrator right\n    /// - Parameter excludeUnlimited: Pass true to exclude gifts that can be purchased unlimited number of times\n    /// - Parameter excludeUnsaved: Pass true to exclude gifts that aren't saved to the chat's profile page. Always true for gifts received by other users and channel chats without can_post_messages administrator right\n    /// - Parameter excludeUpgradable: Pass true to exclude gifts that can be purchased limited number of times and can be upgraded\n    /// - Parameter excludeUpgraded: Pass true to exclude upgraded gifts\n    /// - Parameter excludeWithoutColors: Pass true to exclude gifts that can't be used in setUpgradedGiftColors\n    /// - Parameter limit: The maximum number of gifts to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter ownerId: Identifier of the gift receiver\n    /// - Parameter sortByPrice: Pass true to sort results by gift price instead of send date\n    /// - Returns: Gifts received by the given user or chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getReceivedGifts(\n        businessConnectionId: String?,\n        collectionId: Int?,\n        excludeHosted: Bool?,\n        excludeNonUpgradable: Bool?,\n        excludeSaved: Bool?,\n        excludeUnlimited: Bool?,\n        excludeUnsaved: Bool?,\n        excludeUpgradable: Bool?,\n        excludeUpgraded: Bool?,\n        excludeWithoutColors: Bool?,\n        limit: Int?,\n        offset: String?,\n        ownerId: MessageSender?,\n        sortByPrice: Bool?\n    ) async throws -> ReceivedGifts {\n        let query = GetReceivedGifts(\n            businessConnectionId: businessConnectionId,\n            collectionId: collectionId,\n            excludeHosted: excludeHosted,\n            excludeNonUpgradable: excludeNonUpgradable,\n            excludeSaved: excludeSaved,\n            excludeUnlimited: excludeUnlimited,\n            excludeUnsaved: excludeUnsaved,\n            excludeUpgradable: excludeUpgradable,\n            excludeUpgraded: excludeUpgraded,\n            excludeWithoutColors: excludeWithoutColors,\n            limit: limit,\n            offset: offset,\n            ownerId: ownerId,\n            sortByPrice: sortByPrice\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a received gift\n    /// - Parameter receivedGiftId: Identifier of the gift\n    /// - Returns: Information about a received gift\n    public func getReceivedGift(\n        receivedGiftId: String?,\n        completion: @escaping (Result<ReceivedGift, Swift.Error>) -> Void\n    ) throws {\n        let query = GetReceivedGift(\n            receivedGiftId: receivedGiftId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a received gift\n    /// - Parameter receivedGiftId: Identifier of the gift\n    /// - Returns: Information about a received gift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getReceivedGift(receivedGiftId: String?) async throws -> ReceivedGift {\n        let query = GetReceivedGift(\n            receivedGiftId: receivedGiftId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns upgraded gifts of the current user who can be used to craft another gifts\n    /// - Parameter limit: The maximum number of gifts to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter regularGiftId: Identifier of the regular gift that will be used for crafting\n    /// - Returns: Upgraded gifts of the current user who can be used to craft another gifts\n    public func getGiftsForCrafting(\n        limit: Int?,\n        offset: String?,\n        regularGiftId: TdInt64?,\n        completion: @escaping (Result<GiftsForCrafting, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGiftsForCrafting(\n            limit: limit,\n            offset: offset,\n            regularGiftId: regularGiftId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns upgraded gifts of the current user who can be used to craft another gifts\n    /// - Parameter limit: The maximum number of gifts to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter regularGiftId: Identifier of the regular gift that will be used for crafting\n    /// - Returns: Upgraded gifts of the current user who can be used to craft another gifts\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getGiftsForCrafting(\n        limit: Int?,\n        offset: String?,\n        regularGiftId: TdInt64?\n    ) async throws -> GiftsForCrafting {\n        let query = GetGiftsForCrafting(\n            limit: limit,\n            offset: offset,\n            regularGiftId: regularGiftId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about an upgraded gift by its name\n    /// - Parameter name: Unique name of the upgraded gift\n    /// - Returns: Information about an upgraded gift by its name\n    public func getUpgradedGift(\n        name: String?,\n        completion: @escaping (Result<UpgradedGift, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUpgradedGift(\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about an upgraded gift by its name\n    /// - Parameter name: Unique name of the upgraded gift\n    /// - Returns: Information about an upgraded gift by its name\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getUpgradedGift(name: String?) async throws -> UpgradedGift {\n        let query = GetUpgradedGift(\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about value of an upgraded gift by its name\n    /// - Parameter name: Unique name of the upgraded gift\n    /// - Returns: Information about value of an upgraded gift by its name\n    public func getUpgradedGiftValueInfo(\n        name: String?,\n        completion: @escaping (Result<UpgradedGiftValueInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUpgradedGiftValueInfo(\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about value of an upgraded gift by its name\n    /// - Parameter name: Unique name of the upgraded gift\n    /// - Returns: Information about value of an upgraded gift by its name\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getUpgradedGiftValueInfo(name: String?) async throws -> UpgradedGiftValueInfo {\n        let query = GetUpgradedGiftValueInfo(\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a URL for upgraded gift withdrawal in the TON blockchain as an NFT; requires owner privileges for gifts owned by a chat\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Parameter receivedGiftId: Identifier of the gift\n    /// - Returns: A URL for upgraded gift withdrawal in the TON blockchain as an NFT\n    public func getUpgradedGiftWithdrawalUrl(\n        password: String?,\n        receivedGiftId: String?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUpgradedGiftWithdrawalUrl(\n            password: password,\n            receivedGiftId: receivedGiftId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a URL for upgraded gift withdrawal in the TON blockchain as an NFT; requires owner privileges for gifts owned by a chat\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Parameter receivedGiftId: Identifier of the gift\n    /// - Returns: A URL for upgraded gift withdrawal in the TON blockchain as an NFT\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getUpgradedGiftWithdrawalUrl(\n        password: String?,\n        receivedGiftId: String?\n    ) async throws -> HttpUrl {\n        let query = GetUpgradedGiftWithdrawalUrl(\n            password: password,\n            receivedGiftId: receivedGiftId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns promotional animation for upgraded gifts\n    /// - Returns: Promotional animation for upgraded gifts\n    public func getUpgradedGiftsPromotionalAnimation(completion: @escaping (Result<Animation, Swift.Error>) -> Void) throws {\n        let query = GetUpgradedGiftsPromotionalAnimation()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns promotional animation for upgraded gifts\n    /// - Returns: Promotional animation for upgraded gifts\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getUpgradedGiftsPromotionalAnimation() async throws -> Animation {\n        let query = GetUpgradedGiftsPromotionalAnimation()\n        return try await self.execute(query: query)\n    }\n\n    /// Changes resale price of a unique gift owned by the current user\n    /// - Parameter price: The new price for the unique gift; pass null to disallow gift resale. The current user will receive getOption(\"gift_resale_star_earnings_per_mille\") Telegram Stars for each 1000 Telegram Stars paid for the gift if the gift price is in Telegram Stars or getOption(\"gift_resale_ton_earnings_per_mille\") Toncoins for each 1000 Toncoins paid for the gift if the gift price is in Toncoins\n    /// - Parameter receivedGiftId: Identifier of the unique gift\n    public func setGiftResalePrice(\n        price: GiftResalePrice?,\n        receivedGiftId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetGiftResalePrice(\n            price: price,\n            receivedGiftId: receivedGiftId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes resale price of a unique gift owned by the current user\n    /// - Parameter price: The new price for the unique gift; pass null to disallow gift resale. The current user will receive getOption(\"gift_resale_star_earnings_per_mille\") Telegram Stars for each 1000 Telegram Stars paid for the gift if the gift price is in Telegram Stars or getOption(\"gift_resale_ton_earnings_per_mille\") Toncoins for each 1000 Toncoins paid for the gift if the gift price is in Toncoins\n    /// - Parameter receivedGiftId: Identifier of the unique gift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setGiftResalePrice(\n        price: GiftResalePrice?,\n        receivedGiftId: String?\n    ) async throws -> Ok {\n        let query = SetGiftResalePrice(\n            price: price,\n            receivedGiftId: receivedGiftId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns upgraded gifts that can be bought from other owners using sendResoldGift\n    /// - Parameter attributes: Attributes used to filter received gifts. If multiple attributes of the same type are specified, then all of them are allowed. If none attributes of specific type are specified, then all values for this attribute type are allowed\n    /// - Parameter forCrafting: Pass true to get only gifts suitable for crafting\n    /// - Parameter forStars: Pass true to get only gifts that can be bought using Telegram Stars\n    /// - Parameter giftId: Identifier of the regular gift that was upgraded to a unique gift\n    /// - Parameter limit: The maximum number of gifts to return\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request with the same order and attributes; use empty string to get the first chunk of results\n    /// - Parameter order: Order in which the results will be sorted\n    /// - Returns: Upgraded gifts that can be bought from other owners using sendResoldGift\n    public func searchGiftsForResale(\n        attributes: [UpgradedGiftAttributeId]?,\n        forCrafting: Bool?,\n        forStars: Bool?,\n        giftId: TdInt64?,\n        limit: Int?,\n        offset: String?,\n        order: GiftForResaleOrder?,\n        completion: @escaping (Result<GiftsForResale, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchGiftsForResale(\n            attributes: attributes,\n            forCrafting: forCrafting,\n            forStars: forStars,\n            giftId: giftId,\n            limit: limit,\n            offset: offset,\n            order: order\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns upgraded gifts that can be bought from other owners using sendResoldGift\n    /// - Parameter attributes: Attributes used to filter received gifts. If multiple attributes of the same type are specified, then all of them are allowed. If none attributes of specific type are specified, then all values for this attribute type are allowed\n    /// - Parameter forCrafting: Pass true to get only gifts suitable for crafting\n    /// - Parameter forStars: Pass true to get only gifts that can be bought using Telegram Stars\n    /// - Parameter giftId: Identifier of the regular gift that was upgraded to a unique gift\n    /// - Parameter limit: The maximum number of gifts to return\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request with the same order and attributes; use empty string to get the first chunk of results\n    /// - Parameter order: Order in which the results will be sorted\n    /// - Returns: Upgraded gifts that can be bought from other owners using sendResoldGift\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchGiftsForResale(\n        attributes: [UpgradedGiftAttributeId]?,\n        forCrafting: Bool?,\n        forStars: Bool?,\n        giftId: TdInt64?,\n        limit: Int?,\n        offset: String?,\n        order: GiftForResaleOrder?\n    ) async throws -> GiftsForResale {\n        let query = SearchGiftsForResale(\n            attributes: attributes,\n            forCrafting: forCrafting,\n            forStars: forStars,\n            giftId: giftId,\n            limit: limit,\n            offset: offset,\n            order: order\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns collections of gifts owned by the given user or chat\n    /// - Parameter ownerId: Identifier of the user or the channel chat that received the gifts\n    /// - Returns: Collections of gifts owned by the given user or chat\n    public func getGiftCollections(\n        ownerId: MessageSender?,\n        completion: @escaping (Result<GiftCollections, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGiftCollections(\n            ownerId: ownerId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns collections of gifts owned by the given user or chat\n    /// - Parameter ownerId: Identifier of the user or the channel chat that received the gifts\n    /// - Returns: Collections of gifts owned by the given user or chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getGiftCollections(ownerId: MessageSender?) async throws -> GiftCollections {\n        let query = GetGiftCollections(\n            ownerId: ownerId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Creates a collection from gifts on the current user's or a channel's profile page; requires can_post_messages administrator right in the channel chat. An owner can have up to getOption(\"gift_collection_count_max\") gift collections. The new collection will be added to the end of the gift collection list of the owner. Returns the created collection\n    /// - Parameter name: Name of the collection; 1-12 characters\n    /// - Parameter ownerId: Identifier of the user or the channel chat that received the gifts\n    /// - Parameter receivedGiftIds: Identifier of the gifts to add to the collection; 0-getOption(\"gift_collection_size_max\") identifiers\n    /// - Returns: The created collection\n    public func createGiftCollection(\n        name: String?,\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?,\n        completion: @escaping (Result<GiftCollection, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateGiftCollection(\n            name: name,\n            ownerId: ownerId,\n            receivedGiftIds: receivedGiftIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Creates a collection from gifts on the current user's or a channel's profile page; requires can_post_messages administrator right in the channel chat. An owner can have up to getOption(\"gift_collection_count_max\") gift collections. The new collection will be added to the end of the gift collection list of the owner. Returns the created collection\n    /// - Parameter name: Name of the collection; 1-12 characters\n    /// - Parameter ownerId: Identifier of the user or the channel chat that received the gifts\n    /// - Parameter receivedGiftIds: Identifier of the gifts to add to the collection; 0-getOption(\"gift_collection_size_max\") identifiers\n    /// - Returns: The created collection\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createGiftCollection(\n        name: String?,\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?\n    ) async throws -> GiftCollection {\n        let query = CreateGiftCollection(\n            name: name,\n            ownerId: ownerId,\n            receivedGiftIds: receivedGiftIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes order of gift collections. If the collections are owned by a channel chat, then requires can_post_messages administrator right in the channel chat\n    /// - Parameter collectionIds: New order of gift collections\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    public func reorderGiftCollections(\n        collectionIds: [Int]?,\n        ownerId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderGiftCollections(\n            collectionIds: collectionIds,\n            ownerId: ownerId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes order of gift collections. If the collections are owned by a channel chat, then requires can_post_messages administrator right in the channel chat\n    /// - Parameter collectionIds: New order of gift collections\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func reorderGiftCollections(\n        collectionIds: [Int]?,\n        ownerId: MessageSender?\n    ) async throws -> Ok {\n        let query = ReorderGiftCollections(\n            collectionIds: collectionIds,\n            ownerId: ownerId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes a gift collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat\n    /// - Parameter collectionId: Identifier of the gift collection\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    public func deleteGiftCollection(\n        collectionId: Int?,\n        ownerId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteGiftCollection(\n            collectionId: collectionId,\n            ownerId: ownerId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes a gift collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat\n    /// - Parameter collectionId: Identifier of the gift collection\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteGiftCollection(\n        collectionId: Int?,\n        ownerId: MessageSender?\n    ) async throws -> Ok {\n        let query = DeleteGiftCollection(\n            collectionId: collectionId,\n            ownerId: ownerId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes name of a gift collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat. Returns the changed collection\n    /// - Parameter collectionId: Identifier of the gift collection\n    /// - Parameter name: New name of the collection; 1-12 characters\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    /// - Returns: The changed collection\n    public func setGiftCollectionName(\n        collectionId: Int?,\n        name: String?,\n        ownerId: MessageSender?,\n        completion: @escaping (Result<GiftCollection, Swift.Error>) -> Void\n    ) throws {\n        let query = SetGiftCollectionName(\n            collectionId: collectionId,\n            name: name,\n            ownerId: ownerId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes name of a gift collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat. Returns the changed collection\n    /// - Parameter collectionId: Identifier of the gift collection\n    /// - Parameter name: New name of the collection; 1-12 characters\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    /// - Returns: The changed collection\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func setGiftCollectionName(\n        collectionId: Int?,\n        name: String?,\n        ownerId: MessageSender?\n    ) async throws -> GiftCollection {\n        let query = SetGiftCollectionName(\n            collectionId: collectionId,\n            name: name,\n            ownerId: ownerId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds gifts to the beginning of a previously created collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat. Returns the changed collection\n    /// - Parameter collectionId: Identifier of the gift collection\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    /// - Parameter receivedGiftIds: Identifier of the gifts to add to the collection; 1-getOption(\"gift_collection_size_max\") identifiers. If after addition the collection has more than getOption(\"gift_collection_size_max\") gifts, then the last one are removed from the collection\n    /// - Returns: The changed collection\n    public func addGiftCollectionGifts(\n        collectionId: Int?,\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?,\n        completion: @escaping (Result<GiftCollection, Swift.Error>) -> Void\n    ) throws {\n        let query = AddGiftCollectionGifts(\n            collectionId: collectionId,\n            ownerId: ownerId,\n            receivedGiftIds: receivedGiftIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds gifts to the beginning of a previously created collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat. Returns the changed collection\n    /// - Parameter collectionId: Identifier of the gift collection\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    /// - Parameter receivedGiftIds: Identifier of the gifts to add to the collection; 1-getOption(\"gift_collection_size_max\") identifiers. If after addition the collection has more than getOption(\"gift_collection_size_max\") gifts, then the last one are removed from the collection\n    /// - Returns: The changed collection\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func addGiftCollectionGifts(\n        collectionId: Int?,\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?\n    ) async throws -> GiftCollection {\n        let query = AddGiftCollectionGifts(\n            collectionId: collectionId,\n            ownerId: ownerId,\n            receivedGiftIds: receivedGiftIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes gifts from a collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat. Returns the changed collection\n    /// - Parameter collectionId: Identifier of the gift collection\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    /// - Parameter receivedGiftIds: Identifier of the gifts to remove from the collection\n    /// - Returns: The changed collection\n    public func removeGiftCollectionGifts(\n        collectionId: Int?,\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?,\n        completion: @escaping (Result<GiftCollection, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveGiftCollectionGifts(\n            collectionId: collectionId,\n            ownerId: ownerId,\n            receivedGiftIds: receivedGiftIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes gifts from a collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat. Returns the changed collection\n    /// - Parameter collectionId: Identifier of the gift collection\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    /// - Parameter receivedGiftIds: Identifier of the gifts to remove from the collection\n    /// - Returns: The changed collection\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func removeGiftCollectionGifts(\n        collectionId: Int?,\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?\n    ) async throws -> GiftCollection {\n        let query = RemoveGiftCollectionGifts(\n            collectionId: collectionId,\n            ownerId: ownerId,\n            receivedGiftIds: receivedGiftIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes order of gifts in a collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat. Returns the changed collection\n    /// - Parameter collectionId: Identifier of the gift collection\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    /// - Parameter receivedGiftIds: Identifier of the gifts to move to the beginning of the collection. All other gifts are placed in the current order after the specified gifts\n    /// - Returns: The changed collection\n    public func reorderGiftCollectionGifts(\n        collectionId: Int?,\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?,\n        completion: @escaping (Result<GiftCollection, Swift.Error>) -> Void\n    ) throws {\n        let query = ReorderGiftCollectionGifts(\n            collectionId: collectionId,\n            ownerId: ownerId,\n            receivedGiftIds: receivedGiftIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes order of gifts in a collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat. Returns the changed collection\n    /// - Parameter collectionId: Identifier of the gift collection\n    /// - Parameter ownerId: Identifier of the user or the channel chat that owns the collection\n    /// - Parameter receivedGiftIds: Identifier of the gifts to move to the beginning of the collection. All other gifts are placed in the current order after the specified gifts\n    /// - Returns: The changed collection\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func reorderGiftCollectionGifts(\n        collectionId: Int?,\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?\n    ) async throws -> GiftCollection {\n        let query = ReorderGiftCollectionGifts(\n            collectionId: collectionId,\n            ownerId: ownerId,\n            receivedGiftIds: receivedGiftIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Creates a link for the given invoice; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request\n    /// - Parameter invoice: Information about the invoice of the type inputMessageInvoice\n    public func createInvoiceLink(\n        businessConnectionId: String?,\n        invoice: InputMessageContent?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateInvoiceLink(\n            businessConnectionId: businessConnectionId,\n            invoice: invoice\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Creates a link for the given invoice; for bots only\n    /// - Parameter businessConnectionId: Unique identifier of business connection on behalf of which to send the request\n    /// - Parameter invoice: Information about the invoice of the type inputMessageInvoice\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createInvoiceLink(\n        businessConnectionId: String?,\n        invoice: InputMessageContent?\n    ) async throws -> HttpUrl {\n        let query = CreateInvoiceLink(\n            businessConnectionId: businessConnectionId,\n            invoice: invoice\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Refunds a previously done payment in Telegram Stars; for bots only\n    /// - Parameter telegramPaymentChargeId: Telegram payment identifier\n    /// - Parameter userId: Identifier of the user who did the payment\n    public func refundStarPayment(\n        telegramPaymentChargeId: String?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RefundStarPayment(\n            telegramPaymentChargeId: telegramPaymentChargeId,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Refunds a previously done payment in Telegram Stars; for bots only\n    /// - Parameter telegramPaymentChargeId: Telegram payment identifier\n    /// - Parameter userId: Identifier of the user who did the payment\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func refundStarPayment(\n        telegramPaymentChargeId: String?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = RefundStarPayment(\n            telegramPaymentChargeId: telegramPaymentChargeId,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a user who can be contacted to get support\n    /// - Returns: A user who can be contacted to get support\n    public func getSupportUser(completion: @escaping (Result<User, Swift.Error>) -> Void) throws {\n        let query = GetSupportUser()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a user who can be contacted to get support\n    /// - Returns: A user who can be contacted to get support\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getSupportUser() async throws -> User {\n        let query = GetSupportUser()\n        return try await self.execute(query: query)\n    }\n\n    /// Constructs a persistent HTTP URL for a background\n    /// - Parameter name: Background name\n    /// - Parameter type: Background type; backgroundTypeChatTheme isn't supported\n    public func getBackgroundUrl(\n        name: String?,\n        type: BackgroundType?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBackgroundUrl(\n            name: name,\n            type: type\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Constructs a persistent HTTP URL for a background\n    /// - Parameter name: Background name\n    /// - Parameter type: Background type; backgroundTypeChatTheme isn't supported\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getBackgroundUrl(\n        name: String?,\n        type: BackgroundType?\n    ) async throws -> HttpUrl {\n        let query = GetBackgroundUrl(\n            name: name,\n            type: type\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches for a background by its name\n    /// - Parameter name: The name of the background\n    public func searchBackground(\n        name: String?,\n        completion: @escaping (Result<Background, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchBackground(\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches for a background by its name\n    /// - Parameter name: The name of the background\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchBackground(name: String?) async throws -> Background {\n        let query = SearchBackground(\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets default background for chats; adds the background to the list of installed backgrounds\n    /// - Parameter background: The input background to use; pass null to create a new filled background\n    /// - Parameter forDarkTheme: Pass true if the background is set for a dark theme\n    /// - Parameter type: Background type; pass null to use the default type of the remote background; backgroundTypeChatTheme isn't supported\n    public func setDefaultBackground(\n        background: InputBackground?,\n        forDarkTheme: Bool?,\n        type: BackgroundType?,\n        completion: @escaping (Result<Background, Swift.Error>) -> Void\n    ) throws {\n        let query = SetDefaultBackground(\n            background: background,\n            forDarkTheme: forDarkTheme,\n            type: type\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets default background for chats; adds the background to the list of installed backgrounds\n    /// - Parameter background: The input background to use; pass null to create a new filled background\n    /// - Parameter forDarkTheme: Pass true if the background is set for a dark theme\n    /// - Parameter type: Background type; pass null to use the default type of the remote background; backgroundTypeChatTheme isn't supported\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func setDefaultBackground(\n        background: InputBackground?,\n        forDarkTheme: Bool?,\n        type: BackgroundType?\n    ) async throws -> Background {\n        let query = SetDefaultBackground(\n            background: background,\n            forDarkTheme: forDarkTheme,\n            type: type\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes default background for chats\n    /// - Parameter forDarkTheme: Pass true if the background is deleted for a dark theme\n    public func deleteDefaultBackground(\n        forDarkTheme: Bool?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteDefaultBackground(\n            forDarkTheme: forDarkTheme\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes default background for chats\n    /// - Parameter forDarkTheme: Pass true if the background is deleted for a dark theme\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteDefaultBackground(forDarkTheme: Bool?) async throws -> Ok {\n        let query = DeleteDefaultBackground(\n            forDarkTheme: forDarkTheme\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns backgrounds installed by the user\n    /// - Parameter forDarkTheme: Pass true to order returned backgrounds for a dark theme\n    /// - Returns: Backgrounds installed by the user\n    public func getInstalledBackgrounds(\n        forDarkTheme: Bool?,\n        completion: @escaping (Result<Backgrounds, Swift.Error>) -> Void\n    ) throws {\n        let query = GetInstalledBackgrounds(\n            forDarkTheme: forDarkTheme\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns backgrounds installed by the user\n    /// - Parameter forDarkTheme: Pass true to order returned backgrounds for a dark theme\n    /// - Returns: Backgrounds installed by the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getInstalledBackgrounds(forDarkTheme: Bool?) async throws -> Backgrounds {\n        let query = GetInstalledBackgrounds(\n            forDarkTheme: forDarkTheme\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes background from the list of installed backgrounds\n    /// - Parameter backgroundId: The background identifier\n    public func removeInstalledBackground(\n        backgroundId: TdInt64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveInstalledBackground(\n            backgroundId: backgroundId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes background from the list of installed backgrounds\n    /// - Parameter backgroundId: The background identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeInstalledBackground(backgroundId: TdInt64?) async throws -> Ok {\n        let query = RemoveInstalledBackground(\n            backgroundId: backgroundId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Resets list of installed backgrounds to its default value\n    public func resetInstalledBackgrounds(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ResetInstalledBackgrounds()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Resets list of installed backgrounds to its default value\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func resetInstalledBackgrounds() async throws -> Ok {\n        let query = ResetInstalledBackgrounds()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about the current localization target. This is an offline method if only_local is true. Can be called before authorization\n    /// - Parameter onlyLocal: Pass true to get only locally available information without sending network requests\n    /// - Returns: Information about the current localization target\n    public func getLocalizationTargetInfo(\n        onlyLocal: Bool?,\n        completion: @escaping (Result<LocalizationTargetInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLocalizationTargetInfo(\n            onlyLocal: onlyLocal\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about the current localization target. This is an offline method if only_local is true. Can be called before authorization\n    /// - Parameter onlyLocal: Pass true to get only locally available information without sending network requests\n    /// - Returns: Information about the current localization target\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getLocalizationTargetInfo(onlyLocal: Bool?) async throws -> LocalizationTargetInfo {\n        let query = GetLocalizationTargetInfo(\n            onlyLocal: onlyLocal\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a language pack. Returned language pack identifier may be different from a provided one. Can be called before authorization\n    /// - Parameter languagePackId: Language pack identifier\n    /// - Returns: Information about a language pack. Returned language pack identifier may be different from a provided one\n    public func getLanguagePackInfo(\n        languagePackId: String?,\n        completion: @escaping (Result<LanguagePackInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLanguagePackInfo(\n            languagePackId: languagePackId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a language pack. Returned language pack identifier may be different from a provided one. Can be called before authorization\n    /// - Parameter languagePackId: Language pack identifier\n    /// - Returns: Information about a language pack. Returned language pack identifier may be different from a provided one\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getLanguagePackInfo(languagePackId: String?) async throws -> LanguagePackInfo {\n        let query = GetLanguagePackInfo(\n            languagePackId: languagePackId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns strings from a language pack in the current localization target by their keys. Can be called before authorization\n    /// - Parameter keys: Language pack keys of the strings to be returned; leave empty to request all available strings\n    /// - Parameter languagePackId: Language pack identifier of the strings to be returned\n    /// - Returns: Strings from a language pack in the current localization target by their keys\n    public func getLanguagePackStrings(\n        keys: [String]?,\n        languagePackId: String?,\n        completion: @escaping (Result<LanguagePackStrings, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLanguagePackStrings(\n            keys: keys,\n            languagePackId: languagePackId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns strings from a language pack in the current localization target by their keys. Can be called before authorization\n    /// - Parameter keys: Language pack keys of the strings to be returned; leave empty to request all available strings\n    /// - Parameter languagePackId: Language pack identifier of the strings to be returned\n    /// - Returns: Strings from a language pack in the current localization target by their keys\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getLanguagePackStrings(\n        keys: [String]?,\n        languagePackId: String?\n    ) async throws -> LanguagePackStrings {\n        let query = GetLanguagePackStrings(\n            keys: keys,\n            languagePackId: languagePackId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Fetches the latest versions of all strings from a language pack in the current localization target from the server. This method doesn't need to be called explicitly for the current used/base language packs. Can be called before authorization\n    /// - Parameter languagePackId: Language pack identifier\n    public func synchronizeLanguagePack(\n        languagePackId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SynchronizeLanguagePack(\n            languagePackId: languagePackId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Fetches the latest versions of all strings from a language pack in the current localization target from the server. This method doesn't need to be called explicitly for the current used/base language packs. Can be called before authorization\n    /// - Parameter languagePackId: Language pack identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func synchronizeLanguagePack(languagePackId: String?) async throws -> Ok {\n        let query = SynchronizeLanguagePack(\n            languagePackId: languagePackId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds a custom server language pack to the list of installed language packs in current localization target. Can be called before authorization\n    /// - Parameter languagePackId: Identifier of a language pack to be added\n    public func addCustomServerLanguagePack(\n        languagePackId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddCustomServerLanguagePack(\n            languagePackId: languagePackId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds a custom server language pack to the list of installed language packs in current localization target. Can be called before authorization\n    /// - Parameter languagePackId: Identifier of a language pack to be added\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func addCustomServerLanguagePack(languagePackId: String?) async throws -> Ok {\n        let query = AddCustomServerLanguagePack(\n            languagePackId: languagePackId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds or changes a custom local language pack to the current localization target\n    /// - Parameter info: Information about the language pack. Language pack identifier must start with 'X', consist only of English letters, digits and hyphens, and must not exceed 64 characters. Can be called before authorization\n    /// - Parameter strings: Strings of the new language pack\n    public func setCustomLanguagePack(\n        info: LanguagePackInfo?,\n        strings: [LanguagePackString]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetCustomLanguagePack(\n            info: info,\n            strings: strings\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds or changes a custom local language pack to the current localization target\n    /// - Parameter info: Information about the language pack. Language pack identifier must start with 'X', consist only of English letters, digits and hyphens, and must not exceed 64 characters. Can be called before authorization\n    /// - Parameter strings: Strings of the new language pack\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setCustomLanguagePack(\n        info: LanguagePackInfo?,\n        strings: [LanguagePackString]?\n    ) async throws -> Ok {\n        let query = SetCustomLanguagePack(\n            info: info,\n            strings: strings\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits information about a custom local language pack in the current localization target. Can be called before authorization\n    /// - Parameter info: New information about the custom local language pack\n    public func editCustomLanguagePackInfo(\n        info: LanguagePackInfo?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditCustomLanguagePackInfo(\n            info: info\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits information about a custom local language pack in the current localization target. Can be called before authorization\n    /// - Parameter info: New information about the custom local language pack\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func editCustomLanguagePackInfo(info: LanguagePackInfo?) async throws -> Ok {\n        let query = EditCustomLanguagePackInfo(\n            info: info\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds, edits or deletes a string in a custom local language pack. Can be called before authorization\n    /// - Parameter languagePackId: Identifier of a previously added custom local language pack in the current localization target\n    /// - Parameter newString: New language pack string\n    public func setCustomLanguagePackString(\n        languagePackId: String?,\n        newString: LanguagePackString?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetCustomLanguagePackString(\n            languagePackId: languagePackId,\n            newString: newString\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds, edits or deletes a string in a custom local language pack. Can be called before authorization\n    /// - Parameter languagePackId: Identifier of a previously added custom local language pack in the current localization target\n    /// - Parameter newString: New language pack string\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setCustomLanguagePackString(\n        languagePackId: String?,\n        newString: LanguagePackString?\n    ) async throws -> Ok {\n        let query = SetCustomLanguagePackString(\n            languagePackId: languagePackId,\n            newString: newString\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes all information about a language pack in the current localization target. The language pack which is currently in use (including base language pack) or is being synchronized can't be deleted. Can be called before authorization\n    /// - Parameter languagePackId: Identifier of the language pack to delete\n    public func deleteLanguagePack(\n        languagePackId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteLanguagePack(\n            languagePackId: languagePackId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes all information about a language pack in the current localization target. The language pack which is currently in use (including base language pack) or is being synchronized can't be deleted. Can be called before authorization\n    /// - Parameter languagePackId: Identifier of the language pack to delete\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteLanguagePack(languagePackId: String?) async throws -> Ok {\n        let query = DeleteLanguagePack(\n            languagePackId: languagePackId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Registers the currently used device for receiving push notifications. Returns a globally unique identifier of the push notification subscription\n    /// - Parameter deviceToken: Device token\n    /// - Parameter otherUserIds: List of user identifiers of other users currently using the application\n    /// - Returns: A globally unique identifier of the push notification subscription\n    public func registerDevice(\n        deviceToken: DeviceToken?,\n        otherUserIds: [Int64]?,\n        completion: @escaping (Result<PushReceiverId, Swift.Error>) -> Void\n    ) throws {\n        let query = RegisterDevice(\n            deviceToken: deviceToken,\n            otherUserIds: otherUserIds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Registers the currently used device for receiving push notifications. Returns a globally unique identifier of the push notification subscription\n    /// - Parameter deviceToken: Device token\n    /// - Parameter otherUserIds: List of user identifiers of other users currently using the application\n    /// - Returns: A globally unique identifier of the push notification subscription\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func registerDevice(\n        deviceToken: DeviceToken?,\n        otherUserIds: [Int64]?\n    ) async throws -> PushReceiverId {\n        let query = RegisterDevice(\n            deviceToken: deviceToken,\n            otherUserIds: otherUserIds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Handles a push notification. Returns error with code 406 if the push notification is not supported and connection to the server is required to fetch new data. Can be called before authorization\n    /// - Parameter payload: JSON-encoded push notification payload with all fields sent by the server, and \"google.sent_time\" and \"google.notification.sound\" fields added\n    /// - Returns: Error with code 406 if the push notification is not supported and connection to the server is required to fetch new data\n    public func processPushNotification(\n        payload: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ProcessPushNotification(\n            payload: payload\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Handles a push notification. Returns error with code 406 if the push notification is not supported and connection to the server is required to fetch new data. Can be called before authorization\n    /// - Parameter payload: JSON-encoded push notification payload with all fields sent by the server, and \"google.sent_time\" and \"google.notification.sound\" fields added\n    /// - Returns: Error with code 406 if the push notification is not supported and connection to the server is required to fetch new data\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func processPushNotification(payload: String?) async throws -> Ok {\n        let query = ProcessPushNotification(\n            payload: payload\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a globally unique push notification subscription identifier for identification of an account, which has received a push notification. Can be called synchronously\n    /// - Parameter payload: JSON-encoded push notification payload\n    /// - Returns: A globally unique push notification subscription identifier for identification of an account, which has received a push notification\n    public func getPushReceiverId(\n        payload: String?,\n        completion: @escaping (Result<PushReceiverId, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPushReceiverId(\n            payload: payload\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a globally unique push notification subscription identifier for identification of an account, which has received a push notification. Can be called synchronously\n    /// - Parameter payload: JSON-encoded push notification payload\n    /// - Returns: A globally unique push notification subscription identifier for identification of an account, which has received a push notification\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPushReceiverId(payload: String?) async throws -> PushReceiverId {\n        let query = GetPushReceiverId(\n            payload: payload\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns t.me URLs recently visited by a newly registered user\n    /// - Parameter referrer: Google Play referrer to identify the user\n    /// - Returns: T\n    public func getRecentlyVisitedTMeUrls(\n        referrer: String?,\n        completion: @escaping (Result<TMeUrls, Swift.Error>) -> Void\n    ) throws {\n        let query = GetRecentlyVisitedTMeUrls(\n            referrer: referrer\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns t.me URLs recently visited by a newly registered user\n    /// - Parameter referrer: Google Play referrer to identify the user\n    /// - Returns: T\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getRecentlyVisitedTMeUrls(referrer: String?) async throws -> TMeUrls {\n        let query = GetRecentlyVisitedTMeUrls(\n            referrer: referrer\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes user privacy settings\n    /// - Parameter rules: The new privacy rules\n    /// - Parameter setting: The privacy setting\n    public func setUserPrivacySettingRules(\n        rules: UserPrivacySettingRules?,\n        setting: UserPrivacySetting?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetUserPrivacySettingRules(\n            rules: rules,\n            setting: setting\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes user privacy settings\n    /// - Parameter rules: The new privacy rules\n    /// - Parameter setting: The privacy setting\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setUserPrivacySettingRules(\n        rules: UserPrivacySettingRules?,\n        setting: UserPrivacySetting?\n    ) async throws -> Ok {\n        let query = SetUserPrivacySettingRules(\n            rules: rules,\n            setting: setting\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the current privacy settings\n    /// - Parameter setting: The privacy setting\n    /// - Returns: The current privacy settings\n    public func getUserPrivacySettingRules(\n        setting: UserPrivacySetting?,\n        completion: @escaping (Result<UserPrivacySettingRules, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUserPrivacySettingRules(\n            setting: setting\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the current privacy settings\n    /// - Parameter setting: The privacy setting\n    /// - Returns: The current privacy settings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getUserPrivacySettingRules(setting: UserPrivacySetting?) async throws -> UserPrivacySettingRules {\n        let query = GetUserPrivacySettingRules(\n            setting: setting\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes privacy settings for message read date\n    /// - Parameter settings: New settings\n    public func setReadDatePrivacySettings(\n        settings: ReadDatePrivacySettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetReadDatePrivacySettings(\n            settings: settings\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes privacy settings for message read date\n    /// - Parameter settings: New settings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setReadDatePrivacySettings(settings: ReadDatePrivacySettings?) async throws -> Ok {\n        let query = SetReadDatePrivacySettings(\n            settings: settings\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns privacy settings for message read date\n    /// - Returns: Privacy settings for message read date\n    public func getReadDatePrivacySettings(completion: @escaping (Result<ReadDatePrivacySettings, Swift.Error>) -> Void) throws {\n        let query = GetReadDatePrivacySettings()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns privacy settings for message read date\n    /// - Returns: Privacy settings for message read date\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getReadDatePrivacySettings() async throws -> ReadDatePrivacySettings {\n        let query = GetReadDatePrivacySettings()\n        return try await self.execute(query: query)\n    }\n\n    /// Changes privacy settings for new chat creation; can be used only if getOption(\"can_set_new_chat_privacy_settings\")\n    /// - Parameter settings: New settings\n    public func setNewChatPrivacySettings(\n        settings: NewChatPrivacySettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetNewChatPrivacySettings(\n            settings: settings\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes privacy settings for new chat creation; can be used only if getOption(\"can_set_new_chat_privacy_settings\")\n    /// - Parameter settings: New settings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setNewChatPrivacySettings(settings: NewChatPrivacySettings?) async throws -> Ok {\n        let query = SetNewChatPrivacySettings(\n            settings: settings\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns privacy settings for new chat creation\n    /// - Returns: Privacy settings for new chat creation\n    public func getNewChatPrivacySettings(completion: @escaping (Result<NewChatPrivacySettings, Swift.Error>) -> Void) throws {\n        let query = GetNewChatPrivacySettings()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns privacy settings for new chat creation\n    /// - Returns: Privacy settings for new chat creation\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getNewChatPrivacySettings() async throws -> NewChatPrivacySettings {\n        let query = GetNewChatPrivacySettings()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the total number of Telegram Stars received by the current user for paid messages from the given user\n    /// - Parameter userId: Identifier of the user\n    /// - Returns: The total number of Telegram Stars received by the current user for paid messages from the given user\n    public func getPaidMessageRevenue(\n        userId: Int64?,\n        completion: @escaping (Result<StarCount, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPaidMessageRevenue(\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the total number of Telegram Stars received by the current user for paid messages from the given user\n    /// - Parameter userId: Identifier of the user\n    /// - Returns: The total number of Telegram Stars received by the current user for paid messages from the given user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPaidMessageRevenue(userId: Int64?) async throws -> StarCount {\n        let query = GetPaidMessageRevenue(\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Allows the specified user to send unpaid private messages to the current user by adding a rule to userPrivacySettingAllowUnpaidMessages\n    /// - Parameter refundPayments: Pass true to refund the user previously paid messages\n    /// - Parameter userId: Identifier of the user\n    public func allowUnpaidMessagesFromUser(\n        refundPayments: Bool?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AllowUnpaidMessagesFromUser(\n            refundPayments: refundPayments,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Allows the specified user to send unpaid private messages to the current user by adding a rule to userPrivacySettingAllowUnpaidMessages\n    /// - Parameter refundPayments: Pass true to refund the user previously paid messages\n    /// - Parameter userId: Identifier of the user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func allowUnpaidMessagesFromUser(\n        refundPayments: Bool?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = AllowUnpaidMessagesFromUser(\n            refundPayments: refundPayments,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the Telegram Star amount that must be paid to send a message to a supergroup chat; requires can_restrict_members administrator right and supergroupFullInfo.can_enable_paid_messages\n    /// - Parameter chatId: Identifier of the supergroup chat\n    /// - Parameter paidMessageStarCount: The new number of Telegram Stars that must be paid for each message that is sent to the supergroup chat unless the sender is an administrator of the chat; 0-getOption(\"paid_message_star_count_max\"). The supergroup will receive getOption(\"paid_message_earnings_per_mille\") Telegram Stars for each 1000 Telegram Stars paid for message sending\n    public func setChatPaidMessageStarCount(\n        chatId: Int64?,\n        paidMessageStarCount: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatPaidMessageStarCount(\n            chatId: chatId,\n            paidMessageStarCount: paidMessageStarCount\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the Telegram Star amount that must be paid to send a message to a supergroup chat; requires can_restrict_members administrator right and supergroupFullInfo.can_enable_paid_messages\n    /// - Parameter chatId: Identifier of the supergroup chat\n    /// - Parameter paidMessageStarCount: The new number of Telegram Stars that must be paid for each message that is sent to the supergroup chat unless the sender is an administrator of the chat; 0-getOption(\"paid_message_star_count_max\"). The supergroup will receive getOption(\"paid_message_earnings_per_mille\") Telegram Stars for each 1000 Telegram Stars paid for message sending\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatPaidMessageStarCount(\n        chatId: Int64?,\n        paidMessageStarCount: Int64?\n    ) async throws -> Ok {\n        let query = SetChatPaidMessageStarCount(\n            chatId: chatId,\n            paidMessageStarCount: paidMessageStarCount\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks whether the current user can message another user or try to create a chat with them\n    /// - Parameter onlyLocal: Pass true to get only locally available information without sending network requests\n    /// - Parameter userId: Identifier of the other user\n    public func canSendMessageToUser(\n        onlyLocal: Bool?,\n        userId: Int64?,\n        completion: @escaping (Result<CanSendMessageToUserResult, Swift.Error>) -> Void\n    ) throws {\n        let query = CanSendMessageToUser(\n            onlyLocal: onlyLocal,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks whether the current user can message another user or try to create a chat with them\n    /// - Parameter onlyLocal: Pass true to get only locally available information without sending network requests\n    /// - Parameter userId: Identifier of the other user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func canSendMessageToUser(\n        onlyLocal: Bool?,\n        userId: Int64?\n    ) async throws -> CanSendMessageToUserResult {\n        let query = CanSendMessageToUser(\n            onlyLocal: onlyLocal,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the value of an option by its name. (Check the list of available options on https://core.telegram.org/tdlib/options.) Can be called before authorization. Can be called synchronously for options \"version\" and \"commit_hash\"\n    /// - Parameter name: The name of the option\n    /// - Returns: The value of an option by its name\n    public func getOption(\n        name: String?,\n        completion: @escaping (Result<OptionValue, Swift.Error>) -> Void\n    ) throws {\n        let query = GetOption(\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the value of an option by its name. (Check the list of available options on https://core.telegram.org/tdlib/options.) Can be called before authorization. Can be called synchronously for options \"version\" and \"commit_hash\"\n    /// - Parameter name: The name of the option\n    /// - Returns: The value of an option by its name\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getOption(name: String?) async throws -> OptionValue {\n        let query = GetOption(\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets the value of an option. (Check the list of available options on https://core.telegram.org/tdlib/options.) Only writable options can be set. Can be called before authorization\n    /// - Parameter name: The name of the option\n    /// - Parameter value: The new value of the option; pass null to reset option value to a default value\n    public func setOption(\n        name: String?,\n        value: OptionValue?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetOption(\n            name: name,\n            value: value\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets the value of an option. (Check the list of available options on https://core.telegram.org/tdlib/options.) Only writable options can be set. Can be called before authorization\n    /// - Parameter name: The name of the option\n    /// - Parameter value: The new value of the option; pass null to reset option value to a default value\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setOption(\n        name: String?,\n        value: OptionValue?\n    ) async throws -> Ok {\n        let query = SetOption(\n            name: name,\n            value: value\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the period of inactivity after which the account of the current user will automatically be deleted\n    /// - Parameter ttl: New account TTL\n    public func setAccountTtl(\n        ttl: AccountTtl?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetAccountTtl(\n            ttl: ttl\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the period of inactivity after which the account of the current user will automatically be deleted\n    /// - Parameter ttl: New account TTL\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setAccountTtl(ttl: AccountTtl?) async throws -> Ok {\n        let query = SetAccountTtl(\n            ttl: ttl\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the period of inactivity after which the account of the current user will automatically be deleted\n    /// - Returns: The period of inactivity after which the account of the current user will automatically be deleted\n    public func getAccountTtl(completion: @escaping (Result<AccountTtl, Swift.Error>) -> Void) throws {\n        let query = GetAccountTtl()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the period of inactivity after which the account of the current user will automatically be deleted\n    /// - Returns: The period of inactivity after which the account of the current user will automatically be deleted\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getAccountTtl() async throws -> AccountTtl {\n        let query = GetAccountTtl()\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes the account of the current user, deleting all information associated with the user from the server. The phone number of the account can be used to create a new account. Can be called before authorization when the current authorization state is authorizationStateWaitPassword\n    /// - Parameter password: The 2-step verification password of the current user. If the current user isn't authorized, then an empty string can be passed and account deletion can be canceled within one week\n    /// - Parameter reason: The reason why the account was deleted; optional\n    public func deleteAccount(\n        password: String?,\n        reason: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteAccount(\n            password: password,\n            reason: reason\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes the account of the current user, deleting all information associated with the user from the server. The phone number of the account can be used to create a new account. Can be called before authorization when the current authorization state is authorizationStateWaitPassword\n    /// - Parameter password: The 2-step verification password of the current user. If the current user isn't authorized, then an empty string can be passed and account deletion can be canceled within one week\n    /// - Parameter reason: The reason why the account was deleted; optional\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteAccount(\n        password: String?,\n        reason: String?\n    ) async throws -> Ok {\n        let query = DeleteAccount(\n            password: password,\n            reason: reason\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the default message auto-delete time for new chats\n    /// - Parameter messageAutoDeleteTime: New default message auto-delete time; must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically\n    public func setDefaultMessageAutoDeleteTime(\n        messageAutoDeleteTime: MessageAutoDeleteTime?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetDefaultMessageAutoDeleteTime(\n            messageAutoDeleteTime: messageAutoDeleteTime\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the default message auto-delete time for new chats\n    /// - Parameter messageAutoDeleteTime: New default message auto-delete time; must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setDefaultMessageAutoDeleteTime(messageAutoDeleteTime: MessageAutoDeleteTime?) async throws -> Ok {\n        let query = SetDefaultMessageAutoDeleteTime(\n            messageAutoDeleteTime: messageAutoDeleteTime\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns default message auto-delete time setting for new chats\n    /// - Returns: Default message auto-delete time setting for new chats\n    public func getDefaultMessageAutoDeleteTime(completion: @escaping (Result<MessageAutoDeleteTime, Swift.Error>) -> Void) throws {\n        let query = GetDefaultMessageAutoDeleteTime()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns default message auto-delete time setting for new chats\n    /// - Returns: Default message auto-delete time setting for new chats\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getDefaultMessageAutoDeleteTime() async throws -> MessageAutoDeleteTime {\n        let query = GetDefaultMessageAutoDeleteTime()\n        return try await self.execute(query: query)\n    }\n\n    /// Removes a chat action bar without any other action\n    /// - Parameter chatId: Chat identifier\n    public func removeChatActionBar(\n        chatId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveChatActionBar(\n            chatId: chatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes a chat action bar without any other action\n    /// - Parameter chatId: Chat identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeChatActionBar(chatId: Int64?) async throws -> Ok {\n        let query = RemoveChatActionBar(\n            chatId: chatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Reports a chat to the Telegram moderators. A chat can be reported only from the chat action bar, or if chat.can_be_reported\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageIds: Identifiers of reported messages. Use messageProperties.can_report_chat to check whether the message can be reported\n    /// - Parameter optionId: Option identifier chosen by the user; leave empty for the initial request\n    /// - Parameter text: Additional report details if asked by the server; 0-1024 characters; leave empty for the initial request\n    public func reportChat(\n        chatId: Int64?,\n        messageIds: [Int64]?,\n        optionId: Data?,\n        text: String?,\n        completion: @escaping (Result<ReportChatResult, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportChat(\n            chatId: chatId,\n            messageIds: messageIds,\n            optionId: optionId,\n            text: text\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Reports a chat to the Telegram moderators. A chat can be reported only from the chat action bar, or if chat.can_be_reported\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageIds: Identifiers of reported messages. Use messageProperties.can_report_chat to check whether the message can be reported\n    /// - Parameter optionId: Option identifier chosen by the user; leave empty for the initial request\n    /// - Parameter text: Additional report details if asked by the server; 0-1024 characters; leave empty for the initial request\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func reportChat(\n        chatId: Int64?,\n        messageIds: [Int64]?,\n        optionId: Data?,\n        text: String?\n    ) async throws -> ReportChatResult {\n        let query = ReportChat(\n            chatId: chatId,\n            messageIds: messageIds,\n            optionId: optionId,\n            text: text\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Reports a chat photo to the Telegram moderators. A chat photo can be reported only if chat.can_be_reported\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter fileId: Identifier of the photo to report. Only full photos from chatPhoto can be reported\n    /// - Parameter reason: The reason for reporting the chat photo\n    /// - Parameter text: Additional report details; 0-1024 characters\n    public func reportChatPhoto(\n        chatId: Int64?,\n        fileId: Int?,\n        reason: ReportReason?,\n        text: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportChatPhoto(\n            chatId: chatId,\n            fileId: fileId,\n            reason: reason,\n            text: text\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Reports a chat photo to the Telegram moderators. A chat photo can be reported only if chat.can_be_reported\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter fileId: Identifier of the photo to report. Only full photos from chatPhoto can be reported\n    /// - Parameter reason: The reason for reporting the chat photo\n    /// - Parameter text: Additional report details; 0-1024 characters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func reportChatPhoto(\n        chatId: Int64?,\n        fileId: Int?,\n        reason: ReportReason?,\n        text: String?\n    ) async throws -> Ok {\n        let query = ReportChatPhoto(\n            chatId: chatId,\n            fileId: fileId,\n            reason: reason,\n            text: text\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Reports reactions set on a message to the Telegram moderators. Reactions on a message can be reported only if messageProperties.can_report_reactions\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Message identifier\n    /// - Parameter senderId: Identifier of the sender, which added the reaction\n    public func reportMessageReactions(\n        chatId: Int64?,\n        messageId: Int64?,\n        senderId: MessageSender?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReportMessageReactions(\n            chatId: chatId,\n            messageId: messageId,\n            senderId: senderId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Reports reactions set on a message to the Telegram moderators. Reactions on a message can be reported only if messageProperties.can_report_reactions\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter messageId: Message identifier\n    /// - Parameter senderId: Identifier of the sender, which added the reaction\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func reportMessageReactions(\n        chatId: Int64?,\n        messageId: Int64?,\n        senderId: MessageSender?\n    ) async throws -> Ok {\n        let query = ReportMessageReactions(\n            chatId: chatId,\n            messageId: messageId,\n            senderId: senderId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns detailed revenue statistics about a chat. Currently, this method can be used only for channels if supergroupFullInfo.can_get_revenue_statistics == true or bots if userFullInfo.bot_info.can_get_revenue_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Returns: Detailed revenue statistics about a chat\n    public func getChatRevenueStatistics(\n        chatId: Int64?,\n        isDark: Bool?,\n        completion: @escaping (Result<ChatRevenueStatistics, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatRevenueStatistics(\n            chatId: chatId,\n            isDark: isDark\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns detailed revenue statistics about a chat. Currently, this method can be used only for channels if supergroupFullInfo.can_get_revenue_statistics == true or bots if userFullInfo.bot_info.can_get_revenue_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Returns: Detailed revenue statistics about a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatRevenueStatistics(\n        chatId: Int64?,\n        isDark: Bool?\n    ) async throws -> ChatRevenueStatistics {\n        let query = GetChatRevenueStatistics(\n            chatId: chatId,\n            isDark: isDark\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a URL for chat revenue withdrawal; requires owner privileges in the channel chat or the bot. Currently, this method can be used only if getOption(\"can_withdraw_chat_revenue\") for channels with supergroupFullInfo.can_get_revenue_statistics == true or bots with userFullInfo.bot_info.can_get_revenue_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Returns: A URL for chat revenue withdrawal\n    public func getChatRevenueWithdrawalUrl(\n        chatId: Int64?,\n        password: String?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatRevenueWithdrawalUrl(\n            chatId: chatId,\n            password: password\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a URL for chat revenue withdrawal; requires owner privileges in the channel chat or the bot. Currently, this method can be used only if getOption(\"can_withdraw_chat_revenue\") for channels with supergroupFullInfo.can_get_revenue_statistics == true or bots with userFullInfo.bot_info.can_get_revenue_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Returns: A URL for chat revenue withdrawal\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatRevenueWithdrawalUrl(\n        chatId: Int64?,\n        password: String?\n    ) async throws -> HttpUrl {\n        let query = GetChatRevenueWithdrawalUrl(\n            chatId: chatId,\n            password: password\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of revenue transactions for a chat. Currently, this method can be used only for channels if supergroupFullInfo.can_get_revenue_statistics == true or bots if userFullInfo.bot_info.can_get_revenue_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter limit: The maximum number of transactions to be returned; up to 100\n    /// - Parameter offset: Offset of the first transaction to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: The list of revenue transactions for a chat\n    public func getChatRevenueTransactions(\n        chatId: Int64?,\n        limit: Int?,\n        offset: String?,\n        completion: @escaping (Result<ChatRevenueTransactions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatRevenueTransactions(\n            chatId: chatId,\n            limit: limit,\n            offset: offset\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of revenue transactions for a chat. Currently, this method can be used only for channels if supergroupFullInfo.can_get_revenue_statistics == true or bots if userFullInfo.bot_info.can_get_revenue_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter limit: The maximum number of transactions to be returned; up to 100\n    /// - Parameter offset: Offset of the first transaction to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: The list of revenue transactions for a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatRevenueTransactions(\n        chatId: Int64?,\n        limit: Int?,\n        offset: String?\n    ) async throws -> ChatRevenueTransactions {\n        let query = GetChatRevenueTransactions(\n            chatId: chatId,\n            limit: limit,\n            offset: offset\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of Toncoin transactions of the current user\n    /// - Parameter direction: Direction of the transactions to receive; pass null to get all transactions\n    /// - Parameter limit: The maximum number of transactions to return\n    /// - Parameter offset: Offset of the first transaction to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: The list of Toncoin transactions of the current user\n    public func getTonTransactions(\n        direction: TransactionDirection?,\n        limit: Int?,\n        offset: String?,\n        completion: @escaping (Result<TonTransactions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetTonTransactions(\n            direction: direction,\n            limit: limit,\n            offset: offset\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of Toncoin transactions of the current user\n    /// - Parameter direction: Direction of the transactions to receive; pass null to get all transactions\n    /// - Parameter limit: The maximum number of transactions to return\n    /// - Parameter offset: Offset of the first transaction to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: The list of Toncoin transactions of the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getTonTransactions(\n        direction: TransactionDirection?,\n        limit: Int?,\n        offset: String?\n    ) async throws -> TonTransactions {\n        let query = GetTonTransactions(\n            direction: direction,\n            limit: limit,\n            offset: offset\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns detailed Telegram Star revenue statistics\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Parameter ownerId: Identifier of the owner of the Telegram Stars; can be identifier of the current user, an owned bot, or a supergroup or a channel chat with supergroupFullInfo.can_get_star_revenue_statistics == true\n    /// - Returns: Detailed Telegram Star revenue statistics\n    public func getStarRevenueStatistics(\n        isDark: Bool?,\n        ownerId: MessageSender?,\n        completion: @escaping (Result<StarRevenueStatistics, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStarRevenueStatistics(\n            isDark: isDark,\n            ownerId: ownerId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns detailed Telegram Star revenue statistics\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Parameter ownerId: Identifier of the owner of the Telegram Stars; can be identifier of the current user, an owned bot, or a supergroup or a channel chat with supergroupFullInfo.can_get_star_revenue_statistics == true\n    /// - Returns: Detailed Telegram Star revenue statistics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStarRevenueStatistics(\n        isDark: Bool?,\n        ownerId: MessageSender?\n    ) async throws -> StarRevenueStatistics {\n        let query = GetStarRevenueStatistics(\n            isDark: isDark,\n            ownerId: ownerId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a URL for Telegram Star withdrawal\n    /// - Parameter ownerId: Identifier of the owner of the Telegram Stars; can be identifier of the current user, an owned bot, or an owned supergroup or channel chat\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Parameter starCount: The number of Telegram Stars to withdraw; must be between getOption(\"star_withdrawal_count_min\") and getOption(\"star_withdrawal_count_max\")\n    /// - Returns: A URL for Telegram Star withdrawal\n    public func getStarWithdrawalUrl(\n        ownerId: MessageSender?,\n        password: String?,\n        starCount: Int64?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStarWithdrawalUrl(\n            ownerId: ownerId,\n            password: password,\n            starCount: starCount\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a URL for Telegram Star withdrawal\n    /// - Parameter ownerId: Identifier of the owner of the Telegram Stars; can be identifier of the current user, an owned bot, or an owned supergroup or channel chat\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Parameter starCount: The number of Telegram Stars to withdraw; must be between getOption(\"star_withdrawal_count_min\") and getOption(\"star_withdrawal_count_max\")\n    /// - Returns: A URL for Telegram Star withdrawal\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStarWithdrawalUrl(\n        ownerId: MessageSender?,\n        password: String?,\n        starCount: Int64?\n    ) async throws -> HttpUrl {\n        let query = GetStarWithdrawalUrl(\n            ownerId: ownerId,\n            password: password,\n            starCount: starCount\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a URL for a Telegram Ad platform account that can be used to set up advertisements for the chat paid in the owned Telegram Stars\n    /// - Parameter ownerId: Identifier of the owner of the Telegram Stars; can be identifier of an owned bot, or identifier of an owned channel chat\n    /// - Returns: A URL for a Telegram Ad platform account that can be used to set up advertisements for the chat paid in the owned Telegram Stars\n    public func getStarAdAccountUrl(\n        ownerId: MessageSender?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStarAdAccountUrl(\n            ownerId: ownerId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a URL for a Telegram Ad platform account that can be used to set up advertisements for the chat paid in the owned Telegram Stars\n    /// - Parameter ownerId: Identifier of the owner of the Telegram Stars; can be identifier of an owned bot, or identifier of an owned channel chat\n    /// - Returns: A URL for a Telegram Ad platform account that can be used to set up advertisements for the chat paid in the owned Telegram Stars\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStarAdAccountUrl(ownerId: MessageSender?) async throws -> HttpUrl {\n        let query = GetStarAdAccountUrl(\n            ownerId: ownerId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns detailed Toncoin revenue statistics of the current user\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Returns: Detailed Toncoin revenue statistics of the current user\n    public func getTonRevenueStatistics(\n        isDark: Bool?,\n        completion: @escaping (Result<TonRevenueStatistics, Swift.Error>) -> Void\n    ) throws {\n        let query = GetTonRevenueStatistics(\n            isDark: isDark\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns detailed Toncoin revenue statistics of the current user\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Returns: Detailed Toncoin revenue statistics of the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getTonRevenueStatistics(isDark: Bool?) async throws -> TonRevenueStatistics {\n        let query = GetTonRevenueStatistics(\n            isDark: isDark\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a URL for Toncoin withdrawal from the current user's account. The user must have at least 10 toncoins to withdraw and can withdraw up to 100000 Toncoins in one transaction\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Returns: A URL for Toncoin withdrawal from the current user's account\n    public func getTonWithdrawalUrl(\n        password: String?,\n        completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void\n    ) throws {\n        let query = GetTonWithdrawalUrl(\n            password: password\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a URL for Toncoin withdrawal from the current user's account. The user must have at least 10 toncoins to withdraw and can withdraw up to 100000 Toncoins in one transaction\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Returns: A URL for Toncoin withdrawal from the current user's account\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getTonWithdrawalUrl(password: String?) async throws -> HttpUrl {\n        let query = GetTonWithdrawalUrl(\n            password: password\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns detailed statistics about a chat. Currently, this method can be used only for supergroups and channels. Can be used only if supergroupFullInfo.can_get_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Returns: Detailed statistics about a chat\n    public func getChatStatistics(\n        chatId: Int64?,\n        isDark: Bool?,\n        completion: @escaping (Result<ChatStatistics, Swift.Error>) -> Void\n    ) throws {\n        let query = GetChatStatistics(\n            chatId: chatId,\n            isDark: isDark\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns detailed statistics about a chat. Currently, this method can be used only for supergroups and channels. Can be used only if supergroupFullInfo.can_get_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Returns: Detailed statistics about a chat\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getChatStatistics(\n        chatId: Int64?,\n        isDark: Bool?\n    ) async throws -> ChatStatistics {\n        let query = GetChatStatistics(\n            chatId: chatId,\n            isDark: isDark\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns detailed statistics about a message. Can be used only if messageProperties.can_get_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Parameter messageId: Message identifier\n    /// - Returns: Detailed statistics about a message\n    public func getMessageStatistics(\n        chatId: Int64?,\n        isDark: Bool?,\n        messageId: Int64?,\n        completion: @escaping (Result<MessageStatistics, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessageStatistics(\n            chatId: chatId,\n            isDark: isDark,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns detailed statistics about a message. Can be used only if messageProperties.can_get_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Parameter messageId: Message identifier\n    /// - Returns: Detailed statistics about a message\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMessageStatistics(\n        chatId: Int64?,\n        isDark: Bool?,\n        messageId: Int64?\n    ) async throws -> MessageStatistics {\n        let query = GetMessageStatistics(\n            chatId: chatId,\n            isDark: isDark,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns forwarded copies of a channel message to different public channels and public reposts as a story. Can be used only if messageProperties.can_get_statistics == true. For optimal performance, the number of returned messages and stories is chosen by TDLib\n    /// - Parameter chatId: Chat identifier of the message\n    /// - Parameter limit: The maximum number of messages and stories to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter messageId: Message identifier\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: Forwarded copies of a channel message to different public channels and public reposts as a story. For optimal performance, the number of returned messages and stories is chosen by TDLib\n    public func getMessagePublicForwards(\n        chatId: Int64?,\n        limit: Int?,\n        messageId: Int64?,\n        offset: String?,\n        completion: @escaping (Result<PublicForwards, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMessagePublicForwards(\n            chatId: chatId,\n            limit: limit,\n            messageId: messageId,\n            offset: offset\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns forwarded copies of a channel message to different public channels and public reposts as a story. Can be used only if messageProperties.can_get_statistics == true. For optimal performance, the number of returned messages and stories is chosen by TDLib\n    /// - Parameter chatId: Chat identifier of the message\n    /// - Parameter limit: The maximum number of messages and stories to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter messageId: Message identifier\n    /// - Parameter offset: Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: Forwarded copies of a channel message to different public channels and public reposts as a story. For optimal performance, the number of returned messages and stories is chosen by TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMessagePublicForwards(\n        chatId: Int64?,\n        limit: Int?,\n        messageId: Int64?,\n        offset: String?\n    ) async throws -> PublicForwards {\n        let query = GetMessagePublicForwards(\n            chatId: chatId,\n            limit: limit,\n            messageId: messageId,\n            offset: offset\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns detailed statistics about a story. Can be used only if story.can_get_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Parameter storyId: Story identifier\n    /// - Returns: Detailed statistics about a story\n    public func getStoryStatistics(\n        chatId: Int64?,\n        isDark: Bool?,\n        storyId: Int?,\n        completion: @escaping (Result<StoryStatistics, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStoryStatistics(\n            chatId: chatId,\n            isDark: isDark,\n            storyId: storyId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns detailed statistics about a story. Can be used only if story.can_get_statistics == true\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter isDark: Pass true if a dark theme is used by the application\n    /// - Parameter storyId: Story identifier\n    /// - Returns: Detailed statistics about a story\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStoryStatistics(\n        chatId: Int64?,\n        isDark: Bool?,\n        storyId: Int?\n    ) async throws -> StoryStatistics {\n        let query = GetStoryStatistics(\n            chatId: chatId,\n            isDark: isDark,\n            storyId: storyId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Loads an asynchronous or a zoomed in statistical graph\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter token: The token for graph loading\n    /// - Parameter x: X-value for zoomed in graph or 0 otherwise\n    public func getStatisticalGraph(\n        chatId: Int64?,\n        token: String?,\n        x: Int64?,\n        completion: @escaping (Result<StatisticalGraph, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStatisticalGraph(\n            chatId: chatId,\n            token: token,\n            x: x\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Loads an asynchronous or a zoomed in statistical graph\n    /// - Parameter chatId: Chat identifier\n    /// - Parameter token: The token for graph loading\n    /// - Parameter x: X-value for zoomed in graph or 0 otherwise\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStatisticalGraph(\n        chatId: Int64?,\n        token: String?,\n        x: Int64?\n    ) async throws -> StatisticalGraph {\n        let query = GetStatisticalGraph(\n            chatId: chatId,\n            token: token,\n            x: x\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns storage usage statistics. Can be called before authorization\n    /// - Parameter chatLimit: The maximum number of chats with the largest storage usage for which separate statistics need to be returned. All other chats will be grouped in entries with chat_id == 0. If the chat info database is not used, the chat_limit is ignored and is always set to 0\n    /// - Returns: Storage usage statistics\n    public func getStorageStatistics(\n        chatLimit: Int?,\n        completion: @escaping (Result<StorageStatistics, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStorageStatistics(\n            chatLimit: chatLimit\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns storage usage statistics. Can be called before authorization\n    /// - Parameter chatLimit: The maximum number of chats with the largest storage usage for which separate statistics need to be returned. All other chats will be grouped in entries with chat_id == 0. If the chat info database is not used, the chat_limit is ignored and is always set to 0\n    /// - Returns: Storage usage statistics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStorageStatistics(chatLimit: Int?) async throws -> StorageStatistics {\n        let query = GetStorageStatistics(\n            chatLimit: chatLimit\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Quickly returns approximate storage usage statistics. Can be called before authorization\n    /// - Returns: Quickly returns approximate storage usage statistics\n    public func getStorageStatisticsFast(completion: @escaping (Result<StorageStatisticsFast, Swift.Error>) -> Void) throws {\n        let query = GetStorageStatisticsFast()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Quickly returns approximate storage usage statistics. Can be called before authorization\n    /// - Returns: Quickly returns approximate storage usage statistics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStorageStatisticsFast() async throws -> StorageStatisticsFast {\n        let query = GetStorageStatisticsFast()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns database statistics\n    /// - Returns: Database statistics\n    public func getDatabaseStatistics(completion: @escaping (Result<DatabaseStatistics, Swift.Error>) -> Void) throws {\n        let query = GetDatabaseStatistics()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns database statistics\n    /// - Returns: Database statistics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getDatabaseStatistics() async throws -> DatabaseStatistics {\n        let query = GetDatabaseStatistics()\n        return try await self.execute(query: query)\n    }\n\n    /// Optimizes storage usage, i.e. deletes some files and returns new storage usage statistics. Secret thumbnails can't be deleted\n    /// - Parameter chatIds: If non-empty, only files from the given chats are considered. Use 0 as chat identifier to delete files not belonging to any chat (e.g., profile photos)\n    /// - Parameter chatLimit: Same as in getStorageStatistics. Affects only returned statistics\n    /// - Parameter count: Limit on the total number of files after deletion. Pass -1 to use the default limit\n    /// - Parameter excludeChatIds: If non-empty, files from the given chats are excluded. Use 0 as chat identifier to exclude all files not belonging to any chat (e.g., profile photos)\n    /// - Parameter fileTypes: If non-empty, only files with the given types are considered. By default, all types except thumbnails, profile photos, stickers and wallpapers are deleted\n    /// - Parameter immunityDelay: The amount of time after the creation of a file during which it can't be deleted, in seconds. Pass -1 to use the default value\n    /// - Parameter returnDeletedFileStatistics: Pass true if statistics about the files that were deleted must be returned instead of the whole storage usage statistics. Affects only returned statistics\n    /// - Parameter size: Limit on the total size of files after deletion, in bytes. Pass -1 to use the default limit\n    /// - Parameter ttl: Limit on the time that has passed since the last time a file was accessed (or creation time for some filesystems). Pass -1 to use the default limit\n    /// - Returns: Optimizes storage usage, i.e. deletes some files and returns new storage usage statistics\n    public func optimizeStorage(\n        chatIds: [Int64]?,\n        chatLimit: Int?,\n        count: Int?,\n        excludeChatIds: [Int64]?,\n        fileTypes: [FileType]?,\n        immunityDelay: Int?,\n        returnDeletedFileStatistics: Bool?,\n        size: Int64?,\n        ttl: Int?,\n        completion: @escaping (Result<StorageStatistics, Swift.Error>) -> Void\n    ) throws {\n        let query = OptimizeStorage(\n            chatIds: chatIds,\n            chatLimit: chatLimit,\n            count: count,\n            excludeChatIds: excludeChatIds,\n            fileTypes: fileTypes,\n            immunityDelay: immunityDelay,\n            returnDeletedFileStatistics: returnDeletedFileStatistics,\n            size: size,\n            ttl: ttl\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Optimizes storage usage, i.e. deletes some files and returns new storage usage statistics. Secret thumbnails can't be deleted\n    /// - Parameter chatIds: If non-empty, only files from the given chats are considered. Use 0 as chat identifier to delete files not belonging to any chat (e.g., profile photos)\n    /// - Parameter chatLimit: Same as in getStorageStatistics. Affects only returned statistics\n    /// - Parameter count: Limit on the total number of files after deletion. Pass -1 to use the default limit\n    /// - Parameter excludeChatIds: If non-empty, files from the given chats are excluded. Use 0 as chat identifier to exclude all files not belonging to any chat (e.g., profile photos)\n    /// - Parameter fileTypes: If non-empty, only files with the given types are considered. By default, all types except thumbnails, profile photos, stickers and wallpapers are deleted\n    /// - Parameter immunityDelay: The amount of time after the creation of a file during which it can't be deleted, in seconds. Pass -1 to use the default value\n    /// - Parameter returnDeletedFileStatistics: Pass true if statistics about the files that were deleted must be returned instead of the whole storage usage statistics. Affects only returned statistics\n    /// - Parameter size: Limit on the total size of files after deletion, in bytes. Pass -1 to use the default limit\n    /// - Parameter ttl: Limit on the time that has passed since the last time a file was accessed (or creation time for some filesystems). Pass -1 to use the default limit\n    /// - Returns: Optimizes storage usage, i.e. deletes some files and returns new storage usage statistics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func optimizeStorage(\n        chatIds: [Int64]?,\n        chatLimit: Int?,\n        count: Int?,\n        excludeChatIds: [Int64]?,\n        fileTypes: [FileType]?,\n        immunityDelay: Int?,\n        returnDeletedFileStatistics: Bool?,\n        size: Int64?,\n        ttl: Int?\n    ) async throws -> StorageStatistics {\n        let query = OptimizeStorage(\n            chatIds: chatIds,\n            chatLimit: chatLimit,\n            count: count,\n            excludeChatIds: excludeChatIds,\n            fileTypes: fileTypes,\n            immunityDelay: immunityDelay,\n            returnDeletedFileStatistics: returnDeletedFileStatistics,\n            size: size,\n            ttl: ttl\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets the current network type. Can be called before authorization. Calling this method forces all network connections to reopen, mitigating the delay in switching between different networks, so it must be called whenever the network is changed, even if the network type remains the same. Network type is used to check whether the library can use the network at all and also for collecting detailed network data usage statistics\n    /// - Parameter type: The new network type; pass null to set network type to networkTypeOther\n    public func setNetworkType(\n        type: NetworkType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetNetworkType(\n            type: type\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets the current network type. Can be called before authorization. Calling this method forces all network connections to reopen, mitigating the delay in switching between different networks, so it must be called whenever the network is changed, even if the network type remains the same. Network type is used to check whether the library can use the network at all and also for collecting detailed network data usage statistics\n    /// - Parameter type: The new network type; pass null to set network type to networkTypeOther\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setNetworkType(type: NetworkType?) async throws -> Ok {\n        let query = SetNetworkType(\n            type: type\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns network data usage statistics. Can be called before authorization\n    /// - Parameter onlyCurrent: Pass true to get statistics only for the current library launch\n    /// - Returns: Network data usage statistics\n    public func getNetworkStatistics(\n        onlyCurrent: Bool?,\n        completion: @escaping (Result<NetworkStatistics, Swift.Error>) -> Void\n    ) throws {\n        let query = GetNetworkStatistics(\n            onlyCurrent: onlyCurrent\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns network data usage statistics. Can be called before authorization\n    /// - Parameter onlyCurrent: Pass true to get statistics only for the current library launch\n    /// - Returns: Network data usage statistics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getNetworkStatistics(onlyCurrent: Bool?) async throws -> NetworkStatistics {\n        let query = GetNetworkStatistics(\n            onlyCurrent: onlyCurrent\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds the specified data to data usage statistics. Can be called before authorization\n    /// - Parameter entry: The network statistics entry with the data to be added to statistics\n    public func addNetworkStatistics(\n        entry: NetworkStatisticsEntry?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddNetworkStatistics(\n            entry: entry\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds the specified data to data usage statistics. Can be called before authorization\n    /// - Parameter entry: The network statistics entry with the data to be added to statistics\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func addNetworkStatistics(entry: NetworkStatisticsEntry?) async throws -> Ok {\n        let query = AddNetworkStatistics(\n            entry: entry\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Resets all network data usage statistics to zero. Can be called before authorization\n    public func resetNetworkStatistics(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ResetNetworkStatistics()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Resets all network data usage statistics to zero. Can be called before authorization\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func resetNetworkStatistics() async throws -> Ok {\n        let query = ResetNetworkStatistics()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns auto-download settings presets for the current user\n    /// - Returns: Auto-download settings presets for the current user\n    public func getAutoDownloadSettingsPresets(completion: @escaping (Result<AutoDownloadSettingsPresets, Swift.Error>) -> Void) throws {\n        let query = GetAutoDownloadSettingsPresets()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns auto-download settings presets for the current user\n    /// - Returns: Auto-download settings presets for the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getAutoDownloadSettingsPresets() async throws -> AutoDownloadSettingsPresets {\n        let query = GetAutoDownloadSettingsPresets()\n        return try await self.execute(query: query)\n    }\n\n    /// Sets auto-download settings\n    /// - Parameter settings: New user auto-download settings\n    /// - Parameter type: Type of the network for which the new settings are relevant\n    public func setAutoDownloadSettings(\n        settings: AutoDownloadSettings?,\n        type: NetworkType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetAutoDownloadSettings(\n            settings: settings,\n            type: type\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets auto-download settings\n    /// - Parameter settings: New user auto-download settings\n    /// - Parameter type: Type of the network for which the new settings are relevant\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setAutoDownloadSettings(\n        settings: AutoDownloadSettings?,\n        type: NetworkType?\n    ) async throws -> Ok {\n        let query = SetAutoDownloadSettings(\n            settings: settings,\n            type: type\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns autosave settings for the current user\n    /// - Returns: Autosave settings for the current user\n    public func getAutosaveSettings(completion: @escaping (Result<AutosaveSettings, Swift.Error>) -> Void) throws {\n        let query = GetAutosaveSettings()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns autosave settings for the current user\n    /// - Returns: Autosave settings for the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getAutosaveSettings() async throws -> AutosaveSettings {\n        let query = GetAutosaveSettings()\n        return try await self.execute(query: query)\n    }\n\n    /// Sets autosave settings for the given scope. The method is guaranteed to work only after at least one call to getAutosaveSettings\n    /// - Parameter scope: Autosave settings scope\n    /// - Parameter settings: New autosave settings for the scope; pass null to set autosave settings to default\n    public func setAutosaveSettings(\n        scope: AutosaveSettingsScope?,\n        settings: ScopeAutosaveSettings?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetAutosaveSettings(\n            scope: scope,\n            settings: settings\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets autosave settings for the given scope. The method is guaranteed to work only after at least one call to getAutosaveSettings\n    /// - Parameter scope: Autosave settings scope\n    /// - Parameter settings: New autosave settings for the scope; pass null to set autosave settings to default\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setAutosaveSettings(\n        scope: AutosaveSettingsScope?,\n        settings: ScopeAutosaveSettings?\n    ) async throws -> Ok {\n        let query = SetAutosaveSettings(\n            scope: scope,\n            settings: settings\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Clears the list of all autosave settings exceptions. The method is guaranteed to work only after at least one call to getAutosaveSettings\n    public func clearAutosaveSettingsExceptions(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ClearAutosaveSettingsExceptions()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Clears the list of all autosave settings exceptions. The method is guaranteed to work only after at least one call to getAutosaveSettings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func clearAutosaveSettingsExceptions() async throws -> Ok {\n        let query = ClearAutosaveSettingsExceptions()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a bank card\n    /// - Parameter bankCardNumber: The bank card number\n    /// - Returns: Information about a bank card\n    public func getBankCardInfo(\n        bankCardNumber: String?,\n        completion: @escaping (Result<BankCardInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBankCardInfo(\n            bankCardNumber: bankCardNumber\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a bank card\n    /// - Parameter bankCardNumber: The bank card number\n    /// - Returns: Information about a bank card\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getBankCardInfo(bankCardNumber: String?) async throws -> BankCardInfo {\n        let query = GetBankCardInfo(\n            bankCardNumber: bankCardNumber\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns one of the available Telegram Passport elements\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Parameter type: Telegram Passport element type\n    /// - Returns: One of the available Telegram Passport elements\n    public func getPassportElement(\n        password: String?,\n        type: PassportElementType?,\n        completion: @escaping (Result<PassportElement, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPassportElement(\n            password: password,\n            type: type\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns one of the available Telegram Passport elements\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Parameter type: Telegram Passport element type\n    /// - Returns: One of the available Telegram Passport elements\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPassportElement(\n        password: String?,\n        type: PassportElementType?\n    ) async throws -> PassportElement {\n        let query = GetPassportElement(\n            password: password,\n            type: type\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns all available Telegram Passport elements\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Returns: All available Telegram Passport elements\n    public func getAllPassportElements(\n        password: String?,\n        completion: @escaping (Result<PassportElements, Swift.Error>) -> Void\n    ) throws {\n        let query = GetAllPassportElements(\n            password: password\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns all available Telegram Passport elements\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Returns: All available Telegram Passport elements\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getAllPassportElements(password: String?) async throws -> PassportElements {\n        let query = GetAllPassportElements(\n            password: password\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds an element to the user's Telegram Passport. May return an error with a message \"PHONE_VERIFICATION_NEEDED\" or \"EMAIL_VERIFICATION_NEEDED\" if the chosen phone number or the chosen email address must be verified first\n    /// - Parameter element: Input Telegram Passport element\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Returns: May return an error with a message \"PHONE_VERIFICATION_NEEDED\" or \"EMAIL_VERIFICATION_NEEDED\" if the chosen phone number or the chosen email address must be verified first\n    public func setPassportElement(\n        element: InputPassportElement?,\n        password: String?,\n        completion: @escaping (Result<PassportElement, Swift.Error>) -> Void\n    ) throws {\n        let query = SetPassportElement(\n            element: element,\n            password: password\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds an element to the user's Telegram Passport. May return an error with a message \"PHONE_VERIFICATION_NEEDED\" or \"EMAIL_VERIFICATION_NEEDED\" if the chosen phone number or the chosen email address must be verified first\n    /// - Parameter element: Input Telegram Passport element\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Returns: May return an error with a message \"PHONE_VERIFICATION_NEEDED\" or \"EMAIL_VERIFICATION_NEEDED\" if the chosen phone number or the chosen email address must be verified first\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func setPassportElement(\n        element: InputPassportElement?,\n        password: String?\n    ) async throws -> PassportElement {\n        let query = SetPassportElement(\n            element: element,\n            password: password\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Deletes a Telegram Passport element\n    /// - Parameter type: Element type\n    public func deletePassportElement(\n        type: PassportElementType?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeletePassportElement(\n            type: type\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Deletes a Telegram Passport element\n    /// - Parameter type: Element type\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deletePassportElement(type: PassportElementType?) async throws -> Ok {\n        let query = DeletePassportElement(\n            type: type\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs the user who some of the elements in their Telegram Passport contain errors; for bots only. The user will not be able to resend the elements, until the errors are fixed\n    /// - Parameter errors: The errors\n    /// - Parameter userId: User identifier\n    public func setPassportElementErrors(\n        errors: [InputPassportElementError]?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetPassportElementErrors(\n            errors: errors,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs the user who some of the elements in their Telegram Passport contain errors; for bots only. The user will not be able to resend the elements, until the errors are fixed\n    /// - Parameter errors: The errors\n    /// - Parameter userId: User identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setPassportElementErrors(\n        errors: [InputPassportElementError]?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = SetPassportElementErrors(\n            errors: errors,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an IETF language tag of the language preferred in the country, which must be used to fill native fields in Telegram Passport personal details. Returns a 404 error if unknown\n    /// - Parameter countryCode: A two-letter ISO 3166-1 alpha-2 country code\n    /// - Returns: An IETF language tag of the language preferred in the country, which must be used to fill native fields in Telegram Passport personal details. Returns a 404 error if unknown\n    public func getPreferredCountryLanguage(\n        countryCode: String?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPreferredCountryLanguage(\n            countryCode: countryCode\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an IETF language tag of the language preferred in the country, which must be used to fill native fields in Telegram Passport personal details. Returns a 404 error if unknown\n    /// - Parameter countryCode: A two-letter ISO 3166-1 alpha-2 country code\n    /// - Returns: An IETF language tag of the language preferred in the country, which must be used to fill native fields in Telegram Passport personal details. Returns a 404 error if unknown\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPreferredCountryLanguage(countryCode: String?) async throws -> Text {\n        let query = GetPreferredCountryLanguage(\n            countryCode: countryCode\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends a code to verify an email address to be added to a user's Telegram Passport\n    /// - Parameter emailAddress: Email address\n    public func sendEmailAddressVerificationCode(\n        emailAddress: String?,\n        completion: @escaping (Result<EmailAddressAuthenticationCodeInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = SendEmailAddressVerificationCode(\n            emailAddress: emailAddress\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends a code to verify an email address to be added to a user's Telegram Passport\n    /// - Parameter emailAddress: Email address\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func sendEmailAddressVerificationCode(emailAddress: String?) async throws -> EmailAddressAuthenticationCodeInfo {\n        let query = SendEmailAddressVerificationCode(\n            emailAddress: emailAddress\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Resends the code to verify an email address to be added to a user's Telegram Passport\n    public func resendEmailAddressVerificationCode(completion: @escaping (Result<EmailAddressAuthenticationCodeInfo, Swift.Error>) -> Void) throws {\n        let query = ResendEmailAddressVerificationCode()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Resends the code to verify an email address to be added to a user's Telegram Passport\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func resendEmailAddressVerificationCode() async throws -> EmailAddressAuthenticationCodeInfo {\n        let query = ResendEmailAddressVerificationCode()\n        return try await self.execute(query: query)\n    }\n\n    /// Checks the email address verification code for Telegram Passport\n    /// - Parameter code: Verification code to check\n    public func checkEmailAddressVerificationCode(\n        code: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckEmailAddressVerificationCode(\n            code: code\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks the email address verification code for Telegram Passport\n    /// - Parameter code: Verification code to check\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func checkEmailAddressVerificationCode(code: String?) async throws -> Ok {\n        let query = CheckEmailAddressVerificationCode(\n            code: code\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a Telegram Passport authorization form for sharing data with a service\n    /// - Parameter botUserId: User identifier of the service's bot\n    /// - Parameter nonce: Unique request identifier provided by the service\n    /// - Parameter publicKey: Service's public key\n    /// - Parameter scope: Telegram Passport element types requested by the service\n    /// - Returns: A Telegram Passport authorization form for sharing data with a service\n    public func getPassportAuthorizationForm(\n        botUserId: Int64?,\n        nonce: String?,\n        publicKey: String?,\n        scope: String?,\n        completion: @escaping (Result<PassportAuthorizationForm, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPassportAuthorizationForm(\n            botUserId: botUserId,\n            nonce: nonce,\n            publicKey: publicKey,\n            scope: scope\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a Telegram Passport authorization form for sharing data with a service\n    /// - Parameter botUserId: User identifier of the service's bot\n    /// - Parameter nonce: Unique request identifier provided by the service\n    /// - Parameter publicKey: Service's public key\n    /// - Parameter scope: Telegram Passport element types requested by the service\n    /// - Returns: A Telegram Passport authorization form for sharing data with a service\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPassportAuthorizationForm(\n        botUserId: Int64?,\n        nonce: String?,\n        publicKey: String?,\n        scope: String?\n    ) async throws -> PassportAuthorizationForm {\n        let query = GetPassportAuthorizationForm(\n            botUserId: botUserId,\n            nonce: nonce,\n            publicKey: publicKey,\n            scope: scope\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns already available Telegram Passport elements suitable for completing a Telegram Passport authorization form. Result can be received only once for each authorization form\n    /// - Parameter authorizationFormId: Authorization form identifier\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Returns: Already available Telegram Passport elements suitable for completing a Telegram Passport authorization form\n    public func getPassportAuthorizationFormAvailableElements(\n        authorizationFormId: Int?,\n        password: String?,\n        completion: @escaping (Result<PassportElementsWithErrors, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPassportAuthorizationFormAvailableElements(\n            authorizationFormId: authorizationFormId,\n            password: password\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns already available Telegram Passport elements suitable for completing a Telegram Passport authorization form. Result can be received only once for each authorization form\n    /// - Parameter authorizationFormId: Authorization form identifier\n    /// - Parameter password: The 2-step verification password of the current user\n    /// - Returns: Already available Telegram Passport elements suitable for completing a Telegram Passport authorization form\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPassportAuthorizationFormAvailableElements(\n        authorizationFormId: Int?,\n        password: String?\n    ) async throws -> PassportElementsWithErrors {\n        let query = GetPassportAuthorizationFormAvailableElements(\n            authorizationFormId: authorizationFormId,\n            password: password\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends a Telegram Passport authorization form, effectively sharing data with the service. This method must be called after getPassportAuthorizationFormAvailableElements if some previously available elements are going to be reused\n    /// - Parameter authorizationFormId: Authorization form identifier\n    /// - Parameter types: Types of Telegram Passport elements chosen by user to complete the authorization form\n    public func sendPassportAuthorizationForm(\n        authorizationFormId: Int?,\n        types: [PassportElementType]?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SendPassportAuthorizationForm(\n            authorizationFormId: authorizationFormId,\n            types: types\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends a Telegram Passport authorization form, effectively sharing data with the service. This method must be called after getPassportAuthorizationFormAvailableElements if some previously available elements are going to be reused\n    /// - Parameter authorizationFormId: Authorization form identifier\n    /// - Parameter types: Types of Telegram Passport elements chosen by user to complete the authorization form\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func sendPassportAuthorizationForm(\n        authorizationFormId: Int?,\n        types: [PassportElementType]?\n    ) async throws -> Ok {\n        let query = SendPassportAuthorizationForm(\n            authorizationFormId: authorizationFormId,\n            types: types\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs the server about the number of pending bot updates if they haven't been processed for a long time; for bots only\n    /// - Parameter errorMessage: The last error message\n    /// - Parameter pendingUpdateCount: The number of pending updates\n    public func setBotUpdatesStatus(\n        errorMessage: String?,\n        pendingUpdateCount: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetBotUpdatesStatus(\n            errorMessage: errorMessage,\n            pendingUpdateCount: pendingUpdateCount\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs the server about the number of pending bot updates if they haven't been processed for a long time; for bots only\n    /// - Parameter errorMessage: The last error message\n    /// - Parameter pendingUpdateCount: The number of pending updates\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setBotUpdatesStatus(\n        errorMessage: String?,\n        pendingUpdateCount: Int?\n    ) async throws -> Ok {\n        let query = SetBotUpdatesStatus(\n            errorMessage: errorMessage,\n            pendingUpdateCount: pendingUpdateCount\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Uploads a file with a sticker; returns the uploaded file\n    /// - Parameter sticker: File file to upload; must fit in a 512x512 square. For WEBP stickers the file must be in WEBP or PNG format, which will be converted to WEBP server-side. See https://core.telegram.org/animated_stickers#technical-requirements for technical requirements\n    /// - Parameter stickerFormat: Sticker format\n    /// - Parameter userId: Sticker file owner; ignored for regular users\n    /// - Returns: The uploaded file\n    public func uploadStickerFile(\n        sticker: InputFile?,\n        stickerFormat: StickerFormat?,\n        userId: Int64?,\n        completion: @escaping (Result<File, Swift.Error>) -> Void\n    ) throws {\n        let query = UploadStickerFile(\n            sticker: sticker,\n            stickerFormat: stickerFormat,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Uploads a file with a sticker; returns the uploaded file\n    /// - Parameter sticker: File file to upload; must fit in a 512x512 square. For WEBP stickers the file must be in WEBP or PNG format, which will be converted to WEBP server-side. See https://core.telegram.org/animated_stickers#technical-requirements for technical requirements\n    /// - Parameter stickerFormat: Sticker format\n    /// - Parameter userId: Sticker file owner; ignored for regular users\n    /// - Returns: The uploaded file\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func uploadStickerFile(\n        sticker: InputFile?,\n        stickerFormat: StickerFormat?,\n        userId: Int64?\n    ) async throws -> File {\n        let query = UploadStickerFile(\n            sticker: sticker,\n            stickerFormat: stickerFormat,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns a suggested name for a new sticker set with a given title\n    /// - Parameter title: Sticker set title; 1-64 characters\n    /// - Returns: A suggested name for a new sticker set with a given title\n    public func getSuggestedStickerSetName(\n        title: String?,\n        completion: @escaping (Result<Text, Swift.Error>) -> Void\n    ) throws {\n        let query = GetSuggestedStickerSetName(\n            title: title\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns a suggested name for a new sticker set with a given title\n    /// - Parameter title: Sticker set title; 1-64 characters\n    /// - Returns: A suggested name for a new sticker set with a given title\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getSuggestedStickerSetName(title: String?) async throws -> Text {\n        let query = GetSuggestedStickerSetName(\n            title: title\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks whether a name can be used for a new sticker set\n    /// - Parameter name: Name to be checked\n    public func checkStickerSetName(\n        name: String?,\n        completion: @escaping (Result<CheckStickerSetNameResult, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckStickerSetName(\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks whether a name can be used for a new sticker set\n    /// - Parameter name: Name to be checked\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func checkStickerSetName(name: String?) async throws -> CheckStickerSetNameResult {\n        let query = CheckStickerSetName(\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Creates a new sticker set. Returns the newly created sticker set\n    /// - Parameter name: Sticker set name. Can contain only English letters, digits and underscores. Must end with *\"_by_<bot username>\"* (*<bot_username>* is case insensitive) for bots; 0-64 characters. If empty, then the name returned by getSuggestedStickerSetName will be used automatically\n    /// - Parameter needsRepainting: Pass true if stickers in the sticker set must be repainted; for custom emoji sticker sets only\n    /// - Parameter source: Source of the sticker set; may be empty if unknown\n    /// - Parameter stickerType: Type of the stickers in the set\n    /// - Parameter stickers: List of stickers to be added to the set; 1-200 stickers for custom emoji sticker sets, and 1-120 stickers otherwise. For TGS stickers, uploadStickerFile must be used before the sticker is shown\n    /// - Parameter title: Sticker set title; 1-64 characters\n    /// - Parameter userId: Sticker set owner; ignored for regular users\n    /// - Returns: The newly created sticker set\n    public func createNewStickerSet(\n        name: String?,\n        needsRepainting: Bool?,\n        source: String?,\n        stickerType: StickerType?,\n        stickers: [InputSticker]?,\n        title: String?,\n        userId: Int64?,\n        completion: @escaping (Result<StickerSet, Swift.Error>) -> Void\n    ) throws {\n        let query = CreateNewStickerSet(\n            name: name,\n            needsRepainting: needsRepainting,\n            source: source,\n            stickerType: stickerType,\n            stickers: stickers,\n            title: title,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Creates a new sticker set. Returns the newly created sticker set\n    /// - Parameter name: Sticker set name. Can contain only English letters, digits and underscores. Must end with *\"_by_<bot username>\"* (*<bot_username>* is case insensitive) for bots; 0-64 characters. If empty, then the name returned by getSuggestedStickerSetName will be used automatically\n    /// - Parameter needsRepainting: Pass true if stickers in the sticker set must be repainted; for custom emoji sticker sets only\n    /// - Parameter source: Source of the sticker set; may be empty if unknown\n    /// - Parameter stickerType: Type of the stickers in the set\n    /// - Parameter stickers: List of stickers to be added to the set; 1-200 stickers for custom emoji sticker sets, and 1-120 stickers otherwise. For TGS stickers, uploadStickerFile must be used before the sticker is shown\n    /// - Parameter title: Sticker set title; 1-64 characters\n    /// - Parameter userId: Sticker set owner; ignored for regular users\n    /// - Returns: The newly created sticker set\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func createNewStickerSet(\n        name: String?,\n        needsRepainting: Bool?,\n        source: String?,\n        stickerType: StickerType?,\n        stickers: [InputSticker]?,\n        title: String?,\n        userId: Int64?\n    ) async throws -> StickerSet {\n        let query = CreateNewStickerSet(\n            name: name,\n            needsRepainting: needsRepainting,\n            source: source,\n            stickerType: stickerType,\n            stickers: stickers,\n            title: title,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds a new sticker to a set\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user, and contain less than 200 stickers for custom emoji sticker sets and less than 120 otherwise\n    /// - Parameter sticker: Sticker to add to the set\n    /// - Parameter userId: Sticker set owner; ignored for regular users\n    public func addStickerToSet(\n        name: String?,\n        sticker: InputSticker?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddStickerToSet(\n            name: name,\n            sticker: sticker,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds a new sticker to a set\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user, and contain less than 200 stickers for custom emoji sticker sets and less than 120 otherwise\n    /// - Parameter sticker: Sticker to add to the set\n    /// - Parameter userId: Sticker set owner; ignored for regular users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func addStickerToSet(\n        name: String?,\n        sticker: InputSticker?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = AddStickerToSet(\n            name: name,\n            sticker: sticker,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Replaces existing sticker in a set. The function is equivalent to removeStickerFromSet, then addStickerToSet, then setStickerPositionInSet\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user\n    /// - Parameter newSticker: Sticker to add to the set\n    /// - Parameter oldSticker: Sticker to remove from the set\n    /// - Parameter userId: Sticker set owner; ignored for regular users\n    public func replaceStickerInSet(\n        name: String?,\n        newSticker: InputSticker?,\n        oldSticker: InputFile?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReplaceStickerInSet(\n            name: name,\n            newSticker: newSticker,\n            oldSticker: oldSticker,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Replaces existing sticker in a set. The function is equivalent to removeStickerFromSet, then addStickerToSet, then setStickerPositionInSet\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user\n    /// - Parameter newSticker: Sticker to add to the set\n    /// - Parameter oldSticker: Sticker to remove from the set\n    /// - Parameter userId: Sticker set owner; ignored for regular users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func replaceStickerInSet(\n        name: String?,\n        newSticker: InputSticker?,\n        oldSticker: InputFile?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = ReplaceStickerInSet(\n            name: name,\n            newSticker: newSticker,\n            oldSticker: oldSticker,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets a sticker set thumbnail\n    /// - Parameter format: Format of the thumbnail; pass null if thumbnail is removed\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user\n    /// - Parameter thumbnail: Thumbnail to set; pass null to remove the sticker set thumbnail\n    /// - Parameter userId: Sticker set owner; ignored for regular users\n    public func setStickerSetThumbnail(\n        format: StickerFormat?,\n        name: String?,\n        thumbnail: InputFile?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetStickerSetThumbnail(\n            format: format,\n            name: name,\n            thumbnail: thumbnail,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets a sticker set thumbnail\n    /// - Parameter format: Format of the thumbnail; pass null if thumbnail is removed\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user\n    /// - Parameter thumbnail: Thumbnail to set; pass null to remove the sticker set thumbnail\n    /// - Parameter userId: Sticker set owner; ignored for regular users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setStickerSetThumbnail(\n        format: StickerFormat?,\n        name: String?,\n        thumbnail: InputFile?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = SetStickerSetThumbnail(\n            format: format,\n            name: name,\n            thumbnail: thumbnail,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets a custom emoji sticker set thumbnail\n    /// - Parameter customEmojiId: Identifier of the custom emoji from the sticker set, which will be set as sticker set thumbnail; pass 0 to remove the sticker set thumbnail\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user\n    public func setCustomEmojiStickerSetThumbnail(\n        customEmojiId: TdInt64?,\n        name: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetCustomEmojiStickerSetThumbnail(\n            customEmojiId: customEmojiId,\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets a custom emoji sticker set thumbnail\n    /// - Parameter customEmojiId: Identifier of the custom emoji from the sticker set, which will be set as sticker set thumbnail; pass 0 to remove the sticker set thumbnail\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setCustomEmojiStickerSetThumbnail(\n        customEmojiId: TdInt64?,\n        name: String?\n    ) async throws -> Ok {\n        let query = SetCustomEmojiStickerSetThumbnail(\n            customEmojiId: customEmojiId,\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets a sticker set title\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user\n    /// - Parameter title: New sticker set title\n    public func setStickerSetTitle(\n        name: String?,\n        title: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetStickerSetTitle(\n            name: name,\n            title: title\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets a sticker set title\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user\n    /// - Parameter title: New sticker set title\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setStickerSetTitle(\n        name: String?,\n        title: String?\n    ) async throws -> Ok {\n        let query = SetStickerSetTitle(\n            name: name,\n            title: title\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Completely deletes a sticker set\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user\n    public func deleteStickerSet(\n        name: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = DeleteStickerSet(\n            name: name\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Completely deletes a sticker set\n    /// - Parameter name: Sticker set name. The sticker set must be owned by the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func deleteStickerSet(name: String?) async throws -> Ok {\n        let query = DeleteStickerSet(\n            name: name\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the position of a sticker in the set to which it belongs. The sticker set must be owned by the current user\n    /// - Parameter position: New position of the sticker in the set, 0-based\n    /// - Parameter sticker: Sticker\n    public func setStickerPositionInSet(\n        position: Int?,\n        sticker: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetStickerPositionInSet(\n            position: position,\n            sticker: sticker\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the position of a sticker in the set to which it belongs. The sticker set must be owned by the current user\n    /// - Parameter position: New position of the sticker in the set, 0-based\n    /// - Parameter sticker: Sticker\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setStickerPositionInSet(\n        position: Int?,\n        sticker: InputFile?\n    ) async throws -> Ok {\n        let query = SetStickerPositionInSet(\n            position: position,\n            sticker: sticker\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Removes a sticker from the set to which it belongs. The sticker set must be owned by the current user\n    /// - Parameter sticker: Sticker to remove from the set\n    public func removeStickerFromSet(\n        sticker: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveStickerFromSet(\n            sticker: sticker\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes a sticker from the set to which it belongs. The sticker set must be owned by the current user\n    /// - Parameter sticker: Sticker to remove from the set\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeStickerFromSet(sticker: InputFile?) async throws -> Ok {\n        let query = RemoveStickerFromSet(\n            sticker: sticker\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the list of emojis corresponding to a sticker. The sticker must belong to a regular or custom emoji sticker set that is owned by the current user\n    /// - Parameter emojis: New string with 1-20 emoji corresponding to the sticker\n    /// - Parameter sticker: Sticker\n    public func setStickerEmojis(\n        emojis: String?,\n        sticker: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetStickerEmojis(\n            emojis: emojis,\n            sticker: sticker\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the list of emojis corresponding to a sticker. The sticker must belong to a regular or custom emoji sticker set that is owned by the current user\n    /// - Parameter emojis: New string with 1-20 emoji corresponding to the sticker\n    /// - Parameter sticker: Sticker\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setStickerEmojis(\n        emojis: String?,\n        sticker: InputFile?\n    ) async throws -> Ok {\n        let query = SetStickerEmojis(\n            emojis: emojis,\n            sticker: sticker\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the list of keywords of a sticker. The sticker must belong to a regular or custom emoji sticker set that is owned by the current user\n    /// - Parameter keywords: List of up to 20 keywords with total length up to 64 characters, which can be used to find the sticker\n    /// - Parameter sticker: Sticker\n    public func setStickerKeywords(\n        keywords: [String]?,\n        sticker: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetStickerKeywords(\n            keywords: keywords,\n            sticker: sticker\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the list of keywords of a sticker. The sticker must belong to a regular or custom emoji sticker set that is owned by the current user\n    /// - Parameter keywords: List of up to 20 keywords with total length up to 64 characters, which can be used to find the sticker\n    /// - Parameter sticker: Sticker\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setStickerKeywords(\n        keywords: [String]?,\n        sticker: InputFile?\n    ) async throws -> Ok {\n        let query = SetStickerKeywords(\n            keywords: keywords,\n            sticker: sticker\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes the mask position of a mask sticker. The sticker must belong to a mask sticker set that is owned by the current user\n    /// - Parameter maskPosition: Position where the mask is placed; pass null to remove mask position\n    /// - Parameter sticker: Sticker\n    public func setStickerMaskPosition(\n        maskPosition: MaskPosition?,\n        sticker: InputFile?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetStickerMaskPosition(\n            maskPosition: maskPosition,\n            sticker: sticker\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes the mask position of a mask sticker. The sticker must belong to a mask sticker set that is owned by the current user\n    /// - Parameter maskPosition: Position where the mask is placed; pass null to remove mask position\n    /// - Parameter sticker: Sticker\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setStickerMaskPosition(\n        maskPosition: MaskPosition?,\n        sticker: InputFile?\n    ) async throws -> Ok {\n        let query = SetStickerMaskPosition(\n            maskPosition: maskPosition,\n            sticker: sticker\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns sticker sets owned by the current user\n    /// - Parameter limit: The maximum number of sticker sets to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offsetStickerSetId: Identifier of the sticker set from which to return owned sticker sets; use 0 to get results from the beginning\n    /// - Returns: Sticker sets owned by the current user\n    public func getOwnedStickerSets(\n        limit: Int?,\n        offsetStickerSetId: TdInt64?,\n        completion: @escaping (Result<StickerSets, Swift.Error>) -> Void\n    ) throws {\n        let query = GetOwnedStickerSets(\n            limit: limit,\n            offsetStickerSetId: offsetStickerSetId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns sticker sets owned by the current user\n    /// - Parameter limit: The maximum number of sticker sets to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    /// - Parameter offsetStickerSetId: Identifier of the sticker set from which to return owned sticker sets; use 0 to get results from the beginning\n    /// - Returns: Sticker sets owned by the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getOwnedStickerSets(\n        limit: Int?,\n        offsetStickerSetId: TdInt64?\n    ) async throws -> StickerSets {\n        let query = GetOwnedStickerSets(\n            limit: limit,\n            offsetStickerSetId: offsetStickerSetId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a file with a map thumbnail in PNG format. Only map thumbnail files with size less than 1MB can be downloaded\n    /// - Parameter chatId: Identifier of a chat in which the thumbnail will be shown. Use 0 if unknown\n    /// - Parameter height: Map height in pixels before applying scale; 16-1024\n    /// - Parameter location: Location of the map center\n    /// - Parameter scale: Map scale; 1-3\n    /// - Parameter width: Map width in pixels before applying scale; 16-1024\n    /// - Parameter zoom: Map zoom level; 13-20\n    /// - Returns: Information about a file with a map thumbnail in PNG format\n    public func getMapThumbnailFile(\n        chatId: Int64?,\n        height: Int?,\n        location: Location?,\n        scale: Int?,\n        width: Int?,\n        zoom: Int?,\n        completion: @escaping (Result<File, Swift.Error>) -> Void\n    ) throws {\n        let query = GetMapThumbnailFile(\n            chatId: chatId,\n            height: height,\n            location: location,\n            scale: scale,\n            width: width,\n            zoom: zoom\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a file with a map thumbnail in PNG format. Only map thumbnail files with size less than 1MB can be downloaded\n    /// - Parameter chatId: Identifier of a chat in which the thumbnail will be shown. Use 0 if unknown\n    /// - Parameter height: Map height in pixels before applying scale; 16-1024\n    /// - Parameter location: Location of the map center\n    /// - Parameter scale: Map scale; 1-3\n    /// - Parameter width: Map width in pixels before applying scale; 16-1024\n    /// - Parameter zoom: Map zoom level; 13-20\n    /// - Returns: Information about a file with a map thumbnail in PNG format\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getMapThumbnailFile(\n        chatId: Int64?,\n        height: Int?,\n        location: Location?,\n        scale: Int?,\n        width: Int?,\n        zoom: Int?\n    ) async throws -> File {\n        let query = GetMapThumbnailFile(\n            chatId: chatId,\n            height: height,\n            location: location,\n            scale: scale,\n            width: width,\n            zoom: zoom\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a limit, increased for Premium users. Returns a 404 error if the limit is unknown\n    /// - Parameter limitType: Type of the limit\n    /// - Returns: Information about a limit, increased for Premium users. Returns a 404 error if the limit is unknown\n    public func getPremiumLimit(\n        limitType: PremiumLimitType?,\n        completion: @escaping (Result<PremiumLimit, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPremiumLimit(\n            limitType: limitType\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a limit, increased for Premium users. Returns a 404 error if the limit is unknown\n    /// - Parameter limitType: Type of the limit\n    /// - Returns: Information about a limit, increased for Premium users. Returns a 404 error if the limit is unknown\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPremiumLimit(limitType: PremiumLimitType?) async throws -> PremiumLimit {\n        let query = GetPremiumLimit(\n            limitType: limitType\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about features, available to Premium users\n    /// - Parameter source: Source of the request; pass null if the method is called from some non-standard source\n    /// - Returns: Information about features, available to Premium users\n    public func getPremiumFeatures(\n        source: PremiumSource?,\n        completion: @escaping (Result<PremiumFeatures, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPremiumFeatures(\n            source: source\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about features, available to Premium users\n    /// - Parameter source: Source of the request; pass null if the method is called from some non-standard source\n    /// - Returns: Information about features, available to Premium users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPremiumFeatures(source: PremiumSource?) async throws -> PremiumFeatures {\n        let query = GetPremiumFeatures(\n            source: source\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns examples of premium stickers for demonstration purposes\n    /// - Returns: Examples of premium stickers for demonstration purposes\n    public func getPremiumStickerExamples(completion: @escaping (Result<Stickers, Swift.Error>) -> Void) throws {\n        let query = GetPremiumStickerExamples()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns examples of premium stickers for demonstration purposes\n    /// - Returns: Examples of premium stickers for demonstration purposes\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPremiumStickerExamples() async throws -> Stickers {\n        let query = GetPremiumStickerExamples()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the sticker to be used as representation of the Telegram Premium subscription\n    /// - Parameter monthCount: Number of months the Telegram Premium subscription will be active\n    /// - Returns: The sticker to be used as representation of the Telegram Premium subscription\n    public func getPremiumInfoSticker(\n        monthCount: Int?,\n        completion: @escaping (Result<Sticker, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPremiumInfoSticker(\n            monthCount: monthCount\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the sticker to be used as representation of the Telegram Premium subscription\n    /// - Parameter monthCount: Number of months the Telegram Premium subscription will be active\n    /// - Returns: The sticker to be used as representation of the Telegram Premium subscription\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPremiumInfoSticker(monthCount: Int?) async throws -> Sticker {\n        let query = GetPremiumInfoSticker(\n            monthCount: monthCount\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that the user viewed detailed information about a Premium feature on the Premium features screen\n    /// - Parameter feature: The viewed premium feature\n    public func viewPremiumFeature(\n        feature: PremiumFeature?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ViewPremiumFeature(\n            feature: feature\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that the user viewed detailed information about a Premium feature on the Premium features screen\n    /// - Parameter feature: The viewed premium feature\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func viewPremiumFeature(feature: PremiumFeature?) async throws -> Ok {\n        let query = ViewPremiumFeature(\n            feature: feature\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs TDLib that the user clicked Premium subscription button on the Premium features screen\n    public func clickPremiumSubscriptionButton(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = ClickPremiumSubscriptionButton()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs TDLib that the user clicked Premium subscription button on the Premium features screen\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func clickPremiumSubscriptionButton() async throws -> Ok {\n        let query = ClickPremiumSubscriptionButton()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns state of Telegram Premium subscription and promotion videos for Premium features\n    /// - Returns: State of Telegram Premium subscription and promotion videos for Premium features\n    public func getPremiumState(completion: @escaping (Result<PremiumState, Swift.Error>) -> Void) throws {\n        let query = GetPremiumState()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns state of Telegram Premium subscription and promotion videos for Premium features\n    /// - Returns: State of Telegram Premium subscription and promotion videos for Premium features\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPremiumState() async throws -> PremiumState {\n        let query = GetPremiumState()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns available options for gifting Telegram Premium to a user\n    /// - Returns: Available options for gifting Telegram Premium to a user\n    public func getPremiumGiftPaymentOptions(completion: @escaping (Result<PremiumGiftPaymentOptions, Swift.Error>) -> Void) throws {\n        let query = GetPremiumGiftPaymentOptions()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns available options for gifting Telegram Premium to a user\n    /// - Returns: Available options for gifting Telegram Premium to a user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPremiumGiftPaymentOptions() async throws -> PremiumGiftPaymentOptions {\n        let query = GetPremiumGiftPaymentOptions()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns available options for creating of Telegram Premium giveaway or manual distribution of Telegram Premium among chat members\n    /// - Parameter boostedChatId: Identifier of the supergroup or channel chat, which will be automatically boosted by receivers of the gift codes and which is administered by the user\n    /// - Returns: Available options for creating of Telegram Premium giveaway or manual distribution of Telegram Premium among chat members\n    public func getPremiumGiveawayPaymentOptions(\n        boostedChatId: Int64?,\n        completion: @escaping (Result<PremiumGiveawayPaymentOptions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPremiumGiveawayPaymentOptions(\n            boostedChatId: boostedChatId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns available options for creating of Telegram Premium giveaway or manual distribution of Telegram Premium among chat members\n    /// - Parameter boostedChatId: Identifier of the supergroup or channel chat, which will be automatically boosted by receivers of the gift codes and which is administered by the user\n    /// - Returns: Available options for creating of Telegram Premium giveaway or manual distribution of Telegram Premium among chat members\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPremiumGiveawayPaymentOptions(boostedChatId: Int64?) async throws -> PremiumGiveawayPaymentOptions {\n        let query = GetPremiumGiveawayPaymentOptions(\n            boostedChatId: boostedChatId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a Telegram Premium gift code\n    /// - Parameter code: The code to check\n    /// - Returns: Information about a Telegram Premium gift code\n    public func checkPremiumGiftCode(\n        code: String?,\n        completion: @escaping (Result<PremiumGiftCodeInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = CheckPremiumGiftCode(\n            code: code\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a Telegram Premium gift code\n    /// - Parameter code: The code to check\n    /// - Returns: Information about a Telegram Premium gift code\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func checkPremiumGiftCode(code: String?) async throws -> PremiumGiftCodeInfo {\n        let query = CheckPremiumGiftCode(\n            code: code\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Applies a Telegram Premium gift code\n    /// - Parameter code: The code to apply\n    public func applyPremiumGiftCode(\n        code: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ApplyPremiumGiftCode(\n            code: code\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Applies a Telegram Premium gift code\n    /// - Parameter code: The code to apply\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func applyPremiumGiftCode(code: String?) async throws -> Ok {\n        let query = ApplyPremiumGiftCode(\n            code: code\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Allows to buy a Telegram Premium subscription for another user with payment in Telegram Stars; for bots only\n    /// - Parameter monthCount: Number of months the Telegram Premium subscription will be active for the user\n    /// - Parameter starCount: The number of Telegram Stars to pay for subscription\n    /// - Parameter text: Text to show to the user receiving Telegram Premium; 0-getOption(\"gift_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed\n    /// - Parameter userId: Identifier of the user which will receive Telegram Premium\n    public func giftPremiumWithStars(\n        monthCount: Int?,\n        starCount: Int64?,\n        text: FormattedText?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = GiftPremiumWithStars(\n            monthCount: monthCount,\n            starCount: starCount,\n            text: text,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Allows to buy a Telegram Premium subscription for another user with payment in Telegram Stars; for bots only\n    /// - Parameter monthCount: Number of months the Telegram Premium subscription will be active for the user\n    /// - Parameter starCount: The number of Telegram Stars to pay for subscription\n    /// - Parameter text: Text to show to the user receiving Telegram Premium; 0-getOption(\"gift_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed\n    /// - Parameter userId: Identifier of the user which will receive Telegram Premium\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func giftPremiumWithStars(\n        monthCount: Int?,\n        starCount: Int64?,\n        text: FormattedText?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = GiftPremiumWithStars(\n            monthCount: monthCount,\n            starCount: starCount,\n            text: text,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Launches a prepaid giveaway\n    /// - Parameter giveawayId: Unique identifier of the prepaid giveaway\n    /// - Parameter parameters: Giveaway parameters\n    /// - Parameter starCount: The number of Telegram Stars to be distributed through the giveaway; pass 0 for Telegram Premium giveaways\n    /// - Parameter winnerCount: The number of users to receive giveaway prize\n    public func launchPrepaidGiveaway(\n        giveawayId: TdInt64?,\n        parameters: GiveawayParameters?,\n        starCount: Int64?,\n        winnerCount: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = LaunchPrepaidGiveaway(\n            giveawayId: giveawayId,\n            parameters: parameters,\n            starCount: starCount,\n            winnerCount: winnerCount\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Launches a prepaid giveaway\n    /// - Parameter giveawayId: Unique identifier of the prepaid giveaway\n    /// - Parameter parameters: Giveaway parameters\n    /// - Parameter starCount: The number of Telegram Stars to be distributed through the giveaway; pass 0 for Telegram Premium giveaways\n    /// - Parameter winnerCount: The number of users to receive giveaway prize\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func launchPrepaidGiveaway(\n        giveawayId: TdInt64?,\n        parameters: GiveawayParameters?,\n        starCount: Int64?,\n        winnerCount: Int?\n    ) async throws -> Ok {\n        let query = LaunchPrepaidGiveaway(\n            giveawayId: giveawayId,\n            parameters: parameters,\n            starCount: starCount,\n            winnerCount: winnerCount\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a giveaway\n    /// - Parameter chatId: Identifier of the channel chat which started the giveaway\n    /// - Parameter messageId: Identifier of the giveaway or a giveaway winners message in the chat\n    /// - Returns: Information about a giveaway\n    public func getGiveawayInfo(\n        chatId: Int64?,\n        messageId: Int64?,\n        completion: @escaping (Result<GiveawayInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetGiveawayInfo(\n            chatId: chatId,\n            messageId: messageId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a giveaway\n    /// - Parameter chatId: Identifier of the channel chat which started the giveaway\n    /// - Parameter messageId: Identifier of the giveaway or a giveaway winners message in the chat\n    /// - Returns: Information about a giveaway\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getGiveawayInfo(\n        chatId: Int64?,\n        messageId: Int64?\n    ) async throws -> GiveawayInfo {\n        let query = GetGiveawayInfo(\n            chatId: chatId,\n            messageId: messageId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns available options for Telegram Stars purchase\n    /// - Returns: Available options for Telegram Stars purchase\n    public func getStarPaymentOptions(completion: @escaping (Result<StarPaymentOptions, Swift.Error>) -> Void) throws {\n        let query = GetStarPaymentOptions()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns available options for Telegram Stars purchase\n    /// - Returns: Available options for Telegram Stars purchase\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStarPaymentOptions() async throws -> StarPaymentOptions {\n        let query = GetStarPaymentOptions()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns available options for Telegram Stars gifting\n    /// - Parameter userId: Identifier of the user who will receive Telegram Stars; pass 0 to get options for an unspecified user\n    /// - Returns: Available options for Telegram Stars gifting\n    public func getStarGiftPaymentOptions(\n        userId: Int64?,\n        completion: @escaping (Result<StarPaymentOptions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStarGiftPaymentOptions(\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns available options for Telegram Stars gifting\n    /// - Parameter userId: Identifier of the user who will receive Telegram Stars; pass 0 to get options for an unspecified user\n    /// - Returns: Available options for Telegram Stars gifting\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStarGiftPaymentOptions(userId: Int64?) async throws -> StarPaymentOptions {\n        let query = GetStarGiftPaymentOptions(\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns available options for Telegram Star giveaway creation\n    /// - Returns: Available options for Telegram Star giveaway creation\n    public func getStarGiveawayPaymentOptions(completion: @escaping (Result<StarGiveawayPaymentOptions, Swift.Error>) -> Void) throws {\n        let query = GetStarGiveawayPaymentOptions()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns available options for Telegram Star giveaway creation\n    /// - Returns: Available options for Telegram Star giveaway creation\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStarGiveawayPaymentOptions() async throws -> StarGiveawayPaymentOptions {\n        let query = GetStarGiveawayPaymentOptions()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of Telegram Star transactions for the specified owner\n    /// - Parameter direction: Direction of the transactions to receive; pass null to get all transactions\n    /// - Parameter limit: The maximum number of transactions to return\n    /// - Parameter offset: Offset of the first transaction to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter ownerId: Identifier of the owner of the Telegram Stars; can be the identifier of the current user, identifier of an owned bot, or identifier of a supergroup or a channel chat with supergroupFullInfo.can_get_star_revenue_statistics == true\n    /// - Parameter subscriptionId: If non-empty, only transactions related to the Star Subscription will be returned\n    /// - Returns: The list of Telegram Star transactions for the specified owner\n    public func getStarTransactions(\n        direction: TransactionDirection?,\n        limit: Int?,\n        offset: String?,\n        ownerId: MessageSender?,\n        subscriptionId: String?,\n        completion: @escaping (Result<StarTransactions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStarTransactions(\n            direction: direction,\n            limit: limit,\n            offset: offset,\n            ownerId: ownerId,\n            subscriptionId: subscriptionId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of Telegram Star transactions for the specified owner\n    /// - Parameter direction: Direction of the transactions to receive; pass null to get all transactions\n    /// - Parameter limit: The maximum number of transactions to return\n    /// - Parameter offset: Offset of the first transaction to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter ownerId: Identifier of the owner of the Telegram Stars; can be the identifier of the current user, identifier of an owned bot, or identifier of a supergroup or a channel chat with supergroupFullInfo.can_get_star_revenue_statistics == true\n    /// - Parameter subscriptionId: If non-empty, only transactions related to the Star Subscription will be returned\n    /// - Returns: The list of Telegram Star transactions for the specified owner\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStarTransactions(\n        direction: TransactionDirection?,\n        limit: Int?,\n        offset: String?,\n        ownerId: MessageSender?,\n        subscriptionId: String?\n    ) async throws -> StarTransactions {\n        let query = GetStarTransactions(\n            direction: direction,\n            limit: limit,\n            offset: offset,\n            ownerId: ownerId,\n            subscriptionId: subscriptionId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of Telegram Star subscriptions for the current user\n    /// - Parameter offset: Offset of the first subscription to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter onlyExpiring: Pass true to receive only expiring subscriptions for which there are no enough Telegram Stars to extend\n    /// - Returns: The list of Telegram Star subscriptions for the current user\n    public func getStarSubscriptions(\n        offset: String?,\n        onlyExpiring: Bool?,\n        completion: @escaping (Result<StarSubscriptions, Swift.Error>) -> Void\n    ) throws {\n        let query = GetStarSubscriptions(\n            offset: offset,\n            onlyExpiring: onlyExpiring\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of Telegram Star subscriptions for the current user\n    /// - Parameter offset: Offset of the first subscription to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter onlyExpiring: Pass true to receive only expiring subscriptions for which there are no enough Telegram Stars to extend\n    /// - Returns: The list of Telegram Star subscriptions for the current user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getStarSubscriptions(\n        offset: String?,\n        onlyExpiring: Bool?\n    ) async throws -> StarSubscriptions {\n        let query = GetStarSubscriptions(\n            offset: offset,\n            onlyExpiring: onlyExpiring\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Checks whether an in-store purchase is possible. Must be called before any in-store purchase. For official applications only\n    /// - Parameter purpose: Transaction purpose\n    public func canPurchaseFromStore(\n        purpose: StorePaymentPurpose?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = CanPurchaseFromStore(\n            purpose: purpose\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Checks whether an in-store purchase is possible. Must be called before any in-store purchase. For official applications only\n    /// - Parameter purpose: Transaction purpose\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func canPurchaseFromStore(purpose: StorePaymentPurpose?) async throws -> Ok {\n        let query = CanPurchaseFromStore(\n            purpose: purpose\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Informs server about an in-store purchase. For official applications only\n    /// - Parameter purpose: Transaction purpose\n    /// - Parameter transaction: Information about the transaction\n    public func assignStoreTransaction(\n        purpose: StorePaymentPurpose?,\n        transaction: StoreTransaction?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AssignStoreTransaction(\n            purpose: purpose,\n            transaction: transaction\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Informs server about an in-store purchase. For official applications only\n    /// - Parameter purpose: Transaction purpose\n    /// - Parameter transaction: Information about the transaction\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func assignStoreTransaction(\n        purpose: StorePaymentPurpose?,\n        transaction: StoreTransaction?\n    ) async throws -> Ok {\n        let query = AssignStoreTransaction(\n            purpose: purpose,\n            transaction: transaction\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Cancels or re-enables Telegram Star subscription\n    /// - Parameter isCanceled: New value of is_canceled\n    /// - Parameter subscriptionId: Identifier of the subscription to change\n    public func editStarSubscription(\n        isCanceled: Bool?,\n        subscriptionId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditStarSubscription(\n            isCanceled: isCanceled,\n            subscriptionId: subscriptionId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Cancels or re-enables Telegram Star subscription\n    /// - Parameter isCanceled: New value of is_canceled\n    /// - Parameter subscriptionId: Identifier of the subscription to change\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func editStarSubscription(\n        isCanceled: Bool?,\n        subscriptionId: String?\n    ) async throws -> Ok {\n        let query = EditStarSubscription(\n            isCanceled: isCanceled,\n            subscriptionId: subscriptionId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Cancels or re-enables Telegram Star subscription for a user; for bots only\n    /// - Parameter isCanceled: Pass true to cancel the subscription; pass false to allow the user to enable it\n    /// - Parameter telegramPaymentChargeId: Telegram payment identifier of the subscription\n    /// - Parameter userId: User identifier\n    public func editUserStarSubscription(\n        isCanceled: Bool?,\n        telegramPaymentChargeId: String?,\n        userId: Int64?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EditUserStarSubscription(\n            isCanceled: isCanceled,\n            telegramPaymentChargeId: telegramPaymentChargeId,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Cancels or re-enables Telegram Star subscription for a user; for bots only\n    /// - Parameter isCanceled: Pass true to cancel the subscription; pass false to allow the user to enable it\n    /// - Parameter telegramPaymentChargeId: Telegram payment identifier of the subscription\n    /// - Parameter userId: User identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func editUserStarSubscription(\n        isCanceled: Bool?,\n        telegramPaymentChargeId: String?,\n        userId: Int64?\n    ) async throws -> Ok {\n        let query = EditUserStarSubscription(\n            isCanceled: isCanceled,\n            telegramPaymentChargeId: telegramPaymentChargeId,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Reuses an active Telegram Star subscription to a channel chat and joins the chat again\n    /// - Parameter subscriptionId: Identifier of the subscription\n    public func reuseStarSubscription(\n        subscriptionId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = ReuseStarSubscription(\n            subscriptionId: subscriptionId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Reuses an active Telegram Star subscription to a channel chat and joins the chat again\n    /// - Parameter subscriptionId: Identifier of the subscription\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func reuseStarSubscription(subscriptionId: String?) async throws -> Ok {\n        let query = ReuseStarSubscription(\n            subscriptionId: subscriptionId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Changes affiliate program for a bot\n    /// - Parameter chatId: Identifier of the chat with an owned bot for which affiliate program is changed\n    /// - Parameter parameters: Parameters of the affiliate program; pass null to close the currently active program. If there is an active program, then commission and program duration can only be increased. If the active program is scheduled to be closed, then it can't be changed anymore\n    public func setChatAffiliateProgram(\n        chatId: Int64?,\n        parameters: AffiliateProgramParameters?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetChatAffiliateProgram(\n            chatId: chatId,\n            parameters: parameters\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Changes affiliate program for a bot\n    /// - Parameter chatId: Identifier of the chat with an owned bot for which affiliate program is changed\n    /// - Parameter parameters: Parameters of the affiliate program; pass null to close the currently active program. If there is an active program, then commission and program duration can only be increased. If the active program is scheduled to be closed, then it can't be changed anymore\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setChatAffiliateProgram(\n        chatId: Int64?,\n        parameters: AffiliateProgramParameters?\n    ) async throws -> Ok {\n        let query = SetChatAffiliateProgram(\n            chatId: chatId,\n            parameters: parameters\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches a chat with an affiliate program. Returns the chat if found and the program is active\n    /// - Parameter referrer: The referrer from an internalLinkTypeChatAffiliateProgram link\n    /// - Parameter username: Username of the chat\n    /// - Returns: The chat if found and the program is active\n    public func searchChatAffiliateProgram(\n        referrer: String?,\n        username: String?,\n        completion: @escaping (Result<Chat, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchChatAffiliateProgram(\n            referrer: referrer,\n            username: username\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches a chat with an affiliate program. Returns the chat if found and the program is active\n    /// - Parameter referrer: The referrer from an internalLinkTypeChatAffiliateProgram link\n    /// - Parameter username: Username of the chat\n    /// - Returns: The chat if found and the program is active\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchChatAffiliateProgram(\n        referrer: String?,\n        username: String?\n    ) async throws -> Chat {\n        let query = SearchChatAffiliateProgram(\n            referrer: referrer,\n            username: username\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches affiliate programs that can be connected to the given affiliate\n    /// - Parameter affiliate: The affiliate for which affiliate programs are searched for\n    /// - Parameter limit: The maximum number of affiliate programs to return\n    /// - Parameter offset: Offset of the first affiliate program to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter sortOrder: Sort order for the results\n    public func searchAffiliatePrograms(\n        affiliate: AffiliateType?,\n        limit: Int?,\n        offset: String?,\n        sortOrder: AffiliateProgramSortOrder?,\n        completion: @escaping (Result<FoundAffiliatePrograms, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchAffiliatePrograms(\n            affiliate: affiliate,\n            limit: limit,\n            offset: offset,\n            sortOrder: sortOrder\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches affiliate programs that can be connected to the given affiliate\n    /// - Parameter affiliate: The affiliate for which affiliate programs are searched for\n    /// - Parameter limit: The maximum number of affiliate programs to return\n    /// - Parameter offset: Offset of the first affiliate program to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Parameter sortOrder: Sort order for the results\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchAffiliatePrograms(\n        affiliate: AffiliateType?,\n        limit: Int?,\n        offset: String?,\n        sortOrder: AffiliateProgramSortOrder?\n    ) async throws -> FoundAffiliatePrograms {\n        let query = SearchAffiliatePrograms(\n            affiliate: affiliate,\n            limit: limit,\n            offset: offset,\n            sortOrder: sortOrder\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Connects an affiliate program to the given affiliate. Returns information about the connected affiliate program\n    /// - Parameter affiliate: The affiliate to which the affiliate program will be connected\n    /// - Parameter botUserId: Identifier of the bot, which affiliate program is connected\n    /// - Returns: Information about the connected affiliate program\n    public func connectAffiliateProgram(\n        affiliate: AffiliateType?,\n        botUserId: Int64?,\n        completion: @escaping (Result<ConnectedAffiliateProgram, Swift.Error>) -> Void\n    ) throws {\n        let query = ConnectAffiliateProgram(\n            affiliate: affiliate,\n            botUserId: botUserId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Connects an affiliate program to the given affiliate. Returns information about the connected affiliate program\n    /// - Parameter affiliate: The affiliate to which the affiliate program will be connected\n    /// - Parameter botUserId: Identifier of the bot, which affiliate program is connected\n    /// - Returns: Information about the connected affiliate program\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func connectAffiliateProgram(\n        affiliate: AffiliateType?,\n        botUserId: Int64?\n    ) async throws -> ConnectedAffiliateProgram {\n        let query = ConnectAffiliateProgram(\n            affiliate: affiliate,\n            botUserId: botUserId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Disconnects an affiliate program from the given affiliate and immediately deactivates its referral link. Returns updated information about the disconnected affiliate program\n    /// - Parameter affiliate: The affiliate to which the affiliate program is connected\n    /// - Parameter url: The referral link of the affiliate program\n    /// - Returns: Updated information about the disconnected affiliate program\n    public func disconnectAffiliateProgram(\n        affiliate: AffiliateType?,\n        url: String?,\n        completion: @escaping (Result<ConnectedAffiliateProgram, Swift.Error>) -> Void\n    ) throws {\n        let query = DisconnectAffiliateProgram(\n            affiliate: affiliate,\n            url: url\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Disconnects an affiliate program from the given affiliate and immediately deactivates its referral link. Returns updated information about the disconnected affiliate program\n    /// - Parameter affiliate: The affiliate to which the affiliate program is connected\n    /// - Parameter url: The referral link of the affiliate program\n    /// - Returns: Updated information about the disconnected affiliate program\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func disconnectAffiliateProgram(\n        affiliate: AffiliateType?,\n        url: String?\n    ) async throws -> ConnectedAffiliateProgram {\n        let query = DisconnectAffiliateProgram(\n            affiliate: affiliate,\n            url: url\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns an affiliate program that was connected to the given affiliate by identifier of the bot that created the program\n    /// - Parameter affiliate: The affiliate to which the affiliate program will be connected\n    /// - Parameter botUserId: Identifier of the bot that created the program\n    /// - Returns: An affiliate program that was connected to the given affiliate by identifier of the bot that created the program\n    public func getConnectedAffiliateProgram(\n        affiliate: AffiliateType?,\n        botUserId: Int64?,\n        completion: @escaping (Result<ConnectedAffiliateProgram, Swift.Error>) -> Void\n    ) throws {\n        let query = GetConnectedAffiliateProgram(\n            affiliate: affiliate,\n            botUserId: botUserId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns an affiliate program that was connected to the given affiliate by identifier of the bot that created the program\n    /// - Parameter affiliate: The affiliate to which the affiliate program will be connected\n    /// - Parameter botUserId: Identifier of the bot that created the program\n    /// - Returns: An affiliate program that was connected to the given affiliate by identifier of the bot that created the program\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getConnectedAffiliateProgram(\n        affiliate: AffiliateType?,\n        botUserId: Int64?\n    ) async throws -> ConnectedAffiliateProgram {\n        let query = GetConnectedAffiliateProgram(\n            affiliate: affiliate,\n            botUserId: botUserId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns affiliate programs that were connected to the given affiliate\n    /// - Parameter affiliate: The affiliate to which the affiliate program were connected\n    /// - Parameter limit: The maximum number of affiliate programs to return\n    /// - Parameter offset: Offset of the first affiliate program to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: Affiliate programs that were connected to the given affiliate\n    public func getConnectedAffiliatePrograms(\n        affiliate: AffiliateType?,\n        limit: Int?,\n        offset: String?,\n        completion: @escaping (Result<ConnectedAffiliatePrograms, Swift.Error>) -> Void\n    ) throws {\n        let query = GetConnectedAffiliatePrograms(\n            affiliate: affiliate,\n            limit: limit,\n            offset: offset\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns affiliate programs that were connected to the given affiliate\n    /// - Parameter affiliate: The affiliate to which the affiliate program were connected\n    /// - Parameter limit: The maximum number of affiliate programs to return\n    /// - Parameter offset: Offset of the first affiliate program to return as received from the previous request; use empty string to get the first chunk of results\n    /// - Returns: Affiliate programs that were connected to the given affiliate\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getConnectedAffiliatePrograms(\n        affiliate: AffiliateType?,\n        limit: Int?,\n        offset: String?\n    ) async throws -> ConnectedAffiliatePrograms {\n        let query = GetConnectedAffiliatePrograms(\n            affiliate: affiliate,\n            limit: limit,\n            offset: offset\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about features, available to Business users\n    /// - Parameter source: Source of the request; pass null if the method is called from settings or some non-standard source\n    /// - Returns: Information about features, available to Business users\n    public func getBusinessFeatures(\n        source: BusinessFeature?,\n        completion: @escaping (Result<BusinessFeatures, Swift.Error>) -> Void\n    ) throws {\n        let query = GetBusinessFeatures(\n            source: source\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about features, available to Business users\n    /// - Parameter source: Source of the request; pass null if the method is called from settings or some non-standard source\n    /// - Returns: Information about features, available to Business users\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getBusinessFeatures(source: BusinessFeature?) async throws -> BusinessFeatures {\n        let query = GetBusinessFeatures(\n            source: source\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Accepts Telegram terms of services\n    /// - Parameter termsOfServiceId: Terms of service identifier\n    public func acceptTermsOfService(\n        termsOfServiceId: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AcceptTermsOfService(\n            termsOfServiceId: termsOfServiceId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Accepts Telegram terms of services\n    /// - Parameter termsOfServiceId: Terms of service identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func acceptTermsOfService(termsOfServiceId: String?) async throws -> Ok {\n        let query = AcceptTermsOfService(\n            termsOfServiceId: termsOfServiceId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Searches specified query by word prefixes in the provided strings. Returns 0-based positions of strings that matched. Can be called synchronously\n    /// - Parameter limit: The maximum number of objects to return\n    /// - Parameter query: Query to search for\n    /// - Parameter returnNoneForEmptyQuery: Pass true to receive no results for an empty query\n    /// - Parameter strings: The strings to search in for the query\n    /// - Returns: 0-based positions of strings that matched\n    public func searchStringsByPrefix(\n        limit: Int?,\n        query: String?,\n        returnNoneForEmptyQuery: Bool?,\n        strings: [String]?,\n        completion: @escaping (Result<FoundPositions, Swift.Error>) -> Void\n    ) throws {\n        let query = SearchStringsByPrefix(\n            limit: limit,\n            query: query,\n            returnNoneForEmptyQuery: returnNoneForEmptyQuery,\n            strings: strings\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Searches specified query by word prefixes in the provided strings. Returns 0-based positions of strings that matched. Can be called synchronously\n    /// - Parameter limit: The maximum number of objects to return\n    /// - Parameter query: Query to search for\n    /// - Parameter returnNoneForEmptyQuery: Pass true to receive no results for an empty query\n    /// - Parameter strings: The strings to search in for the query\n    /// - Returns: 0-based positions of strings that matched\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func searchStringsByPrefix(\n        limit: Int?,\n        query: String?,\n        returnNoneForEmptyQuery: Bool?,\n        strings: [String]?\n    ) async throws -> FoundPositions {\n        let query = SearchStringsByPrefix(\n            limit: limit,\n            query: query,\n            returnNoneForEmptyQuery: returnNoneForEmptyQuery,\n            strings: strings\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends a custom request; for bots only\n    /// - Parameter method: The method name\n    /// - Parameter parameters: JSON-serialized method parameters\n    public func sendCustomRequest(\n        method: String?,\n        parameters: String?,\n        completion: @escaping (Result<CustomRequestResult, Swift.Error>) -> Void\n    ) throws {\n        let query = SendCustomRequest(\n            method: method,\n            parameters: parameters\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends a custom request; for bots only\n    /// - Parameter method: The method name\n    /// - Parameter parameters: JSON-serialized method parameters\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func sendCustomRequest(\n        method: String?,\n        parameters: String?\n    ) async throws -> CustomRequestResult {\n        let query = SendCustomRequest(\n            method: method,\n            parameters: parameters\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Answers a custom query; for bots only\n    /// - Parameter customQueryId: Identifier of a custom query\n    /// - Parameter data: JSON-serialized answer to the query\n    public func answerCustomQuery(\n        customQueryId: TdInt64?,\n        data: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AnswerCustomQuery(\n            customQueryId: customQueryId,\n            data: data\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Answers a custom query; for bots only\n    /// - Parameter customQueryId: Identifier of a custom query\n    /// - Parameter data: JSON-serialized answer to the query\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func answerCustomQuery(\n        customQueryId: TdInt64?,\n        data: String?\n    ) async throws -> Ok {\n        let query = AnswerCustomQuery(\n            customQueryId: customQueryId,\n            data: data\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Succeeds after a specified amount of time has passed. Can be called before initialization\n    /// - Parameter seconds: Number of seconds before the function returns\n    public func setAlarm(\n        seconds: Double?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetAlarm(\n            seconds: seconds\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Succeeds after a specified amount of time has passed. Can be called before initialization\n    /// - Parameter seconds: Number of seconds before the function returns\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setAlarm(seconds: Double?) async throws -> Ok {\n        let query = SetAlarm(\n            seconds: seconds\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about existing countries. Can be called before authorization\n    /// - Returns: Information about existing countries\n    public func getCountries(completion: @escaping (Result<Countries, Swift.Error>) -> Void) throws {\n        let query = GetCountries()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about existing countries. Can be called before authorization\n    /// - Returns: Information about existing countries\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getCountries() async throws -> Countries {\n        let query = GetCountries()\n        return try await self.execute(query: query)\n    }\n\n    /// Uses the current IP address to find the current country. Returns two-letter ISO 3166-1 alpha-2 country code. Can be called before authorization\n    /// - Returns: Two-letter ISO 3166-1 alpha-2 country code\n    public func getCountryCode(completion: @escaping (Result<Text, Swift.Error>) -> Void) throws {\n        let query = GetCountryCode()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Uses the current IP address to find the current country. Returns two-letter ISO 3166-1 alpha-2 country code. Can be called before authorization\n    /// - Returns: Two-letter ISO 3166-1 alpha-2 country code\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getCountryCode() async throws -> Text {\n        let query = GetCountryCode()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a phone number by its prefix. Can be called before authorization\n    /// - Parameter phoneNumberPrefix: The phone number prefix\n    /// - Returns: Information about a phone number by its prefix\n    public func getPhoneNumberInfo(\n        phoneNumberPrefix: String?,\n        completion: @escaping (Result<PhoneNumberInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPhoneNumberInfo(\n            phoneNumberPrefix: phoneNumberPrefix\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a phone number by its prefix. Can be called before authorization\n    /// - Parameter phoneNumberPrefix: The phone number prefix\n    /// - Returns: Information about a phone number by its prefix\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPhoneNumberInfo(phoneNumberPrefix: String?) async throws -> PhoneNumberInfo {\n        let query = GetPhoneNumberInfo(\n            phoneNumberPrefix: phoneNumberPrefix\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a phone number by its prefix synchronously. getCountries must be called at least once after changing localization to the specified language if properly localized country information is expected. Can be called synchronously\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code for country information localization\n    /// - Parameter phoneNumberPrefix: The phone number prefix\n    /// - Returns: Information about a phone number by its prefix synchronously\n    public func getPhoneNumberInfoSync(\n        languageCode: String?,\n        phoneNumberPrefix: String?,\n        completion: @escaping (Result<PhoneNumberInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetPhoneNumberInfoSync(\n            languageCode: languageCode,\n            phoneNumberPrefix: phoneNumberPrefix\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a phone number by its prefix synchronously. getCountries must be called at least once after changing localization to the specified language if properly localized country information is expected. Can be called synchronously\n    /// - Parameter languageCode: A two-letter ISO 639-1 language code for country information localization\n    /// - Parameter phoneNumberPrefix: The phone number prefix\n    /// - Returns: Information about a phone number by its prefix synchronously\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getPhoneNumberInfoSync(\n        languageCode: String?,\n        phoneNumberPrefix: String?\n    ) async throws -> PhoneNumberInfo {\n        let query = GetPhoneNumberInfoSync(\n            languageCode: languageCode,\n            phoneNumberPrefix: phoneNumberPrefix\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a given collectible item that was purchased at https://fragment.com\n    /// - Parameter type: Type of the collectible item. The item must be used by a user and must be visible to the current user\n    /// - Returns: Information about a given collectible item that was purchased at https://fragment\n    public func getCollectibleItemInfo(\n        type: CollectibleItemType?,\n        completion: @escaping (Result<CollectibleItemInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetCollectibleItemInfo(\n            type: type\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a given collectible item that was purchased at https://fragment.com\n    /// - Parameter type: Type of the collectible item. The item must be used by a user and must be visible to the current user\n    /// - Returns: Information about a given collectible item that was purchased at https://fragment\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getCollectibleItemInfo(type: CollectibleItemType?) async throws -> CollectibleItemInfo {\n        let query = GetCollectibleItemInfo(\n            type: type\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about a tg:// deep link. Use \"tg://need_update_for_some_feature\" or \"tg:some_unsupported_feature\" for testing. Returns a 404 error for unknown links. Can be called before authorization\n    /// - Parameter link: The link\n    /// - Returns: Information about a tg:// deep link. Returns a 404 error for unknown links\n    public func getDeepLinkInfo(\n        link: String?,\n        completion: @escaping (Result<DeepLinkInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetDeepLinkInfo(\n            link: link\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about a tg:// deep link. Use \"tg://need_update_for_some_feature\" or \"tg:some_unsupported_feature\" for testing. Returns a 404 error for unknown links. Can be called before authorization\n    /// - Parameter link: The link\n    /// - Returns: Information about a tg:// deep link. Returns a 404 error for unknown links\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getDeepLinkInfo(link: String?) async throws -> DeepLinkInfo {\n        let query = GetDeepLinkInfo(\n            link: link\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns application config, provided by the server. Can be called before authorization\n    /// - Returns: Application config, provided by the server\n    public func getApplicationConfig(completion: @escaping (Result<JsonValue, Swift.Error>) -> Void) throws {\n        let query = GetApplicationConfig()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns application config, provided by the server. Can be called before authorization\n    /// - Returns: Application config, provided by the server\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getApplicationConfig() async throws -> JsonValue {\n        let query = GetApplicationConfig()\n        return try await self.execute(query: query)\n    }\n\n    /// Saves application log event on the server. Can be called before authorization\n    /// - Parameter chatId: Optional chat identifier, associated with the event\n    /// - Parameter data: The log event data\n    /// - Parameter type: Event type\n    public func saveApplicationLogEvent(\n        chatId: Int64?,\n        data: JsonValue?,\n        type: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SaveApplicationLogEvent(\n            chatId: chatId,\n            data: data,\n            type: type\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Saves application log event on the server. Can be called before authorization\n    /// - Parameter chatId: Optional chat identifier, associated with the event\n    /// - Parameter data: The log event data\n    /// - Parameter type: Event type\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func saveApplicationLogEvent(\n        chatId: Int64?,\n        data: JsonValue?,\n        type: String?\n    ) async throws -> Ok {\n        let query = SaveApplicationLogEvent(\n            chatId: chatId,\n            data: data,\n            type: type\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the link for downloading official Telegram application to be used when the current user invites friends to Telegram\n    /// - Returns: The link for downloading official Telegram application to be used when the current user invites friends to Telegram\n    public func getApplicationDownloadLink(completion: @escaping (Result<HttpUrl, Swift.Error>) -> Void) throws {\n        let query = GetApplicationDownloadLink()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the link for downloading official Telegram application to be used when the current user invites friends to Telegram\n    /// - Returns: The link for downloading official Telegram application to be used when the current user invites friends to Telegram\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getApplicationDownloadLink() async throws -> HttpUrl {\n        let query = GetApplicationDownloadLink()\n        return try await self.execute(query: query)\n    }\n\n    /// Adds a proxy server for network requests. Can be called before authorization\n    /// - Parameter comment: Comment to set for the proxy\n    /// - Parameter enable: Pass true to immediately enable the proxy\n    /// - Parameter proxy: The proxy to add\n    public func addProxy(\n        comment: String?,\n        enable: Bool?,\n        proxy: Proxy?,\n        completion: @escaping (Result<AddedProxy, Swift.Error>) -> Void\n    ) throws {\n        let query = AddProxy(\n            comment: comment,\n            enable: enable,\n            proxy: proxy\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds a proxy server for network requests. Can be called before authorization\n    /// - Parameter comment: Comment to set for the proxy\n    /// - Parameter enable: Pass true to immediately enable the proxy\n    /// - Parameter proxy: The proxy to add\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func addProxy(\n        comment: String?,\n        enable: Bool?,\n        proxy: Proxy?\n    ) async throws -> AddedProxy {\n        let query = AddProxy(\n            comment: comment,\n            enable: enable,\n            proxy: proxy\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Edits an existing proxy server for network requests. Can be called before authorization\n    /// - Parameter comment: New comment for the proxy\n    /// - Parameter enable: Pass true to immediately enable the proxy\n    /// - Parameter proxy: The new information about the proxy\n    /// - Parameter proxyId: Proxy identifier\n    public func editProxy(\n        comment: String?,\n        enable: Bool?,\n        proxy: Proxy?,\n        proxyId: Int?,\n        completion: @escaping (Result<AddedProxy, Swift.Error>) -> Void\n    ) throws {\n        let query = EditProxy(\n            comment: comment,\n            enable: enable,\n            proxy: proxy,\n            proxyId: proxyId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Edits an existing proxy server for network requests. Can be called before authorization\n    /// - Parameter comment: New comment for the proxy\n    /// - Parameter enable: Pass true to immediately enable the proxy\n    /// - Parameter proxy: The new information about the proxy\n    /// - Parameter proxyId: Proxy identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func editProxy(\n        comment: String?,\n        enable: Bool?,\n        proxy: Proxy?,\n        proxyId: Int?\n    ) async throws -> AddedProxy {\n        let query = EditProxy(\n            comment: comment,\n            enable: enable,\n            proxy: proxy,\n            proxyId: proxyId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Enables a proxy. Only one proxy can be enabled at a time. Can be called before authorization\n    /// - Parameter proxyId: Proxy identifier\n    public func enableProxy(\n        proxyId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = EnableProxy(\n            proxyId: proxyId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Enables a proxy. Only one proxy can be enabled at a time. Can be called before authorization\n    /// - Parameter proxyId: Proxy identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func enableProxy(proxyId: Int?) async throws -> Ok {\n        let query = EnableProxy(\n            proxyId: proxyId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Disables the currently enabled proxy. Can be called before authorization\n    public func disableProxy(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = DisableProxy()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Disables the currently enabled proxy. Can be called before authorization\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func disableProxy() async throws -> Ok {\n        let query = DisableProxy()\n        return try await self.execute(query: query)\n    }\n\n    /// Removes a proxy server. Can be called before authorization\n    /// - Parameter proxyId: Proxy identifier\n    public func removeProxy(\n        proxyId: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = RemoveProxy(\n            proxyId: proxyId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Removes a proxy server. Can be called before authorization\n    /// - Parameter proxyId: Proxy identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func removeProxy(proxyId: Int?) async throws -> Ok {\n        let query = RemoveProxy(\n            proxyId: proxyId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of proxies that are currently set up. Can be called before authorization\n    /// - Returns: The list of proxies that are currently set up\n    public func getProxies(completion: @escaping (Result<AddedProxies, Swift.Error>) -> Void) throws {\n        let query = GetProxies()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of proxies that are currently set up. Can be called before authorization\n    /// - Returns: The list of proxies that are currently set up\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getProxies() async throws -> AddedProxies {\n        let query = GetProxies()\n        return try await self.execute(query: query)\n    }\n\n    /// Computes time needed to receive a response from a Telegram server through a proxy. Can be called before authorization\n    /// - Parameter proxy: The proxy to test; pass null to ping a Telegram server without a proxy\n    public func pingProxy(\n        proxy: Proxy?,\n        completion: @escaping (Result<Seconds, Swift.Error>) -> Void\n    ) throws {\n        let query = PingProxy(\n            proxy: proxy\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Computes time needed to receive a response from a Telegram server through a proxy. Can be called before authorization\n    /// - Parameter proxy: The proxy to test; pass null to ping a Telegram server without a proxy\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func pingProxy(proxy: Proxy?) async throws -> Seconds {\n        let query = PingProxy(\n            proxy: proxy\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets new log stream for internal logging of TDLib. Can be called synchronously\n    /// - Parameter logStream: New log stream\n    public func setLogStream(\n        logStream: LogStream?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetLogStream(\n            logStream: logStream\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets new log stream for internal logging of TDLib. Can be called synchronously\n    /// - Parameter logStream: New log stream\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setLogStream(logStream: LogStream?) async throws -> Ok {\n        let query = SetLogStream(\n            logStream: logStream\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns information about currently used log stream for internal logging of TDLib. Can be called synchronously\n    /// - Returns: Information about currently used log stream for internal logging of TDLib\n    public func getLogStream(completion: @escaping (Result<LogStream, Swift.Error>) -> Void) throws {\n        let query = GetLogStream()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns information about currently used log stream for internal logging of TDLib. Can be called synchronously\n    /// - Returns: Information about currently used log stream for internal logging of TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getLogStream() async throws -> LogStream {\n        let query = GetLogStream()\n        return try await self.execute(query: query)\n    }\n\n    /// Sets the verbosity level of the internal logging of TDLib. Can be called synchronously\n    /// - Parameter newVerbosityLevel: New value of the verbosity level for logging. Value 0 corresponds to fatal errors, value 1 corresponds to errors, value 2 corresponds to warnings and debug warnings, value 3 corresponds to informational, value 4 corresponds to debug, value 5 corresponds to verbose debug, value greater than 5 and up to 1023 can be used to enable even more logging\n    public func setLogVerbosityLevel(\n        newVerbosityLevel: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetLogVerbosityLevel(\n            newVerbosityLevel: newVerbosityLevel\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets the verbosity level of the internal logging of TDLib. Can be called synchronously\n    /// - Parameter newVerbosityLevel: New value of the verbosity level for logging. Value 0 corresponds to fatal errors, value 1 corresponds to errors, value 2 corresponds to warnings and debug warnings, value 3 corresponds to informational, value 4 corresponds to debug, value 5 corresponds to verbose debug, value greater than 5 and up to 1023 can be used to enable even more logging\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setLogVerbosityLevel(newVerbosityLevel: Int?) async throws -> Ok {\n        let query = SetLogVerbosityLevel(\n            newVerbosityLevel: newVerbosityLevel\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns current verbosity level of the internal logging of TDLib. Can be called synchronously\n    /// - Returns: Current verbosity level of the internal logging of TDLib\n    public func getLogVerbosityLevel(completion: @escaping (Result<LogVerbosityLevel, Swift.Error>) -> Void) throws {\n        let query = GetLogVerbosityLevel()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns current verbosity level of the internal logging of TDLib. Can be called synchronously\n    /// - Returns: Current verbosity level of the internal logging of TDLib\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getLogVerbosityLevel() async throws -> LogVerbosityLevel {\n        let query = GetLogVerbosityLevel()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the list of available TDLib internal log tags, for example, [\"actor\", \"binlog\", \"connections\", \"notifications\", \"proxy\"]. Can be called synchronously\n    /// - Returns: The list of available TDLib internal log tags, for example, [\"actor\", \"binlog\", \"connections\", \"notifications\", \"proxy\"]\n    public func getLogTags(completion: @escaping (Result<LogTags, Swift.Error>) -> Void) throws {\n        let query = GetLogTags()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the list of available TDLib internal log tags, for example, [\"actor\", \"binlog\", \"connections\", \"notifications\", \"proxy\"]. Can be called synchronously\n    /// - Returns: The list of available TDLib internal log tags, for example, [\"actor\", \"binlog\", \"connections\", \"notifications\", \"proxy\"]\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getLogTags() async throws -> LogTags {\n        let query = GetLogTags()\n        return try await self.execute(query: query)\n    }\n\n    /// Sets the verbosity level for a specified TDLib internal log tag. Can be called synchronously\n    /// - Parameter newVerbosityLevel: New verbosity level; 1-1024\n    /// - Parameter tag: Logging tag to change verbosity level\n    public func setLogTagVerbosityLevel(\n        newVerbosityLevel: Int?,\n        tag: String?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = SetLogTagVerbosityLevel(\n            newVerbosityLevel: newVerbosityLevel,\n            tag: tag\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets the verbosity level for a specified TDLib internal log tag. Can be called synchronously\n    /// - Parameter newVerbosityLevel: New verbosity level; 1-1024\n    /// - Parameter tag: Logging tag to change verbosity level\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func setLogTagVerbosityLevel(\n        newVerbosityLevel: Int?,\n        tag: String?\n    ) async throws -> Ok {\n        let query = SetLogTagVerbosityLevel(\n            newVerbosityLevel: newVerbosityLevel,\n            tag: tag\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns current verbosity level for a specified TDLib internal log tag. Can be called synchronously\n    /// - Parameter tag: Logging tag to change verbosity level\n    /// - Returns: Current verbosity level for a specified TDLib internal log tag\n    public func getLogTagVerbosityLevel(\n        tag: String?,\n        completion: @escaping (Result<LogVerbosityLevel, Swift.Error>) -> Void\n    ) throws {\n        let query = GetLogTagVerbosityLevel(\n            tag: tag\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns current verbosity level for a specified TDLib internal log tag. Can be called synchronously\n    /// - Parameter tag: Logging tag to change verbosity level\n    /// - Returns: Current verbosity level for a specified TDLib internal log tag\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getLogTagVerbosityLevel(tag: String?) async throws -> LogVerbosityLevel {\n        let query = GetLogTagVerbosityLevel(\n            tag: tag\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Adds a message to TDLib internal log. Can be called synchronously\n    /// - Parameter text: Text of a message to log\n    /// - Parameter verbosityLevel: The minimum verbosity level needed for the message to be logged; 0-1023\n    public func addLogMessage(\n        text: String?,\n        verbosityLevel: Int?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = AddLogMessage(\n            text: text,\n            verbosityLevel: verbosityLevel\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Adds a message to TDLib internal log. Can be called synchronously\n    /// - Parameter text: Text of a message to log\n    /// - Parameter verbosityLevel: The minimum verbosity level needed for the message to be logged; 0-1023\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func addLogMessage(\n        text: String?,\n        verbosityLevel: Int?\n    ) async throws -> Ok {\n        let query = AddLogMessage(\n            text: text,\n            verbosityLevel: verbosityLevel\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns support information for the given user; for Telegram support only\n    /// - Parameter userId: User identifier\n    /// - Returns: Support information for the given user\n    public func getUserSupportInfo(\n        userId: Int64?,\n        completion: @escaping (Result<UserSupportInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = GetUserSupportInfo(\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns support information for the given user; for Telegram support only\n    /// - Parameter userId: User identifier\n    /// - Returns: Support information for the given user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getUserSupportInfo(userId: Int64?) async throws -> UserSupportInfo {\n        let query = GetUserSupportInfo(\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sets support information for the given user; for Telegram support only\n    /// - Parameter message: New information message\n    /// - Parameter userId: User identifier\n    public func setUserSupportInfo(\n        message: FormattedText?,\n        userId: Int64?,\n        completion: @escaping (Result<UserSupportInfo, Swift.Error>) -> Void\n    ) throws {\n        let query = SetUserSupportInfo(\n            message: message,\n            userId: userId\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sets support information for the given user; for Telegram support only\n    /// - Parameter message: New information message\n    /// - Parameter userId: User identifier\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func setUserSupportInfo(\n        message: FormattedText?,\n        userId: Int64?\n    ) async throws -> UserSupportInfo {\n        let query = SetUserSupportInfo(\n            message: message,\n            userId: userId\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns localized name of the Telegram support user; for Telegram support only\n    /// - Returns: Localized name of the Telegram support user\n    public func getSupportName(completion: @escaping (Result<Text, Swift.Error>) -> Void) throws {\n        let query = GetSupportName()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns localized name of the Telegram support user; for Telegram support only\n    /// - Returns: Localized name of the Telegram support user\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func getSupportName() async throws -> Text {\n        let query = GetSupportName()\n        return try await self.execute(query: query)\n    }\n\n    /// Does nothing; for testing only. This is an offline method. Can be called before authorization\n    public func testCallEmpty(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = TestCallEmpty()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Does nothing; for testing only. This is an offline method. Can be called before authorization\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func testCallEmpty() async throws -> Ok {\n        let query = TestCallEmpty()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the received string; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: String to return\n    /// - Returns: The received string\n    public func testCallString(\n        x: String?,\n        completion: @escaping (Result<TestString, Swift.Error>) -> Void\n    ) throws {\n        let query = TestCallString(\n            x: x\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the received string; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: String to return\n    /// - Returns: The received string\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func testCallString(x: String?) async throws -> TestString {\n        let query = TestCallString(\n            x: x\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the received bytes; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Bytes to return\n    /// - Returns: The received bytes\n    public func testCallBytes(\n        x: Data?,\n        completion: @escaping (Result<TestBytes, Swift.Error>) -> Void\n    ) throws {\n        let query = TestCallBytes(\n            x: x\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the received bytes; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Bytes to return\n    /// - Returns: The received bytes\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func testCallBytes(x: Data?) async throws -> TestBytes {\n        let query = TestCallBytes(\n            x: x\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the received vector of numbers; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Vector of numbers to return\n    /// - Returns: The received vector of numbers\n    public func testCallVectorInt(\n        x: [Int]?,\n        completion: @escaping (Result<TestVectorInt, Swift.Error>) -> Void\n    ) throws {\n        let query = TestCallVectorInt(\n            x: x\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the received vector of numbers; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Vector of numbers to return\n    /// - Returns: The received vector of numbers\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func testCallVectorInt(x: [Int]?) async throws -> TestVectorInt {\n        let query = TestCallVectorInt(\n            x: x\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the received vector of objects containing a number; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Vector of objects to return\n    /// - Returns: The received vector of objects containing a number\n    public func testCallVectorIntObject(\n        x: [TestInt]?,\n        completion: @escaping (Result<TestVectorIntObject, Swift.Error>) -> Void\n    ) throws {\n        let query = TestCallVectorIntObject(\n            x: x\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the received vector of objects containing a number; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Vector of objects to return\n    /// - Returns: The received vector of objects containing a number\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func testCallVectorIntObject(x: [TestInt]?) async throws -> TestVectorIntObject {\n        let query = TestCallVectorIntObject(\n            x: x\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the received vector of strings; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Vector of strings to return\n    /// - Returns: The received vector of strings\n    public func testCallVectorString(\n        x: [String]?,\n        completion: @escaping (Result<TestVectorString, Swift.Error>) -> Void\n    ) throws {\n        let query = TestCallVectorString(\n            x: x\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the received vector of strings; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Vector of strings to return\n    /// - Returns: The received vector of strings\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func testCallVectorString(x: [String]?) async throws -> TestVectorString {\n        let query = TestCallVectorString(\n            x: x\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the received vector of objects containing a string; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Vector of objects to return\n    /// - Returns: The received vector of objects containing a string\n    public func testCallVectorStringObject(\n        x: [TestString]?,\n        completion: @escaping (Result<TestVectorStringObject, Swift.Error>) -> Void\n    ) throws {\n        let query = TestCallVectorStringObject(\n            x: x\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the received vector of objects containing a string; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Vector of objects to return\n    /// - Returns: The received vector of objects containing a string\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func testCallVectorStringObject(x: [TestString]?) async throws -> TestVectorStringObject {\n        let query = TestCallVectorStringObject(\n            x: x\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the squared received number; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Number to square\n    /// - Returns: The squared received number\n    public func testSquareInt(\n        x: Int?,\n        completion: @escaping (Result<TestInt, Swift.Error>) -> Void\n    ) throws {\n        let query = TestSquareInt(\n            x: x\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the squared received number; for testing only. This is an offline method. Can be called before authorization\n    /// - Parameter x: Number to square\n    /// - Returns: The squared received number\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func testSquareInt(x: Int?) async throws -> TestInt {\n        let query = TestSquareInt(\n            x: x\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Sends a simple network request to the Telegram servers; for testing only. Can be called before authorization\n    public func testNetwork(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = TestNetwork()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends a simple network request to the Telegram servers; for testing only. Can be called before authorization\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func testNetwork() async throws -> Ok {\n        let query = TestNetwork()\n        return try await self.execute(query: query)\n    }\n\n    /// Sends a simple network request to the Telegram servers via proxy; for testing only. Can be called before authorization\n    /// - Parameter dcId: Identifier of a datacenter with which to test connection\n    /// - Parameter proxy: The proxy to test\n    /// - Parameter timeout: The maximum overall timeout for the request\n    public func testProxy(\n        dcId: Int?,\n        proxy: Proxy?,\n        timeout: Double?,\n        completion: @escaping (Result<Ok, Swift.Error>) -> Void\n    ) throws {\n        let query = TestProxy(\n            dcId: dcId,\n            proxy: proxy,\n            timeout: timeout\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Sends a simple network request to the Telegram servers via proxy; for testing only. Can be called before authorization\n    /// - Parameter dcId: Identifier of a datacenter with which to test connection\n    /// - Parameter proxy: The proxy to test\n    /// - Parameter timeout: The maximum overall timeout for the request\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func testProxy(\n        dcId: Int?,\n        proxy: Proxy?,\n        timeout: Double?\n    ) async throws -> Ok {\n        let query = TestProxy(\n            dcId: dcId,\n            proxy: proxy,\n            timeout: timeout\n        )\n        return try await self.execute(query: query)\n    }\n\n    /// Forces an updates.getDifference call to the Telegram servers; for testing only\n    public func testGetDifference(completion: @escaping (Result<Ok, Swift.Error>) -> Void) throws {\n        let query = TestGetDifference()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Forces an updates.getDifference call to the Telegram servers; for testing only\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    @discardableResult\n    public func testGetDifference() async throws -> Ok {\n        let query = TestGetDifference()\n        return try await self.execute(query: query)\n    }\n\n    /// Does nothing and ensures that the Update object is used; for testing only. This is an offline method. Can be called before authorization\n    public func testUseUpdate(completion: @escaping (Result<Update, Swift.Error>) -> Void) throws {\n        let query = TestUseUpdate()\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Does nothing and ensures that the Update object is used; for testing only. This is an offline method. Can be called before authorization\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func testUseUpdate() async throws -> Update {\n        let query = TestUseUpdate()\n        return try await self.execute(query: query)\n    }\n\n    /// Returns the specified error and ensures that the Error object is used; for testing only. Can be called synchronously\n    /// - Parameter error: The error to be returned\n    /// - Returns: The specified error and ensures that the Error object is used\n    public func testReturnError(\n        error: Error?,\n        completion: @escaping (Result<Error, Swift.Error>) -> Void\n    ) throws {\n        let query = TestReturnError(\n            error: error\n        )\n        self.execute(query: query, completion: completion)\n    }\n\n    /// Returns the specified error and ensures that the Error object is used; for testing only. Can be called synchronously\n    /// - Parameter error: The error to be returned\n    /// - Returns: The specified error and ensures that the Error object is used\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    public func testReturnError(error: Error?) async throws -> Error {\n        let query = TestReturnError(\n            error: error\n        )\n        return try await self.execute(query: query)\n    }\n\n\n    private func execute<Q, R>(\n        query: Q,\n        completion: @escaping (Result<R, Swift.Error>) -> Void)\n        where Q: Codable, R: Codable {\n\n        let dto = DTO(query, encoder: self.encoder)\n        do {\n            try client.send(query: dto) { [weak self] result in\n                guard let strongSelf = self else { return }\n                if let error = try? strongSelf.decoder.decode(DTO<Error>.self, from: result) {\n                    completion(.failure(error.payload))\n                } else {\n                    let response = strongSelf.decoder.tryDecode(DTO<R>.self, from: result)\n                    completion(response.map { $0.payload })\n                }\n            }\n        } catch let err as Error {\n            completion( .failure(err))\n        } catch let any {\n            let err = Error(code: 500, message: any.localizedDescription)\n            completion( .failure(err))\n        }\n    }\n\n\n    @available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\n    private func execute<Q, R>(query: Q) async throws -> R where Q: Codable, R: Codable {\n        let dto = DTO(query, encoder: self.encoder)\n        return try await withCheckedThrowingContinuation { continuation in\n            do {\n                try client.send(query: dto) { result in\n                    if let error = try? self.decoder.decode(DTO<Error>.self, from: result) {\n                        continuation.resume(with: .failure(error.payload))\n                    } else {\n                        let response = self.decoder.tryDecode(DTO<R>.self, from: result)\n                        continuation.resume(with: response.map { $0.payload })\n                    }\n                }\n            } catch let err as Error {\n                continuation.resume(with: .failure(err))\n            } catch let any {\n                let err = Error(code: 500, message: any.localizedDescription)\n                continuation.resume(with: .failure(err))\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/API/TdClient.swift",
    "content": "//\n//  TdClient.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Basic protocol for communicate with TdLib.\npublic protocol TdClient {\n\n    /// Receives incoming updates and request responses from the TDLib client\n    func run(updateHandler: @escaping (Data) -> Void)\n\n    /// Sends request to the TDLib client.\n    func send(query: TdQuery, completion: ((Data) -> Void)?) throws\n\n    /// Synchronously executes TDLib request. Only a few requests can be executed synchronously.\n    func execute(query: TdQuery) throws -> [String:Any]?\n\n    /// Close connection with TDLib.\n    func close()\n\n}\n\n\npublic protocol TdQuery {\n\n    func make(with extra: String?) throws -> Data\n\n}\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AccentColor.swift",
    "content": "//\n//  AccentColor.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about supported accent color for user/chat name, background of empty chat photo, replies to messages and link previews\npublic struct AccentColor: Codable, Equatable, Hashable, Identifiable {\n\n    /// Identifier of a built-in color to use in places, where only one color is needed; 0-6\n    public let builtInAccentColorId: Int\n\n    /// The list of 1-3 colors in RGB format, describing the accent color, as expected to be shown in dark themes\n    public let darkThemeColors: [Int]\n\n    /// Accent color identifier\n    public let id: Int\n\n    /// The list of 1-3 colors in RGB format, describing the accent color, as expected to be shown in light themes\n    public let lightThemeColors: [Int]\n\n    /// The minimum chat boost level required to use the color in a channel chat\n    public let minChannelChatBoostLevel: Int\n\n\n    public init(\n        builtInAccentColorId: Int,\n        darkThemeColors: [Int],\n        id: Int,\n        lightThemeColors: [Int],\n        minChannelChatBoostLevel: Int\n    ) {\n        self.builtInAccentColorId = builtInAccentColorId\n        self.darkThemeColors = darkThemeColors\n        self.id = id\n        self.lightThemeColors = lightThemeColors\n        self.minChannelChatBoostLevel = minChannelChatBoostLevel\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AcceptCall.swift",
    "content": "//\n//  AcceptCall.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Accepts an incoming call\npublic struct AcceptCall: Codable, Equatable, Hashable {\n\n    /// Call identifier\n    public let callId: Int?\n\n    /// The call protocols supported by the application\n    public let `protocol`: CallProtocol?\n\n\n    public init(\n        callId: Int?,\n        `protocol`: CallProtocol?\n    ) {\n        self.callId = callId\n        self.`protocol` = `protocol`\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AcceptOauthRequest.swift",
    "content": "//\n//  AcceptOauthRequest.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Accepts an OAuth authorization request. Returns an HTTP URL to open after successful authorization. May return an empty link if just a toast about successful login has to be shown\npublic struct AcceptOauthRequest: Codable, Equatable, Hashable {\n\n    /// Pass true if the current user allowed the bot that was returned in getOauthLinkInfo, to access their phone number\n    public let allowPhoneNumberAccess: Bool?\n\n    /// Pass true if the current user allowed the bot that was returned in getOauthLinkInfo, to send them messages\n    public let allowWriteAccess: Bool?\n\n    /// The matching code chosen by the user\n    public let matchCode: String?\n\n    /// URL of the OAuth deep link\n    public let url: String?\n\n\n    public init(\n        allowPhoneNumberAccess: Bool?,\n        allowWriteAccess: Bool?,\n        matchCode: String?,\n        url: String?\n    ) {\n        self.allowPhoneNumberAccess = allowPhoneNumberAccess\n        self.allowWriteAccess = allowWriteAccess\n        self.matchCode = matchCode\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AcceptTermsOfService.swift",
    "content": "//\n//  AcceptTermsOfService.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Accepts Telegram terms of services\npublic struct AcceptTermsOfService: Codable, Equatable, Hashable {\n\n    /// Terms of service identifier\n    public let termsOfServiceId: String?\n\n\n    public init(termsOfServiceId: String?) {\n        self.termsOfServiceId = termsOfServiceId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AcceptedGiftTypes.swift",
    "content": "//\n//  AcceptedGiftTypes.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes gift types that are accepted by a user\npublic struct AcceptedGiftTypes: Codable, Equatable, Hashable {\n\n    /// True, if gifts from channels are accepted subject to other restrictions\n    public let giftsFromChannels: Bool\n\n    /// True, if limited regular gifts are accepted\n    public let limitedGifts: Bool\n\n    /// True, if Telegram Premium subscription is accepted\n    public let premiumSubscription: Bool\n\n    /// True, if unlimited regular gifts are accepted\n    public let unlimitedGifts: Bool\n\n    /// True, if upgraded gifts and regular gifts that can be upgraded for free are accepted\n    public let upgradedGifts: Bool\n\n\n    public init(\n        giftsFromChannels: Bool,\n        limitedGifts: Bool,\n        premiumSubscription: Bool,\n        unlimitedGifts: Bool,\n        upgradedGifts: Bool\n    ) {\n        self.giftsFromChannels = giftsFromChannels\n        self.limitedGifts = limitedGifts\n        self.premiumSubscription = premiumSubscription\n        self.unlimitedGifts = unlimitedGifts\n        self.upgradedGifts = upgradedGifts\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AccountInfo.swift",
    "content": "//\n//  AccountInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains basic information about another user who started a chat with the current user\npublic struct AccountInfo: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the user changed name last time; 0 if unknown\n    public let lastNameChangeDate: Int\n\n    /// Point in time (Unix timestamp) when the user changed photo last time; 0 if unknown\n    public let lastPhotoChangeDate: Int\n\n    /// A two-letter ISO 3166-1 alpha-2 country code based on the phone number of the user; may be empty if unknown\n    public let phoneNumberCountryCode: String\n\n    /// Month when the user was registered in Telegram; 0-12; may be 0 if unknown\n    public let registrationMonth: Int\n\n    /// Year when the user was registered in Telegram; 0-9999; may be 0 if unknown\n    public let registrationYear: Int\n\n\n    public init(\n        lastNameChangeDate: Int,\n        lastPhotoChangeDate: Int,\n        phoneNumberCountryCode: String,\n        registrationMonth: Int,\n        registrationYear: Int\n    ) {\n        self.lastNameChangeDate = lastNameChangeDate\n        self.lastPhotoChangeDate = lastPhotoChangeDate\n        self.phoneNumberCountryCode = phoneNumberCountryCode\n        self.registrationMonth = registrationMonth\n        self.registrationYear = registrationYear\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AccountTtl.swift",
    "content": "//\n//  AccountTtl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about the period of inactivity after which the current user's account will automatically be deleted\npublic struct AccountTtl: Codable, Equatable, Hashable {\n\n    /// Number of days of inactivity before the account will be flagged for deletion; 30-730 days\n    public let days: Int\n\n\n    public init(days: Int) {\n        self.days = days\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ActivateStoryStealthMode.swift",
    "content": "//\n//  ActivateStoryStealthMode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Activates stealth mode for stories, which hides all views of stories from the current user in the last \"story_stealth_mode_past_period\" seconds and for the next \"story_stealth_mode_future_period\" seconds; for Telegram Premium users only\npublic struct ActivateStoryStealthMode: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ActiveStoryState.swift",
    "content": "//\n//  ActiveStoryState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes state of active stories posted by a chat\npublic indirect enum ActiveStoryState: Codable, Equatable, Hashable {\n\n    /// The chat has an active live story\n    case activeStoryStateLive(ActiveStoryStateLive)\n\n    /// The chat has some unread active stories\n    case activeStoryStateUnread\n\n    /// The chat has active stories, all of which were read\n    case activeStoryStateRead\n\n\n    private enum Kind: String, Codable {\n        case activeStoryStateLive\n        case activeStoryStateUnread\n        case activeStoryStateRead\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .activeStoryStateLive:\n            let value = try ActiveStoryStateLive(from: decoder)\n            self = .activeStoryStateLive(value)\n        case .activeStoryStateUnread:\n            self = .activeStoryStateUnread\n        case .activeStoryStateRead:\n            self = .activeStoryStateRead\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .activeStoryStateLive(let value):\n            try container.encode(Kind.activeStoryStateLive, forKey: .type)\n            try value.encode(to: encoder)\n        case .activeStoryStateUnread:\n            try container.encode(Kind.activeStoryStateUnread, forKey: .type)\n        case .activeStoryStateRead:\n            try container.encode(Kind.activeStoryStateRead, forKey: .type)\n        }\n    }\n}\n\n/// The chat has an active live story\npublic struct ActiveStoryStateLive: Codable, Equatable, Hashable {\n\n    /// Identifier of the active live story\n    public let storyId: Int\n\n\n    public init(storyId: Int) {\n        self.storyId = storyId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddBotMediaPreview.swift",
    "content": "//\n//  AddBotMediaPreview.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds a new media preview to the beginning of the list of media previews of a bot. Returns the added preview after addition is completed server-side. The total number of previews must not exceed getOption(\"bot_media_preview_count_max\") for the given language\npublic struct AddBotMediaPreview: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot. The bot must be owned and must have the main Web App\n    public let botUserId: Int64?\n\n    /// Content of the added preview\n    public let content: InputStoryContent?\n\n    /// A two-letter ISO 639-1 language code for which preview is added. If empty, then the preview will be shown to all users for whose languages there are no dedicated previews. If non-empty, then there must be an official language pack of the same name, which is returned by getLocalizationTargetInfo\n    public let languageCode: String?\n\n\n    public init(\n        botUserId: Int64?,\n        content: InputStoryContent?,\n        languageCode: String?\n    ) {\n        self.botUserId = botUserId\n        self.content = content\n        self.languageCode = languageCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddChatFolderByInviteLink.swift",
    "content": "//\n//  AddChatFolderByInviteLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds a chat folder by an invite link\npublic struct AddChatFolderByInviteLink: Codable, Equatable, Hashable {\n\n    /// Identifiers of the chats added to the chat folder. The chats are automatically joined if they aren't joined yet\n    public let chatIds: [Int64]?\n\n    /// Invite link for the chat folder\n    public let inviteLink: String?\n\n\n    public init(\n        chatIds: [Int64]?,\n        inviteLink: String?\n    ) {\n        self.chatIds = chatIds\n        self.inviteLink = inviteLink\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddChatMember.swift",
    "content": "//\n//  AddChatMember.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds a new member to a chat; requires can_invite_users member right. Members can't be added to private or secret chats. Returns information about members that weren't added\npublic struct AddChatMember: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// The number of earlier messages from the chat to be forwarded to the new member; up to 100. Ignored for supergroups and channels, or if the added user is a bot\n    public let forwardLimit: Int?\n\n    /// Identifier of the user\n    public let userId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        forwardLimit: Int?,\n        userId: Int64?\n    ) {\n        self.chatId = chatId\n        self.forwardLimit = forwardLimit\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddChatMembers.swift",
    "content": "//\n//  AddChatMembers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds multiple new members to a chat; requires can_invite_users member right. Currently, this method is only available for supergroups and channels. This method can't be used to join a chat. Members can't be added to a channel if it has more than 200 members. Returns information about members that weren't added\npublic struct AddChatMembers: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Identifiers of the users to be added to the chat. The maximum number of added users is 20 for supergroups and 100 for channels\n    public let userIds: [Int64]?\n\n\n    public init(\n        chatId: Int64?,\n        userIds: [Int64]?\n    ) {\n        self.chatId = chatId\n        self.userIds = userIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddChatToList.swift",
    "content": "//\n//  AddChatToList.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds a chat to a chat list. A chat can't be simultaneously in Main and Archive chat lists, so it is automatically removed from another one if needed\npublic struct AddChatToList: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// The chat list. Use getChatListsToAddChat to get suitable chat lists\n    public let chatList: ChatList?\n\n\n    public init(\n        chatId: Int64?,\n        chatList: ChatList?\n    ) {\n        self.chatId = chatId\n        self.chatList = chatList\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddChecklistTasks.swift",
    "content": "//\n//  AddChecklistTasks.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds tasks to a checklist in a message\npublic struct AddChecklistTasks: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat with the message\n    public let chatId: Int64?\n\n    /// Identifier of the message containing the checklist. Use messageProperties.can_add_tasks to check whether the tasks can be added\n    public let messageId: Int64?\n\n    /// List of added tasks\n    public let tasks: [InputChecklistTask]?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        tasks: [InputChecklistTask]?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.tasks = tasks\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddContact.swift",
    "content": "//\n//  AddContact.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds a user to the contact list or edits an existing contact by their user identifier\npublic struct AddContact: Codable, Equatable, Hashable {\n\n    /// The contact to add or edit; phone number may be empty and needs to be specified only if known\n    public let contact: ImportedContact?\n\n    /// Pass true to share the current user's phone number with the new contact. A corresponding rule to userPrivacySettingShowPhoneNumber will be added if needed. Use the field userFullInfo.need_phone_number_privacy_exception to check whether the current user needs to be asked to share their phone number\n    public let sharePhoneNumber: Bool?\n\n    /// Identifier of the user\n    public let userId: Int64?\n\n\n    public init(\n        contact: ImportedContact?,\n        sharePhoneNumber: Bool?,\n        userId: Int64?\n    ) {\n        self.contact = contact\n        self.sharePhoneNumber = sharePhoneNumber\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddCustomServerLanguagePack.swift",
    "content": "//\n//  AddCustomServerLanguagePack.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds a custom server language pack to the list of installed language packs in current localization target. Can be called before authorization\npublic struct AddCustomServerLanguagePack: Codable, Equatable, Hashable {\n\n    /// Identifier of a language pack to be added\n    public let languagePackId: String?\n\n\n    public init(languagePackId: String?) {\n        self.languagePackId = languagePackId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddFavoriteSticker.swift",
    "content": "//\n//  AddFavoriteSticker.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds a new sticker to the list of favorite stickers. The new sticker is added to the top of the list. If the sticker was already in the list, it is removed from the list first. Only stickers belonging to a sticker set or in WEBP or WEBM format can be added to this list. Emoji stickers can't be added to favorite stickers\npublic struct AddFavoriteSticker: Codable, Equatable, Hashable {\n\n    /// Sticker file to add\n    public let sticker: InputFile?\n\n\n    public init(sticker: InputFile?) {\n        self.sticker = sticker\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddFileToDownloads.swift",
    "content": "//\n//  AddFileToDownloads.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds a file from a message to the list of file downloads. Download progress and completion of the download will be notified through updateFile updates. If message database is used, the list of file downloads is persistent across application restarts. The downloading is independent of download using downloadFile, i.e. it continues if downloadFile is canceled or is used to download a part of the file\npublic struct AddFileToDownloads: Codable, Equatable, Hashable {\n\n    /// Chat identifier of the message with the file\n    public let chatId: Int64?\n\n    /// Identifier of the file to download\n    public let fileId: Int?\n\n    /// Message identifier\n    public let messageId: Int64?\n\n    /// Priority of the download (1-32). The higher the priority, the earlier the file will be downloaded. If the priorities of two files are equal, then the last one for which downloadFile/addFileToDownloads was called will be downloaded first\n    public let priority: Int?\n\n\n    public init(\n        chatId: Int64?,\n        fileId: Int?,\n        messageId: Int64?,\n        priority: Int?\n    ) {\n        self.chatId = chatId\n        self.fileId = fileId\n        self.messageId = messageId\n        self.priority = priority\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddGiftCollectionGifts.swift",
    "content": "//\n//  AddGiftCollectionGifts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds gifts to the beginning of a previously created collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat. Returns the changed collection\npublic struct AddGiftCollectionGifts: Codable, Equatable, Hashable {\n\n    /// Identifier of the gift collection\n    public let collectionId: Int?\n\n    /// Identifier of the user or the channel chat that owns the collection\n    public let ownerId: MessageSender?\n\n    /// Identifier of the gifts to add to the collection; 1-getOption(\"gift_collection_size_max\") identifiers. If after addition the collection has more than getOption(\"gift_collection_size_max\") gifts, then the last one are removed from the collection\n    public let receivedGiftIds: [String]?\n\n\n    public init(\n        collectionId: Int?,\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?\n    ) {\n        self.collectionId = collectionId\n        self.ownerId = ownerId\n        self.receivedGiftIds = receivedGiftIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddLocalMessage.swift",
    "content": "//\n//  AddLocalMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds a local message to a chat. The message is persistent across application restarts only if the message database is used. Returns the added message\npublic struct AddLocalMessage: Codable, Equatable, Hashable {\n\n    /// Target chat; channel direct messages chats aren't supported\n    public let chatId: Int64?\n\n    /// Pass true to disable notification for the message\n    public let disableNotification: Bool?\n\n    /// The content of the message to be added\n    public let inputMessageContent: InputMessageContent?\n\n    /// Information about the message or story to be replied; pass null if none\n    public let replyTo: InputMessageReplyTo?\n\n    /// Identifier of the sender of the message\n    public let senderId: MessageSender?\n\n\n    public init(\n        chatId: Int64?,\n        disableNotification: Bool?,\n        inputMessageContent: InputMessageContent?,\n        replyTo: InputMessageReplyTo?,\n        senderId: MessageSender?\n    ) {\n        self.chatId = chatId\n        self.disableNotification = disableNotification\n        self.inputMessageContent = inputMessageContent\n        self.replyTo = replyTo\n        self.senderId = senderId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddLogMessage.swift",
    "content": "//\n//  AddLogMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds a message to TDLib internal log. Can be called synchronously\npublic struct AddLogMessage: Codable, Equatable, Hashable {\n\n    /// Text of a message to log\n    public let text: String?\n\n    /// The minimum verbosity level needed for the message to be logged; 0-1023\n    public let verbosityLevel: Int?\n\n\n    public init(\n        text: String?,\n        verbosityLevel: Int?\n    ) {\n        self.text = text\n        self.verbosityLevel = verbosityLevel\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddLoginPasskey.swift",
    "content": "//\n//  AddLoginPasskey.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds a passkey allowed to be used for the login by the current user and returns the added passkey. Call getPasskeyParameters to get parameters for creating of the passkey\npublic struct AddLoginPasskey: Codable, Equatable, Hashable {\n\n    /// Passkey attestation object\n    public let attestationObject: Data?\n\n    /// JSON-encoded client data\n    public let clientData: String?\n\n\n    public init(\n        attestationObject: Data?,\n        clientData: String?\n    ) {\n        self.attestationObject = attestationObject\n        self.clientData = clientData\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddMessageReaction.swift",
    "content": "//\n//  AddMessageReaction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds a reaction or a tag to a message. Use getMessageAvailableReactions to receive the list of available reactions for the message\npublic struct AddMessageReaction: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the message belongs\n    public let chatId: Int64?\n\n    /// Pass true if the reaction is added with a big animation\n    public let isBig: Bool?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n    /// Type of the reaction to add. Use addPendingPaidMessageReaction instead to add the paid reaction\n    public let reactionType: ReactionType?\n\n    /// Pass true if the reaction needs to be added to recent reactions; tags are never added to the list of recent reactions\n    public let updateRecentReactions: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        isBig: Bool?,\n        messageId: Int64?,\n        reactionType: ReactionType?,\n        updateRecentReactions: Bool?\n    ) {\n        self.chatId = chatId\n        self.isBig = isBig\n        self.messageId = messageId\n        self.reactionType = reactionType\n        self.updateRecentReactions = updateRecentReactions\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddNetworkStatistics.swift",
    "content": "//\n//  AddNetworkStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds the specified data to data usage statistics. Can be called before authorization\npublic struct AddNetworkStatistics: Codable, Equatable, Hashable {\n\n    /// The network statistics entry with the data to be added to statistics\n    public let entry: NetworkStatisticsEntry?\n\n\n    public init(entry: NetworkStatisticsEntry?) {\n        self.entry = entry\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddOffer.swift",
    "content": "//\n//  AddOffer.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends a suggested post based on a previously sent message in a channel direct messages chat. Can be also used to suggest price or time change for an existing suggested post. Returns the sent message\npublic struct AddOffer: Codable, Equatable, Hashable {\n\n    /// Identifier of the channel direct messages chat\n    public let chatId: Int64?\n\n    /// Identifier of the message in the chat which will be sent as suggested post. Use messageProperties.can_add_offer to check whether an offer can be added or messageProperties.can_edit_suggested_post_info to check whether price or time of sending of the post can be changed\n    public let messageId: Int64?\n\n    /// Options to be used to send the message. New information about the suggested post must always be specified\n    public let options: MessageSendOptions?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        options: MessageSendOptions?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.options = options\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddPaidMessageReaction.swift",
    "content": "//\n//  AddPaidMessageReaction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.35-9b6ff586\n//  https://github.com/tdlib/td/tree/9b6ff586\n//\n\nimport Foundation\n\n\n/// Adds the paid message reaction to a message. Use getMessageAvailableReactions to receive the list of available reactions for the message\npublic struct AddPaidMessageReaction: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the message belongs\n    public let chatId: Int64?\n\n    /// Pass true to make paid reaction of the user on the message anonymous; pass false to make the user's profile visible among top reactors\n    public let isAnonymous: Bool?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n    /// Number of Telegram Stars to be used for the reaction; 1-getOption(\"paid_reaction_star_count_max\")\n    public let starCount: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        isAnonymous: Bool?,\n        messageId: Int64?,\n        starCount: Int64?\n    ) {\n        self.chatId = chatId\n        self.isAnonymous = isAnonymous\n        self.messageId = messageId\n        self.starCount = starCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddPendingLiveStoryReaction.swift",
    "content": "//\n//  AddPendingLiveStoryReaction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds pending paid reaction in a live story group call. Can't be used in live stories posted by the current user. Call commitPendingLiveStoryReactions or removePendingLiveStoryReactions to actually send all pending reactions when the undo timer is over or abort the sending\npublic struct AddPendingLiveStoryReaction: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// Number of Telegram Stars to be used for the reaction. The total number of pending paid reactions must not exceed getOption(\"paid_group_call_message_star_count_max\")\n    public let starCount: Int64?\n\n\n    public init(\n        groupCallId: Int?,\n        starCount: Int64?\n    ) {\n        self.groupCallId = groupCallId\n        self.starCount = starCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddPendingPaidMessageReaction.swift",
    "content": "//\n//  AddPendingPaidMessageReaction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds the paid message reaction to a message. Use getMessageAvailableReactions to check whether the reaction is available for the message\npublic struct AddPendingPaidMessageReaction: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the message belongs\n    public let chatId: Int64?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n    /// Number of Telegram Stars to be used for the reaction. The total number of pending paid reactions must not exceed getOption(\"paid_reaction_star_count_max\")\n    public let starCount: Int64?\n\n    /// Type of the paid reaction; pass null if the user didn't choose reaction type explicitly, for example, the reaction is set from the message bubble\n    public let type: PaidReactionType?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        starCount: Int64?,\n        type: PaidReactionType?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.starCount = starCount\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddPollOption.swift",
    "content": "//\n//  AddPollOption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds an option to a poll\npublic struct AddPollOption: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the poll belongs\n    public let chatId: Int64?\n\n    /// Identifier of the message containing the poll. Use messagePoll.can_add_option to check whether an option can be added\n    public let messageId: Int64?\n\n    /// The new option\n    public let option: InputPollOption?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        option: InputPollOption?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.option = option\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddProfileAudio.swift",
    "content": "//\n//  AddProfileAudio.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds an audio file to the beginning of the profile audio files of the current user\npublic struct AddProfileAudio: Codable, Equatable, Hashable {\n\n    /// The audio file to be added\n    public let audio: InputFile?\n\n    /// Duration of the audio, in seconds; may be replaced by the server; ignored for already uploaded files\n    public let duration: Int?\n\n    /// Performer of the audio; 0-64 characters, may be replaced by the server; ignored for already uploaded files\n    public let performer: String?\n\n    /// Title of the audio; 0-64 characters; may be replaced by the server; ignored for already uploaded files\n    public let title: String?\n\n\n    public init(\n        audio: InputFile?,\n        duration: Int?,\n        performer: String?,\n        title: String?\n    ) {\n        self.audio = audio\n        self.duration = duration\n        self.performer = performer\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddProxy.swift",
    "content": "//\n//  AddProxy.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds a proxy server for network requests. Can be called before authorization\npublic struct AddProxy: Codable, Equatable, Hashable {\n\n    /// Comment to set for the proxy\n    public let comment: String?\n\n    /// Pass true to immediately enable the proxy\n    public let enable: Bool?\n\n    /// The proxy to add\n    public let proxy: Proxy?\n\n\n    public init(\n        comment: String?,\n        enable: Bool?,\n        proxy: Proxy?\n    ) {\n        self.comment = comment\n        self.enable = enable\n        self.proxy = proxy\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddQuickReplyShortcutInlineQueryResultMessage.swift",
    "content": "//\n//  AddQuickReplyShortcutInlineQueryResultMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds a message to a quick reply shortcut via inline bot. If shortcut doesn't exist and there are less than getOption(\"quick_reply_shortcut_count_max\") shortcuts, then a new shortcut is created. The shortcut must not contain more than getOption(\"quick_reply_shortcut_message_count_max\") messages after adding the new message. Returns the added message\npublic struct AddQuickReplyShortcutInlineQueryResultMessage: Codable, Equatable, Hashable {\n\n    /// Pass true to hide the bot, via which the message is sent. Can be used only for bots getOption(\"animation_search_bot_username\"), getOption(\"photo_search_bot_username\"), and getOption(\"venue_search_bot_username\")\n    public let hideViaBot: Bool?\n\n    /// Identifier of the inline query\n    public let queryId: TdInt64?\n\n    /// Identifier of a quick reply message in the same shortcut to be replied; pass 0 if none\n    public let replyToMessageId: Int64?\n\n    /// Identifier of the inline query result\n    public let resultId: String?\n\n    /// Name of the target shortcut\n    public let shortcutName: String?\n\n\n    public init(\n        hideViaBot: Bool?,\n        queryId: TdInt64?,\n        replyToMessageId: Int64?,\n        resultId: String?,\n        shortcutName: String?\n    ) {\n        self.hideViaBot = hideViaBot\n        self.queryId = queryId\n        self.replyToMessageId = replyToMessageId\n        self.resultId = resultId\n        self.shortcutName = shortcutName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddQuickReplyShortcutMessage.swift",
    "content": "//\n//  AddQuickReplyShortcutMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds a message to a quick reply shortcut. If shortcut doesn't exist and there are less than getOption(\"quick_reply_shortcut_count_max\") shortcuts, then a new shortcut is created. The shortcut must not contain more than getOption(\"quick_reply_shortcut_message_count_max\") messages after adding the new message. Returns the added message\npublic struct AddQuickReplyShortcutMessage: Codable, Equatable, Hashable {\n\n    /// The content of the message to be added; inputMessagePaidMedia, inputMessageForwarded and inputMessageLocation with live_period aren't supported\n    public let inputMessageContent: InputMessageContent?\n\n    /// Identifier of a quick reply message in the same shortcut to be replied; pass 0 if none\n    public let replyToMessageId: Int64?\n\n    /// Name of the target shortcut\n    public let shortcutName: String?\n\n\n    public init(\n        inputMessageContent: InputMessageContent?,\n        replyToMessageId: Int64?,\n        shortcutName: String?\n    ) {\n        self.inputMessageContent = inputMessageContent\n        self.replyToMessageId = replyToMessageId\n        self.shortcutName = shortcutName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddQuickReplyShortcutMessageAlbum.swift",
    "content": "//\n//  AddQuickReplyShortcutMessageAlbum.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds 2-10 messages grouped together into an album to a quick reply shortcut. Currently, only audio, document, photo and video messages can be grouped into an album. Documents and audio files can be only grouped in an album with messages of the same type. Returns sent messages\npublic struct AddQuickReplyShortcutMessageAlbum: Codable, Equatable, Hashable {\n\n    /// Contents of messages to be sent. At most 10 messages can be added to an album. All messages must have the same value of show_caption_above_media\n    public let inputMessageContents: [InputMessageContent]?\n\n    /// Identifier of a quick reply message in the same shortcut to be replied; pass 0 if none\n    public let replyToMessageId: Int64?\n\n    /// Name of the target shortcut\n    public let shortcutName: String?\n\n\n    public init(\n        inputMessageContents: [InputMessageContent]?,\n        replyToMessageId: Int64?,\n        shortcutName: String?\n    ) {\n        self.inputMessageContents = inputMessageContents\n        self.replyToMessageId = replyToMessageId\n        self.shortcutName = shortcutName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddRecentSticker.swift",
    "content": "//\n//  AddRecentSticker.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Manually adds a new sticker to the list of recently used stickers. The new sticker is added to the top of the list. If the sticker was already in the list, it is removed from the list first. Only stickers belonging to a sticker set or in WEBP or WEBM format can be added to this list. Emoji stickers can't be added to recent stickers\npublic struct AddRecentSticker: Codable, Equatable, Hashable {\n\n    /// Pass true to add the sticker to the list of stickers recently attached to photo or video files; pass false to add the sticker to the list of recently sent stickers\n    public let isAttached: Bool?\n\n    /// Sticker file to add\n    public let sticker: InputFile?\n\n\n    public init(\n        isAttached: Bool?,\n        sticker: InputFile?\n    ) {\n        self.isAttached = isAttached\n        self.sticker = sticker\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddRecentlyFoundChat.swift",
    "content": "//\n//  AddRecentlyFoundChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds a chat to the list of recently found chats. The chat is added to the beginning of the list. If the chat is already in the list, it will be removed from the list first\npublic struct AddRecentlyFoundChat: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to add\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddSavedAnimation.swift",
    "content": "//\n//  AddSavedAnimation.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Manually adds a new animation to the list of saved animations. The new animation is added to the beginning of the list. If the animation was already in the list, it is removed first. Only non-secret video animations with MIME type \"video/mp4\" can be added to the list\npublic struct AddSavedAnimation: Codable, Equatable, Hashable {\n\n    /// The animation file to be added. Only animations known to the server (i.e., successfully sent via a message) can be added to the list\n    public let animation: InputFile?\n\n\n    public init(animation: InputFile?) {\n        self.animation = animation\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddSavedNotificationSound.swift",
    "content": "//\n//  AddSavedNotificationSound.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds a new notification sound to the list of saved notification sounds. The new notification sound is added to the top of the list. If it is already in the list, its position isn't changed\npublic struct AddSavedNotificationSound: Codable, Equatable, Hashable {\n\n    /// Notification sound file to add\n    public let sound: InputFile?\n\n\n    public init(sound: InputFile?) {\n        self.sound = sound\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddStickerToSet.swift",
    "content": "//\n//  AddStickerToSet.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds a new sticker to a set\npublic struct AddStickerToSet: Codable, Equatable, Hashable {\n\n    /// Sticker set name. The sticker set must be owned by the current user, and contain less than 200 stickers for custom emoji sticker sets and less than 120 otherwise\n    public let name: String?\n\n    /// Sticker to add to the set\n    public let sticker: InputSticker?\n\n    /// Sticker set owner; ignored for regular users\n    public let userId: Int64?\n\n\n    public init(\n        name: String?,\n        sticker: InputSticker?,\n        userId: Int64?\n    ) {\n        self.name = name\n        self.sticker = sticker\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddStoryAlbumStories.swift",
    "content": "//\n//  AddStoryAlbumStories.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds stories to the beginning of a previously created story album. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat. Returns the changed album\npublic struct AddStoryAlbumStories: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat that owns the stories\n    public let chatId: Int64?\n\n    /// Identifier of the story album\n    public let storyAlbumId: Int?\n\n    /// Identifier of the stories to add to the album; 1-getOption(\"story_album_size_max\") identifiers. If after addition the album has more than getOption(\"story_album_size_max\") stories, then the last one are removed from the album\n    public let storyIds: [Int]?\n\n\n    public init(\n        chatId: Int64?,\n        storyAlbumId: Int?,\n        storyIds: [Int]?\n    ) {\n        self.chatId = chatId\n        self.storyAlbumId = storyAlbumId\n        self.storyIds = storyIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddTextCompositionStyle.swift",
    "content": "//\n//  AddTextCompositionStyle.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds a custom text composition style to the list of used by the user styles. May return an error with a message \"TONES_SAVED_TOO_MANY\" if the maximum number of added custom styles has been reached\npublic struct AddTextCompositionStyle: Codable, Equatable, Hashable {\n\n    /// Name of the style\n    public let name: String?\n\n\n    public init(name: String?) {\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddedProxies.swift",
    "content": "//\n//  AddedProxies.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of added proxy servers\npublic struct AddedProxies: Codable, Equatable, Hashable {\n\n    /// List of proxy servers\n    public let proxies: [AddedProxy]\n\n\n    public init(proxies: [AddedProxy]) {\n        self.proxies = proxies\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddedProxy.swift",
    "content": "//\n//  AddedProxy.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a proxy server added to the list of proxies\npublic struct AddedProxy: Codable, Equatable, Hashable, Identifiable {\n\n    /// Comment for the proxy added by the user\n    public let comment: String\n\n    /// Unique identifier of the proxy\n    public let id: Int\n\n    /// True, if the proxy is enabled now\n    public let isEnabled: Bool\n\n    /// Point in time (Unix timestamp) when the proxy was last used; 0 if never\n    public let lastUsedDate: Int\n\n    /// The proxy\n    public let proxy: Proxy\n\n\n    public init(\n        comment: String,\n        id: Int,\n        isEnabled: Bool,\n        lastUsedDate: Int,\n        proxy: Proxy\n    ) {\n        self.comment = comment\n        self.id = id\n        self.isEnabled = isEnabled\n        self.lastUsedDate = lastUsedDate\n        self.proxy = proxy\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddedReaction.swift",
    "content": "//\n//  AddedReaction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a reaction applied to a message\npublic struct AddedReaction: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the reaction was added\n    public let date: Int\n\n    /// True, if the reaction was added by the current user\n    public let isOutgoing: Bool\n\n    /// Identifier of the chat member, applied the reaction\n    public let senderId: MessageSender\n\n    /// Type of the reaction\n    public let type: ReactionType\n\n\n    public init(\n        date: Int,\n        isOutgoing: Bool,\n        senderId: MessageSender,\n        type: ReactionType\n    ) {\n        self.date = date\n        self.isOutgoing = isOutgoing\n        self.senderId = senderId\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AddedReactions.swift",
    "content": "//\n//  AddedReactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of reactions added to a message\npublic struct AddedReactions: Codable, Equatable, Hashable {\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// The list of added reactions\n    public let reactions: [AddedReaction]\n\n    /// The total number of found reactions\n    public let totalCount: Int\n\n\n    public init(\n        nextOffset: String,\n        reactions: [AddedReaction],\n        totalCount: Int\n    ) {\n        self.nextOffset = nextOffset\n        self.reactions = reactions\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Address.swift",
    "content": "//\n//  Address.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an address\npublic struct Address: Codable, Equatable, Hashable {\n\n    /// City\n    public let city: String\n\n    /// A two-letter ISO 3166-1 alpha-2 country code\n    public let countryCode: String\n\n    /// Address postal code\n    public let postalCode: String\n\n    /// State, if applicable\n    public let state: String\n\n    /// First line of the address\n    public let streetLine1: String\n\n    /// Second line of the address\n    public let streetLine2: String\n\n\n    public init(\n        city: String,\n        countryCode: String,\n        postalCode: String,\n        state: String,\n        streetLine1: String,\n        streetLine2: String\n    ) {\n        self.city = city\n        self.countryCode = countryCode\n        self.postalCode = postalCode\n        self.state = state\n        self.streetLine1 = streetLine1\n        self.streetLine2 = streetLine2\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AdvertisementSponsor.swift",
    "content": "//\n//  AdvertisementSponsor.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Information about the sponsor of an advertisement\npublic struct AdvertisementSponsor: Codable, Equatable, Hashable {\n\n    /// Additional optional information about the sponsor to be shown along with the advertisement\n    public let info: String\n\n    /// Photo of the sponsor; may be null if must not be shown\n    public let photo: Photo?\n\n    /// URL of the sponsor to be opened when the advertisement is clicked\n    public let url: String\n\n\n    public init(\n        info: String,\n        photo: Photo?,\n        url: String\n    ) {\n        self.info = info\n        self.photo = photo\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AffiliateInfo.swift",
    "content": "//\n//  AffiliateInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about an affiliate that received commission from a Telegram Star transaction\npublic struct AffiliateInfo: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat which received the commission\n    public let affiliateChatId: Int64\n\n    /// The number of Telegram Stars received by the affiliate for each 1000 Telegram Stars received by the program owner\n    public let commissionPerMille: Int\n\n    /// The Telegram Star amount that was received by the affiliate; can be negative for refunds\n    public let starAmount: StarAmount\n\n\n    public init(\n        affiliateChatId: Int64,\n        commissionPerMille: Int,\n        starAmount: StarAmount\n    ) {\n        self.affiliateChatId = affiliateChatId\n        self.commissionPerMille = commissionPerMille\n        self.starAmount = starAmount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AffiliateProgramInfo.swift",
    "content": "//\n//  AffiliateProgramInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about an active affiliate program\npublic struct AffiliateProgramInfo: Codable, Equatable, Hashable {\n\n    /// The amount of daily revenue per user in Telegram Stars of the bot that created the affiliate program\n    public let dailyRevenuePerUserAmount: StarAmount\n\n    /// Point in time (Unix timestamp) when the affiliate program will be closed; 0 if the affiliate program isn't scheduled to be closed. If positive, then the program can't be connected using connectAffiliateProgram, but active connections will work until the date\n    public let endDate: Int\n\n    /// Parameters of the affiliate program\n    public let parameters: AffiliateProgramParameters\n\n\n    public init(\n        dailyRevenuePerUserAmount: StarAmount,\n        endDate: Int,\n        parameters: AffiliateProgramParameters\n    ) {\n        self.dailyRevenuePerUserAmount = dailyRevenuePerUserAmount\n        self.endDate = endDate\n        self.parameters = parameters\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AffiliateProgramParameters.swift",
    "content": "//\n//  AffiliateProgramParameters.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes parameters of an affiliate program\npublic struct AffiliateProgramParameters: Codable, Equatable, Hashable {\n\n    /// The number of Telegram Stars received by the affiliate for each 1000 Telegram Stars received by the program owner; getOption(\"affiliate_program_commission_per_mille_min\")-getOption(\"affiliate_program_commission_per_mille_max\")\n    public let commissionPerMille: Int\n\n    /// Number of months the program will be active; 0-36. If 0, then the program is eternal\n    public let monthCount: Int\n\n\n    public init(\n        commissionPerMille: Int,\n        monthCount: Int\n    ) {\n        self.commissionPerMille = commissionPerMille\n        self.monthCount = monthCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AffiliateProgramSortOrder.swift",
    "content": "//\n//  AffiliateProgramSortOrder.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the order of the found affiliate programs\npublic indirect enum AffiliateProgramSortOrder: Codable, Equatable, Hashable {\n\n    /// The affiliate programs must be sorted by the profitability\n    case affiliateProgramSortOrderProfitability\n\n    /// The affiliate programs must be sorted by creation date\n    case affiliateProgramSortOrderCreationDate\n\n    /// The affiliate programs must be sorted by the expected revenue\n    case affiliateProgramSortOrderRevenue\n\n\n    private enum Kind: String, Codable {\n        case affiliateProgramSortOrderProfitability\n        case affiliateProgramSortOrderCreationDate\n        case affiliateProgramSortOrderRevenue\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .affiliateProgramSortOrderProfitability:\n            self = .affiliateProgramSortOrderProfitability\n        case .affiliateProgramSortOrderCreationDate:\n            self = .affiliateProgramSortOrderCreationDate\n        case .affiliateProgramSortOrderRevenue:\n            self = .affiliateProgramSortOrderRevenue\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .affiliateProgramSortOrderProfitability:\n            try container.encode(Kind.affiliateProgramSortOrderProfitability, forKey: .type)\n        case .affiliateProgramSortOrderCreationDate:\n            try container.encode(Kind.affiliateProgramSortOrderCreationDate, forKey: .type)\n        case .affiliateProgramSortOrderRevenue:\n            try container.encode(Kind.affiliateProgramSortOrderRevenue, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AffiliateType.swift",
    "content": "//\n//  AffiliateType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of affiliate for an affiliate program\npublic indirect enum AffiliateType: Codable, Equatable, Hashable {\n\n    /// The affiliate is the current user\n    case affiliateTypeCurrentUser\n\n    /// The affiliate is a bot owned by the current user\n    case affiliateTypeBot(AffiliateTypeBot)\n\n    /// The affiliate is a channel chat where the current user has can_post_messages administrator right\n    case affiliateTypeChannel(AffiliateTypeChannel)\n\n\n    private enum Kind: String, Codable {\n        case affiliateTypeCurrentUser\n        case affiliateTypeBot\n        case affiliateTypeChannel\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .affiliateTypeCurrentUser:\n            self = .affiliateTypeCurrentUser\n        case .affiliateTypeBot:\n            let value = try AffiliateTypeBot(from: decoder)\n            self = .affiliateTypeBot(value)\n        case .affiliateTypeChannel:\n            let value = try AffiliateTypeChannel(from: decoder)\n            self = .affiliateTypeChannel(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .affiliateTypeCurrentUser:\n            try container.encode(Kind.affiliateTypeCurrentUser, forKey: .type)\n        case .affiliateTypeBot(let value):\n            try container.encode(Kind.affiliateTypeBot, forKey: .type)\n            try value.encode(to: encoder)\n        case .affiliateTypeChannel(let value):\n            try container.encode(Kind.affiliateTypeChannel, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The affiliate is a bot owned by the current user\npublic struct AffiliateTypeBot: Codable, Equatable, Hashable {\n\n    /// User identifier of the bot\n    public let userId: Int64\n\n\n    public init(userId: Int64) {\n        self.userId = userId\n    }\n}\n\n/// The affiliate is a channel chat where the current user has can_post_messages administrator right\npublic struct AffiliateTypeChannel: Codable, Equatable, Hashable {\n\n    /// Identifier of the channel chat\n    public let chatId: Int64\n\n\n    public init(chatId: Int64) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AgeVerificationParameters.swift",
    "content": "//\n//  AgeVerificationParameters.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes parameters for age verification of the current user\npublic struct AgeVerificationParameters: Codable, Equatable, Hashable {\n\n    /// Unique name for the country or region, which legislation required age verification. May be used to get the corresponding localization key\n    public let country: String\n\n    /// The minimum age required to view restricted content\n    public let minAge: Int\n\n    /// Username of the bot which main Web App may be used to verify age of the user\n    public let verificationBotUsername: String\n\n\n    public init(\n        country: String,\n        minAge: Int,\n        verificationBotUsername: String\n    ) {\n        self.country = country\n        self.minAge = minAge\n        self.verificationBotUsername = verificationBotUsername\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AllowBotToSendMessages.swift",
    "content": "//\n//  AllowBotToSendMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Allows the specified bot to send messages to the user\npublic struct AllowBotToSendMessages: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot\n    public let botUserId: Int64?\n\n\n    public init(botUserId: Int64?) {\n        self.botUserId = botUserId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AllowUnpaidMessagesFromUser.swift",
    "content": "//\n//  AllowUnpaidMessagesFromUser.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Allows the specified user to send unpaid private messages to the current user by adding a rule to userPrivacySettingAllowUnpaidMessages\npublic struct AllowUnpaidMessagesFromUser: Codable, Equatable, Hashable {\n\n    /// Pass true to refund the user previously paid messages\n    public let refundPayments: Bool?\n\n    /// Identifier of the user\n    public let userId: Int64?\n\n\n    public init(\n        refundPayments: Bool?,\n        userId: Int64?\n    ) {\n        self.refundPayments = refundPayments\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AlternativeVideo.swift",
    "content": "//\n//  AlternativeVideo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an alternative re-encoded quality of a video file\npublic struct AlternativeVideo: Codable, Equatable, Hashable, Identifiable {\n\n    /// Codec used for video file encoding, for example, \"h264\", \"h265\", \"av1\", or \"av01\"\n    public let codec: String\n\n    /// Video height\n    public let height: Int\n\n    /// HLS file describing the video\n    public let hlsFile: File\n\n    /// Unique identifier of the alternative video, which is used in the HLS file\n    public let id: TdInt64\n\n    /// File containing the video\n    public let video: File\n\n    /// Video width\n    public let width: Int\n\n\n    public init(\n        codec: String,\n        height: Int,\n        hlsFile: File,\n        id: TdInt64,\n        video: File,\n        width: Int\n    ) {\n        self.codec = codec\n        self.height = height\n        self.hlsFile = hlsFile\n        self.id = id\n        self.video = video\n        self.width = width\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AnimatedChatPhoto.swift",
    "content": "//\n//  AnimatedChatPhoto.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Animated variant of a chat photo in MPEG4 format\npublic struct AnimatedChatPhoto: Codable, Equatable, Hashable {\n\n    /// Information about the animation file\n    public let file: File\n\n    /// Animation width and height\n    public let length: Int\n\n    /// Timestamp of the frame, used as a static chat photo\n    public let mainFrameTimestamp: Double\n\n\n    public init(\n        file: File,\n        length: Int,\n        mainFrameTimestamp: Double\n    ) {\n        self.file = file\n        self.length = length\n        self.mainFrameTimestamp = mainFrameTimestamp\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AnimatedEmoji.swift",
    "content": "//\n//  AnimatedEmoji.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an animated or custom representation of an emoji\npublic struct AnimatedEmoji: Codable, Equatable, Hashable {\n\n    /// Emoji modifier fitzpatrick type; 0-6; 0 if none\n    public let fitzpatrickType: Int\n\n    /// File containing the sound to be played when the sticker is clicked; may be null. The sound is encoded with the Opus codec, and stored inside an OGG container\n    public let sound: File?\n\n    /// Sticker for the emoji; may be null if yet unknown for a custom emoji. If the sticker is a custom emoji, then it can have arbitrary format\n    public let sticker: Sticker?\n\n    /// Expected height of the sticker, which can be used if the sticker is null\n    public let stickerHeight: Int\n\n    /// Expected width of the sticker, which can be used if the sticker is null\n    public let stickerWidth: Int\n\n\n    public init(\n        fitzpatrickType: Int,\n        sound: File?,\n        sticker: Sticker?,\n        stickerHeight: Int,\n        stickerWidth: Int\n    ) {\n        self.fitzpatrickType = fitzpatrickType\n        self.sound = sound\n        self.sticker = sticker\n        self.stickerHeight = stickerHeight\n        self.stickerWidth = stickerWidth\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Animation.swift",
    "content": "//\n//  Animation.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an animation file. The animation must be encoded in GIF or MPEG4 format\npublic struct Animation: Codable, Equatable, Hashable {\n\n    /// File containing the animation\n    public let animation: File\n\n    /// Duration of the animation, in seconds; as defined by the sender\n    public let duration: Int\n\n    /// Original name of the file; as defined by the sender\n    public let fileName: String\n\n    /// True, if stickers were added to the animation. The list of corresponding sticker set can be received using getAttachedStickerSets\n    public let hasStickers: Bool\n\n    /// Height of the animation\n    public let height: Int\n\n    /// MIME type of the file, usually \"image/gif\" or \"video/mp4\"\n    public let mimeType: String\n\n    /// Animation minithumbnail; may be null\n    public let minithumbnail: Minithumbnail?\n\n    /// Animation thumbnail in JPEG or MPEG4 format; may be null\n    public let thumbnail: Thumbnail?\n\n    /// Width of the animation\n    public let width: Int\n\n\n    public init(\n        animation: File,\n        duration: Int,\n        fileName: String,\n        hasStickers: Bool,\n        height: Int,\n        mimeType: String,\n        minithumbnail: Minithumbnail?,\n        thumbnail: Thumbnail?,\n        width: Int\n    ) {\n        self.animation = animation\n        self.duration = duration\n        self.fileName = fileName\n        self.hasStickers = hasStickers\n        self.height = height\n        self.mimeType = mimeType\n        self.minithumbnail = minithumbnail\n        self.thumbnail = thumbnail\n        self.width = width\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Animations.swift",
    "content": "//\n//  Animations.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of animations\npublic struct Animations: Codable, Equatable, Hashable {\n\n    /// List of animations\n    public let animations: [Animation]\n\n\n    public init(animations: [Animation]) {\n        self.animations = animations\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AnswerCallbackQuery.swift",
    "content": "//\n//  AnswerCallbackQuery.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets the result of a callback query; for bots only\npublic struct AnswerCallbackQuery: Codable, Equatable, Hashable {\n\n    /// Time during which the result of the query can be cached, in seconds\n    public let cacheTime: Int?\n\n    /// Identifier of the callback query\n    public let callbackQueryId: TdInt64?\n\n    /// Pass true to show an alert to the user instead of a toast notification\n    public let showAlert: Bool?\n\n    /// Text of the answer\n    public let text: String?\n\n    /// URL to be opened\n    public let url: String?\n\n\n    public init(\n        cacheTime: Int?,\n        callbackQueryId: TdInt64?,\n        showAlert: Bool?,\n        text: String?,\n        url: String?\n    ) {\n        self.cacheTime = cacheTime\n        self.callbackQueryId = callbackQueryId\n        self.showAlert = showAlert\n        self.text = text\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AnswerCustomQuery.swift",
    "content": "//\n//  AnswerCustomQuery.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Answers a custom query; for bots only\npublic struct AnswerCustomQuery: Codable, Equatable, Hashable {\n\n    /// Identifier of a custom query\n    public let customQueryId: TdInt64?\n\n    /// JSON-serialized answer to the query\n    public let data: String?\n\n\n    public init(\n        customQueryId: TdInt64?,\n        data: String?\n    ) {\n        self.customQueryId = customQueryId\n        self.data = data\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AnswerGuestQuery.swift",
    "content": "//\n//  AnswerGuestQuery.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets the result of a guest query; for bots only\npublic struct AnswerGuestQuery: Codable, Equatable, Hashable {\n\n    /// Identifier of the guest query\n    public let guestQueryId: TdInt64?\n\n    /// The result of the query\n    public let result: InputInlineQueryResult?\n\n\n    public init(\n        guestQueryId: TdInt64?,\n        result: InputInlineQueryResult?\n    ) {\n        self.guestQueryId = guestQueryId\n        self.result = result\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AnswerInlineQuery.swift",
    "content": "//\n//  AnswerInlineQuery.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets the result of an inline query; for bots only\npublic struct AnswerInlineQuery: Codable, Equatable, Hashable {\n\n    /// Button to be shown above inline query results; pass null if none\n    public let button: InlineQueryResultsButton?\n\n    /// Allowed time to cache the results of the query, in seconds\n    public let cacheTime: Int?\n\n    /// Identifier of the inline query\n    public let inlineQueryId: TdInt64?\n\n    /// Pass true if results may be cached and returned only for the user who sent the query. By default, results may be returned to any user who sends the same query\n    public let isPersonal: Bool?\n\n    /// Offset for the next inline query; pass an empty string if there are no more results\n    public let nextOffset: String?\n\n    /// The results of the query\n    public let results: [InputInlineQueryResult]?\n\n\n    public init(\n        button: InlineQueryResultsButton?,\n        cacheTime: Int?,\n        inlineQueryId: TdInt64?,\n        isPersonal: Bool?,\n        nextOffset: String?,\n        results: [InputInlineQueryResult]?\n    ) {\n        self.button = button\n        self.cacheTime = cacheTime\n        self.inlineQueryId = inlineQueryId\n        self.isPersonal = isPersonal\n        self.nextOffset = nextOffset\n        self.results = results\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AnswerPreCheckoutQuery.swift",
    "content": "//\n//  AnswerPreCheckoutQuery.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets the result of a pre-checkout query; for bots only\npublic struct AnswerPreCheckoutQuery: Codable, Equatable, Hashable {\n\n    /// An error message, empty on success\n    public let errorMessage: String?\n\n    /// Identifier of the pre-checkout query\n    public let preCheckoutQueryId: TdInt64?\n\n\n    public init(\n        errorMessage: String?,\n        preCheckoutQueryId: TdInt64?\n    ) {\n        self.errorMessage = errorMessage\n        self.preCheckoutQueryId = preCheckoutQueryId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AnswerShippingQuery.swift",
    "content": "//\n//  AnswerShippingQuery.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets the result of a shipping query; for bots only\npublic struct AnswerShippingQuery: Codable, Equatable, Hashable {\n\n    /// An error message, empty on success\n    public let errorMessage: String?\n\n    /// Available shipping options\n    public let shippingOptions: [ShippingOption]?\n\n    /// Identifier of the shipping query\n    public let shippingQueryId: TdInt64?\n\n\n    public init(\n        errorMessage: String?,\n        shippingOptions: [ShippingOption]?,\n        shippingQueryId: TdInt64?\n    ) {\n        self.errorMessage = errorMessage\n        self.shippingOptions = shippingOptions\n        self.shippingQueryId = shippingQueryId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AnswerWebAppQuery.swift",
    "content": "//\n//  AnswerWebAppQuery.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets the result of interaction with a Web App and sends corresponding message on behalf of the user to the chat from which the query originated; for bots only\npublic struct AnswerWebAppQuery: Codable, Equatable, Hashable {\n\n    /// The result of the query\n    public let result: InputInlineQueryResult?\n\n    /// Identifier of the Web App query\n    public let webAppQueryId: String?\n\n\n    public init(\n        result: InputInlineQueryResult?,\n        webAppQueryId: String?\n    ) {\n        self.result = result\n        self.webAppQueryId = webAppQueryId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ApplyPremiumGiftCode.swift",
    "content": "//\n//  ApplyPremiumGiftCode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Applies a Telegram Premium gift code\npublic struct ApplyPremiumGiftCode: Codable, Equatable, Hashable {\n\n    /// The code to apply\n    public let code: String?\n\n\n    public init(code: String?) {\n        self.code = code\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ApproveSuggestedPost.swift",
    "content": "//\n//  ApproveSuggestedPost.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Approves a suggested post in a channel direct messages chat\npublic struct ApproveSuggestedPost: Codable, Equatable, Hashable {\n\n    /// Chat identifier of the channel direct messages chat\n    public let chatId: Int64?\n\n    /// Identifier of the message with the suggested post. Use messageProperties.can_be_approved to check whether the suggested post can be approved\n    public let messageId: Int64?\n\n    /// Point in time (Unix timestamp) when the post is expected to be published; pass 0 if the date has already been chosen. If specified, then the date must be in the future, but at most getOption(\"suggested_post_send_delay_max\") seconds in the future\n    public let sendDate: Int?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        sendDate: Int?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.sendDate = sendDate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ArchiveChatListSettings.swift",
    "content": "//\n//  ArchiveChatListSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains settings for automatic moving of chats to and from the Archive chat lists\npublic struct ArchiveChatListSettings: Codable, Equatable, Hashable {\n\n    /// True, if new chats from non-contacts will be automatically archived and muted. Can be set to true only if the option \"can_archive_and_mute_new_chats_from_unknown_users\" is true\n    public let archiveAndMuteNewChatsFromUnknownUsers: Bool\n\n    /// True, if unmuted chats, that are always included or pinned in a folder, will be kept in the Archive chat list when they get a new message. Ignored if keep_unmuted_chats_archived == true\n    public let keepChatsFromFoldersArchived: Bool\n\n    /// True, if unmuted chats will be kept in the Archive chat list when they get a new message\n    public let keepUnmutedChatsArchived: Bool\n\n\n    public init(\n        archiveAndMuteNewChatsFromUnknownUsers: Bool,\n        keepChatsFromFoldersArchived: Bool,\n        keepUnmutedChatsArchived: Bool\n    ) {\n        self.archiveAndMuteNewChatsFromUnknownUsers = archiveAndMuteNewChatsFromUnknownUsers\n        self.keepChatsFromFoldersArchived = keepChatsFromFoldersArchived\n        self.keepUnmutedChatsArchived = keepUnmutedChatsArchived\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AssignAppStoreTransaction.swift",
    "content": "//\n//  AssignAppStoreTransaction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.46-b498497b\n//  https://github.com/tdlib/td/tree/b498497b\n//\n\nimport Foundation\n\n\n/// Informs server about a purchase through App Store. For official applications only\npublic struct AssignAppStoreTransaction: Codable, Equatable, Hashable {\n\n    /// Transaction purpose\n    public let purpose: StorePaymentPurpose?\n\n    /// App Store receipt\n    public let receipt: Data?\n\n\n    public init(\n        purpose: StorePaymentPurpose?,\n        receipt: Data?\n    ) {\n        self.purpose = purpose\n        self.receipt = receipt\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AssignGooglePlayTransaction.swift",
    "content": "//\n//  AssignGooglePlayTransaction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.46-b498497b\n//  https://github.com/tdlib/td/tree/b498497b\n//\n\nimport Foundation\n\n\n/// Informs server about a purchase through Google Play. For official applications only\npublic struct AssignGooglePlayTransaction: Codable, Equatable, Hashable {\n\n    /// Application package name\n    public let packageName: String?\n\n    /// Google Play purchase token\n    public let purchaseToken: String?\n\n    /// Transaction purpose\n    public let purpose: StorePaymentPurpose?\n\n    /// Identifier of the purchased store product\n    public let storeProductId: String?\n\n\n    public init(\n        packageName: String?,\n        purchaseToken: String?,\n        purpose: StorePaymentPurpose?,\n        storeProductId: String?\n    ) {\n        self.packageName = packageName\n        self.purchaseToken = purchaseToken\n        self.purpose = purpose\n        self.storeProductId = storeProductId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AssignStoreTransaction.swift",
    "content": "//\n//  AssignStoreTransaction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs server about an in-store purchase. For official applications only\npublic struct AssignStoreTransaction: Codable, Equatable, Hashable {\n\n    /// Transaction purpose\n    public let purpose: StorePaymentPurpose?\n\n    /// Information about the transaction\n    public let transaction: StoreTransaction?\n\n\n    public init(\n        purpose: StorePaymentPurpose?,\n        transaction: StoreTransaction?\n    ) {\n        self.purpose = purpose\n        self.transaction = transaction\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AttachmentMenuBot.swift",
    "content": "//\n//  AttachmentMenuBot.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a bot, which can be added to attachment or side menu\npublic struct AttachmentMenuBot: Codable, Equatable, Hashable {\n\n    /// Icon for the bot in TGS format for the official Android app; may be null\n    public let androidIcon: File?\n\n    /// Icon for the bot in SVG format for the official Android app side menu; may be null\n    public let androidSideMenuIcon: File?\n\n    /// User identifier of the bot\n    public let botUserId: Int64\n\n    /// Default icon for the bot in SVG format; may be null\n    public let defaultIcon: File?\n\n    /// Color to highlight selected icon of the bot if appropriate; may be null\n    public let iconColor: AttachmentMenuBotColor?\n\n    /// Icon for the bot in TGS format for the official iOS app; may be null\n    public let iosAnimatedIcon: File?\n\n    /// Icon for the bot in PNG format for the official iOS app side menu; may be null\n    public let iosSideMenuIcon: File?\n\n    /// Icon for the bot in SVG format for the official iOS app; may be null\n    public let iosStaticIcon: File?\n\n    /// True, if the bot was explicitly added by the user. If the bot isn't added, then on the first bot launch toggleBotIsAddedToAttachmentMenu must be called and the bot must be added or removed\n    public let isAdded: Bool\n\n    /// Icon for the bot in TGS format for the official native macOS app; may be null\n    public let macosIcon: File?\n\n    /// Icon for the bot in PNG format for the official macOS app side menu; may be null\n    public let macosSideMenuIcon: File?\n\n    /// Name for the bot in attachment menu\n    public let name: String\n\n    /// Color to highlight selected name of the bot if appropriate; may be null\n    public let nameColor: AttachmentMenuBotColor?\n\n    /// True, if the user must be asked for the permission to send messages to the bot\n    public let requestWriteAccess: Bool\n\n    /// True, if a disclaimer, why the bot is shown in the side menu, is needed\n    public let showDisclaimerInSideMenu: Bool\n\n    /// True, if the bot must be shown in the attachment menu\n    public let showInAttachmentMenu: Bool\n\n    /// True, if the bot must be shown in the side menu\n    public let showInSideMenu: Bool\n\n    /// True, if the bot supports opening from attachment menu in private chats with other bots\n    public let supportsBotChats: Bool\n\n    /// True, if the bot supports opening from attachment menu in channel chats\n    public let supportsChannelChats: Bool\n\n    /// True, if the bot supports opening from attachment menu in basic group and supergroup chats\n    public let supportsGroupChats: Bool\n\n    /// True, if the bot supports opening from attachment menu in the chat with the bot\n    public let supportsSelfChat: Bool\n\n    /// True, if the bot supports opening from attachment menu in private chats with ordinary users\n    public let supportsUserChats: Bool\n\n    /// Default placeholder for opened Web Apps in SVG format; may be null\n    public let webAppPlaceholder: File?\n\n\n    public init(\n        androidIcon: File?,\n        androidSideMenuIcon: File?,\n        botUserId: Int64,\n        defaultIcon: File?,\n        iconColor: AttachmentMenuBotColor?,\n        iosAnimatedIcon: File?,\n        iosSideMenuIcon: File?,\n        iosStaticIcon: File?,\n        isAdded: Bool,\n        macosIcon: File?,\n        macosSideMenuIcon: File?,\n        name: String,\n        nameColor: AttachmentMenuBotColor?,\n        requestWriteAccess: Bool,\n        showDisclaimerInSideMenu: Bool,\n        showInAttachmentMenu: Bool,\n        showInSideMenu: Bool,\n        supportsBotChats: Bool,\n        supportsChannelChats: Bool,\n        supportsGroupChats: Bool,\n        supportsSelfChat: Bool,\n        supportsUserChats: Bool,\n        webAppPlaceholder: File?\n    ) {\n        self.androidIcon = androidIcon\n        self.androidSideMenuIcon = androidSideMenuIcon\n        self.botUserId = botUserId\n        self.defaultIcon = defaultIcon\n        self.iconColor = iconColor\n        self.iosAnimatedIcon = iosAnimatedIcon\n        self.iosSideMenuIcon = iosSideMenuIcon\n        self.iosStaticIcon = iosStaticIcon\n        self.isAdded = isAdded\n        self.macosIcon = macosIcon\n        self.macosSideMenuIcon = macosSideMenuIcon\n        self.name = name\n        self.nameColor = nameColor\n        self.requestWriteAccess = requestWriteAccess\n        self.showDisclaimerInSideMenu = showDisclaimerInSideMenu\n        self.showInAttachmentMenu = showInAttachmentMenu\n        self.showInSideMenu = showInSideMenu\n        self.supportsBotChats = supportsBotChats\n        self.supportsChannelChats = supportsChannelChats\n        self.supportsGroupChats = supportsGroupChats\n        self.supportsSelfChat = supportsSelfChat\n        self.supportsUserChats = supportsUserChats\n        self.webAppPlaceholder = webAppPlaceholder\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AttachmentMenuBotColor.swift",
    "content": "//\n//  AttachmentMenuBotColor.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a color to highlight a bot added to attachment menu\npublic struct AttachmentMenuBotColor: Codable, Equatable, Hashable {\n\n    /// Color in the RGB format for dark themes\n    public let darkColor: Int\n\n    /// Color in the RGB format for light themes\n    public let lightColor: Int\n\n\n    public init(\n        darkColor: Int,\n        lightColor: Int\n    ) {\n        self.darkColor = darkColor\n        self.lightColor = lightColor\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AttributeCraftPersistenceProbability.swift",
    "content": "//\n//  AttributeCraftPersistenceProbability.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes chance of the crafted gift to have the backdrop or symbol of one of the original gifts\npublic struct AttributeCraftPersistenceProbability: Codable, Equatable, Hashable {\n\n    /// The 4 numbers that describe probability of the craft result to have the same attribute as one of the original gifts if 1, 2, 3, or 4 gifts with the attribute are used in the craft. Each number represents the number of crafted gifts with the original attribute per 1000 successful craftings\n    public let persistenceChancePerMille: [Int]\n\n\n    public init(persistenceChancePerMille: [Int]) {\n        self.persistenceChancePerMille = persistenceChancePerMille\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AuctionBid.swift",
    "content": "//\n//  AuctionBid.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a bid in an auction\npublic struct AuctionBid: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the bid was made\n    public let bidDate: Int\n\n    /// Position of the bid in the list of all bids\n    public let position: Int\n\n    /// The number of Telegram Stars that were put in the bid\n    public let starCount: Int64\n\n\n    public init(\n        bidDate: Int,\n        position: Int,\n        starCount: Int64\n    ) {\n        self.bidDate = bidDate\n        self.position = position\n        self.starCount = starCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AuctionRound.swift",
    "content": "//\n//  AuctionRound.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a round of an auction\npublic struct AuctionRound: Codable, Equatable, Hashable {\n\n    /// Duration of the round, in seconds\n    public let duration: Int\n\n    /// The number of seconds for which the round will be extended if there are changes in the top winners\n    public let extendTime: Int\n\n    /// 1-based number of the round\n    public let number: Int\n\n    /// The number of top winners who trigger round extension if changed\n    public let topWinnerCount: Int\n\n\n    public init(\n        duration: Int,\n        extendTime: Int,\n        number: Int,\n        topWinnerCount: Int\n    ) {\n        self.duration = duration\n        self.extendTime = extendTime\n        self.number = number\n        self.topWinnerCount = topWinnerCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AuctionState.swift",
    "content": "//\n//  AuctionState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes state of an auction\npublic indirect enum AuctionState: Codable, Equatable, Hashable {\n\n    /// Contains information about an ongoing or scheduled auction\n    case auctionStateActive(AuctionStateActive)\n\n    /// Contains information about a finished auction\n    case auctionStateFinished(AuctionStateFinished)\n\n\n    private enum Kind: String, Codable {\n        case auctionStateActive\n        case auctionStateFinished\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .auctionStateActive:\n            let value = try AuctionStateActive(from: decoder)\n            self = .auctionStateActive(value)\n        case .auctionStateFinished:\n            let value = try AuctionStateFinished(from: decoder)\n            self = .auctionStateFinished(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .auctionStateActive(let value):\n            try container.encode(Kind.auctionStateActive, forKey: .type)\n            try value.encode(to: encoder)\n        case .auctionStateFinished(let value):\n            try container.encode(Kind.auctionStateFinished, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Contains information about an ongoing or scheduled auction\npublic struct AuctionStateActive: Codable, Equatable, Hashable {\n\n    /// The number of items that were purchased by the current user on the auction\n    public let acquiredItemCount: Int\n\n    /// A sparse list of bids that were made in the auction\n    public let bidLevels: [AuctionBid]\n\n    /// Point in time (Unix timestamp) when the current round will end\n    public let currentRoundEndDate: Int\n\n    /// 1-based number of the current round\n    public let currentRoundNumber: Int\n\n    /// The number of items that were purchased on the auction by all users\n    public let distributedItemCount: Int\n\n    /// Point in time (Unix timestamp) when the auction will be ended\n    public let endDate: Int\n\n    /// The number of items that have to be distributed on the auction\n    public let leftItemCount: Int\n\n    /// The minimum possible bid in the auction in Telegram Stars\n    public let minBid: Int64\n\n    /// Rounds of the auction in which their duration or extension rules are changed\n    public let rounds: [AuctionRound]\n\n    /// Point in time (Unix timestamp) when the auction started or will start\n    public let startDate: Int\n\n    /// User identifiers of at most 3 users with the biggest bids\n    public let topBidderUserIds: [Int64]\n\n    /// The total number of rounds\n    public let totalRoundCount: Int\n\n    /// Bid of the current user in the auction; may be null if none\n    public let userBid: UserAuctionBid?\n\n\n    public init(\n        acquiredItemCount: Int,\n        bidLevels: [AuctionBid],\n        currentRoundEndDate: Int,\n        currentRoundNumber: Int,\n        distributedItemCount: Int,\n        endDate: Int,\n        leftItemCount: Int,\n        minBid: Int64,\n        rounds: [AuctionRound],\n        startDate: Int,\n        topBidderUserIds: [Int64],\n        totalRoundCount: Int,\n        userBid: UserAuctionBid?\n    ) {\n        self.acquiredItemCount = acquiredItemCount\n        self.bidLevels = bidLevels\n        self.currentRoundEndDate = currentRoundEndDate\n        self.currentRoundNumber = currentRoundNumber\n        self.distributedItemCount = distributedItemCount\n        self.endDate = endDate\n        self.leftItemCount = leftItemCount\n        self.minBid = minBid\n        self.rounds = rounds\n        self.startDate = startDate\n        self.topBidderUserIds = topBidderUserIds\n        self.totalRoundCount = totalRoundCount\n        self.userBid = userBid\n    }\n}\n\n/// Contains information about a finished auction\npublic struct AuctionStateFinished: Codable, Equatable, Hashable {\n\n    /// The number of items that were purchased by the current user on the auction\n    public let acquiredItemCount: Int\n\n    /// Average price of bought items in Telegram Stars\n    public let averagePrice: Int64\n\n    /// Point in time (Unix timestamp) when the auction will be ended\n    public let endDate: Int\n\n    /// Number of items from the auction being resold on Fragment\n    public let fragmentListedItemCount: Int\n\n    /// The HTTPS link to the Fragment for the resold items; may be empty if there are no such items being sold on Fragment\n    public let fragmentUrl: String\n\n    /// Point in time (Unix timestamp) when the auction started\n    public let startDate: Int\n\n    /// Number of items from the auction being resold on Telegram\n    public let telegramListedItemCount: Int\n\n\n    public init(\n        acquiredItemCount: Int,\n        averagePrice: Int64,\n        endDate: Int,\n        fragmentListedItemCount: Int,\n        fragmentUrl: String,\n        startDate: Int,\n        telegramListedItemCount: Int\n    ) {\n        self.acquiredItemCount = acquiredItemCount\n        self.averagePrice = averagePrice\n        self.endDate = endDate\n        self.fragmentListedItemCount = fragmentListedItemCount\n        self.fragmentUrl = fragmentUrl\n        self.startDate = startDate\n        self.telegramListedItemCount = telegramListedItemCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Audio.swift",
    "content": "//\n//  Audio.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an audio file. Audio is usually in MP3 or M4A format\npublic struct Audio: Codable, Equatable, Hashable {\n\n    /// The minithumbnail of the album cover; may be null\n    public let albumCoverMinithumbnail: Minithumbnail?\n\n    /// The thumbnail of the album cover in JPEG format; as defined by the sender. The full size thumbnail is expected to be extracted from the downloaded audio file; may be null\n    public let albumCoverThumbnail: Thumbnail?\n\n    /// File containing the audio\n    public let audio: File\n\n    /// Duration of the audio, in seconds; as defined by the sender\n    public let duration: Int\n\n    /// Album cover variants to use if the downloaded audio file contains no album cover. Provided thumbnail dimensions are approximate\n    public let externalAlbumCovers: [Thumbnail]\n\n    /// Original name of the file; as defined by the sender\n    public let fileName: String\n\n    /// The MIME type of the file; as defined by the sender\n    public let mimeType: String\n\n    /// Performer of the audio; as defined by the sender\n    public let performer: String\n\n    /// Title of the audio; as defined by the sender\n    public let title: String\n\n\n    public init(\n        albumCoverMinithumbnail: Minithumbnail?,\n        albumCoverThumbnail: Thumbnail?,\n        audio: File,\n        duration: Int,\n        externalAlbumCovers: [Thumbnail],\n        fileName: String,\n        mimeType: String,\n        performer: String,\n        title: String\n    ) {\n        self.albumCoverMinithumbnail = albumCoverMinithumbnail\n        self.albumCoverThumbnail = albumCoverThumbnail\n        self.audio = audio\n        self.duration = duration\n        self.externalAlbumCovers = externalAlbumCovers\n        self.fileName = fileName\n        self.mimeType = mimeType\n        self.performer = performer\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Audios.swift",
    "content": "//\n//  Audios.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of audio files\npublic struct Audios: Codable, Equatable, Hashable {\n\n    /// List of audio files\n    public let audios: [Audio]\n\n    /// Approximate total number of audio files found\n    public let totalCount: Int\n\n\n    public init(\n        audios: [Audio],\n        totalCount: Int\n    ) {\n        self.audios = audios\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AuthenticationCodeInfo.swift",
    "content": "//\n//  AuthenticationCodeInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Information about the authentication code that was sent\npublic struct AuthenticationCodeInfo: Codable, Equatable, Hashable {\n\n    /// The way the next code will be sent to the user; may be null\n    public let nextType: AuthenticationCodeType?\n\n    /// A phone number that is being authenticated\n    public let phoneNumber: String\n\n    /// Timeout before the code can be re-sent, in seconds\n    public let timeout: Int\n\n    /// The way the code was sent to the user\n    public let type: AuthenticationCodeType\n\n\n    public init(\n        nextType: AuthenticationCodeType?,\n        phoneNumber: String,\n        timeout: Int,\n        type: AuthenticationCodeType\n    ) {\n        self.nextType = nextType\n        self.phoneNumber = phoneNumber\n        self.timeout = timeout\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AuthenticationCodeType.swift",
    "content": "//\n//  AuthenticationCodeType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Provides information about the method by which an authentication code is delivered to the user\npublic indirect enum AuthenticationCodeType: Codable, Equatable, Hashable {\n\n    /// A digit-only authentication code is delivered via a private Telegram message, which can be viewed from another active session\n    case authenticationCodeTypeTelegramMessage(AuthenticationCodeTypeTelegramMessage)\n\n    /// A digit-only authentication code is delivered via an SMS message to the specified phone number; non-official applications may not receive this type of code\n    case authenticationCodeTypeSms(AuthenticationCodeTypeSms)\n\n    /// An authentication code is a word delivered via an SMS message to the specified phone number; non-official applications may not receive this type of code\n    case authenticationCodeTypeSmsWord(AuthenticationCodeTypeSmsWord)\n\n    /// An authentication code is a phrase from multiple words delivered via an SMS message to the specified phone number; non-official applications may not receive this type of code\n    case authenticationCodeTypeSmsPhrase(AuthenticationCodeTypeSmsPhrase)\n\n    /// A digit-only authentication code is delivered via a phone call to the specified phone number\n    case authenticationCodeTypeCall(AuthenticationCodeTypeCall)\n\n    /// An authentication code is delivered by an immediately canceled call to the specified phone number. The phone number that calls is the code that must be entered automatically\n    case authenticationCodeTypeFlashCall(AuthenticationCodeTypeFlashCall)\n\n    /// An authentication code is delivered by an immediately canceled call to the specified phone number. The last digits of the phone number that calls are the code that must be entered manually by the user\n    case authenticationCodeTypeMissedCall(AuthenticationCodeTypeMissedCall)\n\n    /// A digit-only authentication code is delivered to https://fragment.com. The user must be logged in there via a wallet owning the phone number's NFT\n    case authenticationCodeTypeFragment(AuthenticationCodeTypeFragment)\n\n    /// A digit-only authentication code is delivered via Firebase Authentication to the official Android application\n    case authenticationCodeTypeFirebaseAndroid(AuthenticationCodeTypeFirebaseAndroid)\n\n    /// A digit-only authentication code is delivered via Firebase Authentication to the official iOS application\n    case authenticationCodeTypeFirebaseIos(AuthenticationCodeTypeFirebaseIos)\n\n\n    private enum Kind: String, Codable {\n        case authenticationCodeTypeTelegramMessage\n        case authenticationCodeTypeSms\n        case authenticationCodeTypeSmsWord\n        case authenticationCodeTypeSmsPhrase\n        case authenticationCodeTypeCall\n        case authenticationCodeTypeFlashCall\n        case authenticationCodeTypeMissedCall\n        case authenticationCodeTypeFragment\n        case authenticationCodeTypeFirebaseAndroid\n        case authenticationCodeTypeFirebaseIos\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .authenticationCodeTypeTelegramMessage:\n            let value = try AuthenticationCodeTypeTelegramMessage(from: decoder)\n            self = .authenticationCodeTypeTelegramMessage(value)\n        case .authenticationCodeTypeSms:\n            let value = try AuthenticationCodeTypeSms(from: decoder)\n            self = .authenticationCodeTypeSms(value)\n        case .authenticationCodeTypeSmsWord:\n            let value = try AuthenticationCodeTypeSmsWord(from: decoder)\n            self = .authenticationCodeTypeSmsWord(value)\n        case .authenticationCodeTypeSmsPhrase:\n            let value = try AuthenticationCodeTypeSmsPhrase(from: decoder)\n            self = .authenticationCodeTypeSmsPhrase(value)\n        case .authenticationCodeTypeCall:\n            let value = try AuthenticationCodeTypeCall(from: decoder)\n            self = .authenticationCodeTypeCall(value)\n        case .authenticationCodeTypeFlashCall:\n            let value = try AuthenticationCodeTypeFlashCall(from: decoder)\n            self = .authenticationCodeTypeFlashCall(value)\n        case .authenticationCodeTypeMissedCall:\n            let value = try AuthenticationCodeTypeMissedCall(from: decoder)\n            self = .authenticationCodeTypeMissedCall(value)\n        case .authenticationCodeTypeFragment:\n            let value = try AuthenticationCodeTypeFragment(from: decoder)\n            self = .authenticationCodeTypeFragment(value)\n        case .authenticationCodeTypeFirebaseAndroid:\n            let value = try AuthenticationCodeTypeFirebaseAndroid(from: decoder)\n            self = .authenticationCodeTypeFirebaseAndroid(value)\n        case .authenticationCodeTypeFirebaseIos:\n            let value = try AuthenticationCodeTypeFirebaseIos(from: decoder)\n            self = .authenticationCodeTypeFirebaseIos(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .authenticationCodeTypeTelegramMessage(let value):\n            try container.encode(Kind.authenticationCodeTypeTelegramMessage, forKey: .type)\n            try value.encode(to: encoder)\n        case .authenticationCodeTypeSms(let value):\n            try container.encode(Kind.authenticationCodeTypeSms, forKey: .type)\n            try value.encode(to: encoder)\n        case .authenticationCodeTypeSmsWord(let value):\n            try container.encode(Kind.authenticationCodeTypeSmsWord, forKey: .type)\n            try value.encode(to: encoder)\n        case .authenticationCodeTypeSmsPhrase(let value):\n            try container.encode(Kind.authenticationCodeTypeSmsPhrase, forKey: .type)\n            try value.encode(to: encoder)\n        case .authenticationCodeTypeCall(let value):\n            try container.encode(Kind.authenticationCodeTypeCall, forKey: .type)\n            try value.encode(to: encoder)\n        case .authenticationCodeTypeFlashCall(let value):\n            try container.encode(Kind.authenticationCodeTypeFlashCall, forKey: .type)\n            try value.encode(to: encoder)\n        case .authenticationCodeTypeMissedCall(let value):\n            try container.encode(Kind.authenticationCodeTypeMissedCall, forKey: .type)\n            try value.encode(to: encoder)\n        case .authenticationCodeTypeFragment(let value):\n            try container.encode(Kind.authenticationCodeTypeFragment, forKey: .type)\n            try value.encode(to: encoder)\n        case .authenticationCodeTypeFirebaseAndroid(let value):\n            try container.encode(Kind.authenticationCodeTypeFirebaseAndroid, forKey: .type)\n            try value.encode(to: encoder)\n        case .authenticationCodeTypeFirebaseIos(let value):\n            try container.encode(Kind.authenticationCodeTypeFirebaseIos, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A digit-only authentication code is delivered via a private Telegram message, which can be viewed from another active session\npublic struct AuthenticationCodeTypeTelegramMessage: Codable, Equatable, Hashable {\n\n    /// Length of the code\n    public let length: Int\n\n\n    public init(length: Int) {\n        self.length = length\n    }\n}\n\n/// A digit-only authentication code is delivered via an SMS message to the specified phone number; non-official applications may not receive this type of code\npublic struct AuthenticationCodeTypeSms: Codable, Equatable, Hashable {\n\n    /// Length of the code\n    public let length: Int\n\n\n    public init(length: Int) {\n        self.length = length\n    }\n}\n\n/// An authentication code is a word delivered via an SMS message to the specified phone number; non-official applications may not receive this type of code\npublic struct AuthenticationCodeTypeSmsWord: Codable, Equatable, Hashable {\n\n    /// The first letters of the word if known\n    public let firstLetter: String\n\n\n    public init(firstLetter: String) {\n        self.firstLetter = firstLetter\n    }\n}\n\n/// An authentication code is a phrase from multiple words delivered via an SMS message to the specified phone number; non-official applications may not receive this type of code\npublic struct AuthenticationCodeTypeSmsPhrase: Codable, Equatable, Hashable {\n\n    /// The first word of the phrase if known\n    public let firstWord: String\n\n\n    public init(firstWord: String) {\n        self.firstWord = firstWord\n    }\n}\n\n/// A digit-only authentication code is delivered via a phone call to the specified phone number\npublic struct AuthenticationCodeTypeCall: Codable, Equatable, Hashable {\n\n    /// Length of the code\n    public let length: Int\n\n\n    public init(length: Int) {\n        self.length = length\n    }\n}\n\n/// An authentication code is delivered by an immediately canceled call to the specified phone number. The phone number that calls is the code that must be entered automatically\npublic struct AuthenticationCodeTypeFlashCall: Codable, Equatable, Hashable {\n\n    /// Pattern of the phone number from which the call will be made\n    public let pattern: String\n\n\n    public init(pattern: String) {\n        self.pattern = pattern\n    }\n}\n\n/// An authentication code is delivered by an immediately canceled call to the specified phone number. The last digits of the phone number that calls are the code that must be entered manually by the user\npublic struct AuthenticationCodeTypeMissedCall: Codable, Equatable, Hashable {\n\n    /// Number of digits in the code, excluding the prefix\n    public let length: Int\n\n    /// Prefix of the phone number from which the call will be made\n    public let phoneNumberPrefix: String\n\n\n    public init(\n        length: Int,\n        phoneNumberPrefix: String\n    ) {\n        self.length = length\n        self.phoneNumberPrefix = phoneNumberPrefix\n    }\n}\n\n/// A digit-only authentication code is delivered to https://fragment.com. The user must be logged in there via a wallet owning the phone number's NFT\npublic struct AuthenticationCodeTypeFragment: Codable, Equatable, Hashable {\n\n    /// Length of the code\n    public let length: Int\n\n    /// URL to open to receive the code\n    public let url: String\n\n\n    public init(\n        length: Int,\n        url: String\n    ) {\n        self.length = length\n        self.url = url\n    }\n}\n\n/// A digit-only authentication code is delivered via Firebase Authentication to the official Android application\npublic struct AuthenticationCodeTypeFirebaseAndroid: Codable, Equatable, Hashable {\n\n    /// Parameters to be used for device verification\n    public let deviceVerificationParameters: FirebaseDeviceVerificationParameters\n\n    /// Length of the code\n    public let length: Int\n\n\n    public init(\n        deviceVerificationParameters: FirebaseDeviceVerificationParameters,\n        length: Int\n    ) {\n        self.deviceVerificationParameters = deviceVerificationParameters\n        self.length = length\n    }\n}\n\n/// A digit-only authentication code is delivered via Firebase Authentication to the official iOS application\npublic struct AuthenticationCodeTypeFirebaseIos: Codable, Equatable, Hashable {\n\n    /// Length of the code\n    public let length: Int\n\n    /// Time after the next authentication method is expected to be used if verification push notification isn't received, in seconds\n    public let pushTimeout: Int\n\n    /// Receipt of successful application token validation to compare with receipt from push notification\n    public let receipt: String\n\n\n    public init(\n        length: Int,\n        pushTimeout: Int,\n        receipt: String\n    ) {\n        self.length = length\n        self.pushTimeout = pushTimeout\n        self.receipt = receipt\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AuthorizationState.swift",
    "content": "//\n//  AuthorizationState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents the current authorization state of the TDLib client\npublic indirect enum AuthorizationState: Codable, Equatable, Hashable {\n\n    /// Initialization parameters are needed. Call setTdlibParameters to provide them\n    case authorizationStateWaitTdlibParameters\n\n    /// TDLib needs the user's phone number to authorize. Call setAuthenticationPhoneNumber to provide the phone number, or use requestQrCodeAuthentication, getAuthenticationPasskeyParameters, or checkAuthenticationBotToken for other authentication options\n    case authorizationStateWaitPhoneNumber\n\n    /// The user must buy Telegram Premium as an in-store purchase to log in. Call checkAuthenticationPremiumPurchase and then setAuthenticationPremiumPurchaseTransaction\n    case authorizationStateWaitPremiumPurchase(AuthorizationStateWaitPremiumPurchase)\n\n    /// TDLib needs the user's email address to authorize. Call setAuthenticationEmailAddress to provide the email address, or directly call checkAuthenticationEmailCode with Apple ID/Google ID token if allowed\n    case authorizationStateWaitEmailAddress(AuthorizationStateWaitEmailAddress)\n\n    /// TDLib needs the user's authentication code sent to an email address to authorize. Call checkAuthenticationEmailCode to provide the code\n    case authorizationStateWaitEmailCode(AuthorizationStateWaitEmailCode)\n\n    /// TDLib needs the user's authentication code to authorize. Call checkAuthenticationCode to check the code\n    case authorizationStateWaitCode(AuthorizationStateWaitCode)\n\n    /// The user needs to confirm authorization on another logged in device by scanning a QR code with the provided link\n    case authorizationStateWaitOtherDeviceConfirmation(AuthorizationStateWaitOtherDeviceConfirmation)\n\n    /// The user is unregistered and needs to accept terms of service and enter their first name and last name to finish registration. Call registerUser to accept the terms of service and provide the data\n    case authorizationStateWaitRegistration(AuthorizationStateWaitRegistration)\n\n    /// The user has been authorized, but needs to enter a 2-step verification password to start using the application. Call checkAuthenticationPassword to provide the password, or requestAuthenticationPasswordRecovery to recover the password, or deleteAccount to delete the account after a week\n    case authorizationStateWaitPassword(AuthorizationStateWaitPassword)\n\n    /// The user has been successfully authorized. TDLib is now ready to answer general requests\n    case authorizationStateReady\n\n    /// The user is currently logging out\n    case authorizationStateLoggingOut\n\n    /// TDLib is closing, all subsequent queries will be answered with the error 500. Note that closing TDLib can take a while. All resources will be freed only after authorizationStateClosed has been received\n    case authorizationStateClosing\n\n    /// TDLib client is in its final state. All databases are closed and all resources are released. No other updates will be received after this. All queries will be responded to with error code 500. To continue working, one must create a new instance of the TDLib client\n    case authorizationStateClosed\n\n\n    private enum Kind: String, Codable {\n        case authorizationStateWaitTdlibParameters\n        case authorizationStateWaitPhoneNumber\n        case authorizationStateWaitPremiumPurchase\n        case authorizationStateWaitEmailAddress\n        case authorizationStateWaitEmailCode\n        case authorizationStateWaitCode\n        case authorizationStateWaitOtherDeviceConfirmation\n        case authorizationStateWaitRegistration\n        case authorizationStateWaitPassword\n        case authorizationStateReady\n        case authorizationStateLoggingOut\n        case authorizationStateClosing\n        case authorizationStateClosed\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .authorizationStateWaitTdlibParameters:\n            self = .authorizationStateWaitTdlibParameters\n        case .authorizationStateWaitPhoneNumber:\n            self = .authorizationStateWaitPhoneNumber\n        case .authorizationStateWaitPremiumPurchase:\n            let value = try AuthorizationStateWaitPremiumPurchase(from: decoder)\n            self = .authorizationStateWaitPremiumPurchase(value)\n        case .authorizationStateWaitEmailAddress:\n            let value = try AuthorizationStateWaitEmailAddress(from: decoder)\n            self = .authorizationStateWaitEmailAddress(value)\n        case .authorizationStateWaitEmailCode:\n            let value = try AuthorizationStateWaitEmailCode(from: decoder)\n            self = .authorizationStateWaitEmailCode(value)\n        case .authorizationStateWaitCode:\n            let value = try AuthorizationStateWaitCode(from: decoder)\n            self = .authorizationStateWaitCode(value)\n        case .authorizationStateWaitOtherDeviceConfirmation:\n            let value = try AuthorizationStateWaitOtherDeviceConfirmation(from: decoder)\n            self = .authorizationStateWaitOtherDeviceConfirmation(value)\n        case .authorizationStateWaitRegistration:\n            let value = try AuthorizationStateWaitRegistration(from: decoder)\n            self = .authorizationStateWaitRegistration(value)\n        case .authorizationStateWaitPassword:\n            let value = try AuthorizationStateWaitPassword(from: decoder)\n            self = .authorizationStateWaitPassword(value)\n        case .authorizationStateReady:\n            self = .authorizationStateReady\n        case .authorizationStateLoggingOut:\n            self = .authorizationStateLoggingOut\n        case .authorizationStateClosing:\n            self = .authorizationStateClosing\n        case .authorizationStateClosed:\n            self = .authorizationStateClosed\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .authorizationStateWaitTdlibParameters:\n            try container.encode(Kind.authorizationStateWaitTdlibParameters, forKey: .type)\n        case .authorizationStateWaitPhoneNumber:\n            try container.encode(Kind.authorizationStateWaitPhoneNumber, forKey: .type)\n        case .authorizationStateWaitPremiumPurchase(let value):\n            try container.encode(Kind.authorizationStateWaitPremiumPurchase, forKey: .type)\n            try value.encode(to: encoder)\n        case .authorizationStateWaitEmailAddress(let value):\n            try container.encode(Kind.authorizationStateWaitEmailAddress, forKey: .type)\n            try value.encode(to: encoder)\n        case .authorizationStateWaitEmailCode(let value):\n            try container.encode(Kind.authorizationStateWaitEmailCode, forKey: .type)\n            try value.encode(to: encoder)\n        case .authorizationStateWaitCode(let value):\n            try container.encode(Kind.authorizationStateWaitCode, forKey: .type)\n            try value.encode(to: encoder)\n        case .authorizationStateWaitOtherDeviceConfirmation(let value):\n            try container.encode(Kind.authorizationStateWaitOtherDeviceConfirmation, forKey: .type)\n            try value.encode(to: encoder)\n        case .authorizationStateWaitRegistration(let value):\n            try container.encode(Kind.authorizationStateWaitRegistration, forKey: .type)\n            try value.encode(to: encoder)\n        case .authorizationStateWaitPassword(let value):\n            try container.encode(Kind.authorizationStateWaitPassword, forKey: .type)\n            try value.encode(to: encoder)\n        case .authorizationStateReady:\n            try container.encode(Kind.authorizationStateReady, forKey: .type)\n        case .authorizationStateLoggingOut:\n            try container.encode(Kind.authorizationStateLoggingOut, forKey: .type)\n        case .authorizationStateClosing:\n            try container.encode(Kind.authorizationStateClosing, forKey: .type)\n        case .authorizationStateClosed:\n            try container.encode(Kind.authorizationStateClosed, forKey: .type)\n        }\n    }\n}\n\n/// The user must buy Telegram Premium as an in-store purchase to log in. Call checkAuthenticationPremiumPurchase and then setAuthenticationPremiumPurchaseTransaction\npublic struct AuthorizationStateWaitPremiumPurchase: Codable, Equatable, Hashable {\n\n    /// Duration of the Telegram Premium subscription after the purchase; may be 0 if Telegram Premium subscription will not be granted\n    public let premiumDayCount: Int\n\n    /// Identifier of the store product that must be bought\n    public let storeProductId: String\n\n    /// Email address to use for support if the user has issues with Telegram Premium purchase\n    public let supportEmailAddress: String\n\n    /// Subject for the email sent to the support email address\n    public let supportEmailSubject: String\n\n\n    public init(\n        premiumDayCount: Int,\n        storeProductId: String,\n        supportEmailAddress: String,\n        supportEmailSubject: String\n    ) {\n        self.premiumDayCount = premiumDayCount\n        self.storeProductId = storeProductId\n        self.supportEmailAddress = supportEmailAddress\n        self.supportEmailSubject = supportEmailSubject\n    }\n}\n\n/// TDLib needs the user's email address to authorize. Call setAuthenticationEmailAddress to provide the email address, or directly call checkAuthenticationEmailCode with Apple ID/Google ID token if allowed\npublic struct AuthorizationStateWaitEmailAddress: Codable, Equatable, Hashable {\n\n    /// True, if authorization through Apple ID is allowed\n    public let allowAppleId: Bool\n\n    /// True, if authorization through Google ID is allowed\n    public let allowGoogleId: Bool\n\n\n    public init(\n        allowAppleId: Bool,\n        allowGoogleId: Bool\n    ) {\n        self.allowAppleId = allowAppleId\n        self.allowGoogleId = allowGoogleId\n    }\n}\n\n/// TDLib needs the user's authentication code sent to an email address to authorize. Call checkAuthenticationEmailCode to provide the code\npublic struct AuthorizationStateWaitEmailCode: Codable, Equatable, Hashable {\n\n    /// True, if authorization through Apple ID is allowed\n    public let allowAppleId: Bool\n\n    /// True, if authorization through Google ID is allowed\n    public let allowGoogleId: Bool\n\n    /// Information about the sent authentication code\n    public let codeInfo: EmailAddressAuthenticationCodeInfo\n\n    /// Reset state of the email address; may be null if the email address can't be reset\n    public let emailAddressResetState: EmailAddressResetState?\n\n\n    public init(\n        allowAppleId: Bool,\n        allowGoogleId: Bool,\n        codeInfo: EmailAddressAuthenticationCodeInfo,\n        emailAddressResetState: EmailAddressResetState?\n    ) {\n        self.allowAppleId = allowAppleId\n        self.allowGoogleId = allowGoogleId\n        self.codeInfo = codeInfo\n        self.emailAddressResetState = emailAddressResetState\n    }\n}\n\n/// TDLib needs the user's authentication code to authorize. Call checkAuthenticationCode to check the code\npublic struct AuthorizationStateWaitCode: Codable, Equatable, Hashable {\n\n    /// Information about the authorization code that was sent\n    public let codeInfo: AuthenticationCodeInfo\n\n\n    public init(codeInfo: AuthenticationCodeInfo) {\n        self.codeInfo = codeInfo\n    }\n}\n\n/// The user needs to confirm authorization on another logged in device by scanning a QR code with the provided link\npublic struct AuthorizationStateWaitOtherDeviceConfirmation: Codable, Equatable, Hashable {\n\n    /// A tg:// URL for the QR code. The link will be updated frequently\n    public let link: String\n\n\n    public init(link: String) {\n        self.link = link\n    }\n}\n\n/// The user is unregistered and needs to accept terms of service and enter their first name and last name to finish registration. Call registerUser to accept the terms of service and provide the data\npublic struct AuthorizationStateWaitRegistration: Codable, Equatable, Hashable {\n\n    /// Telegram terms of service\n    public let termsOfService: TermsOfService\n\n\n    public init(termsOfService: TermsOfService) {\n        self.termsOfService = termsOfService\n    }\n}\n\n/// The user has been authorized, but needs to enter a 2-step verification password to start using the application. Call checkAuthenticationPassword to provide the password, or requestAuthenticationPasswordRecovery to recover the password, or deleteAccount to delete the account after a week\npublic struct AuthorizationStateWaitPassword: Codable, Equatable, Hashable {\n\n    /// True, if some Telegram Passport elements were saved\n    public let hasPassportData: Bool\n\n    /// True, if a recovery email address has been set up\n    public let hasRecoveryEmailAddress: Bool\n\n    /// Hint for the password; may be empty\n    public let passwordHint: String\n\n    /// Pattern of the email address to which the recovery email was sent; empty until a recovery email has been sent\n    public let recoveryEmailAddressPattern: String\n\n\n    public init(\n        hasPassportData: Bool,\n        hasRecoveryEmailAddress: Bool,\n        passwordHint: String,\n        recoveryEmailAddressPattern: String\n    ) {\n        self.hasPassportData = hasPassportData\n        self.hasRecoveryEmailAddress = hasRecoveryEmailAddress\n        self.passwordHint = passwordHint\n        self.recoveryEmailAddressPattern = recoveryEmailAddressPattern\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AutoDownloadSettings.swift",
    "content": "//\n//  AutoDownloadSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains auto-download settings\npublic struct AutoDownloadSettings: Codable, Equatable, Hashable {\n\n    /// True, if the auto-download is enabled\n    public let isAutoDownloadEnabled: Bool\n\n    /// The maximum size of other file types to be auto-downloaded, in bytes\n    public let maxOtherFileSize: Int64\n\n    /// The maximum size of a photo file to be auto-downloaded, in bytes\n    public let maxPhotoFileSize: Int\n\n    /// The maximum size of a video file to be auto-downloaded, in bytes\n    public let maxVideoFileSize: Int64\n\n    /// True, if the beginning of video files needs to be preloaded for instant playback\n    public let preloadLargeVideos: Bool\n\n    /// True, if the next audio track needs to be preloaded while the user is listening to an audio file\n    public let preloadNextAudio: Bool\n\n    /// True, if stories needs to be preloaded\n    public let preloadStories: Bool\n\n    /// True, if \"use less data for calls\" option needs to be enabled\n    public let useLessDataForCalls: Bool\n\n    /// The maximum suggested bitrate for uploaded videos, in kbit/s\n    public let videoUploadBitrate: Int\n\n\n    public init(\n        isAutoDownloadEnabled: Bool,\n        maxOtherFileSize: Int64,\n        maxPhotoFileSize: Int,\n        maxVideoFileSize: Int64,\n        preloadLargeVideos: Bool,\n        preloadNextAudio: Bool,\n        preloadStories: Bool,\n        useLessDataForCalls: Bool,\n        videoUploadBitrate: Int\n    ) {\n        self.isAutoDownloadEnabled = isAutoDownloadEnabled\n        self.maxOtherFileSize = maxOtherFileSize\n        self.maxPhotoFileSize = maxPhotoFileSize\n        self.maxVideoFileSize = maxVideoFileSize\n        self.preloadLargeVideos = preloadLargeVideos\n        self.preloadNextAudio = preloadNextAudio\n        self.preloadStories = preloadStories\n        self.useLessDataForCalls = useLessDataForCalls\n        self.videoUploadBitrate = videoUploadBitrate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AutoDownloadSettingsPresets.swift",
    "content": "//\n//  AutoDownloadSettingsPresets.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains auto-download settings presets for the current user\npublic struct AutoDownloadSettingsPresets: Codable, Equatable, Hashable {\n\n    /// Preset with highest settings; expected to be used by default when connected on Wi-Fi\n    public let high: AutoDownloadSettings\n\n    /// Preset with lowest settings; expected to be used by default when roaming\n    public let low: AutoDownloadSettings\n\n    /// Preset with medium settings; expected to be used by default when using mobile data\n    public let medium: AutoDownloadSettings\n\n\n    public init(\n        high: AutoDownloadSettings,\n        low: AutoDownloadSettings,\n        medium: AutoDownloadSettings\n    ) {\n        self.high = high\n        self.low = low\n        self.medium = medium\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AutosaveSettings.swift",
    "content": "//\n//  AutosaveSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes autosave settings\npublic struct AutosaveSettings: Codable, Equatable, Hashable {\n\n    /// Default autosave settings for channel chats\n    public let channelSettings: ScopeAutosaveSettings\n\n    /// Autosave settings for specific chats\n    public let exceptions: [AutosaveSettingsException]\n\n    /// Default autosave settings for basic group and supergroup chats\n    public let groupSettings: ScopeAutosaveSettings\n\n    /// Default autosave settings for private chats\n    public let privateChatSettings: ScopeAutosaveSettings\n\n\n    public init(\n        channelSettings: ScopeAutosaveSettings,\n        exceptions: [AutosaveSettingsException],\n        groupSettings: ScopeAutosaveSettings,\n        privateChatSettings: ScopeAutosaveSettings\n    ) {\n        self.channelSettings = channelSettings\n        self.exceptions = exceptions\n        self.groupSettings = groupSettings\n        self.privateChatSettings = privateChatSettings\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AutosaveSettingsException.swift",
    "content": "//\n//  AutosaveSettingsException.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains autosave settings for a chat, which overrides default settings for the corresponding scope\npublic struct AutosaveSettingsException: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// Autosave settings for the chat\n    public let settings: ScopeAutosaveSettings\n\n\n    public init(\n        chatId: Int64,\n        settings: ScopeAutosaveSettings\n    ) {\n        self.chatId = chatId\n        self.settings = settings\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AutosaveSettingsScope.swift",
    "content": "//\n//  AutosaveSettingsScope.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes scope of autosave settings\npublic indirect enum AutosaveSettingsScope: Codable, Equatable, Hashable {\n\n    /// Autosave settings applied to all private chats without chat-specific settings\n    case autosaveSettingsScopePrivateChats\n\n    /// Autosave settings applied to all basic group and supergroup chats without chat-specific settings\n    case autosaveSettingsScopeGroupChats\n\n    /// Autosave settings applied to all channel chats without chat-specific settings\n    case autosaveSettingsScopeChannelChats\n\n    /// Autosave settings applied to a chat\n    case autosaveSettingsScopeChat(AutosaveSettingsScopeChat)\n\n\n    private enum Kind: String, Codable {\n        case autosaveSettingsScopePrivateChats\n        case autosaveSettingsScopeGroupChats\n        case autosaveSettingsScopeChannelChats\n        case autosaveSettingsScopeChat\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .autosaveSettingsScopePrivateChats:\n            self = .autosaveSettingsScopePrivateChats\n        case .autosaveSettingsScopeGroupChats:\n            self = .autosaveSettingsScopeGroupChats\n        case .autosaveSettingsScopeChannelChats:\n            self = .autosaveSettingsScopeChannelChats\n        case .autosaveSettingsScopeChat:\n            let value = try AutosaveSettingsScopeChat(from: decoder)\n            self = .autosaveSettingsScopeChat(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .autosaveSettingsScopePrivateChats:\n            try container.encode(Kind.autosaveSettingsScopePrivateChats, forKey: .type)\n        case .autosaveSettingsScopeGroupChats:\n            try container.encode(Kind.autosaveSettingsScopeGroupChats, forKey: .type)\n        case .autosaveSettingsScopeChannelChats:\n            try container.encode(Kind.autosaveSettingsScopeChannelChats, forKey: .type)\n        case .autosaveSettingsScopeChat(let value):\n            try container.encode(Kind.autosaveSettingsScopeChat, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Autosave settings applied to a chat\npublic struct AutosaveSettingsScopeChat: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n\n    public init(chatId: Int64) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AvailableGift.swift",
    "content": "//\n//  AvailableGift.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a gift that is available for purchase\npublic struct AvailableGift: Codable, Equatable, Hashable {\n\n    /// The gift\n    public let gift: Gift\n\n    /// The minimum price for the gifts available for resale in Telegram Star equivalent; 0 if there are no such gifts\n    public let minResaleStarCount: Int64\n\n    /// Number of gifts that are available for resale\n    public let resaleCount: Int\n\n    /// The title of the upgraded gift; empty if the gift isn't available for resale\n    public let title: String\n\n\n    public init(\n        gift: Gift,\n        minResaleStarCount: Int64,\n        resaleCount: Int,\n        title: String\n    ) {\n        self.gift = gift\n        self.minResaleStarCount = minResaleStarCount\n        self.resaleCount = resaleCount\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AvailableGifts.swift",
    "content": "//\n//  AvailableGifts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of gifts that can be sent to another user or channel chat\npublic struct AvailableGifts: Codable, Equatable, Hashable {\n\n    /// The list of gifts\n    public let gifts: [AvailableGift]\n\n\n    public init(gifts: [AvailableGift]) {\n        self.gifts = gifts\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AvailableReaction.swift",
    "content": "//\n//  AvailableReaction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents an available reaction\npublic struct AvailableReaction: Codable, Equatable, Hashable {\n\n    /// True, if Telegram Premium is needed to send the reaction\n    public let needsPremium: Bool\n\n    /// Type of the reaction\n    public let type: ReactionType\n\n\n    public init(\n        needsPremium: Bool,\n        type: ReactionType\n    ) {\n        self.needsPremium = needsPremium\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/AvailableReactions.swift",
    "content": "//\n//  AvailableReactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of reactions that can be added to a message\npublic struct AvailableReactions: Codable, Equatable, Hashable {\n\n    /// True, if any custom emoji reaction can be added by Telegram Premium subscribers\n    public let allowCustomEmoji: Bool\n\n    /// True, if the reactions will be tags and the message can be found by them\n    public let areTags: Bool\n\n    /// List of popular reactions\n    public let popularReactions: [AvailableReaction]\n\n    /// List of recently used reactions\n    public let recentReactions: [AvailableReaction]\n\n    /// List of reactions to be shown at the top\n    public let topReactions: [AvailableReaction]\n\n    /// The reason why the current user can't add reactions to the message, despite some other users can; may be null if none\n    public let unavailabilityReason: ReactionUnavailabilityReason?\n\n\n    public init(\n        allowCustomEmoji: Bool,\n        areTags: Bool,\n        popularReactions: [AvailableReaction],\n        recentReactions: [AvailableReaction],\n        topReactions: [AvailableReaction],\n        unavailabilityReason: ReactionUnavailabilityReason?\n    ) {\n        self.allowCustomEmoji = allowCustomEmoji\n        self.areTags = areTags\n        self.popularReactions = popularReactions\n        self.recentReactions = recentReactions\n        self.topReactions = topReactions\n        self.unavailabilityReason = unavailabilityReason\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Background.swift",
    "content": "//\n//  Background.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a chat background\npublic struct Background: Codable, Equatable, Hashable, Identifiable {\n\n    /// Document with the background; may be null. Null only for filled and chat theme backgrounds\n    public let document: Document?\n\n    /// Unique background identifier\n    public let id: TdInt64\n\n    /// True, if the background is dark and is recommended to be used with dark theme\n    public let isDark: Bool\n\n    /// True, if this is one of default backgrounds\n    public let isDefault: Bool\n\n    /// Unique background name\n    public let name: String\n\n    /// Type of the background\n    public let type: BackgroundType\n\n\n    public init(\n        document: Document?,\n        id: TdInt64,\n        isDark: Bool,\n        isDefault: Bool,\n        name: String,\n        type: BackgroundType\n    ) {\n        self.document = document\n        self.id = id\n        self.isDark = isDark\n        self.isDefault = isDefault\n        self.name = name\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BackgroundFill.swift",
    "content": "//\n//  BackgroundFill.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a fill of a background\npublic indirect enum BackgroundFill: Codable, Equatable, Hashable {\n\n    /// Describes a solid fill of a background\n    case backgroundFillSolid(BackgroundFillSolid)\n\n    /// Describes a gradient fill of a background\n    case backgroundFillGradient(BackgroundFillGradient)\n\n    /// Describes a freeform gradient fill of a background\n    case backgroundFillFreeformGradient(BackgroundFillFreeformGradient)\n\n\n    private enum Kind: String, Codable {\n        case backgroundFillSolid\n        case backgroundFillGradient\n        case backgroundFillFreeformGradient\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .backgroundFillSolid:\n            let value = try BackgroundFillSolid(from: decoder)\n            self = .backgroundFillSolid(value)\n        case .backgroundFillGradient:\n            let value = try BackgroundFillGradient(from: decoder)\n            self = .backgroundFillGradient(value)\n        case .backgroundFillFreeformGradient:\n            let value = try BackgroundFillFreeformGradient(from: decoder)\n            self = .backgroundFillFreeformGradient(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .backgroundFillSolid(let value):\n            try container.encode(Kind.backgroundFillSolid, forKey: .type)\n            try value.encode(to: encoder)\n        case .backgroundFillGradient(let value):\n            try container.encode(Kind.backgroundFillGradient, forKey: .type)\n            try value.encode(to: encoder)\n        case .backgroundFillFreeformGradient(let value):\n            try container.encode(Kind.backgroundFillFreeformGradient, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Describes a solid fill of a background\npublic struct BackgroundFillSolid: Codable, Equatable, Hashable {\n\n    /// A color of the background in the RGB format\n    public let color: Int\n\n\n    public init(color: Int) {\n        self.color = color\n    }\n}\n\n/// Describes a gradient fill of a background\npublic struct BackgroundFillGradient: Codable, Equatable, Hashable {\n\n    /// A bottom color of the background in the RGB format\n    public let bottomColor: Int\n\n    /// Clockwise rotation angle of the gradient, in degrees; 0-359. Must always be divisible by 45\n    public let rotationAngle: Int\n\n    /// A top color of the background in the RGB format\n    public let topColor: Int\n\n\n    public init(\n        bottomColor: Int,\n        rotationAngle: Int,\n        topColor: Int\n    ) {\n        self.bottomColor = bottomColor\n        self.rotationAngle = rotationAngle\n        self.topColor = topColor\n    }\n}\n\n/// Describes a freeform gradient fill of a background\npublic struct BackgroundFillFreeformGradient: Codable, Equatable, Hashable {\n\n    /// A list of 3 or 4 colors of the freeform gradient in the RGB format\n    public let colors: [Int]\n\n\n    public init(colors: [Int]) {\n        self.colors = colors\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BackgroundType.swift",
    "content": "//\n//  BackgroundType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the type of background\npublic indirect enum BackgroundType: Codable, Equatable, Hashable {\n\n    /// A wallpaper in JPEG format\n    case backgroundTypeWallpaper(BackgroundTypeWallpaper)\n\n    /// A PNG or TGV (gzipped subset of SVG with MIME type \"application/x-tgwallpattern\") pattern to be combined with the background fill chosen by the user\n    case backgroundTypePattern(BackgroundTypePattern)\n\n    /// A filled background\n    case backgroundTypeFill(BackgroundTypeFill)\n\n    /// A background from a chat theme based on an emoji; can be used only as a chat background in channels\n    case backgroundTypeChatTheme(BackgroundTypeChatTheme)\n\n\n    private enum Kind: String, Codable {\n        case backgroundTypeWallpaper\n        case backgroundTypePattern\n        case backgroundTypeFill\n        case backgroundTypeChatTheme\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .backgroundTypeWallpaper:\n            let value = try BackgroundTypeWallpaper(from: decoder)\n            self = .backgroundTypeWallpaper(value)\n        case .backgroundTypePattern:\n            let value = try BackgroundTypePattern(from: decoder)\n            self = .backgroundTypePattern(value)\n        case .backgroundTypeFill:\n            let value = try BackgroundTypeFill(from: decoder)\n            self = .backgroundTypeFill(value)\n        case .backgroundTypeChatTheme:\n            let value = try BackgroundTypeChatTheme(from: decoder)\n            self = .backgroundTypeChatTheme(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .backgroundTypeWallpaper(let value):\n            try container.encode(Kind.backgroundTypeWallpaper, forKey: .type)\n            try value.encode(to: encoder)\n        case .backgroundTypePattern(let value):\n            try container.encode(Kind.backgroundTypePattern, forKey: .type)\n            try value.encode(to: encoder)\n        case .backgroundTypeFill(let value):\n            try container.encode(Kind.backgroundTypeFill, forKey: .type)\n            try value.encode(to: encoder)\n        case .backgroundTypeChatTheme(let value):\n            try container.encode(Kind.backgroundTypeChatTheme, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A wallpaper in JPEG format\npublic struct BackgroundTypeWallpaper: Codable, Equatable, Hashable {\n\n    /// True, if the wallpaper must be downscaled to fit in 450x450 square and then box-blurred with radius 12\n    public let isBlurred: Bool\n\n    /// True, if the background needs to be slightly moved when device is tilted\n    public let isMoving: Bool\n\n\n    public init(\n        isBlurred: Bool,\n        isMoving: Bool\n    ) {\n        self.isBlurred = isBlurred\n        self.isMoving = isMoving\n    }\n}\n\n/// A PNG or TGV (gzipped subset of SVG with MIME type \"application/x-tgwallpattern\") pattern to be combined with the background fill chosen by the user\npublic struct BackgroundTypePattern: Codable, Equatable, Hashable {\n\n    /// Fill of the background\n    public let fill: BackgroundFill\n\n    /// Intensity of the pattern when it is shown above the filled background; 0-100\n    public let intensity: Int\n\n    /// True, if the background fill must be applied only to the pattern itself. All other pixels are black in this case. For dark themes only\n    public let isInverted: Bool\n\n    /// True, if the background needs to be slightly moved when device is tilted\n    public let isMoving: Bool\n\n\n    public init(\n        fill: BackgroundFill,\n        intensity: Int,\n        isInverted: Bool,\n        isMoving: Bool\n    ) {\n        self.fill = fill\n        self.intensity = intensity\n        self.isInverted = isInverted\n        self.isMoving = isMoving\n    }\n}\n\n/// A filled background\npublic struct BackgroundTypeFill: Codable, Equatable, Hashable {\n\n    /// The background fill\n    public let fill: BackgroundFill\n\n\n    public init(fill: BackgroundFill) {\n        self.fill = fill\n    }\n}\n\n/// A background from a chat theme based on an emoji; can be used only as a chat background in channels\npublic struct BackgroundTypeChatTheme: Codable, Equatable, Hashable {\n\n    /// Name of the emoji chat theme\n    public let themeName: String\n\n\n    public init(themeName: String) {\n        self.themeName = themeName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Backgrounds.swift",
    "content": "//\n//  Backgrounds.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of backgrounds\npublic struct Backgrounds: Codable, Equatable, Hashable {\n\n    /// A list of backgrounds\n    public let backgrounds: [Background]\n\n\n    public init(backgrounds: [Background]) {\n        self.backgrounds = backgrounds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BanChatMember.swift",
    "content": "//\n//  BanChatMember.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Bans a member in a chat; requires can_restrict_members administrator right. Members can't be banned in private or secret chats. In supergroups and channels, the user will not be able to return to the group on their own using invite links, etc., unless unbanned first\npublic struct BanChatMember: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the user will be unbanned; 0 if never. If the user is banned for more than 366 days or for less than 30 seconds from the current time, the user is considered to be banned forever. Ignored in basic groups and if a chat is banned\n    public let bannedUntilDate: Int?\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Member identifier\n    public let memberId: MessageSender?\n\n    /// Pass true to delete all messages in the chat for the user who is being removed. Always true for supergroups and channels\n    public let revokeMessages: Bool?\n\n\n    public init(\n        bannedUntilDate: Int?,\n        chatId: Int64?,\n        memberId: MessageSender?,\n        revokeMessages: Bool?\n    ) {\n        self.bannedUntilDate = bannedUntilDate\n        self.chatId = chatId\n        self.memberId = memberId\n        self.revokeMessages = revokeMessages\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BanGroupCallParticipants.swift",
    "content": "//\n//  BanGroupCallParticipants.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Bans users from a group call not bound to a chat; requires groupCall.is_owned. Only the owner of the group call can invite the banned users back\npublic struct BanGroupCallParticipants: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// Identifiers of group call participants to ban; identifiers of unknown users from the update updateGroupCallParticipants can be also passed to the method\n    public let userIds: [TdInt64]?\n\n\n    public init(\n        groupCallId: Int?,\n        userIds: [TdInt64]?\n    ) {\n        self.groupCallId = groupCallId\n        self.userIds = userIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BankCardActionOpenUrl.swift",
    "content": "//\n//  BankCardActionOpenUrl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an action associated with a bank card number\npublic struct BankCardActionOpenUrl: Codable, Equatable, Hashable {\n\n    /// Action text\n    public let text: String\n\n    /// The URL to be opened\n    public let url: String\n\n\n    public init(\n        text: String,\n        url: String\n    ) {\n        self.text = text\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BankCardInfo.swift",
    "content": "//\n//  BankCardInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Information about a bank card\npublic struct BankCardInfo: Codable, Equatable, Hashable {\n\n    /// Actions that can be done with the bank card number\n    public let actions: [BankCardActionOpenUrl]\n\n    /// Title of the bank card description\n    public let title: String\n\n\n    public init(\n        actions: [BankCardActionOpenUrl],\n        title: String\n    ) {\n        self.actions = actions\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BasicGroup.swift",
    "content": "//\n//  BasicGroup.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a basic group of 0-200 users (must be upgraded to a supergroup to accommodate more than 200 users)\npublic struct BasicGroup: Codable, Equatable, Hashable, Identifiable {\n\n    /// Group identifier\n    public let id: Int64\n\n    /// True, if the group is active\n    public let isActive: Bool\n\n    /// Number of members in the group\n    public let memberCount: Int\n\n    /// Status of the current user in the group\n    public let status: ChatMemberStatus\n\n    /// Identifier of the supergroup to which this group was upgraded; 0 if none\n    public let upgradedToSupergroupId: Int64\n\n\n    public init(\n        id: Int64,\n        isActive: Bool,\n        memberCount: Int,\n        status: ChatMemberStatus,\n        upgradedToSupergroupId: Int64\n    ) {\n        self.id = id\n        self.isActive = isActive\n        self.memberCount = memberCount\n        self.status = status\n        self.upgradedToSupergroupId = upgradedToSupergroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BasicGroupFullInfo.swift",
    "content": "//\n//  BasicGroupFullInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains full information about a basic group\npublic struct BasicGroupFullInfo: Codable, Equatable, Hashable {\n\n    /// List of commands of bots in the group\n    public let botCommands: [BotCommands]\n\n    /// True, if non-administrators and non-bots can be hidden in responses to getSupergroupMembers and searchChatMembers for non-administrators after upgrading the basic group to a supergroup\n    public let canHideMembers: Bool\n\n    /// True, if aggressive anti-spam checks can be enabled or disabled in the supergroup after upgrading the basic group to a supergroup\n    public let canToggleAggressiveAntiSpam: Bool\n\n    /// User identifier of the creator of the group; 0 if unknown\n    public let creatorUserId: Int64\n\n    public let description: String\n\n    /// Primary invite link for this group; may be null. For chat administrators with can_invite_users right only. Updated only after the basic group is opened\n    public let inviteLink: ChatInviteLink?\n\n    /// Group members\n    public let members: [ChatMember]\n\n    /// Chat photo; may be null if empty or unknown. If non-null, then it is the same photo as in chat.photo\n    public let photo: ChatPhoto?\n\n\n    public init(\n        botCommands: [BotCommands],\n        canHideMembers: Bool,\n        canToggleAggressiveAntiSpam: Bool,\n        creatorUserId: Int64,\n        description: String,\n        inviteLink: ChatInviteLink?,\n        members: [ChatMember],\n        photo: ChatPhoto?\n    ) {\n        self.botCommands = botCommands\n        self.canHideMembers = canHideMembers\n        self.canToggleAggressiveAntiSpam = canToggleAggressiveAntiSpam\n        self.creatorUserId = creatorUserId\n        self.description = description\n        self.inviteLink = inviteLink\n        self.members = members\n        self.photo = photo\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Birthdate.swift",
    "content": "//\n//  Birthdate.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a birthdate of a user\npublic struct Birthdate: Codable, Equatable, Hashable {\n\n    /// Day of the month; 1-31\n    public let day: Int\n\n    /// Month of the year; 1-12\n    public let month: Int\n\n    /// Birth year; 0 if unknown\n    public let year: Int\n\n\n    public init(\n        day: Int,\n        month: Int,\n        year: Int\n    ) {\n        self.day = day\n        self.month = month\n        self.year = year\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BlockList.swift",
    "content": "//\n//  BlockList.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of block list\npublic indirect enum BlockList: Codable, Equatable, Hashable {\n\n    /// The main block list that disallows writing messages to the current user, receiving their status and photo, viewing of stories, and some other actions\n    case blockListMain\n\n    /// The block list that disallows viewing of stories of the current user\n    case blockListStories\n\n\n    private enum Kind: String, Codable {\n        case blockListMain\n        case blockListStories\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .blockListMain:\n            self = .blockListMain\n        case .blockListStories:\n            self = .blockListStories\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .blockListMain:\n            try container.encode(Kind.blockListMain, forKey: .type)\n        case .blockListStories:\n            try container.encode(Kind.blockListStories, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BlockMessageSenderFromReplies.swift",
    "content": "//\n//  BlockMessageSenderFromReplies.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Blocks an original sender of a message in the Replies chat\npublic struct BlockMessageSenderFromReplies: Codable, Equatable, Hashable {\n\n    /// Pass true to delete all messages from the same sender\n    public let deleteAllMessages: Bool?\n\n    /// Pass true to delete the message\n    public let deleteMessage: Bool?\n\n    /// The identifier of an incoming message in the Replies chat\n    public let messageId: Int64?\n\n    /// Pass true to report the sender to the Telegram moderators\n    public let reportSpam: Bool?\n\n\n    public init(\n        deleteAllMessages: Bool?,\n        deleteMessage: Bool?,\n        messageId: Int64?,\n        reportSpam: Bool?\n    ) {\n        self.deleteAllMessages = deleteAllMessages\n        self.deleteMessage = deleteMessage\n        self.messageId = messageId\n        self.reportSpam = reportSpam\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BoostChat.swift",
    "content": "//\n//  BoostChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Boosts a chat and returns the list of available chat boost slots for the current user after the boost\npublic struct BoostChat: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n    /// Identifiers of boost slots of the current user from which to apply boosts to the chat\n    public let slotIds: [Int]?\n\n\n    public init(\n        chatId: Int64?,\n        slotIds: [Int]?\n    ) {\n        self.chatId = chatId\n        self.slotIds = slotIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BotAccessSettings.swift",
    "content": "//\n//  BotAccessSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes users that have access to a bot\npublic struct BotAccessSettings: Codable, Equatable, Hashable {\n\n    /// Identifiers of the users who can use the bot additionally to the owner of the bot\n    public let addedUserIds: [Int64]\n\n    /// True, if access to the bot is restricted to its owner and selected users\n    public let isRestricted: Bool\n\n\n    public init(\n        addedUserIds: [Int64],\n        isRestricted: Bool\n    ) {\n        self.addedUserIds = addedUserIds\n        self.isRestricted = isRestricted\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BotCommand.swift",
    "content": "//\n//  BotCommand.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a command supported by a bot\npublic struct BotCommand: Codable, Equatable, Hashable {\n\n    /// Text of the bot command\n    public let command: String\n\n    public let description: String\n\n\n    public init(\n        command: String,\n        description: String\n    ) {\n        self.command = command\n        self.description = description\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BotCommandScope.swift",
    "content": "//\n//  BotCommandScope.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents the scope to which bot commands are relevant\npublic indirect enum BotCommandScope: Codable, Equatable, Hashable {\n\n    /// A scope covering all users\n    case botCommandScopeDefault\n\n    /// A scope covering all private chats\n    case botCommandScopeAllPrivateChats\n\n    /// A scope covering all group and supergroup chats\n    case botCommandScopeAllGroupChats\n\n    /// A scope covering all group and supergroup chat administrators\n    case botCommandScopeAllChatAdministrators\n\n    /// A scope covering all members of a chat\n    case botCommandScopeChat(BotCommandScopeChat)\n\n    /// A scope covering all administrators of a chat\n    case botCommandScopeChatAdministrators(BotCommandScopeChatAdministrators)\n\n    /// A scope covering a member of a chat\n    case botCommandScopeChatMember(BotCommandScopeChatMember)\n\n\n    private enum Kind: String, Codable {\n        case botCommandScopeDefault\n        case botCommandScopeAllPrivateChats\n        case botCommandScopeAllGroupChats\n        case botCommandScopeAllChatAdministrators\n        case botCommandScopeChat\n        case botCommandScopeChatAdministrators\n        case botCommandScopeChatMember\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .botCommandScopeDefault:\n            self = .botCommandScopeDefault\n        case .botCommandScopeAllPrivateChats:\n            self = .botCommandScopeAllPrivateChats\n        case .botCommandScopeAllGroupChats:\n            self = .botCommandScopeAllGroupChats\n        case .botCommandScopeAllChatAdministrators:\n            self = .botCommandScopeAllChatAdministrators\n        case .botCommandScopeChat:\n            let value = try BotCommandScopeChat(from: decoder)\n            self = .botCommandScopeChat(value)\n        case .botCommandScopeChatAdministrators:\n            let value = try BotCommandScopeChatAdministrators(from: decoder)\n            self = .botCommandScopeChatAdministrators(value)\n        case .botCommandScopeChatMember:\n            let value = try BotCommandScopeChatMember(from: decoder)\n            self = .botCommandScopeChatMember(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .botCommandScopeDefault:\n            try container.encode(Kind.botCommandScopeDefault, forKey: .type)\n        case .botCommandScopeAllPrivateChats:\n            try container.encode(Kind.botCommandScopeAllPrivateChats, forKey: .type)\n        case .botCommandScopeAllGroupChats:\n            try container.encode(Kind.botCommandScopeAllGroupChats, forKey: .type)\n        case .botCommandScopeAllChatAdministrators:\n            try container.encode(Kind.botCommandScopeAllChatAdministrators, forKey: .type)\n        case .botCommandScopeChat(let value):\n            try container.encode(Kind.botCommandScopeChat, forKey: .type)\n            try value.encode(to: encoder)\n        case .botCommandScopeChatAdministrators(let value):\n            try container.encode(Kind.botCommandScopeChatAdministrators, forKey: .type)\n            try value.encode(to: encoder)\n        case .botCommandScopeChatMember(let value):\n            try container.encode(Kind.botCommandScopeChatMember, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A scope covering all members of a chat\npublic struct BotCommandScopeChat: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n\n    public init(chatId: Int64) {\n        self.chatId = chatId\n    }\n}\n\n/// A scope covering all administrators of a chat\npublic struct BotCommandScopeChatAdministrators: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n\n    public init(chatId: Int64) {\n        self.chatId = chatId\n    }\n}\n\n/// A scope covering a member of a chat\npublic struct BotCommandScopeChatMember: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// User identifier\n    public let userId: Int64\n\n\n    public init(\n        chatId: Int64,\n        userId: Int64\n    ) {\n        self.chatId = chatId\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BotCommands.swift",
    "content": "//\n//  BotCommands.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of bot commands\npublic struct BotCommands: Codable, Equatable, Hashable {\n\n    /// Bot's user identifier\n    public let botUserId: Int64\n\n    /// List of bot commands\n    public let commands: [BotCommand]\n\n\n    public init(\n        botUserId: Int64,\n        commands: [BotCommand]\n    ) {\n        self.botUserId = botUserId\n        self.commands = commands\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BotInfo.swift",
    "content": "//\n//  BotInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a bot\npublic struct BotInfo: Codable, Equatable, Hashable {\n\n    /// Information about the affiliate program of the bot; may be null if none\n    public let affiliateProgram: AffiliateProgramInfo?\n\n    /// Animation shown in the chat with the bot if the chat is empty; may be null\n    public let animation: Animation?\n\n    /// True, if the bot's revenue statistics are available to the current user\n    public let canGetRevenueStatistics: Bool\n\n    /// True, if the bot can manage emoji status of the current user\n    public let canManageEmojiStatus: Bool\n\n    /// List of the bot commands\n    public let commands: [BotCommand]\n\n    /// Default administrator rights for adding the bot to channels; may be null\n    public let defaultChannelAdministratorRights: ChatAdministratorRights?\n\n    /// Default administrator rights for adding the bot to basic group and supergroup chats; may be null\n    public let defaultGroupAdministratorRights: ChatAdministratorRights?\n\n    public let description: String\n\n    /// The internal link, which can be used to edit bot commands; may be null\n    public let editCommandsLink: InternalLinkType?\n\n    /// The internal link, which can be used to edit bot description; may be null\n    public let editDescriptionLink: InternalLinkType?\n\n    /// The internal link, which can be used to edit the photo or animation shown in the chat with the bot if the chat is empty; may be null\n    public let editDescriptionMediaLink: InternalLinkType?\n\n    /// The internal link, which can be used to edit bot settings; may be null\n    public let editSettingsLink: InternalLinkType?\n\n    /// True, if the bot has media previews\n    public let hasMediaPreviews: Bool\n\n    /// Identifier of the bot, which manages the bot; 0 if none or unknown; for owner of the bot only\n    public let managerBotUserId: Int64\n\n    /// Information about a button to show instead of the bot commands menu button; may be null if ordinary bot commands menu must be shown\n    public let menuButton: BotMenuButton?\n\n    /// Photo shown in the chat with the bot if the chat is empty; may be null\n    public let photo: Photo?\n\n    /// The HTTP link to the privacy policy of the bot. If empty, then /privacy command must be used if supported by the bot. If the command isn't supported, then https://telegram.org/privacy-tpa must be opened\n    public let privacyPolicyUrl: String\n\n    /// The text that is shown on the bot's profile page and is sent together with the link when users share the bot\n    public let shortDescription: String\n\n    /// Parameters of the verification that can be provided by the bot; may be null if none or the current user isn't the owner of the bot\n    public let verificationParameters: BotVerificationParameters?\n\n    /// Default dark background color for bot Web Apps; -1 if not specified\n    public let webAppBackgroundDarkColor: Int\n\n    /// Default light background color for bot Web Apps; -1 if not specified\n    public let webAppBackgroundLightColor: Int\n\n    /// Default dark header color for bot Web Apps; -1 if not specified\n    public let webAppHeaderDarkColor: Int\n\n    /// Default light header color for bot Web Apps; -1 if not specified\n    public let webAppHeaderLightColor: Int\n\n\n    public init(\n        affiliateProgram: AffiliateProgramInfo?,\n        animation: Animation?,\n        canGetRevenueStatistics: Bool,\n        canManageEmojiStatus: Bool,\n        commands: [BotCommand],\n        defaultChannelAdministratorRights: ChatAdministratorRights?,\n        defaultGroupAdministratorRights: ChatAdministratorRights?,\n        description: String,\n        editCommandsLink: InternalLinkType?,\n        editDescriptionLink: InternalLinkType?,\n        editDescriptionMediaLink: InternalLinkType?,\n        editSettingsLink: InternalLinkType?,\n        hasMediaPreviews: Bool,\n        managerBotUserId: Int64,\n        menuButton: BotMenuButton?,\n        photo: Photo?,\n        privacyPolicyUrl: String,\n        shortDescription: String,\n        verificationParameters: BotVerificationParameters?,\n        webAppBackgroundDarkColor: Int,\n        webAppBackgroundLightColor: Int,\n        webAppHeaderDarkColor: Int,\n        webAppHeaderLightColor: Int\n    ) {\n        self.affiliateProgram = affiliateProgram\n        self.animation = animation\n        self.canGetRevenueStatistics = canGetRevenueStatistics\n        self.canManageEmojiStatus = canManageEmojiStatus\n        self.commands = commands\n        self.defaultChannelAdministratorRights = defaultChannelAdministratorRights\n        self.defaultGroupAdministratorRights = defaultGroupAdministratorRights\n        self.description = description\n        self.editCommandsLink = editCommandsLink\n        self.editDescriptionLink = editDescriptionLink\n        self.editDescriptionMediaLink = editDescriptionMediaLink\n        self.editSettingsLink = editSettingsLink\n        self.hasMediaPreviews = hasMediaPreviews\n        self.managerBotUserId = managerBotUserId\n        self.menuButton = menuButton\n        self.photo = photo\n        self.privacyPolicyUrl = privacyPolicyUrl\n        self.shortDescription = shortDescription\n        self.verificationParameters = verificationParameters\n        self.webAppBackgroundDarkColor = webAppBackgroundDarkColor\n        self.webAppBackgroundLightColor = webAppBackgroundLightColor\n        self.webAppHeaderDarkColor = webAppHeaderDarkColor\n        self.webAppHeaderLightColor = webAppHeaderLightColor\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BotMediaPreview.swift",
    "content": "//\n//  BotMediaPreview.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes media previews of a bot\npublic struct BotMediaPreview: Codable, Equatable, Hashable {\n\n    /// Content of the preview; may only be of the types storyContentPhoto, storyContentVideo, or storyContentUnsupported\n    public let content: StoryContent\n\n    /// Point in time (Unix timestamp) when the preview was added or changed last time\n    public let date: Int\n\n\n    public init(\n        content: StoryContent,\n        date: Int\n    ) {\n        self.content = content\n        self.date = date\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BotMediaPreviewInfo.swift",
    "content": "//\n//  BotMediaPreviewInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of media previews of a bot for the given language and the list of languages for which the bot has dedicated previews\npublic struct BotMediaPreviewInfo: Codable, Equatable, Hashable {\n\n    /// List of language codes for which the bot has dedicated previews\n    public let languageCodes: [String]\n\n    /// List of media previews\n    public let previews: [BotMediaPreview]\n\n\n    public init(\n        languageCodes: [String],\n        previews: [BotMediaPreview]\n    ) {\n        self.languageCodes = languageCodes\n        self.previews = previews\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BotMediaPreviews.swift",
    "content": "//\n//  BotMediaPreviews.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of media previews of a bot\npublic struct BotMediaPreviews: Codable, Equatable, Hashable {\n\n    /// List of media previews\n    public let previews: [BotMediaPreview]\n\n\n    public init(previews: [BotMediaPreview]) {\n        self.previews = previews\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BotMenuButton.swift",
    "content": "//\n//  BotMenuButton.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a button to be shown instead of bot commands menu button\npublic struct BotMenuButton: Codable, Equatable, Hashable {\n\n    /// Text of the button\n    public let text: String\n\n    /// URL of a Web App to open when the button is pressed. If the link is of the type internalLinkTypeWebApp, then it must be processed accordingly. Otherwise, the link must be passed to openWebApp\n    public let url: String\n\n\n    public init(\n        text: String,\n        url: String\n    ) {\n        self.text = text\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BotTransactionPurpose.swift",
    "content": "//\n//  BotTransactionPurpose.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.40-22d49d5b\n//  https://github.com/tdlib/td/tree/22d49d5b\n//\n\nimport Foundation\n\n\n/// Describes purpose of a transaction with a bot\npublic indirect enum BotTransactionPurpose: Codable, Equatable, Hashable {\n\n    /// Paid media were bought\n    case botTransactionPurposePaidMedia(BotTransactionPurposePaidMedia)\n\n    /// User bought a product from the bot\n    case botTransactionPurposeInvoicePayment(BotTransactionPurposeInvoicePayment)\n\n    /// User bought a subscription in a bot or a business account\n    case botTransactionPurposeSubscription(BotTransactionPurposeSubscription)\n\n\n    private enum Kind: String, Codable {\n        case botTransactionPurposePaidMedia\n        case botTransactionPurposeInvoicePayment\n        case botTransactionPurposeSubscription\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .botTransactionPurposePaidMedia:\n            let value = try BotTransactionPurposePaidMedia(from: decoder)\n            self = .botTransactionPurposePaidMedia(value)\n        case .botTransactionPurposeInvoicePayment:\n            let value = try BotTransactionPurposeInvoicePayment(from: decoder)\n            self = .botTransactionPurposeInvoicePayment(value)\n        case .botTransactionPurposeSubscription:\n            let value = try BotTransactionPurposeSubscription(from: decoder)\n            self = .botTransactionPurposeSubscription(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .botTransactionPurposePaidMedia(let value):\n            try container.encode(Kind.botTransactionPurposePaidMedia, forKey: .type)\n            try value.encode(to: encoder)\n        case .botTransactionPurposeInvoicePayment(let value):\n            try container.encode(Kind.botTransactionPurposeInvoicePayment, forKey: .type)\n            try value.encode(to: encoder)\n        case .botTransactionPurposeSubscription(let value):\n            try container.encode(Kind.botTransactionPurposeSubscription, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Paid media were bought\npublic struct BotTransactionPurposePaidMedia: Codable, Equatable, Hashable {\n\n    /// The bought media if the transaction wasn't refunded\n    public let media: [PaidMedia]\n\n    /// Bot-provided payload; for bots only\n    public let payload: String\n\n\n    public init(\n        media: [PaidMedia],\n        payload: String\n    ) {\n        self.media = media\n        self.payload = payload\n    }\n}\n\n/// User bought a product from the bot\npublic struct BotTransactionPurposeInvoicePayment: Codable, Equatable, Hashable {\n\n    /// Invoice payload; for bots only\n    public let invoicePayload: Data\n\n    /// Information about the bought product; may be null if not applicable\n    public let productInfo: ProductInfo?\n\n\n    public init(\n        invoicePayload: Data,\n        productInfo: ProductInfo?\n    ) {\n        self.invoicePayload = invoicePayload\n        self.productInfo = productInfo\n    }\n}\n\n/// User bought a subscription in a bot or a business account\npublic struct BotTransactionPurposeSubscription: Codable, Equatable, Hashable {\n\n    /// Invoice payload; for bots only\n    public let invoicePayload: Data\n\n    /// The number of seconds between consecutive Telegram Star debiting\n    public let period: Int\n\n    /// Information about the bought subscription; may be null if not applicable\n    public let productInfo: ProductInfo?\n\n\n    public init(\n        invoicePayload: Data,\n        period: Int,\n        productInfo: ProductInfo?\n    ) {\n        self.invoicePayload = invoicePayload\n        self.period = period\n        self.productInfo = productInfo\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BotVerification.swift",
    "content": "//\n//  BotVerification.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes verification status provided by a bot\npublic struct BotVerification: Codable, Equatable, Hashable {\n\n    /// Identifier of the bot that provided the verification\n    public let botUserId: Int64\n\n    /// Custom description of verification reason set by the bot. Can contain only Mention, Hashtag, Cashtag, PhoneNumber, BankCardNumber, Url, and EmailAddress entities\n    public let customDescription: FormattedText\n\n    /// Identifier of the custom emoji that is used as the verification sign\n    public let iconCustomEmojiId: TdInt64\n\n\n    public init(\n        botUserId: Int64,\n        customDescription: FormattedText,\n        iconCustomEmojiId: TdInt64\n    ) {\n        self.botUserId = botUserId\n        self.customDescription = customDescription\n        self.iconCustomEmojiId = iconCustomEmojiId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BotVerificationParameters.swift",
    "content": "//\n//  BotVerificationParameters.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes parameters of verification that is provided by a bot\npublic struct BotVerificationParameters: Codable, Equatable, Hashable {\n\n    /// True, if the bot is allowed to provide custom description for verified entities\n    public let canSetCustomDescription: Bool\n\n    /// Default custom description of verification reason to be used as placeholder in setMessageSenderBotVerification; may be null if none\n    public let defaultCustomDescription: FormattedText?\n\n    /// Identifier of the custom emoji that is used as the verification sign\n    public let iconCustomEmojiId: TdInt64\n\n    /// Name of the organization that provides verification\n    public let organizationName: String\n\n\n    public init(\n        canSetCustomDescription: Bool,\n        defaultCustomDescription: FormattedText?,\n        iconCustomEmojiId: TdInt64,\n        organizationName: String\n    ) {\n        self.canSetCustomDescription = canSetCustomDescription\n        self.defaultCustomDescription = defaultCustomDescription\n        self.iconCustomEmojiId = iconCustomEmojiId\n        self.organizationName = organizationName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BotWriteAccessAllowReason.swift",
    "content": "//\n//  BotWriteAccessAllowReason.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a reason why a bot was allowed to write messages to the current user\npublic indirect enum BotWriteAccessAllowReason: Codable, Equatable, Hashable {\n\n    /// The user connected a website by logging in using Telegram Login Widget on it\n    case botWriteAccessAllowReasonConnectedWebsite(BotWriteAccessAllowReasonConnectedWebsite)\n\n    /// The user added the bot to attachment or side menu using toggleBotIsAddedToAttachmentMenu\n    case botWriteAccessAllowReasonAddedToAttachmentMenu\n\n    /// The user launched a Web App using getWebAppLinkUrl\n    case botWriteAccessAllowReasonLaunchedWebApp(BotWriteAccessAllowReasonLaunchedWebApp)\n\n    /// The user accepted bot's request to send messages with allowBotToSendMessages\n    case botWriteAccessAllowReasonAcceptedRequest\n\n\n    private enum Kind: String, Codable {\n        case botWriteAccessAllowReasonConnectedWebsite\n        case botWriteAccessAllowReasonAddedToAttachmentMenu\n        case botWriteAccessAllowReasonLaunchedWebApp\n        case botWriteAccessAllowReasonAcceptedRequest\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .botWriteAccessAllowReasonConnectedWebsite:\n            let value = try BotWriteAccessAllowReasonConnectedWebsite(from: decoder)\n            self = .botWriteAccessAllowReasonConnectedWebsite(value)\n        case .botWriteAccessAllowReasonAddedToAttachmentMenu:\n            self = .botWriteAccessAllowReasonAddedToAttachmentMenu\n        case .botWriteAccessAllowReasonLaunchedWebApp:\n            let value = try BotWriteAccessAllowReasonLaunchedWebApp(from: decoder)\n            self = .botWriteAccessAllowReasonLaunchedWebApp(value)\n        case .botWriteAccessAllowReasonAcceptedRequest:\n            self = .botWriteAccessAllowReasonAcceptedRequest\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .botWriteAccessAllowReasonConnectedWebsite(let value):\n            try container.encode(Kind.botWriteAccessAllowReasonConnectedWebsite, forKey: .type)\n            try value.encode(to: encoder)\n        case .botWriteAccessAllowReasonAddedToAttachmentMenu:\n            try container.encode(Kind.botWriteAccessAllowReasonAddedToAttachmentMenu, forKey: .type)\n        case .botWriteAccessAllowReasonLaunchedWebApp(let value):\n            try container.encode(Kind.botWriteAccessAllowReasonLaunchedWebApp, forKey: .type)\n            try value.encode(to: encoder)\n        case .botWriteAccessAllowReasonAcceptedRequest:\n            try container.encode(Kind.botWriteAccessAllowReasonAcceptedRequest, forKey: .type)\n        }\n    }\n}\n\n/// The user connected a website by logging in using Telegram Login Widget on it\npublic struct BotWriteAccessAllowReasonConnectedWebsite: Codable, Equatable, Hashable {\n\n    /// Domain name of the connected website\n    public let domainName: String\n\n\n    public init(domainName: String) {\n        self.domainName = domainName\n    }\n}\n\n/// The user launched a Web App using getWebAppLinkUrl\npublic struct BotWriteAccessAllowReasonLaunchedWebApp: Codable, Equatable, Hashable {\n\n    /// Information about the Web App\n    public let webApp: WebApp\n\n\n    public init(webApp: WebApp) {\n        self.webApp = webApp\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BuiltInTheme.swift",
    "content": "//\n//  BuiltInTheme.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a built-in theme of an official application\npublic indirect enum BuiltInTheme: Codable, Equatable, Hashable {\n\n    /// Classic light theme\n    case builtInThemeClassic\n\n    /// Regular light theme\n    case builtInThemeDay\n\n    /// Regular dark theme\n    case builtInThemeNight\n\n    /// Tinted dark theme\n    case builtInThemeTinted\n\n    /// Arctic light theme\n    case builtInThemeArctic\n\n\n    private enum Kind: String, Codable {\n        case builtInThemeClassic\n        case builtInThemeDay\n        case builtInThemeNight\n        case builtInThemeTinted\n        case builtInThemeArctic\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .builtInThemeClassic:\n            self = .builtInThemeClassic\n        case .builtInThemeDay:\n            self = .builtInThemeDay\n        case .builtInThemeNight:\n            self = .builtInThemeNight\n        case .builtInThemeTinted:\n            self = .builtInThemeTinted\n        case .builtInThemeArctic:\n            self = .builtInThemeArctic\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .builtInThemeClassic:\n            try container.encode(Kind.builtInThemeClassic, forKey: .type)\n        case .builtInThemeDay:\n            try container.encode(Kind.builtInThemeDay, forKey: .type)\n        case .builtInThemeNight:\n            try container.encode(Kind.builtInThemeNight, forKey: .type)\n        case .builtInThemeTinted:\n            try container.encode(Kind.builtInThemeTinted, forKey: .type)\n        case .builtInThemeArctic:\n            try container.encode(Kind.builtInThemeArctic, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BusinessAwayMessageSchedule.swift",
    "content": "//\n//  BusinessAwayMessageSchedule.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes conditions for sending of away messages by a Telegram Business account\npublic indirect enum BusinessAwayMessageSchedule: Codable, Equatable, Hashable {\n\n    /// Send away messages always\n    case businessAwayMessageScheduleAlways\n\n    /// Send away messages outside of the business opening hours\n    case businessAwayMessageScheduleOutsideOfOpeningHours\n\n    /// Send away messages only in the specified time span\n    case businessAwayMessageScheduleCustom(BusinessAwayMessageScheduleCustom)\n\n\n    private enum Kind: String, Codable {\n        case businessAwayMessageScheduleAlways\n        case businessAwayMessageScheduleOutsideOfOpeningHours\n        case businessAwayMessageScheduleCustom\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .businessAwayMessageScheduleAlways:\n            self = .businessAwayMessageScheduleAlways\n        case .businessAwayMessageScheduleOutsideOfOpeningHours:\n            self = .businessAwayMessageScheduleOutsideOfOpeningHours\n        case .businessAwayMessageScheduleCustom:\n            let value = try BusinessAwayMessageScheduleCustom(from: decoder)\n            self = .businessAwayMessageScheduleCustom(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .businessAwayMessageScheduleAlways:\n            try container.encode(Kind.businessAwayMessageScheduleAlways, forKey: .type)\n        case .businessAwayMessageScheduleOutsideOfOpeningHours:\n            try container.encode(Kind.businessAwayMessageScheduleOutsideOfOpeningHours, forKey: .type)\n        case .businessAwayMessageScheduleCustom(let value):\n            try container.encode(Kind.businessAwayMessageScheduleCustom, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Send away messages only in the specified time span\npublic struct BusinessAwayMessageScheduleCustom: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the away messages will stop to be sent\n    public let endDate: Int\n\n    /// Point in time (Unix timestamp) when the away messages will start to be sent\n    public let startDate: Int\n\n\n    public init(\n        endDate: Int,\n        startDate: Int\n    ) {\n        self.endDate = endDate\n        self.startDate = startDate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BusinessAwayMessageSettings.swift",
    "content": "//\n//  BusinessAwayMessageSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes settings for messages that are automatically sent by a Telegram Business account when it is away\npublic struct BusinessAwayMessageSettings: Codable, Equatable, Hashable {\n\n    /// True, if the messages must not be sent if the account was online in the last 10 minutes\n    public let offlineOnly: Bool\n\n    /// Chosen recipients of the away messages\n    public let recipients: BusinessRecipients\n\n    /// Settings used to check whether the current user is away\n    public let schedule: BusinessAwayMessageSchedule\n\n    /// Unique quick reply shortcut identifier for the away messages\n    public let shortcutId: Int\n\n\n    public init(\n        offlineOnly: Bool,\n        recipients: BusinessRecipients,\n        schedule: BusinessAwayMessageSchedule,\n        shortcutId: Int\n    ) {\n        self.offlineOnly = offlineOnly\n        self.recipients = recipients\n        self.schedule = schedule\n        self.shortcutId = shortcutId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BusinessBotManageBar.swift",
    "content": "//\n//  BusinessBotManageBar.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a business bot that manages the chat\npublic struct BusinessBotManageBar: Codable, Equatable, Hashable {\n\n    /// User identifier of the bot\n    public let botUserId: Int64\n\n    /// True, if the bot can reply\n    public let canBotReply: Bool\n\n    /// True, if the bot is paused. Use toggleBusinessConnectedBotChatIsPaused to change the value of the field\n    public let isBotPaused: Bool\n\n    /// URL to be opened to manage the bot\n    public let manageUrl: String\n\n\n    public init(\n        botUserId: Int64,\n        canBotReply: Bool,\n        isBotPaused: Bool,\n        manageUrl: String\n    ) {\n        self.botUserId = botUserId\n        self.canBotReply = canBotReply\n        self.isBotPaused = isBotPaused\n        self.manageUrl = manageUrl\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BusinessBotRights.swift",
    "content": "//\n//  BusinessBotRights.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes rights of a business bot\npublic struct BusinessBotRights: Codable, Equatable, Hashable {\n\n    /// True, if the bot can change gift receiving settings of the business account\n    public let canChangeGiftSettings: Bool\n\n    /// True, if the bot can delete any message\n    public let canDeleteAllMessages: Bool\n\n    /// True, if the bot can delete sent messages\n    public let canDeleteSentMessages: Bool\n\n    /// True, if the bot can edit bio of the business account\n    public let canEditBio: Bool\n\n    /// True, if the bot can edit name of the business account\n    public let canEditName: Bool\n\n    /// True, if the bot can edit profile photo of the business account\n    public let canEditProfilePhoto: Bool\n\n    /// True, if the bot can edit username of the business account\n    public let canEditUsername: Bool\n\n    /// True, if the bot can post, edit and delete stories\n    public let canManageStories: Bool\n\n    /// True, if the bot can mark incoming private messages as read\n    public let canReadMessages: Bool\n\n    /// True, if the bot can send and edit messages in the private chats that had incoming messages in the last 24 hours\n    public let canReply: Bool\n\n    /// True, if the bot can sell regular gifts received by the business account\n    public let canSellGifts: Bool\n\n    /// True, if the bot can transfer and upgrade gifts received by the business account\n    public let canTransferAndUpgradeGifts: Bool\n\n    /// True, if the bot can transfer Telegram Stars received by the business account to account of the bot, or use them to upgrade and transfer gifts\n    public let canTransferStars: Bool\n\n    /// True, if the bot can view gifts and Telegram Star amount owned by the business account\n    public let canViewGiftsAndStars: Bool\n\n\n    public init(\n        canChangeGiftSettings: Bool,\n        canDeleteAllMessages: Bool,\n        canDeleteSentMessages: Bool,\n        canEditBio: Bool,\n        canEditName: Bool,\n        canEditProfilePhoto: Bool,\n        canEditUsername: Bool,\n        canManageStories: Bool,\n        canReadMessages: Bool,\n        canReply: Bool,\n        canSellGifts: Bool,\n        canTransferAndUpgradeGifts: Bool,\n        canTransferStars: Bool,\n        canViewGiftsAndStars: Bool\n    ) {\n        self.canChangeGiftSettings = canChangeGiftSettings\n        self.canDeleteAllMessages = canDeleteAllMessages\n        self.canDeleteSentMessages = canDeleteSentMessages\n        self.canEditBio = canEditBio\n        self.canEditName = canEditName\n        self.canEditProfilePhoto = canEditProfilePhoto\n        self.canEditUsername = canEditUsername\n        self.canManageStories = canManageStories\n        self.canReadMessages = canReadMessages\n        self.canReply = canReply\n        self.canSellGifts = canSellGifts\n        self.canTransferAndUpgradeGifts = canTransferAndUpgradeGifts\n        self.canTransferStars = canTransferStars\n        self.canViewGiftsAndStars = canViewGiftsAndStars\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BusinessChatLink.swift",
    "content": "//\n//  BusinessChatLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a business chat link\npublic struct BusinessChatLink: Codable, Equatable, Hashable {\n\n    /// The HTTPS link\n    public let link: String\n\n    /// Message draft text that will be added to the input field\n    public let text: FormattedText\n\n    /// Link title\n    public let title: String\n\n    /// Number of times the link was used\n    public let viewCount: Int\n\n\n    public init(\n        link: String,\n        text: FormattedText,\n        title: String,\n        viewCount: Int\n    ) {\n        self.link = link\n        self.text = text\n        self.title = title\n        self.viewCount = viewCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BusinessChatLinkInfo.swift",
    "content": "//\n//  BusinessChatLinkInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a business chat link\npublic struct BusinessChatLinkInfo: Codable, Equatable, Hashable {\n\n    /// Identifier of the private chat that created the link\n    public let chatId: Int64\n\n    /// Message draft text that must be added to the input field\n    public let text: FormattedText\n\n\n    public init(\n        chatId: Int64,\n        text: FormattedText\n    ) {\n        self.chatId = chatId\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BusinessChatLinks.swift",
    "content": "//\n//  BusinessChatLinks.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of business chat links created by the user\npublic struct BusinessChatLinks: Codable, Equatable, Hashable {\n\n    /// List of links\n    public let links: [BusinessChatLink]\n\n\n    public init(links: [BusinessChatLink]) {\n        self.links = links\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BusinessConnectedBot.swift",
    "content": "//\n//  BusinessConnectedBot.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a bot connected to a business account\npublic struct BusinessConnectedBot: Codable, Equatable, Hashable {\n\n    /// User identifier of the bot\n    public let botUserId: Int64\n\n    /// Private chats that will be accessible to the bot\n    public let recipients: BusinessRecipients\n\n    /// Rights of the bot\n    public let rights: BusinessBotRights\n\n\n    public init(\n        botUserId: Int64,\n        recipients: BusinessRecipients,\n        rights: BusinessBotRights\n    ) {\n        self.botUserId = botUserId\n        self.recipients = recipients\n        self.rights = rights\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BusinessConnection.swift",
    "content": "//\n//  BusinessConnection.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a connection of the bot with a business account\npublic struct BusinessConnection: Codable, Equatable, Hashable, Identifiable {\n\n    /// Point in time (Unix timestamp) when the connection was established\n    public let date: Int\n\n    /// Unique identifier of the connection\n    public let id: String\n\n    /// True, if the connection is enabled; false otherwise\n    public let isEnabled: Bool\n\n    /// Rights of the bot; may be null if the connection was disabled\n    public let rights: BusinessBotRights?\n\n    /// Chat identifier of the private chat with the user\n    public let userChatId: Int64\n\n    /// Identifier of the business user who created the connection\n    public let userId: Int64\n\n\n    public init(\n        date: Int,\n        id: String,\n        isEnabled: Bool,\n        rights: BusinessBotRights?,\n        userChatId: Int64,\n        userId: Int64\n    ) {\n        self.date = date\n        self.id = id\n        self.isEnabled = isEnabled\n        self.rights = rights\n        self.userChatId = userChatId\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BusinessFeature.swift",
    "content": "//\n//  BusinessFeature.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a feature available to Business user accounts\npublic indirect enum BusinessFeature: Codable, Equatable, Hashable {\n\n    /// The ability to set location\n    case businessFeatureLocation\n\n    /// The ability to set opening hours\n    case businessFeatureOpeningHours\n\n    /// The ability to use quick replies\n    case businessFeatureQuickReplies\n\n    /// The ability to set up a greeting message\n    case businessFeatureGreetingMessage\n\n    /// The ability to set up an away message\n    case businessFeatureAwayMessage\n\n    /// The ability to create links to the business account with predefined message text\n    case businessFeatureAccountLinks\n\n    /// The ability to customize start page\n    case businessFeatureStartPage\n\n    /// The ability to connect a bot to the account\n    case businessFeatureBots\n\n    /// The ability to show an emoji status along with the business name\n    case businessFeatureEmojiStatus\n\n    /// The ability to display folder names for each chat in the chat list\n    case businessFeatureChatFolderTags\n\n    /// Allowed to use many additional features for stories\n    case businessFeatureUpgradedStories\n\n\n    private enum Kind: String, Codable {\n        case businessFeatureLocation\n        case businessFeatureOpeningHours\n        case businessFeatureQuickReplies\n        case businessFeatureGreetingMessage\n        case businessFeatureAwayMessage\n        case businessFeatureAccountLinks\n        case businessFeatureStartPage\n        case businessFeatureBots\n        case businessFeatureEmojiStatus\n        case businessFeatureChatFolderTags\n        case businessFeatureUpgradedStories\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .businessFeatureLocation:\n            self = .businessFeatureLocation\n        case .businessFeatureOpeningHours:\n            self = .businessFeatureOpeningHours\n        case .businessFeatureQuickReplies:\n            self = .businessFeatureQuickReplies\n        case .businessFeatureGreetingMessage:\n            self = .businessFeatureGreetingMessage\n        case .businessFeatureAwayMessage:\n            self = .businessFeatureAwayMessage\n        case .businessFeatureAccountLinks:\n            self = .businessFeatureAccountLinks\n        case .businessFeatureStartPage:\n            self = .businessFeatureStartPage\n        case .businessFeatureBots:\n            self = .businessFeatureBots\n        case .businessFeatureEmojiStatus:\n            self = .businessFeatureEmojiStatus\n        case .businessFeatureChatFolderTags:\n            self = .businessFeatureChatFolderTags\n        case .businessFeatureUpgradedStories:\n            self = .businessFeatureUpgradedStories\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .businessFeatureLocation:\n            try container.encode(Kind.businessFeatureLocation, forKey: .type)\n        case .businessFeatureOpeningHours:\n            try container.encode(Kind.businessFeatureOpeningHours, forKey: .type)\n        case .businessFeatureQuickReplies:\n            try container.encode(Kind.businessFeatureQuickReplies, forKey: .type)\n        case .businessFeatureGreetingMessage:\n            try container.encode(Kind.businessFeatureGreetingMessage, forKey: .type)\n        case .businessFeatureAwayMessage:\n            try container.encode(Kind.businessFeatureAwayMessage, forKey: .type)\n        case .businessFeatureAccountLinks:\n            try container.encode(Kind.businessFeatureAccountLinks, forKey: .type)\n        case .businessFeatureStartPage:\n            try container.encode(Kind.businessFeatureStartPage, forKey: .type)\n        case .businessFeatureBots:\n            try container.encode(Kind.businessFeatureBots, forKey: .type)\n        case .businessFeatureEmojiStatus:\n            try container.encode(Kind.businessFeatureEmojiStatus, forKey: .type)\n        case .businessFeatureChatFolderTags:\n            try container.encode(Kind.businessFeatureChatFolderTags, forKey: .type)\n        case .businessFeatureUpgradedStories:\n            try container.encode(Kind.businessFeatureUpgradedStories, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BusinessFeaturePromotionAnimation.swift",
    "content": "//\n//  BusinessFeaturePromotionAnimation.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a promotion animation for a Business feature\npublic struct BusinessFeaturePromotionAnimation: Codable, Equatable, Hashable {\n\n    /// Promotion animation for the feature\n    public let animation: Animation\n\n    /// Business feature\n    public let feature: BusinessFeature\n\n\n    public init(\n        animation: Animation,\n        feature: BusinessFeature\n    ) {\n        self.animation = animation\n        self.feature = feature\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BusinessFeatures.swift",
    "content": "//\n//  BusinessFeatures.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about features, available to Business user accounts\npublic struct BusinessFeatures: Codable, Equatable, Hashable {\n\n    /// The list of available business features\n    public let features: [BusinessFeature]\n\n\n    public init(features: [BusinessFeature]) {\n        self.features = features\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BusinessGreetingMessageSettings.swift",
    "content": "//\n//  BusinessGreetingMessageSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes settings for greeting messages that are automatically sent by a Telegram Business account as response to incoming messages in an inactive private chat\npublic struct BusinessGreetingMessageSettings: Codable, Equatable, Hashable {\n\n    /// The number of days after which a chat will be considered as inactive; currently, must be on of 7, 14, 21, or 28\n    public let inactivityDays: Int\n\n    /// Chosen recipients of the greeting messages\n    public let recipients: BusinessRecipients\n\n    /// Unique quick reply shortcut identifier for the greeting messages\n    public let shortcutId: Int\n\n\n    public init(\n        inactivityDays: Int,\n        recipients: BusinessRecipients,\n        shortcutId: Int\n    ) {\n        self.inactivityDays = inactivityDays\n        self.recipients = recipients\n        self.shortcutId = shortcutId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BusinessInfo.swift",
    "content": "//\n//  BusinessInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a Telegram Business account\npublic struct BusinessInfo: Codable, Equatable, Hashable {\n\n    /// The away message; may be null if none or the Business account is not of the current user\n    public let awayMessageSettings: BusinessAwayMessageSettings?\n\n    /// The greeting message; may be null if none or the Business account is not of the current user\n    public let greetingMessageSettings: BusinessGreetingMessageSettings?\n\n    /// Opening hours of the business in the local time; may be null if none. The hours are guaranteed to be valid and has already been split by week days. Local time zone identifier will be empty. An updateUserFullInfo update is not triggered when value of this field changes\n    public let localOpeningHours: BusinessOpeningHours?\n\n    /// Location of the business; may be null if none\n    public let location: BusinessLocation?\n\n    /// Time left before the business will close the next time, in seconds; 0 if unknown. An updateUserFullInfo update is not triggered when value of this field changes\n    public let nextCloseIn: Int\n\n    /// Time left before the business will open the next time, in seconds; 0 if unknown. An updateUserFullInfo update is not triggered when value of this field changes\n    public let nextOpenIn: Int\n\n    /// Opening hours of the business; may be null if none. The hours are guaranteed to be valid and has already been split by week days\n    public let openingHours: BusinessOpeningHours?\n\n    /// Information about start page of the account; may be null if none\n    public let startPage: BusinessStartPage?\n\n\n    public init(\n        awayMessageSettings: BusinessAwayMessageSettings?,\n        greetingMessageSettings: BusinessGreetingMessageSettings?,\n        localOpeningHours: BusinessOpeningHours?,\n        location: BusinessLocation?,\n        nextCloseIn: Int,\n        nextOpenIn: Int,\n        openingHours: BusinessOpeningHours?,\n        startPage: BusinessStartPage?\n    ) {\n        self.awayMessageSettings = awayMessageSettings\n        self.greetingMessageSettings = greetingMessageSettings\n        self.localOpeningHours = localOpeningHours\n        self.location = location\n        self.nextCloseIn = nextCloseIn\n        self.nextOpenIn = nextOpenIn\n        self.openingHours = openingHours\n        self.startPage = startPage\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BusinessLocation.swift",
    "content": "//\n//  BusinessLocation.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a location of a business\npublic struct BusinessLocation: Codable, Equatable, Hashable {\n\n    /// Location address; 1-96 characters\n    public let address: String\n\n    /// The location; may be null if not specified\n    public let location: Location?\n\n\n    public init(\n        address: String,\n        location: Location?\n    ) {\n        self.address = address\n        self.location = location\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BusinessMessage.swift",
    "content": "//\n//  BusinessMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a message from a business account as received by a bot\npublic struct BusinessMessage: Codable, Equatable, Hashable {\n\n    /// The message\n    public let message: Message\n\n    /// Message that is replied by the message in the same chat; may be null if none\n    public let replyToMessage: Message?\n\n\n    public init(\n        message: Message,\n        replyToMessage: Message?\n    ) {\n        self.message = message\n        self.replyToMessage = replyToMessage\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BusinessMessages.swift",
    "content": "//\n//  BusinessMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of messages from a business account as received by a bot\npublic struct BusinessMessages: Codable, Equatable, Hashable {\n\n    /// List of business messages\n    public let messages: [BusinessMessage]\n\n\n    public init(messages: [BusinessMessage]) {\n        self.messages = messages\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BusinessOpeningHours.swift",
    "content": "//\n//  BusinessOpeningHours.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes opening hours of a business\npublic struct BusinessOpeningHours: Codable, Equatable, Hashable {\n\n    /// Intervals of the time when the business is open\n    public let openingHours: [BusinessOpeningHoursInterval]\n\n    /// Unique time zone identifier\n    public let timeZoneId: String\n\n\n    public init(\n        openingHours: [BusinessOpeningHoursInterval],\n        timeZoneId: String\n    ) {\n        self.openingHours = openingHours\n        self.timeZoneId = timeZoneId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BusinessOpeningHoursInterval.swift",
    "content": "//\n//  BusinessOpeningHoursInterval.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an interval of time when the business is open\npublic struct BusinessOpeningHoursInterval: Codable, Equatable, Hashable {\n\n    /// The minute's sequence number in a week, starting on Monday, marking the end of the time interval during which the business is open; 1-8*24*60\n    public let endMinute: Int\n\n    /// The minute's sequence number in a week, starting on Monday, marking the start of the time interval during which the business is open; 0-7*24*60\n    public let startMinute: Int\n\n\n    public init(\n        endMinute: Int,\n        startMinute: Int\n    ) {\n        self.endMinute = endMinute\n        self.startMinute = startMinute\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BusinessRecipients.swift",
    "content": "//\n//  BusinessRecipients.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes private chats chosen for automatic interaction with a business\npublic struct BusinessRecipients: Codable, Equatable, Hashable {\n\n    /// Identifiers of selected private chats\n    public let chatIds: [Int64]\n\n    /// If true, then all private chats except the selected are chosen. Otherwise, only the selected chats are chosen\n    public let excludeSelected: Bool\n\n    /// Identifiers of private chats that are always excluded; for businessConnectedBot only\n    public let excludedChatIds: [Int64]\n\n    /// True, if all private chats with contacts are selected\n    public let selectContacts: Bool\n\n    /// True, if all existing private chats are selected\n    public let selectExistingChats: Bool\n\n    /// True, if all new private chats are selected\n    public let selectNewChats: Bool\n\n    /// True, if all private chats with non-contacts are selected\n    public let selectNonContacts: Bool\n\n\n    public init(\n        chatIds: [Int64],\n        excludeSelected: Bool,\n        excludedChatIds: [Int64],\n        selectContacts: Bool,\n        selectExistingChats: Bool,\n        selectNewChats: Bool,\n        selectNonContacts: Bool\n    ) {\n        self.chatIds = chatIds\n        self.excludeSelected = excludeSelected\n        self.excludedChatIds = excludedChatIds\n        self.selectContacts = selectContacts\n        self.selectExistingChats = selectExistingChats\n        self.selectNewChats = selectNewChats\n        self.selectNonContacts = selectNonContacts\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BusinessStartPage.swift",
    "content": "//\n//  BusinessStartPage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes settings for a business account start page\npublic struct BusinessStartPage: Codable, Equatable, Hashable {\n\n    /// Message text of the start page\n    public let message: String\n\n    /// Greeting sticker of the start page; may be null if none\n    public let sticker: Sticker?\n\n    /// Title text of the start page\n    public let title: String\n\n\n    public init(\n        message: String,\n        sticker: Sticker?,\n        title: String\n    ) {\n        self.message = message\n        self.sticker = sticker\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ButtonStyle.swift",
    "content": "//\n//  ButtonStyle.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes style of a button\npublic indirect enum ButtonStyle: Codable, Equatable, Hashable {\n\n    /// The button has default style\n    case buttonStyleDefault\n\n    /// The button has dark blue color\n    case buttonStylePrimary\n\n    /// The button has red color\n    case buttonStyleDanger\n\n    /// The button has green color\n    case buttonStyleSuccess\n\n\n    private enum Kind: String, Codable {\n        case buttonStyleDefault\n        case buttonStylePrimary\n        case buttonStyleDanger\n        case buttonStyleSuccess\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .buttonStyleDefault:\n            self = .buttonStyleDefault\n        case .buttonStylePrimary:\n            self = .buttonStylePrimary\n        case .buttonStyleDanger:\n            self = .buttonStyleDanger\n        case .buttonStyleSuccess:\n            self = .buttonStyleSuccess\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .buttonStyleDefault:\n            try container.encode(Kind.buttonStyleDefault, forKey: .type)\n        case .buttonStylePrimary:\n            try container.encode(Kind.buttonStylePrimary, forKey: .type)\n        case .buttonStyleDanger:\n            try container.encode(Kind.buttonStyleDanger, forKey: .type)\n        case .buttonStyleSuccess:\n            try container.encode(Kind.buttonStyleSuccess, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/BuyGiftUpgrade.swift",
    "content": "//\n//  BuyGiftUpgrade.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Pays for upgrade of a regular gift that is owned by another user or channel chat\npublic struct BuyGiftUpgrade: Codable, Equatable, Hashable {\n\n    /// Identifier of the user or the channel chat that owns the gift\n    public let ownerId: MessageSender?\n\n    /// Prepaid upgrade hash as received along with the gift\n    public let prepaidUpgradeHash: String?\n\n    /// The Telegram Star amount the user agreed to pay for the upgrade; must be equal to gift.upgrade_star_count\n    public let starCount: Int64?\n\n\n    public init(\n        ownerId: MessageSender?,\n        prepaidUpgradeHash: String?,\n        starCount: Int64?\n    ) {\n        self.ownerId = ownerId\n        self.prepaidUpgradeHash = prepaidUpgradeHash\n        self.starCount = starCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Call.swift",
    "content": "//\n//  Call.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a call\npublic struct Call: Codable, Equatable, Hashable, Identifiable {\n\n    /// Call identifier, not persistent\n    public let id: Int\n\n    /// True, if the call is outgoing\n    public let isOutgoing: Bool\n\n    /// True, if the call is a video call\n    public let isVideo: Bool\n\n    /// Call state\n    public let state: CallState\n\n    /// Persistent unique call identifier; 0 if isn't assigned yet by the server\n    public let uniqueId: TdInt64\n\n    /// User identifier of the other call participant\n    public let userId: Int64\n\n\n    public init(\n        id: Int,\n        isOutgoing: Bool,\n        isVideo: Bool,\n        state: CallState,\n        uniqueId: TdInt64,\n        userId: Int64\n    ) {\n        self.id = id\n        self.isOutgoing = isOutgoing\n        self.isVideo = isVideo\n        self.state = state\n        self.uniqueId = uniqueId\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CallDiscardReason.swift",
    "content": "//\n//  CallDiscardReason.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the reason why a call was discarded\npublic indirect enum CallDiscardReason: Codable, Equatable, Hashable {\n\n    /// The call wasn't discarded, or the reason is unknown\n    case callDiscardReasonEmpty\n\n    /// The call was ended before the conversation started. It was canceled by the caller or missed by the other party\n    case callDiscardReasonMissed\n\n    /// The call was ended before the conversation started. It was declined by the other party\n    case callDiscardReasonDeclined\n\n    /// The call was ended during the conversation because the users were disconnected\n    case callDiscardReasonDisconnected\n\n    /// The call was ended because one of the parties hung up\n    case callDiscardReasonHungUp\n\n    /// The call was ended because it has been upgraded to a group call\n    case callDiscardReasonUpgradeToGroupCall(CallDiscardReasonUpgradeToGroupCall)\n\n\n    private enum Kind: String, Codable {\n        case callDiscardReasonEmpty\n        case callDiscardReasonMissed\n        case callDiscardReasonDeclined\n        case callDiscardReasonDisconnected\n        case callDiscardReasonHungUp\n        case callDiscardReasonUpgradeToGroupCall\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .callDiscardReasonEmpty:\n            self = .callDiscardReasonEmpty\n        case .callDiscardReasonMissed:\n            self = .callDiscardReasonMissed\n        case .callDiscardReasonDeclined:\n            self = .callDiscardReasonDeclined\n        case .callDiscardReasonDisconnected:\n            self = .callDiscardReasonDisconnected\n        case .callDiscardReasonHungUp:\n            self = .callDiscardReasonHungUp\n        case .callDiscardReasonUpgradeToGroupCall:\n            let value = try CallDiscardReasonUpgradeToGroupCall(from: decoder)\n            self = .callDiscardReasonUpgradeToGroupCall(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .callDiscardReasonEmpty:\n            try container.encode(Kind.callDiscardReasonEmpty, forKey: .type)\n        case .callDiscardReasonMissed:\n            try container.encode(Kind.callDiscardReasonMissed, forKey: .type)\n        case .callDiscardReasonDeclined:\n            try container.encode(Kind.callDiscardReasonDeclined, forKey: .type)\n        case .callDiscardReasonDisconnected:\n            try container.encode(Kind.callDiscardReasonDisconnected, forKey: .type)\n        case .callDiscardReasonHungUp:\n            try container.encode(Kind.callDiscardReasonHungUp, forKey: .type)\n        case .callDiscardReasonUpgradeToGroupCall(let value):\n            try container.encode(Kind.callDiscardReasonUpgradeToGroupCall, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The call was ended because it has been upgraded to a group call\npublic struct CallDiscardReasonUpgradeToGroupCall: Codable, Equatable, Hashable {\n\n    /// Invite link for the group call\n    public let inviteLink: String\n\n\n    public init(inviteLink: String) {\n        self.inviteLink = inviteLink\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CallId.swift",
    "content": "//\n//  CallId.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains the call identifier\npublic struct CallId: Codable, Equatable, Hashable, Identifiable {\n\n    /// Call identifier\n    public let id: Int\n\n\n    public init(id: Int) {\n        self.id = id\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CallProblem.swift",
    "content": "//\n//  CallProblem.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the exact type of problem with a call\npublic indirect enum CallProblem: Codable, Equatable, Hashable {\n\n    /// The user heard their own voice\n    case callProblemEcho\n\n    /// The user heard background noise\n    case callProblemNoise\n\n    /// The other side kept disappearing\n    case callProblemInterruptions\n\n    /// The speech was distorted\n    case callProblemDistortedSpeech\n\n    /// The user couldn't hear the other side\n    case callProblemSilentLocal\n\n    /// The other side couldn't hear the user\n    case callProblemSilentRemote\n\n    /// The call ended unexpectedly\n    case callProblemDropped\n\n    /// The video was distorted\n    case callProblemDistortedVideo\n\n    /// The video was pixelated\n    case callProblemPixelatedVideo\n\n\n    private enum Kind: String, Codable {\n        case callProblemEcho\n        case callProblemNoise\n        case callProblemInterruptions\n        case callProblemDistortedSpeech\n        case callProblemSilentLocal\n        case callProblemSilentRemote\n        case callProblemDropped\n        case callProblemDistortedVideo\n        case callProblemPixelatedVideo\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .callProblemEcho:\n            self = .callProblemEcho\n        case .callProblemNoise:\n            self = .callProblemNoise\n        case .callProblemInterruptions:\n            self = .callProblemInterruptions\n        case .callProblemDistortedSpeech:\n            self = .callProblemDistortedSpeech\n        case .callProblemSilentLocal:\n            self = .callProblemSilentLocal\n        case .callProblemSilentRemote:\n            self = .callProblemSilentRemote\n        case .callProblemDropped:\n            self = .callProblemDropped\n        case .callProblemDistortedVideo:\n            self = .callProblemDistortedVideo\n        case .callProblemPixelatedVideo:\n            self = .callProblemPixelatedVideo\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .callProblemEcho:\n            try container.encode(Kind.callProblemEcho, forKey: .type)\n        case .callProblemNoise:\n            try container.encode(Kind.callProblemNoise, forKey: .type)\n        case .callProblemInterruptions:\n            try container.encode(Kind.callProblemInterruptions, forKey: .type)\n        case .callProblemDistortedSpeech:\n            try container.encode(Kind.callProblemDistortedSpeech, forKey: .type)\n        case .callProblemSilentLocal:\n            try container.encode(Kind.callProblemSilentLocal, forKey: .type)\n        case .callProblemSilentRemote:\n            try container.encode(Kind.callProblemSilentRemote, forKey: .type)\n        case .callProblemDropped:\n            try container.encode(Kind.callProblemDropped, forKey: .type)\n        case .callProblemDistortedVideo:\n            try container.encode(Kind.callProblemDistortedVideo, forKey: .type)\n        case .callProblemPixelatedVideo:\n            try container.encode(Kind.callProblemPixelatedVideo, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CallProtocol.swift",
    "content": "//\n//  CallProtocol.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Specifies the supported call protocols\npublic struct CallProtocol: Codable, Equatable, Hashable {\n\n    /// List of supported tgcalls versions\n    public let libraryVersions: [String]\n\n    /// The maximum supported API layer; use 92\n    public let maxLayer: Int\n\n    /// The minimum supported API layer; use 65\n    public let minLayer: Int\n\n    /// True, if UDP peer-to-peer connections are supported\n    public let udpP2p: Bool\n\n    /// True, if connection through UDP reflectors is supported\n    public let udpReflector: Bool\n\n\n    public init(\n        libraryVersions: [String],\n        maxLayer: Int,\n        minLayer: Int,\n        udpP2p: Bool,\n        udpReflector: Bool\n    ) {\n        self.libraryVersions = libraryVersions\n        self.maxLayer = maxLayer\n        self.minLayer = minLayer\n        self.udpP2p = udpP2p\n        self.udpReflector = udpReflector\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CallServer.swift",
    "content": "//\n//  CallServer.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a server for relaying call data\npublic struct CallServer: Codable, Equatable, Hashable, Identifiable {\n\n    /// Server identifier\n    public let id: TdInt64\n\n    /// Server IPv4 address\n    public let ipAddress: String\n\n    /// Server IPv6 address\n    public let ipv6Address: String\n\n    /// Server port number\n    public let port: Int\n\n    /// Server type\n    public let type: CallServerType\n\n\n    public init(\n        id: TdInt64,\n        ipAddress: String,\n        ipv6Address: String,\n        port: Int,\n        type: CallServerType\n    ) {\n        self.id = id\n        self.ipAddress = ipAddress\n        self.ipv6Address = ipv6Address\n        self.port = port\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CallServerType.swift",
    "content": "//\n//  CallServerType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the type of call server\npublic indirect enum CallServerType: Codable, Equatable, Hashable {\n\n    /// A Telegram call reflector\n    case callServerTypeTelegramReflector(CallServerTypeTelegramReflector)\n\n    /// A WebRTC server\n    case callServerTypeWebrtc(CallServerTypeWebrtc)\n\n\n    private enum Kind: String, Codable {\n        case callServerTypeTelegramReflector\n        case callServerTypeWebrtc\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .callServerTypeTelegramReflector:\n            let value = try CallServerTypeTelegramReflector(from: decoder)\n            self = .callServerTypeTelegramReflector(value)\n        case .callServerTypeWebrtc:\n            let value = try CallServerTypeWebrtc(from: decoder)\n            self = .callServerTypeWebrtc(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .callServerTypeTelegramReflector(let value):\n            try container.encode(Kind.callServerTypeTelegramReflector, forKey: .type)\n            try value.encode(to: encoder)\n        case .callServerTypeWebrtc(let value):\n            try container.encode(Kind.callServerTypeWebrtc, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A Telegram call reflector\npublic struct CallServerTypeTelegramReflector: Codable, Equatable, Hashable {\n\n    /// True, if the server uses TCP instead of UDP\n    public let isTcp: Bool\n\n    /// A peer tag to be used with the reflector\n    public let peerTag: Data\n\n\n    public init(\n        isTcp: Bool,\n        peerTag: Data\n    ) {\n        self.isTcp = isTcp\n        self.peerTag = peerTag\n    }\n}\n\n/// A WebRTC server\npublic struct CallServerTypeWebrtc: Codable, Equatable, Hashable {\n\n    /// Authentication password\n    public let password: String\n\n    /// True, if the server supports STUN\n    public let supportsStun: Bool\n\n    /// True, if the server supports TURN\n    public let supportsTurn: Bool\n\n    /// Username to be used for authentication\n    public let username: String\n\n\n    public init(\n        password: String,\n        supportsStun: Bool,\n        supportsTurn: Bool,\n        username: String\n    ) {\n        self.password = password\n        self.supportsStun = supportsStun\n        self.supportsTurn = supportsTurn\n        self.username = username\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CallState.swift",
    "content": "//\n//  CallState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the current call state\npublic indirect enum CallState: Codable, Equatable, Hashable {\n\n    /// The call is pending, waiting to be accepted by a user\n    case callStatePending(CallStatePending)\n\n    /// The call has been answered and encryption keys are being exchanged\n    case callStateExchangingKeys\n\n    /// The call is ready to use\n    case callStateReady(CallStateReady)\n\n    /// The call is hanging up after discardCall has been called\n    case callStateHangingUp\n\n    /// The call has ended successfully\n    case callStateDiscarded(CallStateDiscarded)\n\n    /// The call has ended with an error\n    case callStateError(CallStateError)\n\n\n    private enum Kind: String, Codable {\n        case callStatePending\n        case callStateExchangingKeys\n        case callStateReady\n        case callStateHangingUp\n        case callStateDiscarded\n        case callStateError\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .callStatePending:\n            let value = try CallStatePending(from: decoder)\n            self = .callStatePending(value)\n        case .callStateExchangingKeys:\n            self = .callStateExchangingKeys\n        case .callStateReady:\n            let value = try CallStateReady(from: decoder)\n            self = .callStateReady(value)\n        case .callStateHangingUp:\n            self = .callStateHangingUp\n        case .callStateDiscarded:\n            let value = try CallStateDiscarded(from: decoder)\n            self = .callStateDiscarded(value)\n        case .callStateError:\n            let value = try CallStateError(from: decoder)\n            self = .callStateError(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .callStatePending(let value):\n            try container.encode(Kind.callStatePending, forKey: .type)\n            try value.encode(to: encoder)\n        case .callStateExchangingKeys:\n            try container.encode(Kind.callStateExchangingKeys, forKey: .type)\n        case .callStateReady(let value):\n            try container.encode(Kind.callStateReady, forKey: .type)\n            try value.encode(to: encoder)\n        case .callStateHangingUp:\n            try container.encode(Kind.callStateHangingUp, forKey: .type)\n        case .callStateDiscarded(let value):\n            try container.encode(Kind.callStateDiscarded, forKey: .type)\n            try value.encode(to: encoder)\n        case .callStateError(let value):\n            try container.encode(Kind.callStateError, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The call is pending, waiting to be accepted by a user\npublic struct CallStatePending: Codable, Equatable, Hashable {\n\n    /// True, if the call has already been created by the server\n    public let isCreated: Bool\n\n    /// True, if the call has already been received by the other party\n    public let isReceived: Bool\n\n\n    public init(\n        isCreated: Bool,\n        isReceived: Bool\n    ) {\n        self.isCreated = isCreated\n        self.isReceived = isReceived\n    }\n}\n\n/// The call is ready to use\npublic struct CallStateReady: Codable, Equatable, Hashable {\n\n    /// True, if peer-to-peer connection is allowed by users privacy settings\n    public let allowP2p: Bool\n\n    /// A JSON-encoded call config\n    public let config: String\n\n    /// Custom JSON-encoded call parameters to be passed to tgcalls\n    public let customParameters: String\n\n    /// Encryption key fingerprint represented as 4 emoji\n    public let emojis: [String]\n\n    /// Call encryption key\n    public let encryptionKey: Data\n\n    /// True, if the other party supports upgrading of the call to a group call\n    public let isGroupCallSupported: Bool\n\n    /// Call protocols supported by the other call participant\n    public let `protocol`: CallProtocol\n\n    /// List of available call servers\n    public let servers: [CallServer]\n\n\n    public init(\n        allowP2p: Bool,\n        config: String,\n        customParameters: String,\n        emojis: [String],\n        encryptionKey: Data,\n        isGroupCallSupported: Bool,\n        `protocol`: CallProtocol,\n        servers: [CallServer]\n    ) {\n        self.allowP2p = allowP2p\n        self.config = config\n        self.customParameters = customParameters\n        self.emojis = emojis\n        self.encryptionKey = encryptionKey\n        self.isGroupCallSupported = isGroupCallSupported\n        self.`protocol` = `protocol`\n        self.servers = servers\n    }\n}\n\n/// The call has ended successfully\npublic struct CallStateDiscarded: Codable, Equatable, Hashable {\n\n    /// True, if the call debug information must be sent to the server\n    public let needDebugInformation: Bool\n\n    /// True, if the call log must be sent to the server\n    public let needLog: Bool\n\n    /// True, if the call rating must be sent to the server\n    public let needRating: Bool\n\n    /// The reason why the call has ended\n    public let reason: CallDiscardReason\n\n\n    public init(\n        needDebugInformation: Bool,\n        needLog: Bool,\n        needRating: Bool,\n        reason: CallDiscardReason\n    ) {\n        self.needDebugInformation = needDebugInformation\n        self.needLog = needLog\n        self.needRating = needRating\n        self.reason = reason\n    }\n}\n\n/// The call has ended with an error\npublic struct CallStateError: Codable, Equatable, Hashable {\n\n    /// Error. An error with the code 4005000 will be returned if an outgoing call is missed because of an expired timeout\n    public let error: Error\n\n\n    public init(error: Error) {\n        self.error = error\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CallbackQueryAnswer.swift",
    "content": "//\n//  CallbackQueryAnswer.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a bot's answer to a callback query\npublic struct CallbackQueryAnswer: Codable, Equatable, Hashable {\n\n    /// True, if an alert must be shown to the user instead of a toast notification\n    public let showAlert: Bool\n\n    /// Text of the answer\n    public let text: String\n\n    /// URL to be opened\n    public let url: String\n\n\n    public init(\n        showAlert: Bool,\n        text: String,\n        url: String\n    ) {\n        self.showAlert = showAlert\n        self.text = text\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CallbackQueryPayload.swift",
    "content": "//\n//  CallbackQueryPayload.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a payload of a callback query\npublic indirect enum CallbackQueryPayload: Codable, Equatable, Hashable {\n\n    /// The payload for a general callback button\n    case callbackQueryPayloadData(CallbackQueryPayloadData)\n\n    /// The payload for a callback button requiring password\n    case callbackQueryPayloadDataWithPassword(CallbackQueryPayloadDataWithPassword)\n\n    /// The payload for a game callback button\n    case callbackQueryPayloadGame(CallbackQueryPayloadGame)\n\n\n    private enum Kind: String, Codable {\n        case callbackQueryPayloadData\n        case callbackQueryPayloadDataWithPassword\n        case callbackQueryPayloadGame\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .callbackQueryPayloadData:\n            let value = try CallbackQueryPayloadData(from: decoder)\n            self = .callbackQueryPayloadData(value)\n        case .callbackQueryPayloadDataWithPassword:\n            let value = try CallbackQueryPayloadDataWithPassword(from: decoder)\n            self = .callbackQueryPayloadDataWithPassword(value)\n        case .callbackQueryPayloadGame:\n            let value = try CallbackQueryPayloadGame(from: decoder)\n            self = .callbackQueryPayloadGame(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .callbackQueryPayloadData(let value):\n            try container.encode(Kind.callbackQueryPayloadData, forKey: .type)\n            try value.encode(to: encoder)\n        case .callbackQueryPayloadDataWithPassword(let value):\n            try container.encode(Kind.callbackQueryPayloadDataWithPassword, forKey: .type)\n            try value.encode(to: encoder)\n        case .callbackQueryPayloadGame(let value):\n            try container.encode(Kind.callbackQueryPayloadGame, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The payload for a general callback button\npublic struct CallbackQueryPayloadData: Codable, Equatable, Hashable {\n\n    /// Data that was attached to the callback button\n    public let data: Data\n\n\n    public init(data: Data) {\n        self.data = data\n    }\n}\n\n/// The payload for a callback button requiring password\npublic struct CallbackQueryPayloadDataWithPassword: Codable, Equatable, Hashable {\n\n    /// Data that was attached to the callback button\n    public let data: Data\n\n    /// The 2-step verification password for the current user\n    public let password: String\n\n\n    public init(\n        data: Data,\n        password: String\n    ) {\n        self.data = data\n        self.password = password\n    }\n}\n\n/// The payload for a game callback button\npublic struct CallbackQueryPayloadGame: Codable, Equatable, Hashable {\n\n    /// A short name of the game that was attached to the callback button\n    public let gameShortName: String\n\n\n    public init(gameShortName: String) {\n        self.gameShortName = gameShortName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CanBotSendMessages.swift",
    "content": "//\n//  CanBotSendMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks whether the specified bot can send messages to the user. Returns a 404 error if can't and the access can be granted by call to allowBotToSendMessages\npublic struct CanBotSendMessages: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot\n    public let botUserId: Int64?\n\n\n    public init(botUserId: Int64?) {\n        self.botUserId = botUserId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CanPostStory.swift",
    "content": "//\n//  CanPostStory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks whether the current user can post a story on behalf of a chat; requires can_post_stories administrator right for supergroup and channel chats\npublic struct CanPostStory: Codable, Equatable, Hashable {\n\n    /// Chat identifier. Pass Saved Messages chat identifier when posting a story on behalf of the current user\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CanPostStoryResult.swift",
    "content": "//\n//  CanPostStoryResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents result of checking whether the current user can post a story on behalf of the specific chat\npublic indirect enum CanPostStoryResult: Codable, Equatable, Hashable {\n\n    /// A story can be sent\n    case canPostStoryResultOk(CanPostStoryResultOk)\n\n    /// The user must subscribe to Telegram Premium to be able to post stories\n    case canPostStoryResultPremiumNeeded\n\n    /// The chat must be boosted first by Telegram Premium subscribers to post more stories. Call getChatBoostStatus to get current boost status of the chat\n    case canPostStoryResultBoostNeeded\n\n    /// The limit for the number of active stories exceeded. The user can buy Telegram Premium, delete an active story, or wait for the oldest story to expire\n    case canPostStoryResultActiveStoryLimitExceeded\n\n    /// The weekly limit for the number of posted stories exceeded. The user needs to buy Telegram Premium or wait specified time\n    case canPostStoryResultWeeklyLimitExceeded(CanPostStoryResultWeeklyLimitExceeded)\n\n    /// The monthly limit for the number of posted stories exceeded. The user needs to buy Telegram Premium or wait specified time\n    case canPostStoryResultMonthlyLimitExceeded(CanPostStoryResultMonthlyLimitExceeded)\n\n    /// The user or the chat has an active live story. The live story must be deleted first\n    case canPostStoryResultLiveStoryIsActive(CanPostStoryResultLiveStoryIsActive)\n\n\n    private enum Kind: String, Codable {\n        case canPostStoryResultOk\n        case canPostStoryResultPremiumNeeded\n        case canPostStoryResultBoostNeeded\n        case canPostStoryResultActiveStoryLimitExceeded\n        case canPostStoryResultWeeklyLimitExceeded\n        case canPostStoryResultMonthlyLimitExceeded\n        case canPostStoryResultLiveStoryIsActive\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .canPostStoryResultOk:\n            let value = try CanPostStoryResultOk(from: decoder)\n            self = .canPostStoryResultOk(value)\n        case .canPostStoryResultPremiumNeeded:\n            self = .canPostStoryResultPremiumNeeded\n        case .canPostStoryResultBoostNeeded:\n            self = .canPostStoryResultBoostNeeded\n        case .canPostStoryResultActiveStoryLimitExceeded:\n            self = .canPostStoryResultActiveStoryLimitExceeded\n        case .canPostStoryResultWeeklyLimitExceeded:\n            let value = try CanPostStoryResultWeeklyLimitExceeded(from: decoder)\n            self = .canPostStoryResultWeeklyLimitExceeded(value)\n        case .canPostStoryResultMonthlyLimitExceeded:\n            let value = try CanPostStoryResultMonthlyLimitExceeded(from: decoder)\n            self = .canPostStoryResultMonthlyLimitExceeded(value)\n        case .canPostStoryResultLiveStoryIsActive:\n            let value = try CanPostStoryResultLiveStoryIsActive(from: decoder)\n            self = .canPostStoryResultLiveStoryIsActive(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .canPostStoryResultOk(let value):\n            try container.encode(Kind.canPostStoryResultOk, forKey: .type)\n            try value.encode(to: encoder)\n        case .canPostStoryResultPremiumNeeded:\n            try container.encode(Kind.canPostStoryResultPremiumNeeded, forKey: .type)\n        case .canPostStoryResultBoostNeeded:\n            try container.encode(Kind.canPostStoryResultBoostNeeded, forKey: .type)\n        case .canPostStoryResultActiveStoryLimitExceeded:\n            try container.encode(Kind.canPostStoryResultActiveStoryLimitExceeded, forKey: .type)\n        case .canPostStoryResultWeeklyLimitExceeded(let value):\n            try container.encode(Kind.canPostStoryResultWeeklyLimitExceeded, forKey: .type)\n            try value.encode(to: encoder)\n        case .canPostStoryResultMonthlyLimitExceeded(let value):\n            try container.encode(Kind.canPostStoryResultMonthlyLimitExceeded, forKey: .type)\n            try value.encode(to: encoder)\n        case .canPostStoryResultLiveStoryIsActive(let value):\n            try container.encode(Kind.canPostStoryResultLiveStoryIsActive, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A story can be sent\npublic struct CanPostStoryResultOk: Codable, Equatable, Hashable {\n\n    /// Number of stories that can be posted by the user\n    public let storyCount: Int\n\n\n    public init(storyCount: Int) {\n        self.storyCount = storyCount\n    }\n}\n\n/// The weekly limit for the number of posted stories exceeded. The user needs to buy Telegram Premium or wait specified time\npublic struct CanPostStoryResultWeeklyLimitExceeded: Codable, Equatable, Hashable {\n\n    /// Time left before the user can post the next story, in seconds\n    public let retryAfter: Int\n\n\n    public init(retryAfter: Int) {\n        self.retryAfter = retryAfter\n    }\n}\n\n/// The monthly limit for the number of posted stories exceeded. The user needs to buy Telegram Premium or wait specified time\npublic struct CanPostStoryResultMonthlyLimitExceeded: Codable, Equatable, Hashable {\n\n    /// Time left before the user can post the next story, in seconds\n    public let retryAfter: Int\n\n\n    public init(retryAfter: Int) {\n        self.retryAfter = retryAfter\n    }\n}\n\n/// The user or the chat has an active live story. The live story must be deleted first\npublic struct CanPostStoryResultLiveStoryIsActive: Codable, Equatable, Hashable {\n\n    /// Identifier of the active live story\n    public let storyId: Int\n\n\n    public init(storyId: Int) {\n        self.storyId = storyId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CanPurchaseFromStore.swift",
    "content": "//\n//  CanPurchaseFromStore.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks whether an in-store purchase is possible. Must be called before any in-store purchase. For official applications only\npublic struct CanPurchaseFromStore: Codable, Equatable, Hashable {\n\n    /// Transaction purpose\n    public let purpose: StorePaymentPurpose?\n\n\n    public init(purpose: StorePaymentPurpose?) {\n        self.purpose = purpose\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CanPurchasePremium.swift",
    "content": "//\n//  CanPurchasePremium.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.29-fd3154b2\n//  https://github.com/tdlib/td/tree/fd3154b2\n//\n\nimport Foundation\n\n\n/// Checks whether Telegram Premium purchase is possible. Must be called before in-store Premium purchase\npublic struct CanPurchasePremium: Codable, Equatable, Hashable {\n\n    /// Transaction purpose\n    public let purpose: StorePaymentPurpose?\n\n\n    public init(purpose: StorePaymentPurpose?) {\n        self.purpose = purpose\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CanSendGift.swift",
    "content": "//\n//  CanSendGift.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks whether a gift with next_send_date in the future can be sent already\npublic struct CanSendGift: Codable, Equatable, Hashable {\n\n    /// Identifier of the gift to send\n    public let giftId: TdInt64?\n\n\n    public init(giftId: TdInt64?) {\n        self.giftId = giftId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CanSendGiftResult.swift",
    "content": "//\n//  CanSendGiftResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes whether a gift can be sent now by the current user\npublic indirect enum CanSendGiftResult: Codable, Equatable, Hashable {\n\n    /// The gift can be sent now by the current user\n    case canSendGiftResultOk\n\n    /// The gift can't be sent now by the current user\n    case canSendGiftResultFail(CanSendGiftResultFail)\n\n\n    private enum Kind: String, Codable {\n        case canSendGiftResultOk\n        case canSendGiftResultFail\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .canSendGiftResultOk:\n            self = .canSendGiftResultOk\n        case .canSendGiftResultFail:\n            let value = try CanSendGiftResultFail(from: decoder)\n            self = .canSendGiftResultFail(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .canSendGiftResultOk:\n            try container.encode(Kind.canSendGiftResultOk, forKey: .type)\n        case .canSendGiftResultFail(let value):\n            try container.encode(Kind.canSendGiftResultFail, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The gift can't be sent now by the current user\npublic struct CanSendGiftResultFail: Codable, Equatable, Hashable {\n\n    /// Reason to be shown to the user\n    public let reason: FormattedText\n\n\n    public init(reason: FormattedText) {\n        self.reason = reason\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CanSendMessageToUser.swift",
    "content": "//\n//  CanSendMessageToUser.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks whether the current user can message another user or try to create a chat with them\npublic struct CanSendMessageToUser: Codable, Equatable, Hashable {\n\n    /// Pass true to get only locally available information without sending network requests\n    public let onlyLocal: Bool?\n\n    /// Identifier of the other user\n    public let userId: Int64?\n\n\n    public init(\n        onlyLocal: Bool?,\n        userId: Int64?\n    ) {\n        self.onlyLocal = onlyLocal\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CanSendMessageToUserResult.swift",
    "content": "//\n//  CanSendMessageToUserResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes result of canSendMessageToUser\npublic indirect enum CanSendMessageToUserResult: Codable, Equatable, Hashable {\n\n    /// The user can be messaged\n    case canSendMessageToUserResultOk\n\n    /// The user can be messaged, but the messages are paid\n    case canSendMessageToUserResultUserHasPaidMessages(CanSendMessageToUserResultUserHasPaidMessages)\n\n    /// The user can't be messaged, because they are deleted or unknown\n    case canSendMessageToUserResultUserIsDeleted\n\n    /// The user can't be messaged, because they restrict new chats with non-contacts\n    case canSendMessageToUserResultUserRestrictsNewChats\n\n\n    private enum Kind: String, Codable {\n        case canSendMessageToUserResultOk\n        case canSendMessageToUserResultUserHasPaidMessages\n        case canSendMessageToUserResultUserIsDeleted\n        case canSendMessageToUserResultUserRestrictsNewChats\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .canSendMessageToUserResultOk:\n            self = .canSendMessageToUserResultOk\n        case .canSendMessageToUserResultUserHasPaidMessages:\n            let value = try CanSendMessageToUserResultUserHasPaidMessages(from: decoder)\n            self = .canSendMessageToUserResultUserHasPaidMessages(value)\n        case .canSendMessageToUserResultUserIsDeleted:\n            self = .canSendMessageToUserResultUserIsDeleted\n        case .canSendMessageToUserResultUserRestrictsNewChats:\n            self = .canSendMessageToUserResultUserRestrictsNewChats\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .canSendMessageToUserResultOk:\n            try container.encode(Kind.canSendMessageToUserResultOk, forKey: .type)\n        case .canSendMessageToUserResultUserHasPaidMessages(let value):\n            try container.encode(Kind.canSendMessageToUserResultUserHasPaidMessages, forKey: .type)\n            try value.encode(to: encoder)\n        case .canSendMessageToUserResultUserIsDeleted:\n            try container.encode(Kind.canSendMessageToUserResultUserIsDeleted, forKey: .type)\n        case .canSendMessageToUserResultUserRestrictsNewChats:\n            try container.encode(Kind.canSendMessageToUserResultUserRestrictsNewChats, forKey: .type)\n        }\n    }\n}\n\n/// The user can be messaged, but the messages are paid\npublic struct CanSendMessageToUserResultUserHasPaidMessages: Codable, Equatable, Hashable {\n\n    /// Number of Telegram Stars that must be paid by the current user for each sent message to the user\n    public let outgoingPaidMessageStarCount: Int64\n\n\n    public init(outgoingPaidMessageStarCount: Int64) {\n        self.outgoingPaidMessageStarCount = outgoingPaidMessageStarCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CanSendStory.swift",
    "content": "//\n//  CanSendStory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.47-971684a3\n//  https://github.com/tdlib/td/tree/971684a3\n//\n\nimport Foundation\n\n\n/// Checks whether the current user can send a story on behalf of a chat; requires can_post_stories right for supergroup and channel chats\npublic struct CanSendStory: Codable, Equatable, Hashable {\n\n    /// Chat identifier. Pass Saved Messages chat identifier when posting a story on behalf of the current user\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CanSendStoryResult.swift",
    "content": "//\n//  CanSendStoryResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.47-971684a3\n//  https://github.com/tdlib/td/tree/971684a3\n//\n\nimport Foundation\n\n\n/// Represents result of checking whether the current user can send a story in the specific chat\npublic indirect enum CanSendStoryResult: Codable, Equatable, Hashable {\n\n    /// A story can be sent\n    case canSendStoryResultOk\n\n    /// The user must subscribe to Telegram Premium to be able to post stories\n    case canSendStoryResultPremiumNeeded\n\n    /// The chat must be boosted first by Telegram Premium subscribers to post more stories. Call getChatBoostStatus to get current boost status of the chat\n    case canSendStoryResultBoostNeeded\n\n    /// The limit for the number of active stories exceeded. The user can buy Telegram Premium, delete an active story, or wait for the oldest story to expire\n    case canSendStoryResultActiveStoryLimitExceeded\n\n    /// The weekly limit for the number of posted stories exceeded. The user needs to buy Telegram Premium or wait specified time\n    case canSendStoryResultWeeklyLimitExceeded(CanSendStoryResultWeeklyLimitExceeded)\n\n    /// The monthly limit for the number of posted stories exceeded. The user needs to buy Telegram Premium or wait specified time\n    case canSendStoryResultMonthlyLimitExceeded(CanSendStoryResultMonthlyLimitExceeded)\n\n\n    private enum Kind: String, Codable {\n        case canSendStoryResultOk\n        case canSendStoryResultPremiumNeeded\n        case canSendStoryResultBoostNeeded\n        case canSendStoryResultActiveStoryLimitExceeded\n        case canSendStoryResultWeeklyLimitExceeded\n        case canSendStoryResultMonthlyLimitExceeded\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .canSendStoryResultOk:\n            self = .canSendStoryResultOk\n        case .canSendStoryResultPremiumNeeded:\n            self = .canSendStoryResultPremiumNeeded\n        case .canSendStoryResultBoostNeeded:\n            self = .canSendStoryResultBoostNeeded\n        case .canSendStoryResultActiveStoryLimitExceeded:\n            self = .canSendStoryResultActiveStoryLimitExceeded\n        case .canSendStoryResultWeeklyLimitExceeded:\n            let value = try CanSendStoryResultWeeklyLimitExceeded(from: decoder)\n            self = .canSendStoryResultWeeklyLimitExceeded(value)\n        case .canSendStoryResultMonthlyLimitExceeded:\n            let value = try CanSendStoryResultMonthlyLimitExceeded(from: decoder)\n            self = .canSendStoryResultMonthlyLimitExceeded(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .canSendStoryResultOk:\n            try container.encode(Kind.canSendStoryResultOk, forKey: .type)\n        case .canSendStoryResultPremiumNeeded:\n            try container.encode(Kind.canSendStoryResultPremiumNeeded, forKey: .type)\n        case .canSendStoryResultBoostNeeded:\n            try container.encode(Kind.canSendStoryResultBoostNeeded, forKey: .type)\n        case .canSendStoryResultActiveStoryLimitExceeded:\n            try container.encode(Kind.canSendStoryResultActiveStoryLimitExceeded, forKey: .type)\n        case .canSendStoryResultWeeklyLimitExceeded(let value):\n            try container.encode(Kind.canSendStoryResultWeeklyLimitExceeded, forKey: .type)\n            try value.encode(to: encoder)\n        case .canSendStoryResultMonthlyLimitExceeded(let value):\n            try container.encode(Kind.canSendStoryResultMonthlyLimitExceeded, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The weekly limit for the number of posted stories exceeded. The user needs to buy Telegram Premium or wait specified time\npublic struct CanSendStoryResultWeeklyLimitExceeded: Codable, Equatable, Hashable {\n\n    /// Time left before the user can send the next story\n    public let retryAfter: Int\n\n\n    public init(retryAfter: Int) {\n        self.retryAfter = retryAfter\n    }\n}\n\n/// The monthly limit for the number of posted stories exceeded. The user needs to buy Telegram Premium or wait specified time\npublic struct CanSendStoryResultMonthlyLimitExceeded: Codable, Equatable, Hashable {\n\n    /// Time left before the user can send the next story\n    public let retryAfter: Int\n\n\n    public init(retryAfter: Int) {\n        self.retryAfter = retryAfter\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CanTransferOwnership.swift",
    "content": "//\n//  CanTransferOwnership.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks whether the current session can be used to transfer a chat ownership to another user\npublic struct CanTransferOwnership: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CanTransferOwnershipResult.swift",
    "content": "//\n//  CanTransferOwnershipResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents result of checking whether the current session can be used to transfer a chat ownership to another user\npublic indirect enum CanTransferOwnershipResult: Codable, Equatable, Hashable {\n\n    /// The session can be used\n    case canTransferOwnershipResultOk\n\n    /// The 2-step verification needs to be enabled first\n    case canTransferOwnershipResultPasswordNeeded\n\n    /// The 2-step verification was enabled recently, user needs to wait\n    case canTransferOwnershipResultPasswordTooFresh(CanTransferOwnershipResultPasswordTooFresh)\n\n    /// The session was created recently, user needs to wait\n    case canTransferOwnershipResultSessionTooFresh(CanTransferOwnershipResultSessionTooFresh)\n\n\n    private enum Kind: String, Codable {\n        case canTransferOwnershipResultOk\n        case canTransferOwnershipResultPasswordNeeded\n        case canTransferOwnershipResultPasswordTooFresh\n        case canTransferOwnershipResultSessionTooFresh\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .canTransferOwnershipResultOk:\n            self = .canTransferOwnershipResultOk\n        case .canTransferOwnershipResultPasswordNeeded:\n            self = .canTransferOwnershipResultPasswordNeeded\n        case .canTransferOwnershipResultPasswordTooFresh:\n            let value = try CanTransferOwnershipResultPasswordTooFresh(from: decoder)\n            self = .canTransferOwnershipResultPasswordTooFresh(value)\n        case .canTransferOwnershipResultSessionTooFresh:\n            let value = try CanTransferOwnershipResultSessionTooFresh(from: decoder)\n            self = .canTransferOwnershipResultSessionTooFresh(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .canTransferOwnershipResultOk:\n            try container.encode(Kind.canTransferOwnershipResultOk, forKey: .type)\n        case .canTransferOwnershipResultPasswordNeeded:\n            try container.encode(Kind.canTransferOwnershipResultPasswordNeeded, forKey: .type)\n        case .canTransferOwnershipResultPasswordTooFresh(let value):\n            try container.encode(Kind.canTransferOwnershipResultPasswordTooFresh, forKey: .type)\n            try value.encode(to: encoder)\n        case .canTransferOwnershipResultSessionTooFresh(let value):\n            try container.encode(Kind.canTransferOwnershipResultSessionTooFresh, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The 2-step verification was enabled recently, user needs to wait\npublic struct CanTransferOwnershipResultPasswordTooFresh: Codable, Equatable, Hashable {\n\n    /// Time left before the session can be used to transfer ownership of a chat, in seconds\n    public let retryAfter: Int\n\n\n    public init(retryAfter: Int) {\n        self.retryAfter = retryAfter\n    }\n}\n\n/// The session was created recently, user needs to wait\npublic struct CanTransferOwnershipResultSessionTooFresh: Codable, Equatable, Hashable {\n\n    /// Time left before the session can be used to transfer ownership of a chat, in seconds\n    public let retryAfter: Int\n\n\n    public init(retryAfter: Int) {\n        self.retryAfter = retryAfter\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CancelDownloadFile.swift",
    "content": "//\n//  CancelDownloadFile.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Stops the downloading of a file. If a file has already been downloaded, does nothing\npublic struct CancelDownloadFile: Codable, Equatable, Hashable {\n\n    /// Identifier of a file to stop downloading\n    public let fileId: Int?\n\n    /// Pass true to stop downloading only if it hasn't been started, i.e. request hasn't been sent to server\n    public let onlyIfPending: Bool?\n\n\n    public init(\n        fileId: Int?,\n        onlyIfPending: Bool?\n    ) {\n        self.fileId = fileId\n        self.onlyIfPending = onlyIfPending\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CancelPasswordReset.swift",
    "content": "//\n//  CancelPasswordReset.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Cancels reset of 2-step verification password. The method can be called if passwordState.pending_reset_date > 0\npublic struct CancelPasswordReset: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CancelPreliminaryUploadFile.swift",
    "content": "//\n//  CancelPreliminaryUploadFile.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Stops the preliminary uploading of a file. Supported only for files uploaded by using preliminaryUploadFile\npublic struct CancelPreliminaryUploadFile: Codable, Equatable, Hashable {\n\n    /// Identifier of the file to stop uploading\n    public let fileId: Int?\n\n\n    public init(fileId: Int?) {\n        self.fileId = fileId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CancelRecoveryEmailAddressVerification.swift",
    "content": "//\n//  CancelRecoveryEmailAddressVerification.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Cancels verification of the 2-step verification recovery email address\npublic struct CancelRecoveryEmailAddressVerification: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChangeImportedContacts.swift",
    "content": "//\n//  ChangeImportedContacts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes imported contacts using the list of contacts saved on the device. Imports newly added contacts and, if at least the file database is enabled, deletes recently deleted contacts. Query result depends on the result of the previous query, so only one query is possible at the same time\npublic struct ChangeImportedContacts: Codable, Equatable, Hashable {\n\n    /// The new list of contacts to import\n    public let contacts: [ImportedContact]?\n\n\n    public init(contacts: [ImportedContact]?) {\n        self.contacts = contacts\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChangeStickerSet.swift",
    "content": "//\n//  ChangeStickerSet.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Installs/uninstalls or activates/archives a sticker set\npublic struct ChangeStickerSet: Codable, Equatable, Hashable {\n\n    /// The new value of is_archived. A sticker set can't be installed and archived simultaneously\n    public let isArchived: Bool?\n\n    /// The new value of is_installed\n    public let isInstalled: Bool?\n\n    /// Identifier of the sticker set\n    public let setId: TdInt64?\n\n\n    public init(\n        isArchived: Bool?,\n        isInstalled: Bool?,\n        setId: TdInt64?\n    ) {\n        self.isArchived = isArchived\n        self.isInstalled = isInstalled\n        self.setId = setId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChannelTransactionPurpose.swift",
    "content": "//\n//  ChannelTransactionPurpose.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.35-9b6ff586\n//  https://github.com/tdlib/td/tree/9b6ff586\n//\n\nimport Foundation\n\n\n/// Describes purpose of a transaction with a channel\npublic indirect enum ChannelTransactionPurpose: Codable, Equatable, Hashable {\n\n    /// Paid media were bought\n    case channelTransactionPurposePaidMedia(ChannelTransactionPurposePaidMedia)\n\n    /// User joined the channel and subscribed to regular payments in Telegram Stars\n    case channelTransactionPurposeJoin(ChannelTransactionPurposeJoin)\n\n    /// User paid for a reaction\n    case channelTransactionPurposeReaction(ChannelTransactionPurposeReaction)\n\n\n    private enum Kind: String, Codable {\n        case channelTransactionPurposePaidMedia\n        case channelTransactionPurposeJoin\n        case channelTransactionPurposeReaction\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .channelTransactionPurposePaidMedia:\n            let value = try ChannelTransactionPurposePaidMedia(from: decoder)\n            self = .channelTransactionPurposePaidMedia(value)\n        case .channelTransactionPurposeJoin:\n            let value = try ChannelTransactionPurposeJoin(from: decoder)\n            self = .channelTransactionPurposeJoin(value)\n        case .channelTransactionPurposeReaction:\n            let value = try ChannelTransactionPurposeReaction(from: decoder)\n            self = .channelTransactionPurposeReaction(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .channelTransactionPurposePaidMedia(let value):\n            try container.encode(Kind.channelTransactionPurposePaidMedia, forKey: .type)\n            try value.encode(to: encoder)\n        case .channelTransactionPurposeJoin(let value):\n            try container.encode(Kind.channelTransactionPurposeJoin, forKey: .type)\n            try value.encode(to: encoder)\n        case .channelTransactionPurposeReaction(let value):\n            try container.encode(Kind.channelTransactionPurposeReaction, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Paid media were bought\npublic struct ChannelTransactionPurposePaidMedia: Codable, Equatable, Hashable {\n\n    /// The bought media if the trancastion wasn't refunded\n    public let media: [PaidMedia]\n\n    /// Identifier of the corresponding message with paid media; can be an identifier of a deleted message\n    public let messageId: Int64\n\n\n    public init(\n        media: [PaidMedia],\n        messageId: Int64\n    ) {\n        self.media = media\n        self.messageId = messageId\n    }\n}\n\n/// User joined the channel and subscribed to regular payments in Telegram Stars\npublic struct ChannelTransactionPurposeJoin: Codable, Equatable, Hashable {\n\n    /// The number of seconds between consecutive Telegram Star debiting\n    public let period: Int\n\n\n    public init(period: Int) {\n        self.period = period\n    }\n}\n\n/// User paid for a reaction\npublic struct ChannelTransactionPurposeReaction: Codable, Equatable, Hashable {\n\n    /// Identifier of the reacted message; can be an identifier of a deleted message\n    public let messageId: Int64\n\n\n    public init(messageId: Int64) {\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Chat.swift",
    "content": "//\n//  Chat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A chat. (Can be a private chat, basic group, supergroup, or secret chat)\npublic struct Chat: Codable, Equatable, Hashable, Identifiable {\n\n    /// Identifier of the accent color for message sender name, and backgrounds of chat photo, reply header, and link preview\n    public let accentColorId: Int\n\n    /// Information about actions which must be possible to do through the chat action bar; may be null if none\n    public let actionBar: ChatActionBar?\n\n    /// Types of reaction, available in the chat\n    public let availableReactions: ChatAvailableReactions\n\n    /// Background set for the chat; may be null if none\n    public let background: ChatBackground?\n\n    /// Identifier of a custom emoji to be shown on the reply header and link preview background for messages sent by the chat; 0 if none\n    public let backgroundCustomEmojiId: TdInt64\n\n    /// Block list to which the chat is added; may be null if none\n    public let blockList: BlockList?\n\n    /// Information about bar for managing a business bot in the chat; may be null if none\n    public let businessBotManageBar: BusinessBotManageBar?\n\n    /// True, if the chat messages can be deleted for all users\n    public let canBeDeletedForAllUsers: Bool\n\n    /// True, if the chat messages can be deleted only for the current user while other users will continue to see the messages\n    public let canBeDeletedOnlyForSelf: Bool\n\n    /// True, if the chat can be reported to Telegram moderators through reportChat or reportChatPhoto\n    public let canBeReported: Bool\n\n    /// Chat lists to which the chat belongs. A chat can have a non-zero position in a chat list even if it doesn't belong to the chat list and have no position in a chat list even if it belongs to the chat list\n    public let chatLists: [ChatList]\n\n    /// Application-specific data associated with the chat. (For example, the chat scroll position or local chat notification settings can be stored here.) Persistent if the message database is used\n    public let clientData: String\n\n    /// Default value of the disable_notification parameter, used when a message is sent to the chat\n    public let defaultDisableNotification: Bool\n\n    /// A draft of a message in the chat; may be null if none\n    public let draftMessage: DraftMessage?\n\n    /// Emoji status to be shown along with chat title; may be null\n    public let emojiStatus: EmojiStatus?\n\n    /// True, if chat content can't be saved locally, forwarded, or copied\n    public let hasProtectedContent: Bool\n\n    /// True, if the chat has scheduled messages\n    public let hasScheduledMessages: Bool\n\n    /// Chat unique identifier\n    public let id: Int64\n\n    /// True, if the chat is marked as unread\n    public let isMarkedAsUnread: Bool\n\n    /// True, if translation of all messages in the chat must be suggested to the user\n    public let isTranslatable: Bool\n\n    /// Last message in the chat; may be null if none or unknown\n    public let lastMessage: Message?\n\n    /// Identifier of the last read incoming message\n    public let lastReadInboxMessageId: Int64\n\n    /// Identifier of the last read outgoing message\n    public let lastReadOutboxMessageId: Int64\n\n    /// Current message auto-delete or self-destruct timer setting for the chat, in seconds; 0 if disabled. Self-destruct timer in secret chats starts after the message or its content is viewed. Auto-delete timer in other chats starts from the send date\n    public let messageAutoDeleteTime: Int\n\n    /// Identifier of a user or chat that is selected to send messages in the chat; may be null if the user can't change message sender\n    public let messageSenderId: MessageSender?\n\n    /// Notification settings for the chat\n    public let notificationSettings: ChatNotificationSettings\n\n    /// Information about pending join requests; may be null if none\n    public let pendingJoinRequests: ChatJoinRequestsInfo?\n\n    /// Actions that non-administrator chat members are allowed to take in the chat\n    public let permissions: ChatPermissions\n\n    /// Chat photo; may be null\n    public let photo: ChatPhotoInfo?\n\n    /// Positions of the chat in chat lists\n    public let positions: [ChatPosition]\n\n    /// Identifier of the profile accent color for the chat's profile; -1 if none\n    public let profileAccentColorId: Int\n\n    /// Identifier of a custom emoji to be shown on the background of the chat's profile; 0 if none\n    public let profileBackgroundCustomEmojiId: TdInt64\n\n    /// Identifier of the message from which reply markup needs to be used; 0 if there is no reply markup in the chat\n    public let replyMarkupMessageId: Int64\n\n    /// Theme set for the chat; may be null if none\n    public let theme: ChatTheme?\n\n    /// Chat title\n    public let title: String\n\n    /// Type of the chat\n    public let type: ChatType\n\n    /// Number of unread messages in the chat\n    public let unreadCount: Int\n\n    /// Number of unread messages with a mention/reply in the chat\n    public let unreadMentionCount: Int\n\n    /// Number of messages with unread poll votes in the chat\n    public let unreadPollVoteCount: Int\n\n    /// Number of messages with unread reactions in the chat\n    public let unreadReactionCount: Int\n\n    /// Color scheme based on an upgraded gift to be used for the chat instead of accent_color_id and background_custom_emoji_id; may be null if none\n    public let upgradedGiftColors: UpgradedGiftColors?\n\n    /// Information about video chat of the chat\n    public let videoChat: VideoChat\n\n    /// True, if the chat is a forum supergroup that must be shown in the \"View as topics\" mode, or Saved Messages chat that must be shown in the \"View as chats\"\n    public let viewAsTopics: Bool\n\n\n    public init(\n        accentColorId: Int,\n        actionBar: ChatActionBar?,\n        availableReactions: ChatAvailableReactions,\n        background: ChatBackground?,\n        backgroundCustomEmojiId: TdInt64,\n        blockList: BlockList?,\n        businessBotManageBar: BusinessBotManageBar?,\n        canBeDeletedForAllUsers: Bool,\n        canBeDeletedOnlyForSelf: Bool,\n        canBeReported: Bool,\n        chatLists: [ChatList],\n        clientData: String,\n        defaultDisableNotification: Bool,\n        draftMessage: DraftMessage?,\n        emojiStatus: EmojiStatus?,\n        hasProtectedContent: Bool,\n        hasScheduledMessages: Bool,\n        id: Int64,\n        isMarkedAsUnread: Bool,\n        isTranslatable: Bool,\n        lastMessage: Message?,\n        lastReadInboxMessageId: Int64,\n        lastReadOutboxMessageId: Int64,\n        messageAutoDeleteTime: Int,\n        messageSenderId: MessageSender?,\n        notificationSettings: ChatNotificationSettings,\n        pendingJoinRequests: ChatJoinRequestsInfo?,\n        permissions: ChatPermissions,\n        photo: ChatPhotoInfo?,\n        positions: [ChatPosition],\n        profileAccentColorId: Int,\n        profileBackgroundCustomEmojiId: TdInt64,\n        replyMarkupMessageId: Int64,\n        theme: ChatTheme?,\n        title: String,\n        type: ChatType,\n        unreadCount: Int,\n        unreadMentionCount: Int,\n        unreadPollVoteCount: Int,\n        unreadReactionCount: Int,\n        upgradedGiftColors: UpgradedGiftColors?,\n        videoChat: VideoChat,\n        viewAsTopics: Bool\n    ) {\n        self.accentColorId = accentColorId\n        self.actionBar = actionBar\n        self.availableReactions = availableReactions\n        self.background = background\n        self.backgroundCustomEmojiId = backgroundCustomEmojiId\n        self.blockList = blockList\n        self.businessBotManageBar = businessBotManageBar\n        self.canBeDeletedForAllUsers = canBeDeletedForAllUsers\n        self.canBeDeletedOnlyForSelf = canBeDeletedOnlyForSelf\n        self.canBeReported = canBeReported\n        self.chatLists = chatLists\n        self.clientData = clientData\n        self.defaultDisableNotification = defaultDisableNotification\n        self.draftMessage = draftMessage\n        self.emojiStatus = emojiStatus\n        self.hasProtectedContent = hasProtectedContent\n        self.hasScheduledMessages = hasScheduledMessages\n        self.id = id\n        self.isMarkedAsUnread = isMarkedAsUnread\n        self.isTranslatable = isTranslatable\n        self.lastMessage = lastMessage\n        self.lastReadInboxMessageId = lastReadInboxMessageId\n        self.lastReadOutboxMessageId = lastReadOutboxMessageId\n        self.messageAutoDeleteTime = messageAutoDeleteTime\n        self.messageSenderId = messageSenderId\n        self.notificationSettings = notificationSettings\n        self.pendingJoinRequests = pendingJoinRequests\n        self.permissions = permissions\n        self.photo = photo\n        self.positions = positions\n        self.profileAccentColorId = profileAccentColorId\n        self.profileBackgroundCustomEmojiId = profileBackgroundCustomEmojiId\n        self.replyMarkupMessageId = replyMarkupMessageId\n        self.theme = theme\n        self.title = title\n        self.type = type\n        self.unreadCount = unreadCount\n        self.unreadMentionCount = unreadMentionCount\n        self.unreadPollVoteCount = unreadPollVoteCount\n        self.unreadReactionCount = unreadReactionCount\n        self.upgradedGiftColors = upgradedGiftColors\n        self.videoChat = videoChat\n        self.viewAsTopics = viewAsTopics\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatAction.swift",
    "content": "//\n//  ChatAction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the different types of activity in a chat\npublic indirect enum ChatAction: Codable, Equatable, Hashable {\n\n    /// The user is typing a message\n    case chatActionTyping\n\n    /// The user is recording a video\n    case chatActionRecordingVideo\n\n    /// The user is uploading a video\n    case chatActionUploadingVideo(ChatActionUploadingVideo)\n\n    /// The user is recording a voice note\n    case chatActionRecordingVoiceNote\n\n    /// The user is uploading a voice note\n    case chatActionUploadingVoiceNote(ChatActionUploadingVoiceNote)\n\n    /// The user is uploading a photo\n    case chatActionUploadingPhoto(ChatActionUploadingPhoto)\n\n    /// The user is uploading a document\n    case chatActionUploadingDocument(ChatActionUploadingDocument)\n\n    /// The user is picking a sticker to send\n    case chatActionChoosingSticker\n\n    /// The user is picking a location or venue to send\n    case chatActionChoosingLocation\n\n    /// The user is picking a contact to send\n    case chatActionChoosingContact\n\n    /// The user has started to play a game\n    case chatActionStartPlayingGame\n\n    /// The user is recording a video note\n    case chatActionRecordingVideoNote\n\n    /// The user is uploading a video note\n    case chatActionUploadingVideoNote(ChatActionUploadingVideoNote)\n\n    /// The user is watching animations sent by the other party by clicking on an animated emoji\n    case chatActionWatchingAnimations(ChatActionWatchingAnimations)\n\n    /// The user has canceled the previous action\n    case chatActionCancel\n\n\n    private enum Kind: String, Codable {\n        case chatActionTyping\n        case chatActionRecordingVideo\n        case chatActionUploadingVideo\n        case chatActionRecordingVoiceNote\n        case chatActionUploadingVoiceNote\n        case chatActionUploadingPhoto\n        case chatActionUploadingDocument\n        case chatActionChoosingSticker\n        case chatActionChoosingLocation\n        case chatActionChoosingContact\n        case chatActionStartPlayingGame\n        case chatActionRecordingVideoNote\n        case chatActionUploadingVideoNote\n        case chatActionWatchingAnimations\n        case chatActionCancel\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .chatActionTyping:\n            self = .chatActionTyping\n        case .chatActionRecordingVideo:\n            self = .chatActionRecordingVideo\n        case .chatActionUploadingVideo:\n            let value = try ChatActionUploadingVideo(from: decoder)\n            self = .chatActionUploadingVideo(value)\n        case .chatActionRecordingVoiceNote:\n            self = .chatActionRecordingVoiceNote\n        case .chatActionUploadingVoiceNote:\n            let value = try ChatActionUploadingVoiceNote(from: decoder)\n            self = .chatActionUploadingVoiceNote(value)\n        case .chatActionUploadingPhoto:\n            let value = try ChatActionUploadingPhoto(from: decoder)\n            self = .chatActionUploadingPhoto(value)\n        case .chatActionUploadingDocument:\n            let value = try ChatActionUploadingDocument(from: decoder)\n            self = .chatActionUploadingDocument(value)\n        case .chatActionChoosingSticker:\n            self = .chatActionChoosingSticker\n        case .chatActionChoosingLocation:\n            self = .chatActionChoosingLocation\n        case .chatActionChoosingContact:\n            self = .chatActionChoosingContact\n        case .chatActionStartPlayingGame:\n            self = .chatActionStartPlayingGame\n        case .chatActionRecordingVideoNote:\n            self = .chatActionRecordingVideoNote\n        case .chatActionUploadingVideoNote:\n            let value = try ChatActionUploadingVideoNote(from: decoder)\n            self = .chatActionUploadingVideoNote(value)\n        case .chatActionWatchingAnimations:\n            let value = try ChatActionWatchingAnimations(from: decoder)\n            self = .chatActionWatchingAnimations(value)\n        case .chatActionCancel:\n            self = .chatActionCancel\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .chatActionTyping:\n            try container.encode(Kind.chatActionTyping, forKey: .type)\n        case .chatActionRecordingVideo:\n            try container.encode(Kind.chatActionRecordingVideo, forKey: .type)\n        case .chatActionUploadingVideo(let value):\n            try container.encode(Kind.chatActionUploadingVideo, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatActionRecordingVoiceNote:\n            try container.encode(Kind.chatActionRecordingVoiceNote, forKey: .type)\n        case .chatActionUploadingVoiceNote(let value):\n            try container.encode(Kind.chatActionUploadingVoiceNote, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatActionUploadingPhoto(let value):\n            try container.encode(Kind.chatActionUploadingPhoto, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatActionUploadingDocument(let value):\n            try container.encode(Kind.chatActionUploadingDocument, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatActionChoosingSticker:\n            try container.encode(Kind.chatActionChoosingSticker, forKey: .type)\n        case .chatActionChoosingLocation:\n            try container.encode(Kind.chatActionChoosingLocation, forKey: .type)\n        case .chatActionChoosingContact:\n            try container.encode(Kind.chatActionChoosingContact, forKey: .type)\n        case .chatActionStartPlayingGame:\n            try container.encode(Kind.chatActionStartPlayingGame, forKey: .type)\n        case .chatActionRecordingVideoNote:\n            try container.encode(Kind.chatActionRecordingVideoNote, forKey: .type)\n        case .chatActionUploadingVideoNote(let value):\n            try container.encode(Kind.chatActionUploadingVideoNote, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatActionWatchingAnimations(let value):\n            try container.encode(Kind.chatActionWatchingAnimations, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatActionCancel:\n            try container.encode(Kind.chatActionCancel, forKey: .type)\n        }\n    }\n}\n\n/// The user is uploading a video\npublic struct ChatActionUploadingVideo: Codable, Equatable, Hashable {\n\n    /// Upload progress, as a percentage\n    public let progress: Int\n\n\n    public init(progress: Int) {\n        self.progress = progress\n    }\n}\n\n/// The user is uploading a voice note\npublic struct ChatActionUploadingVoiceNote: Codable, Equatable, Hashable {\n\n    /// Upload progress, as a percentage\n    public let progress: Int\n\n\n    public init(progress: Int) {\n        self.progress = progress\n    }\n}\n\n/// The user is uploading a photo\npublic struct ChatActionUploadingPhoto: Codable, Equatable, Hashable {\n\n    /// Upload progress, as a percentage\n    public let progress: Int\n\n\n    public init(progress: Int) {\n        self.progress = progress\n    }\n}\n\n/// The user is uploading a document\npublic struct ChatActionUploadingDocument: Codable, Equatable, Hashable {\n\n    /// Upload progress, as a percentage\n    public let progress: Int\n\n\n    public init(progress: Int) {\n        self.progress = progress\n    }\n}\n\n/// The user is uploading a video note\npublic struct ChatActionUploadingVideoNote: Codable, Equatable, Hashable {\n\n    /// Upload progress, as a percentage\n    public let progress: Int\n\n\n    public init(progress: Int) {\n        self.progress = progress\n    }\n}\n\n/// The user is watching animations sent by the other party by clicking on an animated emoji\npublic struct ChatActionWatchingAnimations: Codable, Equatable, Hashable {\n\n    /// The animated emoji\n    public let emoji: String\n\n\n    public init(emoji: String) {\n        self.emoji = emoji\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatActionBar.swift",
    "content": "//\n//  ChatActionBar.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes actions which must be possible to do through a chat action bar\npublic indirect enum ChatActionBar: Codable, Equatable, Hashable {\n\n    /// The chat can be reported as spam using the method reportChat with an empty option_id and message_ids. If the chat is a private chat with a user with an emoji status, then a notice about emoji status usage must be shown\n    case chatActionBarReportSpam(ChatActionBarReportSpam)\n\n    /// The chat is a recently created group chat to which new members can be invited\n    case chatActionBarInviteMembers\n\n    /// The chat is a private or secret chat, which can be reported using the method reportChat, or the other user can be blocked using the method setMessageSenderBlockList, or the other user can be added to the contact list using the method addContact. If the chat is a private chat with a user with an emoji status, then a notice about emoji status usage must be shown\n    case chatActionBarReportAddBlock(ChatActionBarReportAddBlock)\n\n    /// The chat is a private or secret chat and the other user can be added to the contact list using the method addContact\n    case chatActionBarAddContact\n\n    /// The chat is a private or secret chat with a mutual contact and the user's phone number can be shared with the other user using the method sharePhoneNumber\n    case chatActionBarSharePhoneNumber\n\n    /// The chat is a private chat with an administrator of a chat to which the user sent join request\n    case chatActionBarJoinRequest(ChatActionBarJoinRequest)\n\n\n    private enum Kind: String, Codable {\n        case chatActionBarReportSpam\n        case chatActionBarInviteMembers\n        case chatActionBarReportAddBlock\n        case chatActionBarAddContact\n        case chatActionBarSharePhoneNumber\n        case chatActionBarJoinRequest\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .chatActionBarReportSpam:\n            let value = try ChatActionBarReportSpam(from: decoder)\n            self = .chatActionBarReportSpam(value)\n        case .chatActionBarInviteMembers:\n            self = .chatActionBarInviteMembers\n        case .chatActionBarReportAddBlock:\n            let value = try ChatActionBarReportAddBlock(from: decoder)\n            self = .chatActionBarReportAddBlock(value)\n        case .chatActionBarAddContact:\n            self = .chatActionBarAddContact\n        case .chatActionBarSharePhoneNumber:\n            self = .chatActionBarSharePhoneNumber\n        case .chatActionBarJoinRequest:\n            let value = try ChatActionBarJoinRequest(from: decoder)\n            self = .chatActionBarJoinRequest(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .chatActionBarReportSpam(let value):\n            try container.encode(Kind.chatActionBarReportSpam, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatActionBarInviteMembers:\n            try container.encode(Kind.chatActionBarInviteMembers, forKey: .type)\n        case .chatActionBarReportAddBlock(let value):\n            try container.encode(Kind.chatActionBarReportAddBlock, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatActionBarAddContact:\n            try container.encode(Kind.chatActionBarAddContact, forKey: .type)\n        case .chatActionBarSharePhoneNumber:\n            try container.encode(Kind.chatActionBarSharePhoneNumber, forKey: .type)\n        case .chatActionBarJoinRequest(let value):\n            try container.encode(Kind.chatActionBarJoinRequest, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The chat can be reported as spam using the method reportChat with an empty option_id and message_ids. If the chat is a private chat with a user with an emoji status, then a notice about emoji status usage must be shown\npublic struct ChatActionBarReportSpam: Codable, Equatable, Hashable {\n\n    /// If true, the chat was automatically archived and can be moved back to the main chat list using addChatToList simultaneously with setting chat notification settings to default using setChatNotificationSettings\n    public let canUnarchive: Bool\n\n\n    public init(canUnarchive: Bool) {\n        self.canUnarchive = canUnarchive\n    }\n}\n\n/// The chat is a private or secret chat, which can be reported using the method reportChat, or the other user can be blocked using the method setMessageSenderBlockList, or the other user can be added to the contact list using the method addContact. If the chat is a private chat with a user with an emoji status, then a notice about emoji status usage must be shown\npublic struct ChatActionBarReportAddBlock: Codable, Equatable, Hashable {\n\n    /// Basic information about the other user in the chat; may be null if unknown\n    public let accountInfo: AccountInfo?\n\n    /// If true, the chat was automatically archived and can be moved back to the main chat list using addChatToList simultaneously with setting chat notification settings to default using setChatNotificationSettings\n    public let canUnarchive: Bool\n\n\n    public init(\n        accountInfo: AccountInfo?,\n        canUnarchive: Bool\n    ) {\n        self.accountInfo = accountInfo\n        self.canUnarchive = canUnarchive\n    }\n}\n\n/// The chat is a private chat with an administrator of a chat to which the user sent join request\npublic struct ChatActionBarJoinRequest: Codable, Equatable, Hashable {\n\n    /// True, if the join request was sent to a channel chat\n    public let isChannel: Bool\n\n    /// Point in time (Unix timestamp) when the join request was sent\n    public let requestDate: Int\n\n    /// Title of the chat to which the join request was sent\n    public let title: String\n\n\n    public init(\n        isChannel: Bool,\n        requestDate: Int,\n        title: String\n    ) {\n        self.isChannel = isChannel\n        self.requestDate = requestDate\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatActiveStories.swift",
    "content": "//\n//  ChatActiveStories.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes active stories posted by a chat\npublic struct ChatActiveStories: Codable, Equatable, Hashable {\n\n    /// True, if the stories are shown in the main story list and can be archived; otherwise, the stories can be hidden from the main story list only by calling removeTopChat with topChatCategoryUsers and the chat_id. Stories of the current user can't be archived nor hidden using removeTopChat\n    public let canBeArchived: Bool\n\n    /// Identifier of the chat that posted the stories\n    public let chatId: Int64\n\n    /// Identifier of the story list in which the stories are shown; may be null if the stories aren't shown in a story list\n    public let list: StoryList?\n\n    /// Identifier of the last read active story\n    public let maxReadStoryId: Int\n\n    /// A parameter used to determine order of the stories in the story list; 0 if the stories don't need to be shown in the story list. Stories must be sorted by the pair (order, story_poster_chat_id) in descending order\n    public let order: Int64\n\n    /// Basic information about the stories; use getStory to get full information about the stories. The stories are in chronological order (i.e., in order of increasing story identifiers)\n    public let stories: [StoryInfo]\n\n\n    public init(\n        canBeArchived: Bool,\n        chatId: Int64,\n        list: StoryList?,\n        maxReadStoryId: Int,\n        order: Int64,\n        stories: [StoryInfo]\n    ) {\n        self.canBeArchived = canBeArchived\n        self.chatId = chatId\n        self.list = list\n        self.maxReadStoryId = maxReadStoryId\n        self.order = order\n        self.stories = stories\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatAdministrator.swift",
    "content": "//\n//  ChatAdministrator.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a chat administrator\npublic struct ChatAdministrator: Codable, Equatable, Hashable {\n\n    /// True, if the current user can edit the administrator privileges for the administrator\n    public let canBeEdited: Bool\n\n    /// Custom title of the administrator\n    public let customTitle: String\n\n    /// True, if the user is the owner of the chat\n    public let isOwner: Bool\n\n    /// User identifier of the administrator\n    public let userId: Int64\n\n\n    public init(\n        canBeEdited: Bool,\n        customTitle: String,\n        isOwner: Bool,\n        userId: Int64\n    ) {\n        self.canBeEdited = canBeEdited\n        self.customTitle = customTitle\n        self.isOwner = isOwner\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatAdministratorRights.swift",
    "content": "//\n//  ChatAdministratorRights.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes rights of the administrator\npublic struct ChatAdministratorRights: Codable, Equatable, Hashable {\n\n    /// True, if the administrator can change the chat title, photo, and other settings\n    public let canChangeInfo: Bool\n\n    /// True, if the administrator can delete messages of other users\n    public let canDeleteMessages: Bool\n\n    /// True, if the administrator can delete stories posted by other users; applicable to supergroups and channels only\n    public let canDeleteStories: Bool\n\n    /// True, if the administrator can edit messages of other users and pin messages; applicable to channels only\n    public let canEditMessages: Bool\n\n    /// True, if the administrator can edit stories posted by other users, post stories to the chat page, pin chat stories, and access story archive; applicable to supergroups and channels only\n    public let canEditStories: Bool\n\n    /// True, if the administrator can invite new users to the chat\n    public let canInviteUsers: Bool\n\n    /// True, if the administrator can access the chat event log, get boost list, see hidden supergroup and channel members, report supergroup spam messages, ignore slow mode, and send messages to the chat without paying Telegram Stars. Implied by any other privilege; applicable to supergroups and channels only\n    public let canManageChat: Bool\n\n    /// True, if the administrator can answer to channel direct messages; applicable to channels only\n    public let canManageDirectMessages: Bool\n\n    /// True, if the administrator can change tags of other users; applicable to basic groups and supergroups only\n    public let canManageTags: Bool\n\n    /// True, if the administrator can create, rename, close, reopen, hide, and unhide forum topics; applicable to forum supergroups only\n    public let canManageTopics: Bool\n\n    /// True, if the administrator can manage video chats\n    public let canManageVideoChats: Bool\n\n    /// True, if the administrator can pin messages; applicable to basic groups and supergroups only\n    public let canPinMessages: Bool\n\n    /// True, if the administrator can create channel posts, approve suggested channel posts, or view channel statistics; applicable to channels only\n    public let canPostMessages: Bool\n\n    /// True, if the administrator can create new chat stories, or edit and delete posted stories; applicable to supergroups and channels only\n    public let canPostStories: Bool\n\n    /// True, if the administrator can add new administrators with a subset of their own privileges or demote administrators that were directly or indirectly promoted by them\n    public let canPromoteMembers: Bool\n\n    /// True, if the administrator can restrict, ban, or unban chat members or view supergroup statistics\n    public let canRestrictMembers: Bool\n\n    /// True, if the administrator isn't shown in the chat member list and sends messages anonymously; applicable to supergroups only\n    public let isAnonymous: Bool\n\n\n    public init(\n        canChangeInfo: Bool,\n        canDeleteMessages: Bool,\n        canDeleteStories: Bool,\n        canEditMessages: Bool,\n        canEditStories: Bool,\n        canInviteUsers: Bool,\n        canManageChat: Bool,\n        canManageDirectMessages: Bool,\n        canManageTags: Bool,\n        canManageTopics: Bool,\n        canManageVideoChats: Bool,\n        canPinMessages: Bool,\n        canPostMessages: Bool,\n        canPostStories: Bool,\n        canPromoteMembers: Bool,\n        canRestrictMembers: Bool,\n        isAnonymous: Bool\n    ) {\n        self.canChangeInfo = canChangeInfo\n        self.canDeleteMessages = canDeleteMessages\n        self.canDeleteStories = canDeleteStories\n        self.canEditMessages = canEditMessages\n        self.canEditStories = canEditStories\n        self.canInviteUsers = canInviteUsers\n        self.canManageChat = canManageChat\n        self.canManageDirectMessages = canManageDirectMessages\n        self.canManageTags = canManageTags\n        self.canManageTopics = canManageTopics\n        self.canManageVideoChats = canManageVideoChats\n        self.canPinMessages = canPinMessages\n        self.canPostMessages = canPostMessages\n        self.canPostStories = canPostStories\n        self.canPromoteMembers = canPromoteMembers\n        self.canRestrictMembers = canRestrictMembers\n        self.isAnonymous = isAnonymous\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatAdministrators.swift",
    "content": "//\n//  ChatAdministrators.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of chat administrators\npublic struct ChatAdministrators: Codable, Equatable, Hashable {\n\n    /// A list of chat administrators\n    public let administrators: [ChatAdministrator]\n\n\n    public init(administrators: [ChatAdministrator]) {\n        self.administrators = administrators\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatAffiliateProgram.swift",
    "content": "//\n//  ChatAffiliateProgram.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.41-53acb2b5\n//  https://github.com/tdlib/td/tree/53acb2b5\n//\n\nimport Foundation\n\n\n/// Describes an affiliate program that was connected to a chat\npublic struct ChatAffiliateProgram: Codable, Equatable, Hashable {\n\n    /// User identifier of the bot created the program\n    public let botUserId: Int64\n\n    /// Point in time (Unix timestamp) when the affiliate program was connected\n    public let connectionDate: Int\n\n    /// True, if the program was canceled by the bot, or disconnected by the chat owner and isn't available anymore\n    public let isDisconnected: Bool\n\n    /// The parameters of the affiliate program\n    public let parameters: AffiliateProgramParameters\n\n    /// The number of Telegram Stars that were earned by the affiliate program\n    public let revenueStarCount: TdInt64\n\n    /// The link that can be used to refer users if the program is still active\n    public let url: String\n\n    /// The number of users that used the affiliate program\n    public let userCount: TdInt64\n\n\n    public init(\n        botUserId: Int64,\n        connectionDate: Int,\n        isDisconnected: Bool,\n        parameters: AffiliateProgramParameters,\n        revenueStarCount: TdInt64,\n        url: String,\n        userCount: TdInt64\n    ) {\n        self.botUserId = botUserId\n        self.connectionDate = connectionDate\n        self.isDisconnected = isDisconnected\n        self.parameters = parameters\n        self.revenueStarCount = revenueStarCount\n        self.url = url\n        self.userCount = userCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatAffiliatePrograms.swift",
    "content": "//\n//  ChatAffiliatePrograms.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.41-53acb2b5\n//  https://github.com/tdlib/td/tree/53acb2b5\n//\n\nimport Foundation\n\n\n/// Represents a list of affiliate programs that were connected to a chat\npublic struct ChatAffiliatePrograms: Codable, Equatable, Hashable {\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// The list of connected affiliate programs\n    public let programs: [ChatAffiliateProgram]\n\n    /// The total number of affiliate programs that were connected to the chat\n    public let totalCount: Int\n\n\n    public init(\n        nextOffset: String,\n        programs: [ChatAffiliateProgram],\n        totalCount: Int\n    ) {\n        self.nextOffset = nextOffset\n        self.programs = programs\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatAvailableReactions.swift",
    "content": "//\n//  ChatAvailableReactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes reactions available in the chat\npublic indirect enum ChatAvailableReactions: Codable, Equatable, Hashable {\n\n    /// All reactions are available in the chat, excluding the paid reaction and custom reactions in channel chats\n    case chatAvailableReactionsAll(ChatAvailableReactionsAll)\n\n    /// Only specific reactions are available in the chat\n    case chatAvailableReactionsSome(ChatAvailableReactionsSome)\n\n\n    private enum Kind: String, Codable {\n        case chatAvailableReactionsAll\n        case chatAvailableReactionsSome\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .chatAvailableReactionsAll:\n            let value = try ChatAvailableReactionsAll(from: decoder)\n            self = .chatAvailableReactionsAll(value)\n        case .chatAvailableReactionsSome:\n            let value = try ChatAvailableReactionsSome(from: decoder)\n            self = .chatAvailableReactionsSome(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .chatAvailableReactionsAll(let value):\n            try container.encode(Kind.chatAvailableReactionsAll, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatAvailableReactionsSome(let value):\n            try container.encode(Kind.chatAvailableReactionsSome, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// All reactions are available in the chat, excluding the paid reaction and custom reactions in channel chats\npublic struct ChatAvailableReactionsAll: Codable, Equatable, Hashable {\n\n    /// The maximum allowed number of reactions per message; 1-11\n    public let maxReactionCount: Int\n\n\n    public init(maxReactionCount: Int) {\n        self.maxReactionCount = maxReactionCount\n    }\n}\n\n/// Only specific reactions are available in the chat\npublic struct ChatAvailableReactionsSome: Codable, Equatable, Hashable {\n\n    /// The maximum allowed number of reactions per message; 1-11\n    public let maxReactionCount: Int\n\n    /// The list of reactions\n    public let reactions: [ReactionType]\n\n\n    public init(\n        maxReactionCount: Int,\n        reactions: [ReactionType]\n    ) {\n        self.maxReactionCount = maxReactionCount\n        self.reactions = reactions\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatBackground.swift",
    "content": "//\n//  ChatBackground.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a background set for a specific chat\npublic struct ChatBackground: Codable, Equatable, Hashable {\n\n    /// The background\n    public let background: Background\n\n    /// Dimming of the background in dark themes, as a percentage; 0-100. Applied only to Wallpaper and Fill types of background\n    public let darkThemeDimming: Int\n\n\n    public init(\n        background: Background,\n        darkThemeDimming: Int\n    ) {\n        self.background = background\n        self.darkThemeDimming = darkThemeDimming\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatBoost.swift",
    "content": "//\n//  ChatBoost.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a boost applied to a chat\npublic struct ChatBoost: Codable, Equatable, Hashable, Identifiable {\n\n    /// The number of identical boosts applied\n    public let count: Int\n\n    /// Point in time (Unix timestamp) when the boost will expire\n    public let expirationDate: Int\n\n    /// Unique identifier of the boost\n    public let id: String\n\n    /// Source of the boost\n    public let source: ChatBoostSource\n\n    /// Point in time (Unix timestamp) when the chat was boosted\n    public let startDate: Int\n\n\n    public init(\n        count: Int,\n        expirationDate: Int,\n        id: String,\n        source: ChatBoostSource,\n        startDate: Int\n    ) {\n        self.count = count\n        self.expirationDate = expirationDate\n        self.id = id\n        self.source = source\n        self.startDate = startDate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatBoostFeatures.swift",
    "content": "//\n//  ChatBoostFeatures.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of features available on the first chat boost levels\npublic struct ChatBoostFeatures: Codable, Equatable, Hashable {\n\n    /// The list of features\n    public let features: [ChatBoostLevelFeatures]\n\n    /// The minimum boost level allowing to enable automatic translation of messages for non-Premium users; for channel chats only\n    public let minAutomaticTranslationBoostLevel: Int\n\n    /// The minimum boost level required to set custom emoji for reply header and link preview background; for channel chats only\n    public let minBackgroundCustomEmojiBoostLevel: Int\n\n    /// The minimum boost level required to set a chat theme background as chat background\n    public let minChatThemeBackgroundBoostLevel: Int\n\n    /// The minimum boost level required to set custom chat background\n    public let minCustomBackgroundBoostLevel: Int\n\n    /// The minimum boost level required to set custom emoji sticker set for the chat; for supergroup chats only\n    public let minCustomEmojiStickerSetBoostLevel: Int\n\n    /// The minimum boost level required to set emoji status\n    public let minEmojiStatusBoostLevel: Int\n\n    /// The minimum boost level required to set custom emoji for profile background\n    public let minProfileBackgroundCustomEmojiBoostLevel: Int\n\n    /// The minimum boost level allowing to recognize speech in video note and voice note messages for non-Premium users; for supergroup chats only\n    public let minSpeechRecognitionBoostLevel: Int\n\n    /// The minimum boost level allowing to disable sponsored messages in the chat; for channel chats only\n    public let minSponsoredMessageDisableBoostLevel: Int\n\n\n    public init(\n        features: [ChatBoostLevelFeatures],\n        minAutomaticTranslationBoostLevel: Int,\n        minBackgroundCustomEmojiBoostLevel: Int,\n        minChatThemeBackgroundBoostLevel: Int,\n        minCustomBackgroundBoostLevel: Int,\n        minCustomEmojiStickerSetBoostLevel: Int,\n        minEmojiStatusBoostLevel: Int,\n        minProfileBackgroundCustomEmojiBoostLevel: Int,\n        minSpeechRecognitionBoostLevel: Int,\n        minSponsoredMessageDisableBoostLevel: Int\n    ) {\n        self.features = features\n        self.minAutomaticTranslationBoostLevel = minAutomaticTranslationBoostLevel\n        self.minBackgroundCustomEmojiBoostLevel = minBackgroundCustomEmojiBoostLevel\n        self.minChatThemeBackgroundBoostLevel = minChatThemeBackgroundBoostLevel\n        self.minCustomBackgroundBoostLevel = minCustomBackgroundBoostLevel\n        self.minCustomEmojiStickerSetBoostLevel = minCustomEmojiStickerSetBoostLevel\n        self.minEmojiStatusBoostLevel = minEmojiStatusBoostLevel\n        self.minProfileBackgroundCustomEmojiBoostLevel = minProfileBackgroundCustomEmojiBoostLevel\n        self.minSpeechRecognitionBoostLevel = minSpeechRecognitionBoostLevel\n        self.minSponsoredMessageDisableBoostLevel = minSponsoredMessageDisableBoostLevel\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatBoostLevelFeatures.swift",
    "content": "//\n//  ChatBoostLevelFeatures.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of features available on a specific chat boost level\npublic struct ChatBoostLevelFeatures: Codable, Equatable, Hashable {\n\n    /// Number of custom colors for background of empty chat photo, replies to messages and link previews\n    public let accentColorCount: Int\n\n    /// True, if sponsored messages can be disabled in the chat\n    public let canDisableSponsoredMessages: Bool\n\n    /// True, if automatic translation of messages can be enabled in the chat\n    public let canEnableAutomaticTranslation: Bool\n\n    /// True, if speech recognition can be used for video note and voice note messages by all users\n    public let canRecognizeSpeech: Bool\n\n    /// True, if custom emoji for reply header and link preview background can be set\n    public let canSetBackgroundCustomEmoji: Bool\n\n    /// True, if custom background can be set in the chat for all users\n    public let canSetCustomBackground: Bool\n\n    /// True, if custom emoji sticker set can be set for the chat\n    public let canSetCustomEmojiStickerSet: Bool\n\n    /// True, if emoji status can be set\n    public let canSetEmojiStatus: Bool\n\n    /// True, if custom emoji for profile background can be set\n    public let canSetProfileBackgroundCustomEmoji: Bool\n\n    /// Number of chat theme backgrounds that can be set as chat background\n    public let chatThemeBackgroundCount: Int\n\n    /// Number of custom emoji reactions that can be added to the list of available reactions\n    public let customEmojiReactionCount: Int\n\n    /// Target chat boost level\n    public let level: Int\n\n    /// Number of custom colors for profile photo background\n    public let profileAccentColorCount: Int\n\n    /// Number of stories that the chat can publish daily\n    public let storyPerDayCount: Int\n\n    /// Number of custom colors for chat title\n    public let titleColorCount: Int\n\n\n    public init(\n        accentColorCount: Int,\n        canDisableSponsoredMessages: Bool,\n        canEnableAutomaticTranslation: Bool,\n        canRecognizeSpeech: Bool,\n        canSetBackgroundCustomEmoji: Bool,\n        canSetCustomBackground: Bool,\n        canSetCustomEmojiStickerSet: Bool,\n        canSetEmojiStatus: Bool,\n        canSetProfileBackgroundCustomEmoji: Bool,\n        chatThemeBackgroundCount: Int,\n        customEmojiReactionCount: Int,\n        level: Int,\n        profileAccentColorCount: Int,\n        storyPerDayCount: Int,\n        titleColorCount: Int\n    ) {\n        self.accentColorCount = accentColorCount\n        self.canDisableSponsoredMessages = canDisableSponsoredMessages\n        self.canEnableAutomaticTranslation = canEnableAutomaticTranslation\n        self.canRecognizeSpeech = canRecognizeSpeech\n        self.canSetBackgroundCustomEmoji = canSetBackgroundCustomEmoji\n        self.canSetCustomBackground = canSetCustomBackground\n        self.canSetCustomEmojiStickerSet = canSetCustomEmojiStickerSet\n        self.canSetEmojiStatus = canSetEmojiStatus\n        self.canSetProfileBackgroundCustomEmoji = canSetProfileBackgroundCustomEmoji\n        self.chatThemeBackgroundCount = chatThemeBackgroundCount\n        self.customEmojiReactionCount = customEmojiReactionCount\n        self.level = level\n        self.profileAccentColorCount = profileAccentColorCount\n        self.storyPerDayCount = storyPerDayCount\n        self.titleColorCount = titleColorCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatBoostLink.swift",
    "content": "//\n//  ChatBoostLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains an HTTPS link to boost a chat\npublic struct ChatBoostLink: Codable, Equatable, Hashable {\n\n    /// True, if the link will work for non-members of the chat\n    public let isPublic: Bool\n\n    /// The link\n    public let link: String\n\n\n    public init(\n        isPublic: Bool,\n        link: String\n    ) {\n        self.isPublic = isPublic\n        self.link = link\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatBoostLinkInfo.swift",
    "content": "//\n//  ChatBoostLinkInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a link to boost a chat\npublic struct ChatBoostLinkInfo: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the link points; 0 if the chat isn't found\n    public let chatId: Int64\n\n    /// True, if the link will work for non-members of the chat\n    public let isPublic: Bool\n\n\n    public init(\n        chatId: Int64,\n        isPublic: Bool\n    ) {\n        self.chatId = chatId\n        self.isPublic = isPublic\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatBoostSlot.swift",
    "content": "//\n//  ChatBoostSlot.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a slot for chat boost\npublic struct ChatBoostSlot: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) after which the boost can be used for another chat\n    public let cooldownUntilDate: Int\n\n    /// Identifier of the currently boosted chat; 0 if none\n    public let currentlyBoostedChatId: Int64\n\n    /// Point in time (Unix timestamp) when the boost will expire\n    public let expirationDate: Int\n\n    /// Unique identifier of the slot\n    public let slotId: Int\n\n    /// Point in time (Unix timestamp) when the chat was boosted; 0 if none\n    public let startDate: Int\n\n\n    public init(\n        cooldownUntilDate: Int,\n        currentlyBoostedChatId: Int64,\n        expirationDate: Int,\n        slotId: Int,\n        startDate: Int\n    ) {\n        self.cooldownUntilDate = cooldownUntilDate\n        self.currentlyBoostedChatId = currentlyBoostedChatId\n        self.expirationDate = expirationDate\n        self.slotId = slotId\n        self.startDate = startDate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatBoostSlots.swift",
    "content": "//\n//  ChatBoostSlots.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of chat boost slots\npublic struct ChatBoostSlots: Codable, Equatable, Hashable {\n\n    /// List of boost slots\n    public let slots: [ChatBoostSlot]\n\n\n    public init(slots: [ChatBoostSlot]) {\n        self.slots = slots\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatBoostSource.swift",
    "content": "//\n//  ChatBoostSource.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes source of a chat boost\npublic indirect enum ChatBoostSource: Codable, Equatable, Hashable {\n\n    /// The chat created a Telegram Premium gift code for a user\n    case chatBoostSourceGiftCode(ChatBoostSourceGiftCode)\n\n    /// The chat created a giveaway\n    case chatBoostSourceGiveaway(ChatBoostSourceGiveaway)\n\n    /// A user with Telegram Premium subscription or gifted Telegram Premium boosted the chat\n    case chatBoostSourcePremium(ChatBoostSourcePremium)\n\n\n    private enum Kind: String, Codable {\n        case chatBoostSourceGiftCode\n        case chatBoostSourceGiveaway\n        case chatBoostSourcePremium\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .chatBoostSourceGiftCode:\n            let value = try ChatBoostSourceGiftCode(from: decoder)\n            self = .chatBoostSourceGiftCode(value)\n        case .chatBoostSourceGiveaway:\n            let value = try ChatBoostSourceGiveaway(from: decoder)\n            self = .chatBoostSourceGiveaway(value)\n        case .chatBoostSourcePremium:\n            let value = try ChatBoostSourcePremium(from: decoder)\n            self = .chatBoostSourcePremium(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .chatBoostSourceGiftCode(let value):\n            try container.encode(Kind.chatBoostSourceGiftCode, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatBoostSourceGiveaway(let value):\n            try container.encode(Kind.chatBoostSourceGiveaway, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatBoostSourcePremium(let value):\n            try container.encode(Kind.chatBoostSourcePremium, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The chat created a Telegram Premium gift code for a user\npublic struct ChatBoostSourceGiftCode: Codable, Equatable, Hashable {\n\n    /// The created Telegram Premium gift code, which is known only if this is a gift code for the current user, or it has already been claimed\n    public let giftCode: String\n\n    /// Identifier of a user, for which the gift code was created\n    public let userId: Int64\n\n\n    public init(\n        giftCode: String,\n        userId: Int64\n    ) {\n        self.giftCode = giftCode\n        self.userId = userId\n    }\n}\n\n/// The chat created a giveaway\npublic struct ChatBoostSourceGiveaway: Codable, Equatable, Hashable {\n\n    /// The created Telegram Premium gift code if it was used by the user or can be claimed by the current user; an empty string otherwise; for Telegram Premium giveways only\n    public let giftCode: String\n\n    /// Identifier of the corresponding giveaway message; can be an identifier of a deleted message\n    public let giveawayMessageId: Int64\n\n    /// True, if the winner for the corresponding giveaway prize wasn't chosen, because there were not enough participants\n    public let isUnclaimed: Bool\n\n    /// Number of Telegram Stars distributed among winners of the giveaway\n    public let starCount: Int64\n\n    /// Identifier of a user who won in the giveaway; 0 if none\n    public let userId: Int64\n\n\n    public init(\n        giftCode: String,\n        giveawayMessageId: Int64,\n        isUnclaimed: Bool,\n        starCount: Int64,\n        userId: Int64\n    ) {\n        self.giftCode = giftCode\n        self.giveawayMessageId = giveawayMessageId\n        self.isUnclaimed = isUnclaimed\n        self.starCount = starCount\n        self.userId = userId\n    }\n}\n\n/// A user with Telegram Premium subscription or gifted Telegram Premium boosted the chat\npublic struct ChatBoostSourcePremium: Codable, Equatable, Hashable {\n\n    /// Identifier of the user\n    public let userId: Int64\n\n\n    public init(userId: Int64) {\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatBoostStatus.swift",
    "content": "//\n//  ChatBoostStatus.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes current boost status of a chat\npublic struct ChatBoostStatus: Codable, Equatable, Hashable {\n\n    /// Identifiers of boost slots of the current user applied to the chat\n    public let appliedSlotIds: [Int]\n\n    /// The number of boosts received by the chat\n    public let boostCount: Int\n\n    /// An HTTP URL, which can be used to boost the chat\n    public let boostUrl: String\n\n    /// The number of boosts added to reach the current level\n    public let currentLevelBoostCount: Int\n\n    /// The number of boosts received by the chat from created Telegram Premium gift codes and giveaways; always 0 if the current user isn't an administrator in the chat\n    public let giftCodeBoostCount: Int\n\n    /// Current boost level of the chat\n    public let level: Int\n\n    /// The number of boosts needed to reach the next level; 0 if the next level isn't available\n    public let nextLevelBoostCount: Int\n\n    /// Approximate number of Telegram Premium subscribers joined the chat; always 0 if the current user isn't an administrator in the chat\n    public let premiumMemberCount: Int\n\n    /// A percentage of Telegram Premium subscribers joined the chat; always 0 if the current user isn't an administrator in the chat\n    public let premiumMemberPercentage: Double\n\n    /// The list of prepaid giveaways available for the chat; only for chat administrators\n    public let prepaidGiveaways: [PrepaidGiveaway]\n\n\n    public init(\n        appliedSlotIds: [Int],\n        boostCount: Int,\n        boostUrl: String,\n        currentLevelBoostCount: Int,\n        giftCodeBoostCount: Int,\n        level: Int,\n        nextLevelBoostCount: Int,\n        premiumMemberCount: Int,\n        premiumMemberPercentage: Double,\n        prepaidGiveaways: [PrepaidGiveaway]\n    ) {\n        self.appliedSlotIds = appliedSlotIds\n        self.boostCount = boostCount\n        self.boostUrl = boostUrl\n        self.currentLevelBoostCount = currentLevelBoostCount\n        self.giftCodeBoostCount = giftCodeBoostCount\n        self.level = level\n        self.nextLevelBoostCount = nextLevelBoostCount\n        self.premiumMemberCount = premiumMemberCount\n        self.premiumMemberPercentage = premiumMemberPercentage\n        self.prepaidGiveaways = prepaidGiveaways\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatEvent.swift",
    "content": "//\n//  ChatEvent.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a chat event\npublic struct ChatEvent: Codable, Equatable, Hashable, Identifiable {\n\n    /// The action\n    public let action: ChatEventAction\n\n    /// Point in time (Unix timestamp) when the event happened\n    public let date: Int\n\n    /// Chat event identifier\n    public let id: TdInt64\n\n    /// Identifier of the user or chat who performed the action\n    public let memberId: MessageSender\n\n\n    public init(\n        action: ChatEventAction,\n        date: Int,\n        id: TdInt64,\n        memberId: MessageSender\n    ) {\n        self.action = action\n        self.date = date\n        self.id = id\n        self.memberId = memberId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatEventAction.swift",
    "content": "//\n//  ChatEventAction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a chat event\npublic indirect enum ChatEventAction: Codable, Equatable, Hashable {\n\n    /// A message was edited\n    case chatEventMessageEdited(ChatEventMessageEdited)\n\n    /// A message was deleted\n    case chatEventMessageDeleted(ChatEventMessageDeleted)\n\n    /// A message was pinned\n    case chatEventMessagePinned(ChatEventMessagePinned)\n\n    /// A message was unpinned\n    case chatEventMessageUnpinned(ChatEventMessageUnpinned)\n\n    /// A poll in a message was stopped\n    case chatEventPollStopped(ChatEventPollStopped)\n\n    /// A new member joined the chat\n    case chatEventMemberJoined\n\n    /// A new member joined the chat via an invite link\n    case chatEventMemberJoinedByInviteLink(ChatEventMemberJoinedByInviteLink)\n\n    /// A new member was accepted to the chat by an administrator\n    case chatEventMemberJoinedByRequest(ChatEventMemberJoinedByRequest)\n\n    /// A new chat member was invited\n    case chatEventMemberInvited(ChatEventMemberInvited)\n\n    /// A member left the chat\n    case chatEventMemberLeft\n\n    /// A chat member has gained/lost administrator status, or the list of their administrator privileges has changed\n    case chatEventMemberPromoted(ChatEventMemberPromoted)\n\n    /// A chat member was restricted/unrestricted or banned/unbanned, or the list of their restrictions has changed\n    case chatEventMemberRestricted(ChatEventMemberRestricted)\n\n    /// A chat member tag has been changed\n    case chatEventMemberTagChanged(ChatEventMemberTagChanged)\n\n    /// A chat member extended their subscription to the chat\n    case chatEventMemberSubscriptionExtended(ChatEventMemberSubscriptionExtended)\n\n    /// The chat available reactions were changed\n    case chatEventAvailableReactionsChanged(ChatEventAvailableReactionsChanged)\n\n    /// The chat background was changed\n    case chatEventBackgroundChanged(ChatEventBackgroundChanged)\n\n    /// The chat description was changed\n    case chatEventDescriptionChanged(ChatEventDescriptionChanged)\n\n    /// The chat emoji status was changed\n    case chatEventEmojiStatusChanged(ChatEventEmojiStatusChanged)\n\n    /// The linked chat of a supergroup was changed\n    case chatEventLinkedChatChanged(ChatEventLinkedChatChanged)\n\n    /// The supergroup location was changed\n    case chatEventLocationChanged(ChatEventLocationChanged)\n\n    /// The message auto-delete timer was changed\n    case chatEventMessageAutoDeleteTimeChanged(ChatEventMessageAutoDeleteTimeChanged)\n\n    /// The chat permissions were changed\n    case chatEventPermissionsChanged(ChatEventPermissionsChanged)\n\n    /// The chat photo was changed\n    case chatEventPhotoChanged(ChatEventPhotoChanged)\n\n    /// The slow_mode_delay setting of a supergroup was changed\n    case chatEventSlowModeDelayChanged(ChatEventSlowModeDelayChanged)\n\n    /// The supergroup sticker set was changed\n    case chatEventStickerSetChanged(ChatEventStickerSetChanged)\n\n    /// The supergroup sticker set with allowed custom emoji was changed\n    case chatEventCustomEmojiStickerSetChanged(ChatEventCustomEmojiStickerSetChanged)\n\n    /// The chat title was changed\n    case chatEventTitleChanged(ChatEventTitleChanged)\n\n    /// The chat editable username was changed\n    case chatEventUsernameChanged(ChatEventUsernameChanged)\n\n    /// The chat active usernames were changed\n    case chatEventActiveUsernamesChanged(ChatEventActiveUsernamesChanged)\n\n    /// The chat accent color or background custom emoji were changed\n    case chatEventAccentColorChanged(ChatEventAccentColorChanged)\n\n    /// The chat's profile accent color or profile background custom emoji were changed\n    case chatEventProfileAccentColorChanged(ChatEventProfileAccentColorChanged)\n\n    /// The has_protected_content setting of a channel was toggled\n    case chatEventHasProtectedContentToggled(ChatEventHasProtectedContentToggled)\n\n    /// The can_invite_users permission of a supergroup chat was toggled\n    case chatEventInvitesToggled(ChatEventInvitesToggled)\n\n    /// The is_all_history_available setting of a supergroup was toggled\n    case chatEventIsAllHistoryAvailableToggled(ChatEventIsAllHistoryAvailableToggled)\n\n    /// The has_aggressive_anti_spam_enabled setting of a supergroup was toggled\n    case chatEventHasAggressiveAntiSpamEnabledToggled(ChatEventHasAggressiveAntiSpamEnabledToggled)\n\n    /// The sign_messages setting of a channel was toggled\n    case chatEventSignMessagesToggled(ChatEventSignMessagesToggled)\n\n    /// The show_message_sender setting of a channel was toggled\n    case chatEventShowMessageSenderToggled(ChatEventShowMessageSenderToggled)\n\n    /// The has_automatic_translation setting of a channel was toggled\n    case chatEventAutomaticTranslationToggled(ChatEventAutomaticTranslationToggled)\n\n    /// A chat invite link was edited\n    case chatEventInviteLinkEdited(ChatEventInviteLinkEdited)\n\n    /// A chat invite link was revoked\n    case chatEventInviteLinkRevoked(ChatEventInviteLinkRevoked)\n\n    /// A revoked chat invite link was deleted\n    case chatEventInviteLinkDeleted(ChatEventInviteLinkDeleted)\n\n    /// A video chat was created\n    case chatEventVideoChatCreated(ChatEventVideoChatCreated)\n\n    /// A video chat was ended\n    case chatEventVideoChatEnded(ChatEventVideoChatEnded)\n\n    /// The mute_new_participants setting of a video chat was toggled\n    case chatEventVideoChatMuteNewParticipantsToggled(ChatEventVideoChatMuteNewParticipantsToggled)\n\n    /// A video chat participant was muted or unmuted\n    case chatEventVideoChatParticipantIsMutedToggled(ChatEventVideoChatParticipantIsMutedToggled)\n\n    /// A video chat participant volume level was changed\n    case chatEventVideoChatParticipantVolumeLevelChanged(ChatEventVideoChatParticipantVolumeLevelChanged)\n\n    /// The is_forum setting of a channel was toggled\n    case chatEventIsForumToggled(ChatEventIsForumToggled)\n\n    /// A new forum topic was created\n    case chatEventForumTopicCreated(ChatEventForumTopicCreated)\n\n    /// A forum topic was edited\n    case chatEventForumTopicEdited(ChatEventForumTopicEdited)\n\n    /// A forum topic was closed or reopened\n    case chatEventForumTopicToggleIsClosed(ChatEventForumTopicToggleIsClosed)\n\n    /// The General forum topic was hidden or unhidden\n    case chatEventForumTopicToggleIsHidden(ChatEventForumTopicToggleIsHidden)\n\n    /// A forum topic was deleted\n    case chatEventForumTopicDeleted(ChatEventForumTopicDeleted)\n\n    /// A pinned forum topic was changed\n    case chatEventForumTopicPinned(ChatEventForumTopicPinned)\n\n\n    private enum Kind: String, Codable {\n        case chatEventMessageEdited\n        case chatEventMessageDeleted\n        case chatEventMessagePinned\n        case chatEventMessageUnpinned\n        case chatEventPollStopped\n        case chatEventMemberJoined\n        case chatEventMemberJoinedByInviteLink\n        case chatEventMemberJoinedByRequest\n        case chatEventMemberInvited\n        case chatEventMemberLeft\n        case chatEventMemberPromoted\n        case chatEventMemberRestricted\n        case chatEventMemberTagChanged\n        case chatEventMemberSubscriptionExtended\n        case chatEventAvailableReactionsChanged\n        case chatEventBackgroundChanged\n        case chatEventDescriptionChanged\n        case chatEventEmojiStatusChanged\n        case chatEventLinkedChatChanged\n        case chatEventLocationChanged\n        case chatEventMessageAutoDeleteTimeChanged\n        case chatEventPermissionsChanged\n        case chatEventPhotoChanged\n        case chatEventSlowModeDelayChanged\n        case chatEventStickerSetChanged\n        case chatEventCustomEmojiStickerSetChanged\n        case chatEventTitleChanged\n        case chatEventUsernameChanged\n        case chatEventActiveUsernamesChanged\n        case chatEventAccentColorChanged\n        case chatEventProfileAccentColorChanged\n        case chatEventHasProtectedContentToggled\n        case chatEventInvitesToggled\n        case chatEventIsAllHistoryAvailableToggled\n        case chatEventHasAggressiveAntiSpamEnabledToggled\n        case chatEventSignMessagesToggled\n        case chatEventShowMessageSenderToggled\n        case chatEventAutomaticTranslationToggled\n        case chatEventInviteLinkEdited\n        case chatEventInviteLinkRevoked\n        case chatEventInviteLinkDeleted\n        case chatEventVideoChatCreated\n        case chatEventVideoChatEnded\n        case chatEventVideoChatMuteNewParticipantsToggled\n        case chatEventVideoChatParticipantIsMutedToggled\n        case chatEventVideoChatParticipantVolumeLevelChanged\n        case chatEventIsForumToggled\n        case chatEventForumTopicCreated\n        case chatEventForumTopicEdited\n        case chatEventForumTopicToggleIsClosed\n        case chatEventForumTopicToggleIsHidden\n        case chatEventForumTopicDeleted\n        case chatEventForumTopicPinned\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .chatEventMessageEdited:\n            let value = try ChatEventMessageEdited(from: decoder)\n            self = .chatEventMessageEdited(value)\n        case .chatEventMessageDeleted:\n            let value = try ChatEventMessageDeleted(from: decoder)\n            self = .chatEventMessageDeleted(value)\n        case .chatEventMessagePinned:\n            let value = try ChatEventMessagePinned(from: decoder)\n            self = .chatEventMessagePinned(value)\n        case .chatEventMessageUnpinned:\n            let value = try ChatEventMessageUnpinned(from: decoder)\n            self = .chatEventMessageUnpinned(value)\n        case .chatEventPollStopped:\n            let value = try ChatEventPollStopped(from: decoder)\n            self = .chatEventPollStopped(value)\n        case .chatEventMemberJoined:\n            self = .chatEventMemberJoined\n        case .chatEventMemberJoinedByInviteLink:\n            let value = try ChatEventMemberJoinedByInviteLink(from: decoder)\n            self = .chatEventMemberJoinedByInviteLink(value)\n        case .chatEventMemberJoinedByRequest:\n            let value = try ChatEventMemberJoinedByRequest(from: decoder)\n            self = .chatEventMemberJoinedByRequest(value)\n        case .chatEventMemberInvited:\n            let value = try ChatEventMemberInvited(from: decoder)\n            self = .chatEventMemberInvited(value)\n        case .chatEventMemberLeft:\n            self = .chatEventMemberLeft\n        case .chatEventMemberPromoted:\n            let value = try ChatEventMemberPromoted(from: decoder)\n            self = .chatEventMemberPromoted(value)\n        case .chatEventMemberRestricted:\n            let value = try ChatEventMemberRestricted(from: decoder)\n            self = .chatEventMemberRestricted(value)\n        case .chatEventMemberTagChanged:\n            let value = try ChatEventMemberTagChanged(from: decoder)\n            self = .chatEventMemberTagChanged(value)\n        case .chatEventMemberSubscriptionExtended:\n            let value = try ChatEventMemberSubscriptionExtended(from: decoder)\n            self = .chatEventMemberSubscriptionExtended(value)\n        case .chatEventAvailableReactionsChanged:\n            let value = try ChatEventAvailableReactionsChanged(from: decoder)\n            self = .chatEventAvailableReactionsChanged(value)\n        case .chatEventBackgroundChanged:\n            let value = try ChatEventBackgroundChanged(from: decoder)\n            self = .chatEventBackgroundChanged(value)\n        case .chatEventDescriptionChanged:\n            let value = try ChatEventDescriptionChanged(from: decoder)\n            self = .chatEventDescriptionChanged(value)\n        case .chatEventEmojiStatusChanged:\n            let value = try ChatEventEmojiStatusChanged(from: decoder)\n            self = .chatEventEmojiStatusChanged(value)\n        case .chatEventLinkedChatChanged:\n            let value = try ChatEventLinkedChatChanged(from: decoder)\n            self = .chatEventLinkedChatChanged(value)\n        case .chatEventLocationChanged:\n            let value = try ChatEventLocationChanged(from: decoder)\n            self = .chatEventLocationChanged(value)\n        case .chatEventMessageAutoDeleteTimeChanged:\n            let value = try ChatEventMessageAutoDeleteTimeChanged(from: decoder)\n            self = .chatEventMessageAutoDeleteTimeChanged(value)\n        case .chatEventPermissionsChanged:\n            let value = try ChatEventPermissionsChanged(from: decoder)\n            self = .chatEventPermissionsChanged(value)\n        case .chatEventPhotoChanged:\n            let value = try ChatEventPhotoChanged(from: decoder)\n            self = .chatEventPhotoChanged(value)\n        case .chatEventSlowModeDelayChanged:\n            let value = try ChatEventSlowModeDelayChanged(from: decoder)\n            self = .chatEventSlowModeDelayChanged(value)\n        case .chatEventStickerSetChanged:\n            let value = try ChatEventStickerSetChanged(from: decoder)\n            self = .chatEventStickerSetChanged(value)\n        case .chatEventCustomEmojiStickerSetChanged:\n            let value = try ChatEventCustomEmojiStickerSetChanged(from: decoder)\n            self = .chatEventCustomEmojiStickerSetChanged(value)\n        case .chatEventTitleChanged:\n            let value = try ChatEventTitleChanged(from: decoder)\n            self = .chatEventTitleChanged(value)\n        case .chatEventUsernameChanged:\n            let value = try ChatEventUsernameChanged(from: decoder)\n            self = .chatEventUsernameChanged(value)\n        case .chatEventActiveUsernamesChanged:\n            let value = try ChatEventActiveUsernamesChanged(from: decoder)\n            self = .chatEventActiveUsernamesChanged(value)\n        case .chatEventAccentColorChanged:\n            let value = try ChatEventAccentColorChanged(from: decoder)\n            self = .chatEventAccentColorChanged(value)\n        case .chatEventProfileAccentColorChanged:\n            let value = try ChatEventProfileAccentColorChanged(from: decoder)\n            self = .chatEventProfileAccentColorChanged(value)\n        case .chatEventHasProtectedContentToggled:\n            let value = try ChatEventHasProtectedContentToggled(from: decoder)\n            self = .chatEventHasProtectedContentToggled(value)\n        case .chatEventInvitesToggled:\n            let value = try ChatEventInvitesToggled(from: decoder)\n            self = .chatEventInvitesToggled(value)\n        case .chatEventIsAllHistoryAvailableToggled:\n            let value = try ChatEventIsAllHistoryAvailableToggled(from: decoder)\n            self = .chatEventIsAllHistoryAvailableToggled(value)\n        case .chatEventHasAggressiveAntiSpamEnabledToggled:\n            let value = try ChatEventHasAggressiveAntiSpamEnabledToggled(from: decoder)\n            self = .chatEventHasAggressiveAntiSpamEnabledToggled(value)\n        case .chatEventSignMessagesToggled:\n            let value = try ChatEventSignMessagesToggled(from: decoder)\n            self = .chatEventSignMessagesToggled(value)\n        case .chatEventShowMessageSenderToggled:\n            let value = try ChatEventShowMessageSenderToggled(from: decoder)\n            self = .chatEventShowMessageSenderToggled(value)\n        case .chatEventAutomaticTranslationToggled:\n            let value = try ChatEventAutomaticTranslationToggled(from: decoder)\n            self = .chatEventAutomaticTranslationToggled(value)\n        case .chatEventInviteLinkEdited:\n            let value = try ChatEventInviteLinkEdited(from: decoder)\n            self = .chatEventInviteLinkEdited(value)\n        case .chatEventInviteLinkRevoked:\n            let value = try ChatEventInviteLinkRevoked(from: decoder)\n            self = .chatEventInviteLinkRevoked(value)\n        case .chatEventInviteLinkDeleted:\n            let value = try ChatEventInviteLinkDeleted(from: decoder)\n            self = .chatEventInviteLinkDeleted(value)\n        case .chatEventVideoChatCreated:\n            let value = try ChatEventVideoChatCreated(from: decoder)\n            self = .chatEventVideoChatCreated(value)\n        case .chatEventVideoChatEnded:\n            let value = try ChatEventVideoChatEnded(from: decoder)\n            self = .chatEventVideoChatEnded(value)\n        case .chatEventVideoChatMuteNewParticipantsToggled:\n            let value = try ChatEventVideoChatMuteNewParticipantsToggled(from: decoder)\n            self = .chatEventVideoChatMuteNewParticipantsToggled(value)\n        case .chatEventVideoChatParticipantIsMutedToggled:\n            let value = try ChatEventVideoChatParticipantIsMutedToggled(from: decoder)\n            self = .chatEventVideoChatParticipantIsMutedToggled(value)\n        case .chatEventVideoChatParticipantVolumeLevelChanged:\n            let value = try ChatEventVideoChatParticipantVolumeLevelChanged(from: decoder)\n            self = .chatEventVideoChatParticipantVolumeLevelChanged(value)\n        case .chatEventIsForumToggled:\n            let value = try ChatEventIsForumToggled(from: decoder)\n            self = .chatEventIsForumToggled(value)\n        case .chatEventForumTopicCreated:\n            let value = try ChatEventForumTopicCreated(from: decoder)\n            self = .chatEventForumTopicCreated(value)\n        case .chatEventForumTopicEdited:\n            let value = try ChatEventForumTopicEdited(from: decoder)\n            self = .chatEventForumTopicEdited(value)\n        case .chatEventForumTopicToggleIsClosed:\n            let value = try ChatEventForumTopicToggleIsClosed(from: decoder)\n            self = .chatEventForumTopicToggleIsClosed(value)\n        case .chatEventForumTopicToggleIsHidden:\n            let value = try ChatEventForumTopicToggleIsHidden(from: decoder)\n            self = .chatEventForumTopicToggleIsHidden(value)\n        case .chatEventForumTopicDeleted:\n            let value = try ChatEventForumTopicDeleted(from: decoder)\n            self = .chatEventForumTopicDeleted(value)\n        case .chatEventForumTopicPinned:\n            let value = try ChatEventForumTopicPinned(from: decoder)\n            self = .chatEventForumTopicPinned(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .chatEventMessageEdited(let value):\n            try container.encode(Kind.chatEventMessageEdited, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventMessageDeleted(let value):\n            try container.encode(Kind.chatEventMessageDeleted, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventMessagePinned(let value):\n            try container.encode(Kind.chatEventMessagePinned, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventMessageUnpinned(let value):\n            try container.encode(Kind.chatEventMessageUnpinned, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventPollStopped(let value):\n            try container.encode(Kind.chatEventPollStopped, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventMemberJoined:\n            try container.encode(Kind.chatEventMemberJoined, forKey: .type)\n        case .chatEventMemberJoinedByInviteLink(let value):\n            try container.encode(Kind.chatEventMemberJoinedByInviteLink, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventMemberJoinedByRequest(let value):\n            try container.encode(Kind.chatEventMemberJoinedByRequest, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventMemberInvited(let value):\n            try container.encode(Kind.chatEventMemberInvited, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventMemberLeft:\n            try container.encode(Kind.chatEventMemberLeft, forKey: .type)\n        case .chatEventMemberPromoted(let value):\n            try container.encode(Kind.chatEventMemberPromoted, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventMemberRestricted(let value):\n            try container.encode(Kind.chatEventMemberRestricted, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventMemberTagChanged(let value):\n            try container.encode(Kind.chatEventMemberTagChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventMemberSubscriptionExtended(let value):\n            try container.encode(Kind.chatEventMemberSubscriptionExtended, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventAvailableReactionsChanged(let value):\n            try container.encode(Kind.chatEventAvailableReactionsChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventBackgroundChanged(let value):\n            try container.encode(Kind.chatEventBackgroundChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventDescriptionChanged(let value):\n            try container.encode(Kind.chatEventDescriptionChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventEmojiStatusChanged(let value):\n            try container.encode(Kind.chatEventEmojiStatusChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventLinkedChatChanged(let value):\n            try container.encode(Kind.chatEventLinkedChatChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventLocationChanged(let value):\n            try container.encode(Kind.chatEventLocationChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventMessageAutoDeleteTimeChanged(let value):\n            try container.encode(Kind.chatEventMessageAutoDeleteTimeChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventPermissionsChanged(let value):\n            try container.encode(Kind.chatEventPermissionsChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventPhotoChanged(let value):\n            try container.encode(Kind.chatEventPhotoChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventSlowModeDelayChanged(let value):\n            try container.encode(Kind.chatEventSlowModeDelayChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventStickerSetChanged(let value):\n            try container.encode(Kind.chatEventStickerSetChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventCustomEmojiStickerSetChanged(let value):\n            try container.encode(Kind.chatEventCustomEmojiStickerSetChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventTitleChanged(let value):\n            try container.encode(Kind.chatEventTitleChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventUsernameChanged(let value):\n            try container.encode(Kind.chatEventUsernameChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventActiveUsernamesChanged(let value):\n            try container.encode(Kind.chatEventActiveUsernamesChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventAccentColorChanged(let value):\n            try container.encode(Kind.chatEventAccentColorChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventProfileAccentColorChanged(let value):\n            try container.encode(Kind.chatEventProfileAccentColorChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventHasProtectedContentToggled(let value):\n            try container.encode(Kind.chatEventHasProtectedContentToggled, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventInvitesToggled(let value):\n            try container.encode(Kind.chatEventInvitesToggled, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventIsAllHistoryAvailableToggled(let value):\n            try container.encode(Kind.chatEventIsAllHistoryAvailableToggled, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventHasAggressiveAntiSpamEnabledToggled(let value):\n            try container.encode(Kind.chatEventHasAggressiveAntiSpamEnabledToggled, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventSignMessagesToggled(let value):\n            try container.encode(Kind.chatEventSignMessagesToggled, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventShowMessageSenderToggled(let value):\n            try container.encode(Kind.chatEventShowMessageSenderToggled, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventAutomaticTranslationToggled(let value):\n            try container.encode(Kind.chatEventAutomaticTranslationToggled, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventInviteLinkEdited(let value):\n            try container.encode(Kind.chatEventInviteLinkEdited, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventInviteLinkRevoked(let value):\n            try container.encode(Kind.chatEventInviteLinkRevoked, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventInviteLinkDeleted(let value):\n            try container.encode(Kind.chatEventInviteLinkDeleted, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventVideoChatCreated(let value):\n            try container.encode(Kind.chatEventVideoChatCreated, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventVideoChatEnded(let value):\n            try container.encode(Kind.chatEventVideoChatEnded, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventVideoChatMuteNewParticipantsToggled(let value):\n            try container.encode(Kind.chatEventVideoChatMuteNewParticipantsToggled, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventVideoChatParticipantIsMutedToggled(let value):\n            try container.encode(Kind.chatEventVideoChatParticipantIsMutedToggled, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventVideoChatParticipantVolumeLevelChanged(let value):\n            try container.encode(Kind.chatEventVideoChatParticipantVolumeLevelChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventIsForumToggled(let value):\n            try container.encode(Kind.chatEventIsForumToggled, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventForumTopicCreated(let value):\n            try container.encode(Kind.chatEventForumTopicCreated, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventForumTopicEdited(let value):\n            try container.encode(Kind.chatEventForumTopicEdited, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventForumTopicToggleIsClosed(let value):\n            try container.encode(Kind.chatEventForumTopicToggleIsClosed, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventForumTopicToggleIsHidden(let value):\n            try container.encode(Kind.chatEventForumTopicToggleIsHidden, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventForumTopicDeleted(let value):\n            try container.encode(Kind.chatEventForumTopicDeleted, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatEventForumTopicPinned(let value):\n            try container.encode(Kind.chatEventForumTopicPinned, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A message was edited\npublic struct ChatEventMessageEdited: Codable, Equatable, Hashable {\n\n    /// The message after it was edited\n    public let newMessage: Message\n\n    /// The original message before the edit\n    public let oldMessage: Message\n\n\n    public init(\n        newMessage: Message,\n        oldMessage: Message\n    ) {\n        self.newMessage = newMessage\n        self.oldMessage = oldMessage\n    }\n}\n\n/// A message was deleted\npublic struct ChatEventMessageDeleted: Codable, Equatable, Hashable {\n\n    /// True, if the message deletion can be reported via reportSupergroupAntiSpamFalsePositive\n    public let canReportAntiSpamFalsePositive: Bool\n\n    /// Deleted message\n    public let message: Message\n\n\n    public init(\n        canReportAntiSpamFalsePositive: Bool,\n        message: Message\n    ) {\n        self.canReportAntiSpamFalsePositive = canReportAntiSpamFalsePositive\n        self.message = message\n    }\n}\n\n/// A message was pinned\npublic struct ChatEventMessagePinned: Codable, Equatable, Hashable {\n\n    /// Pinned message\n    public let message: Message\n\n\n    public init(message: Message) {\n        self.message = message\n    }\n}\n\n/// A message was unpinned\npublic struct ChatEventMessageUnpinned: Codable, Equatable, Hashable {\n\n    /// Unpinned message\n    public let message: Message\n\n\n    public init(message: Message) {\n        self.message = message\n    }\n}\n\n/// A poll in a message was stopped\npublic struct ChatEventPollStopped: Codable, Equatable, Hashable {\n\n    /// The message with the poll\n    public let message: Message\n\n\n    public init(message: Message) {\n        self.message = message\n    }\n}\n\n/// A new member joined the chat via an invite link\npublic struct ChatEventMemberJoinedByInviteLink: Codable, Equatable, Hashable {\n\n    /// Invite link used to join the chat\n    public let inviteLink: ChatInviteLink\n\n    /// True, if the user has joined the chat using an invite link for a chat folder\n    public let viaChatFolderInviteLink: Bool\n\n\n    public init(\n        inviteLink: ChatInviteLink,\n        viaChatFolderInviteLink: Bool\n    ) {\n        self.inviteLink = inviteLink\n        self.viaChatFolderInviteLink = viaChatFolderInviteLink\n    }\n}\n\n/// A new member was accepted to the chat by an administrator\npublic struct ChatEventMemberJoinedByRequest: Codable, Equatable, Hashable {\n\n    /// User identifier of the chat administrator, approved user join request\n    public let approverUserId: Int64\n\n    /// Invite link used to join the chat; may be null\n    public let inviteLink: ChatInviteLink?\n\n\n    public init(\n        approverUserId: Int64,\n        inviteLink: ChatInviteLink?\n    ) {\n        self.approverUserId = approverUserId\n        self.inviteLink = inviteLink\n    }\n}\n\n/// A new chat member was invited\npublic struct ChatEventMemberInvited: Codable, Equatable, Hashable {\n\n    /// New member status\n    public let status: ChatMemberStatus\n\n    /// New member user identifier\n    public let userId: Int64\n\n\n    public init(\n        status: ChatMemberStatus,\n        userId: Int64\n    ) {\n        self.status = status\n        self.userId = userId\n    }\n}\n\n/// A chat member has gained/lost administrator status, or the list of their administrator privileges has changed\npublic struct ChatEventMemberPromoted: Codable, Equatable, Hashable {\n\n    /// New status of the chat member\n    public let newStatus: ChatMemberStatus\n\n    /// Previous status of the chat member\n    public let oldStatus: ChatMemberStatus\n\n    /// Affected chat member user identifier\n    public let userId: Int64\n\n\n    public init(\n        newStatus: ChatMemberStatus,\n        oldStatus: ChatMemberStatus,\n        userId: Int64\n    ) {\n        self.newStatus = newStatus\n        self.oldStatus = oldStatus\n        self.userId = userId\n    }\n}\n\n/// A chat member was restricted/unrestricted or banned/unbanned, or the list of their restrictions has changed\npublic struct ChatEventMemberRestricted: Codable, Equatable, Hashable {\n\n    /// Affected chat member identifier\n    public let memberId: MessageSender\n\n    /// New status of the chat member\n    public let newStatus: ChatMemberStatus\n\n    /// Previous status of the chat member\n    public let oldStatus: ChatMemberStatus\n\n\n    public init(\n        memberId: MessageSender,\n        newStatus: ChatMemberStatus,\n        oldStatus: ChatMemberStatus\n    ) {\n        self.memberId = memberId\n        self.newStatus = newStatus\n        self.oldStatus = oldStatus\n    }\n}\n\n/// A chat member tag has been changed\npublic struct ChatEventMemberTagChanged: Codable, Equatable, Hashable {\n\n    /// New tag of the chat member\n    public let newTag: String\n\n    /// Previous tag of the chat member\n    public let oldTag: String\n\n    /// Affected chat member user identifier\n    public let userId: Int64\n\n\n    public init(\n        newTag: String,\n        oldTag: String,\n        userId: Int64\n    ) {\n        self.newTag = newTag\n        self.oldTag = oldTag\n        self.userId = userId\n    }\n}\n\n/// A chat member extended their subscription to the chat\npublic struct ChatEventMemberSubscriptionExtended: Codable, Equatable, Hashable {\n\n    /// New status of the chat member\n    public let newStatus: ChatMemberStatus\n\n    /// Previous status of the chat member\n    public let oldStatus: ChatMemberStatus\n\n    /// Affected chat member user identifier\n    public let userId: Int64\n\n\n    public init(\n        newStatus: ChatMemberStatus,\n        oldStatus: ChatMemberStatus,\n        userId: Int64\n    ) {\n        self.newStatus = newStatus\n        self.oldStatus = oldStatus\n        self.userId = userId\n    }\n}\n\n/// The chat available reactions were changed\npublic struct ChatEventAvailableReactionsChanged: Codable, Equatable, Hashable {\n\n    /// New chat available reactions\n    public let newAvailableReactions: ChatAvailableReactions\n\n    /// Previous chat available reactions\n    public let oldAvailableReactions: ChatAvailableReactions\n\n\n    public init(\n        newAvailableReactions: ChatAvailableReactions,\n        oldAvailableReactions: ChatAvailableReactions\n    ) {\n        self.newAvailableReactions = newAvailableReactions\n        self.oldAvailableReactions = oldAvailableReactions\n    }\n}\n\n/// The chat background was changed\npublic struct ChatEventBackgroundChanged: Codable, Equatable, Hashable {\n\n    /// New background; may be null if none\n    public let newBackground: ChatBackground?\n\n    /// Previous background; may be null if none\n    public let oldBackground: ChatBackground?\n\n\n    public init(\n        newBackground: ChatBackground?,\n        oldBackground: ChatBackground?\n    ) {\n        self.newBackground = newBackground\n        self.oldBackground = oldBackground\n    }\n}\n\n/// The chat description was changed\npublic struct ChatEventDescriptionChanged: Codable, Equatable, Hashable {\n\n    /// New chat description\n    public let newDescription: String\n\n    /// Previous chat description\n    public let oldDescription: String\n\n\n    public init(\n        newDescription: String,\n        oldDescription: String\n    ) {\n        self.newDescription = newDescription\n        self.oldDescription = oldDescription\n    }\n}\n\n/// The chat emoji status was changed\npublic struct ChatEventEmojiStatusChanged: Codable, Equatable, Hashable {\n\n    /// New emoji status; may be null if none\n    public let newEmojiStatus: EmojiStatus?\n\n    /// Previous emoji status; may be null if none\n    public let oldEmojiStatus: EmojiStatus?\n\n\n    public init(\n        newEmojiStatus: EmojiStatus?,\n        oldEmojiStatus: EmojiStatus?\n    ) {\n        self.newEmojiStatus = newEmojiStatus\n        self.oldEmojiStatus = oldEmojiStatus\n    }\n}\n\n/// The linked chat of a supergroup was changed\npublic struct ChatEventLinkedChatChanged: Codable, Equatable, Hashable {\n\n    /// New supergroup linked chat identifier\n    public let newLinkedChatId: Int64\n\n    /// Previous supergroup linked chat identifier\n    public let oldLinkedChatId: Int64\n\n\n    public init(\n        newLinkedChatId: Int64,\n        oldLinkedChatId: Int64\n    ) {\n        self.newLinkedChatId = newLinkedChatId\n        self.oldLinkedChatId = oldLinkedChatId\n    }\n}\n\n/// The supergroup location was changed\npublic struct ChatEventLocationChanged: Codable, Equatable, Hashable {\n\n    /// New location; may be null\n    public let newLocation: ChatLocation?\n\n    /// Previous location; may be null\n    public let oldLocation: ChatLocation?\n\n\n    public init(\n        newLocation: ChatLocation?,\n        oldLocation: ChatLocation?\n    ) {\n        self.newLocation = newLocation\n        self.oldLocation = oldLocation\n    }\n}\n\n/// The message auto-delete timer was changed\npublic struct ChatEventMessageAutoDeleteTimeChanged: Codable, Equatable, Hashable {\n\n    /// New value of message_auto_delete_time\n    public let newMessageAutoDeleteTime: Int\n\n    /// Previous value of message_auto_delete_time\n    public let oldMessageAutoDeleteTime: Int\n\n\n    public init(\n        newMessageAutoDeleteTime: Int,\n        oldMessageAutoDeleteTime: Int\n    ) {\n        self.newMessageAutoDeleteTime = newMessageAutoDeleteTime\n        self.oldMessageAutoDeleteTime = oldMessageAutoDeleteTime\n    }\n}\n\n/// The chat permissions were changed\npublic struct ChatEventPermissionsChanged: Codable, Equatable, Hashable {\n\n    /// New chat permissions\n    public let newPermissions: ChatPermissions\n\n    /// Previous chat permissions\n    public let oldPermissions: ChatPermissions\n\n\n    public init(\n        newPermissions: ChatPermissions,\n        oldPermissions: ChatPermissions\n    ) {\n        self.newPermissions = newPermissions\n        self.oldPermissions = oldPermissions\n    }\n}\n\n/// The chat photo was changed\npublic struct ChatEventPhotoChanged: Codable, Equatable, Hashable {\n\n    /// New chat photo value; may be null\n    public let newPhoto: ChatPhoto?\n\n    /// Previous chat photo value; may be null\n    public let oldPhoto: ChatPhoto?\n\n\n    public init(\n        newPhoto: ChatPhoto?,\n        oldPhoto: ChatPhoto?\n    ) {\n        self.newPhoto = newPhoto\n        self.oldPhoto = oldPhoto\n    }\n}\n\n/// The slow_mode_delay setting of a supergroup was changed\npublic struct ChatEventSlowModeDelayChanged: Codable, Equatable, Hashable {\n\n    /// New value of slow_mode_delay, in seconds\n    public let newSlowModeDelay: Int\n\n    /// Previous value of slow_mode_delay, in seconds\n    public let oldSlowModeDelay: Int\n\n\n    public init(\n        newSlowModeDelay: Int,\n        oldSlowModeDelay: Int\n    ) {\n        self.newSlowModeDelay = newSlowModeDelay\n        self.oldSlowModeDelay = oldSlowModeDelay\n    }\n}\n\n/// The supergroup sticker set was changed\npublic struct ChatEventStickerSetChanged: Codable, Equatable, Hashable {\n\n    /// New identifier of the chat sticker set; 0 if none\n    public let newStickerSetId: TdInt64\n\n    /// Previous identifier of the chat sticker set; 0 if none\n    public let oldStickerSetId: TdInt64\n\n\n    public init(\n        newStickerSetId: TdInt64,\n        oldStickerSetId: TdInt64\n    ) {\n        self.newStickerSetId = newStickerSetId\n        self.oldStickerSetId = oldStickerSetId\n    }\n}\n\n/// The supergroup sticker set with allowed custom emoji was changed\npublic struct ChatEventCustomEmojiStickerSetChanged: Codable, Equatable, Hashable {\n\n    /// New identifier of the chat sticker set; 0 if none\n    public let newStickerSetId: TdInt64\n\n    /// Previous identifier of the chat sticker set; 0 if none\n    public let oldStickerSetId: TdInt64\n\n\n    public init(\n        newStickerSetId: TdInt64,\n        oldStickerSetId: TdInt64\n    ) {\n        self.newStickerSetId = newStickerSetId\n        self.oldStickerSetId = oldStickerSetId\n    }\n}\n\n/// The chat title was changed\npublic struct ChatEventTitleChanged: Codable, Equatable, Hashable {\n\n    /// New chat title\n    public let newTitle: String\n\n    /// Previous chat title\n    public let oldTitle: String\n\n\n    public init(\n        newTitle: String,\n        oldTitle: String\n    ) {\n        self.newTitle = newTitle\n        self.oldTitle = oldTitle\n    }\n}\n\n/// The chat editable username was changed\npublic struct ChatEventUsernameChanged: Codable, Equatable, Hashable {\n\n    /// New chat username\n    public let newUsername: String\n\n    /// Previous chat username\n    public let oldUsername: String\n\n\n    public init(\n        newUsername: String,\n        oldUsername: String\n    ) {\n        self.newUsername = newUsername\n        self.oldUsername = oldUsername\n    }\n}\n\n/// The chat active usernames were changed\npublic struct ChatEventActiveUsernamesChanged: Codable, Equatable, Hashable {\n\n    /// New list of active usernames\n    public let newUsernames: [String]\n\n    /// Previous list of active usernames\n    public let oldUsernames: [String]\n\n\n    public init(\n        newUsernames: [String],\n        oldUsernames: [String]\n    ) {\n        self.newUsernames = newUsernames\n        self.oldUsernames = oldUsernames\n    }\n}\n\n/// The chat accent color or background custom emoji were changed\npublic struct ChatEventAccentColorChanged: Codable, Equatable, Hashable {\n\n    /// New identifier of chat accent color\n    public let newAccentColorId: Int\n\n    /// New identifier of the custom emoji; 0 if none\n    public let newBackgroundCustomEmojiId: TdInt64\n\n    /// Previous identifier of chat accent color\n    public let oldAccentColorId: Int\n\n    /// Previous identifier of the custom emoji; 0 if none\n    public let oldBackgroundCustomEmojiId: TdInt64\n\n\n    public init(\n        newAccentColorId: Int,\n        newBackgroundCustomEmojiId: TdInt64,\n        oldAccentColorId: Int,\n        oldBackgroundCustomEmojiId: TdInt64\n    ) {\n        self.newAccentColorId = newAccentColorId\n        self.newBackgroundCustomEmojiId = newBackgroundCustomEmojiId\n        self.oldAccentColorId = oldAccentColorId\n        self.oldBackgroundCustomEmojiId = oldBackgroundCustomEmojiId\n    }\n}\n\n/// The chat's profile accent color or profile background custom emoji were changed\npublic struct ChatEventProfileAccentColorChanged: Codable, Equatable, Hashable {\n\n    /// New identifier of chat's profile accent color; -1 if none\n    public let newProfileAccentColorId: Int\n\n    /// New identifier of the custom emoji; 0 if none\n    public let newProfileBackgroundCustomEmojiId: TdInt64\n\n    /// Previous identifier of chat's profile accent color; -1 if none\n    public let oldProfileAccentColorId: Int\n\n    /// Previous identifier of the custom emoji; 0 if none\n    public let oldProfileBackgroundCustomEmojiId: TdInt64\n\n\n    public init(\n        newProfileAccentColorId: Int,\n        newProfileBackgroundCustomEmojiId: TdInt64,\n        oldProfileAccentColorId: Int,\n        oldProfileBackgroundCustomEmojiId: TdInt64\n    ) {\n        self.newProfileAccentColorId = newProfileAccentColorId\n        self.newProfileBackgroundCustomEmojiId = newProfileBackgroundCustomEmojiId\n        self.oldProfileAccentColorId = oldProfileAccentColorId\n        self.oldProfileBackgroundCustomEmojiId = oldProfileBackgroundCustomEmojiId\n    }\n}\n\n/// The has_protected_content setting of a channel was toggled\npublic struct ChatEventHasProtectedContentToggled: Codable, Equatable, Hashable {\n\n    /// New value of has_protected_content\n    public let hasProtectedContent: Bool\n\n\n    public init(hasProtectedContent: Bool) {\n        self.hasProtectedContent = hasProtectedContent\n    }\n}\n\n/// The can_invite_users permission of a supergroup chat was toggled\npublic struct ChatEventInvitesToggled: Codable, Equatable, Hashable {\n\n    /// New value of can_invite_users permission\n    public let canInviteUsers: Bool\n\n\n    public init(canInviteUsers: Bool) {\n        self.canInviteUsers = canInviteUsers\n    }\n}\n\n/// The is_all_history_available setting of a supergroup was toggled\npublic struct ChatEventIsAllHistoryAvailableToggled: Codable, Equatable, Hashable {\n\n    /// New value of is_all_history_available\n    public let isAllHistoryAvailable: Bool\n\n\n    public init(isAllHistoryAvailable: Bool) {\n        self.isAllHistoryAvailable = isAllHistoryAvailable\n    }\n}\n\n/// The has_aggressive_anti_spam_enabled setting of a supergroup was toggled\npublic struct ChatEventHasAggressiveAntiSpamEnabledToggled: Codable, Equatable, Hashable {\n\n    /// New value of has_aggressive_anti_spam_enabled\n    public let hasAggressiveAntiSpamEnabled: Bool\n\n\n    public init(hasAggressiveAntiSpamEnabled: Bool) {\n        self.hasAggressiveAntiSpamEnabled = hasAggressiveAntiSpamEnabled\n    }\n}\n\n/// The sign_messages setting of a channel was toggled\npublic struct ChatEventSignMessagesToggled: Codable, Equatable, Hashable {\n\n    /// New value of sign_messages\n    public let signMessages: Bool\n\n\n    public init(signMessages: Bool) {\n        self.signMessages = signMessages\n    }\n}\n\n/// The show_message_sender setting of a channel was toggled\npublic struct ChatEventShowMessageSenderToggled: Codable, Equatable, Hashable {\n\n    /// New value of show_message_sender\n    public let showMessageSender: Bool\n\n\n    public init(showMessageSender: Bool) {\n        self.showMessageSender = showMessageSender\n    }\n}\n\n/// The has_automatic_translation setting of a channel was toggled\npublic struct ChatEventAutomaticTranslationToggled: Codable, Equatable, Hashable {\n\n    /// New value of has_automatic_translation\n    public let hasAutomaticTranslation: Bool\n\n\n    public init(hasAutomaticTranslation: Bool) {\n        self.hasAutomaticTranslation = hasAutomaticTranslation\n    }\n}\n\n/// A chat invite link was edited\npublic struct ChatEventInviteLinkEdited: Codable, Equatable, Hashable {\n\n    /// New information about the invite link\n    public let newInviteLink: ChatInviteLink\n\n    /// Previous information about the invite link\n    public let oldInviteLink: ChatInviteLink\n\n\n    public init(\n        newInviteLink: ChatInviteLink,\n        oldInviteLink: ChatInviteLink\n    ) {\n        self.newInviteLink = newInviteLink\n        self.oldInviteLink = oldInviteLink\n    }\n}\n\n/// A chat invite link was revoked\npublic struct ChatEventInviteLinkRevoked: Codable, Equatable, Hashable {\n\n    /// The invite link\n    public let inviteLink: ChatInviteLink\n\n\n    public init(inviteLink: ChatInviteLink) {\n        self.inviteLink = inviteLink\n    }\n}\n\n/// A revoked chat invite link was deleted\npublic struct ChatEventInviteLinkDeleted: Codable, Equatable, Hashable {\n\n    /// The invite link\n    public let inviteLink: ChatInviteLink\n\n\n    public init(inviteLink: ChatInviteLink) {\n        self.inviteLink = inviteLink\n    }\n}\n\n/// A video chat was created\npublic struct ChatEventVideoChatCreated: Codable, Equatable, Hashable {\n\n    /// Identifier of the video chat. The video chat can be received through the method getGroupCall\n    public let groupCallId: Int\n\n\n    public init(groupCallId: Int) {\n        self.groupCallId = groupCallId\n    }\n}\n\n/// A video chat was ended\npublic struct ChatEventVideoChatEnded: Codable, Equatable, Hashable {\n\n    /// Identifier of the video chat. The video chat can be received through the method getGroupCall\n    public let groupCallId: Int\n\n\n    public init(groupCallId: Int) {\n        self.groupCallId = groupCallId\n    }\n}\n\n/// The mute_new_participants setting of a video chat was toggled\npublic struct ChatEventVideoChatMuteNewParticipantsToggled: Codable, Equatable, Hashable {\n\n    /// New value of the mute_new_participants setting\n    public let muteNewParticipants: Bool\n\n\n    public init(muteNewParticipants: Bool) {\n        self.muteNewParticipants = muteNewParticipants\n    }\n}\n\n/// A video chat participant was muted or unmuted\npublic struct ChatEventVideoChatParticipantIsMutedToggled: Codable, Equatable, Hashable {\n\n    /// New value of is_muted\n    public let isMuted: Bool\n\n    /// Identifier of the affected group call participant\n    public let participantId: MessageSender\n\n\n    public init(\n        isMuted: Bool,\n        participantId: MessageSender\n    ) {\n        self.isMuted = isMuted\n        self.participantId = participantId\n    }\n}\n\n/// A video chat participant volume level was changed\npublic struct ChatEventVideoChatParticipantVolumeLevelChanged: Codable, Equatable, Hashable {\n\n    /// Identifier of the affected group call participant\n    public let participantId: MessageSender\n\n    /// New value of volume_level; 1-20000 in hundreds of percents\n    public let volumeLevel: Int\n\n\n    public init(\n        participantId: MessageSender,\n        volumeLevel: Int\n    ) {\n        self.participantId = participantId\n        self.volumeLevel = volumeLevel\n    }\n}\n\n/// The is_forum setting of a channel was toggled\npublic struct ChatEventIsForumToggled: Codable, Equatable, Hashable {\n\n    /// New value of is_forum\n    public let isForum: Bool\n\n\n    public init(isForum: Bool) {\n        self.isForum = isForum\n    }\n}\n\n/// A new forum topic was created\npublic struct ChatEventForumTopicCreated: Codable, Equatable, Hashable {\n\n    /// Information about the topic\n    public let topicInfo: ForumTopicInfo\n\n\n    public init(topicInfo: ForumTopicInfo) {\n        self.topicInfo = topicInfo\n    }\n}\n\n/// A forum topic was edited\npublic struct ChatEventForumTopicEdited: Codable, Equatable, Hashable {\n\n    /// New information about the topic\n    public let newTopicInfo: ForumTopicInfo\n\n    /// Old information about the topic\n    public let oldTopicInfo: ForumTopicInfo\n\n\n    public init(\n        newTopicInfo: ForumTopicInfo,\n        oldTopicInfo: ForumTopicInfo\n    ) {\n        self.newTopicInfo = newTopicInfo\n        self.oldTopicInfo = oldTopicInfo\n    }\n}\n\n/// A forum topic was closed or reopened\npublic struct ChatEventForumTopicToggleIsClosed: Codable, Equatable, Hashable {\n\n    /// New information about the topic\n    public let topicInfo: ForumTopicInfo\n\n\n    public init(topicInfo: ForumTopicInfo) {\n        self.topicInfo = topicInfo\n    }\n}\n\n/// The General forum topic was hidden or unhidden\npublic struct ChatEventForumTopicToggleIsHidden: Codable, Equatable, Hashable {\n\n    /// New information about the topic\n    public let topicInfo: ForumTopicInfo\n\n\n    public init(topicInfo: ForumTopicInfo) {\n        self.topicInfo = topicInfo\n    }\n}\n\n/// A forum topic was deleted\npublic struct ChatEventForumTopicDeleted: Codable, Equatable, Hashable {\n\n    /// Information about the topic\n    public let topicInfo: ForumTopicInfo\n\n\n    public init(topicInfo: ForumTopicInfo) {\n        self.topicInfo = topicInfo\n    }\n}\n\n/// A pinned forum topic was changed\npublic struct ChatEventForumTopicPinned: Codable, Equatable, Hashable {\n\n    /// Information about the new pinned topic; may be null\n    public let newTopicInfo: ForumTopicInfo?\n\n    /// Information about the old pinned topic; may be null\n    public let oldTopicInfo: ForumTopicInfo?\n\n\n    public init(\n        newTopicInfo: ForumTopicInfo?,\n        oldTopicInfo: ForumTopicInfo?\n    ) {\n        self.newTopicInfo = newTopicInfo\n        self.oldTopicInfo = oldTopicInfo\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatEventLogFilters.swift",
    "content": "//\n//  ChatEventLogFilters.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a set of filters used to obtain a chat event log\npublic struct ChatEventLogFilters: Codable, Equatable, Hashable {\n\n    /// True, if forum-related actions need to be returned\n    public let forumChanges: Bool\n\n    /// True, if changes in chat information need to be returned\n    public let infoChanges: Bool\n\n    /// True, if changes to invite links need to be returned\n    public let inviteLinkChanges: Bool\n\n    /// True, if invited member events need to be returned\n    public let memberInvites: Bool\n\n    /// True, if members joining events need to be returned\n    public let memberJoins: Bool\n\n    /// True, if members leaving events need to be returned\n    public let memberLeaves: Bool\n\n    /// True, if member promotion/demotion events need to be returned\n    public let memberPromotions: Bool\n\n    /// True, if member restricted/unrestricted/banned/unbanned events need to be returned\n    public let memberRestrictions: Bool\n\n    /// True, if member tag and custom title change events need to be returned\n    public let memberTagChanges: Bool\n\n    /// True, if message deletions need to be returned\n    public let messageDeletions: Bool\n\n    /// True, if message edits need to be returned\n    public let messageEdits: Bool\n\n    /// True, if pin/unpin events need to be returned\n    public let messagePins: Bool\n\n    /// True, if changes in chat settings need to be returned\n    public let settingChanges: Bool\n\n    /// True, if subscription extensions need to be returned\n    public let subscriptionExtensions: Bool\n\n    /// True, if video chat actions need to be returned\n    public let videoChatChanges: Bool\n\n\n    public init(\n        forumChanges: Bool,\n        infoChanges: Bool,\n        inviteLinkChanges: Bool,\n        memberInvites: Bool,\n        memberJoins: Bool,\n        memberLeaves: Bool,\n        memberPromotions: Bool,\n        memberRestrictions: Bool,\n        memberTagChanges: Bool,\n        messageDeletions: Bool,\n        messageEdits: Bool,\n        messagePins: Bool,\n        settingChanges: Bool,\n        subscriptionExtensions: Bool,\n        videoChatChanges: Bool\n    ) {\n        self.forumChanges = forumChanges\n        self.infoChanges = infoChanges\n        self.inviteLinkChanges = inviteLinkChanges\n        self.memberInvites = memberInvites\n        self.memberJoins = memberJoins\n        self.memberLeaves = memberLeaves\n        self.memberPromotions = memberPromotions\n        self.memberRestrictions = memberRestrictions\n        self.memberTagChanges = memberTagChanges\n        self.messageDeletions = messageDeletions\n        self.messageEdits = messageEdits\n        self.messagePins = messagePins\n        self.settingChanges = settingChanges\n        self.subscriptionExtensions = subscriptionExtensions\n        self.videoChatChanges = videoChatChanges\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatEvents.swift",
    "content": "//\n//  ChatEvents.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of chat events\npublic struct ChatEvents: Codable, Equatable, Hashable {\n\n    /// List of events\n    public let events: [ChatEvent]\n\n\n    public init(events: [ChatEvent]) {\n        self.events = events\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatFolder.swift",
    "content": "//\n//  ChatFolder.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a folder for user chats\npublic struct ChatFolder: Codable, Equatable, Hashable {\n\n    /// The identifier of the chosen color for the chat folder icon; from -1 to 6. If -1, then color is disabled. Can't be changed if folder tags are disabled or the current user doesn't have Telegram Premium subscription\n    public let colorId: Int\n\n    /// True, if archived chats need to be excluded\n    public let excludeArchived: Bool\n\n    /// True, if muted chats need to be excluded\n    public let excludeMuted: Bool\n\n    /// True, if read chats need to be excluded\n    public let excludeRead: Bool\n\n    /// The chat identifiers of always excluded chats in the folder. There can be up to getOption(\"chat_folder_chosen_chat_count_max\") always excluded non-secret chats and the same number of secret chats, but the limit can be increased with Telegram Premium\n    public let excludedChatIds: [Int64]\n\n    /// The chosen icon for the chat folder; may be null. If null, use getChatFolderDefaultIconName to get default icon name for the folder\n    public let icon: ChatFolderIcon?\n\n    /// True, if bots need to be included\n    public let includeBots: Bool\n\n    /// True, if channels need to be included\n    public let includeChannels: Bool\n\n    /// True, if contacts need to be included\n    public let includeContacts: Bool\n\n    /// True, if basic groups and supergroups need to be included\n    public let includeGroups: Bool\n\n    /// True, if non-contact users need to be included\n    public let includeNonContacts: Bool\n\n    /// The chat identifiers of always included chats in the folder. There can be up to getOption(\"chat_folder_chosen_chat_count_max\") pinned and always included non-secret chats and the same number of secret chats, but the limit can be increased with Telegram Premium\n    public let includedChatIds: [Int64]\n\n    /// True, if at least one link has been created for the folder\n    public let isShareable: Bool\n\n    /// The name of the folder\n    public let name: ChatFolderName\n\n    /// The chat identifiers of pinned chats in the folder. There can be up to getOption(\"chat_folder_chosen_chat_count_max\") pinned and always included non-secret chats and the same number of secret chats, but the limit can be increased with Telegram Premium\n    public let pinnedChatIds: [Int64]\n\n\n    public init(\n        colorId: Int,\n        excludeArchived: Bool,\n        excludeMuted: Bool,\n        excludeRead: Bool,\n        excludedChatIds: [Int64],\n        icon: ChatFolderIcon?,\n        includeBots: Bool,\n        includeChannels: Bool,\n        includeContacts: Bool,\n        includeGroups: Bool,\n        includeNonContacts: Bool,\n        includedChatIds: [Int64],\n        isShareable: Bool,\n        name: ChatFolderName,\n        pinnedChatIds: [Int64]\n    ) {\n        self.colorId = colorId\n        self.excludeArchived = excludeArchived\n        self.excludeMuted = excludeMuted\n        self.excludeRead = excludeRead\n        self.excludedChatIds = excludedChatIds\n        self.icon = icon\n        self.includeBots = includeBots\n        self.includeChannels = includeChannels\n        self.includeContacts = includeContacts\n        self.includeGroups = includeGroups\n        self.includeNonContacts = includeNonContacts\n        self.includedChatIds = includedChatIds\n        self.isShareable = isShareable\n        self.name = name\n        self.pinnedChatIds = pinnedChatIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatFolderIcon.swift",
    "content": "//\n//  ChatFolderIcon.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents an icon for a chat folder\npublic struct ChatFolderIcon: Codable, Equatable, Hashable {\n\n    /// The chosen icon name for short folder representation; one of \"All\", \"Unread\", \"Unmuted\", \"Bots\", \"Channels\", \"Groups\", \"Private\", \"Custom\", \"Setup\", \"Cat\", \"Crown\", \"Favorite\", \"Flower\", \"Game\", \"Home\", \"Love\", \"Mask\", \"Party\", \"Sport\", \"Study\", \"Trade\", \"Travel\", \"Work\", \"Airplane\", \"Book\", \"Light\", \"Like\", \"Money\", \"Note\", \"Palette\"\n    public let name: String\n\n\n    public init(name: String) {\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatFolderInfo.swift",
    "content": "//\n//  ChatFolderInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains basic information about a chat folder\npublic struct ChatFolderInfo: Codable, Equatable, Hashable, Identifiable {\n\n    /// The identifier of the chosen color for the chat folder icon; from -1 to 6. If -1, then color is disabled\n    public let colorId: Int\n\n    /// True, if the chat folder has invite links created by the current user\n    public let hasMyInviteLinks: Bool\n\n    /// The chosen or default icon for the chat folder\n    public let icon: ChatFolderIcon\n\n    /// Unique chat folder identifier\n    public let id: Int\n\n    /// True, if at least one link has been created for the folder\n    public let isShareable: Bool\n\n    /// The name of the folder\n    public let name: ChatFolderName\n\n\n    public init(\n        colorId: Int,\n        hasMyInviteLinks: Bool,\n        icon: ChatFolderIcon,\n        id: Int,\n        isShareable: Bool,\n        name: ChatFolderName\n    ) {\n        self.colorId = colorId\n        self.hasMyInviteLinks = hasMyInviteLinks\n        self.icon = icon\n        self.id = id\n        self.isShareable = isShareable\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatFolderInviteLink.swift",
    "content": "//\n//  ChatFolderInviteLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a chat folder invite link\npublic struct ChatFolderInviteLink: Codable, Equatable, Hashable {\n\n    /// Identifiers of chats, included in the link\n    public let chatIds: [Int64]\n\n    /// The chat folder invite link\n    public let inviteLink: String\n\n    /// Name of the link\n    public let name: String\n\n\n    public init(\n        chatIds: [Int64],\n        inviteLink: String,\n        name: String\n    ) {\n        self.chatIds = chatIds\n        self.inviteLink = inviteLink\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatFolderInviteLinkInfo.swift",
    "content": "//\n//  ChatFolderInviteLinkInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about an invite link to a chat folder\npublic struct ChatFolderInviteLinkInfo: Codable, Equatable, Hashable {\n\n    /// Identifiers of the chats from the link, which are added to the folder already\n    public let addedChatIds: [Int64]\n\n    /// Basic information about the chat folder; chat folder identifier will be 0 if the user didn't have the chat folder yet\n    public let chatFolderInfo: ChatFolderInfo\n\n    /// Identifiers of the chats from the link, which aren't added to the folder yet\n    public let missingChatIds: [Int64]\n\n\n    public init(\n        addedChatIds: [Int64],\n        chatFolderInfo: ChatFolderInfo,\n        missingChatIds: [Int64]\n    ) {\n        self.addedChatIds = addedChatIds\n        self.chatFolderInfo = chatFolderInfo\n        self.missingChatIds = missingChatIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatFolderInviteLinks.swift",
    "content": "//\n//  ChatFolderInviteLinks.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of chat folder invite links\npublic struct ChatFolderInviteLinks: Codable, Equatable, Hashable {\n\n    /// List of the invite links\n    public let inviteLinks: [ChatFolderInviteLink]\n\n\n    public init(inviteLinks: [ChatFolderInviteLink]) {\n        self.inviteLinks = inviteLinks\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatFolderName.swift",
    "content": "//\n//  ChatFolderName.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes name of a chat folder\npublic struct ChatFolderName: Codable, Equatable, Hashable {\n\n    /// True, if custom emoji in the name must be animated\n    public let animateCustomEmoji: Bool\n\n    /// The text of the chat folder name; 1-12 characters without line feeds. May contain only CustomEmoji entities\n    public let text: FormattedText\n\n\n    public init(\n        animateCustomEmoji: Bool,\n        text: FormattedText\n    ) {\n        self.animateCustomEmoji = animateCustomEmoji\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatInviteLink.swift",
    "content": "//\n//  ChatInviteLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a chat invite link\npublic struct ChatInviteLink: Codable, Equatable, Hashable {\n\n    /// True, if the link only creates join request. If true, total number of joining members will be unlimited\n    public let createsJoinRequest: Bool\n\n    /// User identifier of an administrator created the link\n    public let creatorUserId: Int64\n\n    /// Point in time (Unix timestamp) when the link was created\n    public let date: Int\n\n    /// Point in time (Unix timestamp) when the link was last edited; 0 if never or unknown\n    public let editDate: Int\n\n    /// Point in time (Unix timestamp) when the link will expire; 0 if never\n    public let expirationDate: Int\n\n    /// Number of chat members, which joined the chat using the link, but have already left because of expired subscription; for subscription links only\n    public let expiredMemberCount: Int\n\n    /// Chat invite link\n    public let inviteLink: String\n\n    /// True, if the link is primary. Primary invite link can't have name, expiration date, or usage limit. There is exactly one primary invite link for each administrator with can_invite_users right at a given time\n    public let isPrimary: Bool\n\n    /// True, if the link was revoked\n    public let isRevoked: Bool\n\n    /// Number of chat members, which joined the chat using the link\n    public let memberCount: Int\n\n    /// The maximum number of members, which can join the chat using the link simultaneously; 0 if not limited. Always 0 if the link requires approval\n    public let memberLimit: Int\n\n    /// Name of the link\n    public let name: String\n\n    /// Number of pending join requests created using this link\n    public let pendingJoinRequestCount: Int\n\n    /// Information about subscription plan that is applied to the users joining the chat by the link; may be null if the link doesn't require subscription\n    public let subscriptionPricing: StarSubscriptionPricing?\n\n\n    public init(\n        createsJoinRequest: Bool,\n        creatorUserId: Int64,\n        date: Int,\n        editDate: Int,\n        expirationDate: Int,\n        expiredMemberCount: Int,\n        inviteLink: String,\n        isPrimary: Bool,\n        isRevoked: Bool,\n        memberCount: Int,\n        memberLimit: Int,\n        name: String,\n        pendingJoinRequestCount: Int,\n        subscriptionPricing: StarSubscriptionPricing?\n    ) {\n        self.createsJoinRequest = createsJoinRequest\n        self.creatorUserId = creatorUserId\n        self.date = date\n        self.editDate = editDate\n        self.expirationDate = expirationDate\n        self.expiredMemberCount = expiredMemberCount\n        self.inviteLink = inviteLink\n        self.isPrimary = isPrimary\n        self.isRevoked = isRevoked\n        self.memberCount = memberCount\n        self.memberLimit = memberLimit\n        self.name = name\n        self.pendingJoinRequestCount = pendingJoinRequestCount\n        self.subscriptionPricing = subscriptionPricing\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatInviteLinkCount.swift",
    "content": "//\n//  ChatInviteLinkCount.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a chat administrator with a number of active and revoked chat invite links\npublic struct ChatInviteLinkCount: Codable, Equatable, Hashable {\n\n    /// Number of active invite links\n    public let inviteLinkCount: Int\n\n    /// Number of revoked invite links\n    public let revokedInviteLinkCount: Int\n\n    /// Administrator's user identifier\n    public let userId: Int64\n\n\n    public init(\n        inviteLinkCount: Int,\n        revokedInviteLinkCount: Int,\n        userId: Int64\n    ) {\n        self.inviteLinkCount = inviteLinkCount\n        self.revokedInviteLinkCount = revokedInviteLinkCount\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatInviteLinkCounts.swift",
    "content": "//\n//  ChatInviteLinkCounts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of chat invite link counts\npublic struct ChatInviteLinkCounts: Codable, Equatable, Hashable {\n\n    /// List of invite link counts\n    public let inviteLinkCounts: [ChatInviteLinkCount]\n\n\n    public init(inviteLinkCounts: [ChatInviteLinkCount]) {\n        self.inviteLinkCounts = inviteLinkCounts\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatInviteLinkInfo.swift",
    "content": "//\n//  ChatInviteLinkInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a chat invite link\npublic struct ChatInviteLinkInfo: Codable, Equatable, Hashable {\n\n    /// Identifier of the accent color for chat title and background of chat photo\n    public let accentColorId: Int\n\n    /// If non-zero, the amount of time for which read access to the chat will remain available, in seconds\n    public let accessibleFor: Int\n\n    /// Chat identifier of the invite link; 0 if the user has no access to the chat before joining\n    public let chatId: Int64\n\n    /// True, if the link only creates join request\n    public let createsJoinRequest: Bool\n\n    public let description: String\n\n    /// True, if the chat is a public supergroup or channel, i.e. it has a username or it is a location-based supergroup\n    public let isPublic: Bool\n\n    /// Number of members in the chat\n    public let memberCount: Int\n\n    /// User identifiers of some chat members that may be known to the current user\n    public let memberUserIds: [Int64]\n\n    /// Chat photo; may be null\n    public let photo: ChatPhotoInfo?\n\n    /// Information about subscription plan that must be paid by the user to use the link; may be null if the link doesn't require subscription\n    public let subscriptionInfo: ChatInviteLinkSubscriptionInfo?\n\n    /// Title of the chat\n    public let title: String\n\n    /// Type of the chat\n    public let type: InviteLinkChatType\n\n    /// Information about verification status of the chat; may be null if none\n    public let verificationStatus: VerificationStatus?\n\n\n    public init(\n        accentColorId: Int,\n        accessibleFor: Int,\n        chatId: Int64,\n        createsJoinRequest: Bool,\n        description: String,\n        isPublic: Bool,\n        memberCount: Int,\n        memberUserIds: [Int64],\n        photo: ChatPhotoInfo?,\n        subscriptionInfo: ChatInviteLinkSubscriptionInfo?,\n        title: String,\n        type: InviteLinkChatType,\n        verificationStatus: VerificationStatus?\n    ) {\n        self.accentColorId = accentColorId\n        self.accessibleFor = accessibleFor\n        self.chatId = chatId\n        self.createsJoinRequest = createsJoinRequest\n        self.description = description\n        self.isPublic = isPublic\n        self.memberCount = memberCount\n        self.memberUserIds = memberUserIds\n        self.photo = photo\n        self.subscriptionInfo = subscriptionInfo\n        self.title = title\n        self.type = type\n        self.verificationStatus = verificationStatus\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatInviteLinkMember.swift",
    "content": "//\n//  ChatInviteLinkMember.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a chat member joined a chat via an invite link\npublic struct ChatInviteLinkMember: Codable, Equatable, Hashable {\n\n    /// User identifier of the chat administrator, approved user join request\n    public let approverUserId: Int64\n\n    /// Point in time (Unix timestamp) when the user joined the chat\n    public let joinedChatDate: Int\n\n    /// User identifier\n    public let userId: Int64\n\n    /// True, if the user has joined the chat using an invite link for a chat folder\n    public let viaChatFolderInviteLink: Bool\n\n\n    public init(\n        approverUserId: Int64,\n        joinedChatDate: Int,\n        userId: Int64,\n        viaChatFolderInviteLink: Bool\n    ) {\n        self.approverUserId = approverUserId\n        self.joinedChatDate = joinedChatDate\n        self.userId = userId\n        self.viaChatFolderInviteLink = viaChatFolderInviteLink\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatInviteLinkMembers.swift",
    "content": "//\n//  ChatInviteLinkMembers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of chat members joined a chat via an invite link\npublic struct ChatInviteLinkMembers: Codable, Equatable, Hashable {\n\n    /// List of chat members, joined a chat via an invite link\n    public let members: [ChatInviteLinkMember]\n\n    /// Approximate total number of chat members found\n    public let totalCount: Int\n\n\n    public init(\n        members: [ChatInviteLinkMember],\n        totalCount: Int\n    ) {\n        self.members = members\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatInviteLinkSubscriptionInfo.swift",
    "content": "//\n//  ChatInviteLinkSubscriptionInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about subscription plan that must be paid by the user to use a chat invite link\npublic struct ChatInviteLinkSubscriptionInfo: Codable, Equatable, Hashable {\n\n    /// True, if the user has already paid for the subscription and can use joinChatByInviteLink to join the subscribed chat again\n    public let canReuse: Bool\n\n    /// Identifier of the payment form to use for subscription payment; 0 if the subscription can't be paid\n    public let formId: TdInt64\n\n    /// Information about subscription plan that must be paid by the user to use the link\n    public let pricing: StarSubscriptionPricing\n\n\n    public init(\n        canReuse: Bool,\n        formId: TdInt64,\n        pricing: StarSubscriptionPricing\n    ) {\n        self.canReuse = canReuse\n        self.formId = formId\n        self.pricing = pricing\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatInviteLinks.swift",
    "content": "//\n//  ChatInviteLinks.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of chat invite links\npublic struct ChatInviteLinks: Codable, Equatable, Hashable {\n\n    /// List of invite links\n    public let inviteLinks: [ChatInviteLink]\n\n    /// Approximate total number of chat invite links found\n    public let totalCount: Int\n\n\n    public init(\n        inviteLinks: [ChatInviteLink],\n        totalCount: Int\n    ) {\n        self.inviteLinks = inviteLinks\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatJoinRequest.swift",
    "content": "//\n//  ChatJoinRequest.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a user who sent a join request and waits for administrator approval\npublic struct ChatJoinRequest: Codable, Equatable, Hashable {\n\n    /// A short bio of the user\n    public let bio: String\n\n    /// Point in time (Unix timestamp) when the user sent the join request\n    public let date: Int\n\n    /// User identifier\n    public let userId: Int64\n\n\n    public init(\n        bio: String,\n        date: Int,\n        userId: Int64\n    ) {\n        self.bio = bio\n        self.date = date\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatJoinRequests.swift",
    "content": "//\n//  ChatJoinRequests.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of requests to join a chat\npublic struct ChatJoinRequests: Codable, Equatable, Hashable {\n\n    /// List of the requests\n    public let requests: [ChatJoinRequest]\n\n    /// Approximate total number of requests found\n    public let totalCount: Int\n\n\n    public init(\n        requests: [ChatJoinRequest],\n        totalCount: Int\n    ) {\n        self.requests = requests\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatJoinRequestsInfo.swift",
    "content": "//\n//  ChatJoinRequestsInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about pending join requests for a chat\npublic struct ChatJoinRequestsInfo: Codable, Equatable, Hashable {\n\n    /// Total number of pending join requests\n    public let totalCount: Int\n\n    /// Identifiers of at most 3 users sent the newest pending join requests\n    public let userIds: [Int64]\n\n\n    public init(\n        totalCount: Int,\n        userIds: [Int64]\n    ) {\n        self.totalCount = totalCount\n        self.userIds = userIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatList.swift",
    "content": "//\n//  ChatList.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a list of chats\npublic indirect enum ChatList: Codable, Equatable, Hashable {\n\n    /// A main list of chats\n    case chatListMain\n\n    /// A list of chats usually located at the top of the main chat list. Unmuted chats are automatically moved from the Archive to the Main chat list when a new message arrives\n    case chatListArchive\n\n    /// A list of chats added to a chat folder\n    case chatListFolder(ChatListFolder)\n\n\n    private enum Kind: String, Codable {\n        case chatListMain\n        case chatListArchive\n        case chatListFolder\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .chatListMain:\n            self = .chatListMain\n        case .chatListArchive:\n            self = .chatListArchive\n        case .chatListFolder:\n            let value = try ChatListFolder(from: decoder)\n            self = .chatListFolder(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .chatListMain:\n            try container.encode(Kind.chatListMain, forKey: .type)\n        case .chatListArchive:\n            try container.encode(Kind.chatListArchive, forKey: .type)\n        case .chatListFolder(let value):\n            try container.encode(Kind.chatListFolder, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A list of chats added to a chat folder\npublic struct ChatListFolder: Codable, Equatable, Hashable {\n\n    /// Chat folder identifier\n    public let chatFolderId: Int\n\n\n    public init(chatFolderId: Int) {\n        self.chatFolderId = chatFolderId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatLists.swift",
    "content": "//\n//  ChatLists.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of chat lists\npublic struct ChatLists: Codable, Equatable, Hashable {\n\n    /// List of chat lists\n    public let chatLists: [ChatList]\n\n\n    public init(chatLists: [ChatList]) {\n        self.chatLists = chatLists\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatLocation.swift",
    "content": "//\n//  ChatLocation.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a location to which a chat is connected\npublic struct ChatLocation: Codable, Equatable, Hashable {\n\n    /// Location address; 1-64 characters, as defined by the chat owner\n    public let address: String\n\n    /// The location\n    public let location: Location\n\n\n    public init(\n        address: String,\n        location: Location\n    ) {\n        self.address = address\n        self.location = location\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatMember.swift",
    "content": "//\n//  ChatMember.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a user or a chat as a member of another chat\npublic struct ChatMember: Codable, Equatable, Hashable {\n\n    /// Identifier of a user who invited/promoted/banned this member in the chat; 0 if unknown\n    public let inviterUserId: Int64\n\n    /// Point in time (Unix timestamp) when the user joined/was promoted/was banned in the chat\n    public let joinedChatDate: Int\n\n    /// Identifier of the chat member. Currently, other chats can be only Left or Banned. Only supergroups and channels can have other chats as Left or Banned members and these chats must be supergroups or channels\n    public let memberId: MessageSender\n\n    /// Status of the member in the chat\n    public let status: ChatMemberStatus\n\n    /// Tag of the chat member or its custom title if the member is an administrator of the chat; 0-16 characters without emoji; applicable to basic groups and supergroups only\n    public let tag: String\n\n\n    public init(\n        inviterUserId: Int64,\n        joinedChatDate: Int,\n        memberId: MessageSender,\n        status: ChatMemberStatus,\n        tag: String\n    ) {\n        self.inviterUserId = inviterUserId\n        self.joinedChatDate = joinedChatDate\n        self.memberId = memberId\n        self.status = status\n        self.tag = tag\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatMemberStatus.swift",
    "content": "//\n//  ChatMemberStatus.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Provides information about the status of a member in a chat\npublic indirect enum ChatMemberStatus: Codable, Equatable, Hashable {\n\n    /// The user is the owner of the chat and has all the administrator privileges\n    case chatMemberStatusCreator(ChatMemberStatusCreator)\n\n    /// The user is a member of the chat and has some additional privileges. In basic groups, administrators can edit and delete messages sent by others, add new members, ban unprivileged members, and manage video chats. In supergroups and channels, there are more detailed options for administrator privileges\n    case chatMemberStatusAdministrator(ChatMemberStatusAdministrator)\n\n    /// The user is a member of the chat, without any additional privileges or restrictions\n    case chatMemberStatusMember(ChatMemberStatusMember)\n\n    /// The user is under certain restrictions in the chat. Not supported in basic groups and channels\n    case chatMemberStatusRestricted(ChatMemberStatusRestricted)\n\n    /// The user or the chat is not a chat member\n    case chatMemberStatusLeft\n\n    /// The user or the chat was banned (and hence is not a member of the chat). Implies the user can't return to the chat, view messages, or be used as a participant identifier to join a video chat of the chat\n    case chatMemberStatusBanned(ChatMemberStatusBanned)\n\n\n    private enum Kind: String, Codable {\n        case chatMemberStatusCreator\n        case chatMemberStatusAdministrator\n        case chatMemberStatusMember\n        case chatMemberStatusRestricted\n        case chatMemberStatusLeft\n        case chatMemberStatusBanned\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .chatMemberStatusCreator:\n            let value = try ChatMemberStatusCreator(from: decoder)\n            self = .chatMemberStatusCreator(value)\n        case .chatMemberStatusAdministrator:\n            let value = try ChatMemberStatusAdministrator(from: decoder)\n            self = .chatMemberStatusAdministrator(value)\n        case .chatMemberStatusMember:\n            let value = try ChatMemberStatusMember(from: decoder)\n            self = .chatMemberStatusMember(value)\n        case .chatMemberStatusRestricted:\n            let value = try ChatMemberStatusRestricted(from: decoder)\n            self = .chatMemberStatusRestricted(value)\n        case .chatMemberStatusLeft:\n            self = .chatMemberStatusLeft\n        case .chatMemberStatusBanned:\n            let value = try ChatMemberStatusBanned(from: decoder)\n            self = .chatMemberStatusBanned(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .chatMemberStatusCreator(let value):\n            try container.encode(Kind.chatMemberStatusCreator, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatMemberStatusAdministrator(let value):\n            try container.encode(Kind.chatMemberStatusAdministrator, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatMemberStatusMember(let value):\n            try container.encode(Kind.chatMemberStatusMember, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatMemberStatusRestricted(let value):\n            try container.encode(Kind.chatMemberStatusRestricted, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatMemberStatusLeft:\n            try container.encode(Kind.chatMemberStatusLeft, forKey: .type)\n        case .chatMemberStatusBanned(let value):\n            try container.encode(Kind.chatMemberStatusBanned, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The user is the owner of the chat and has all the administrator privileges\npublic struct ChatMemberStatusCreator: Codable, Equatable, Hashable {\n\n    /// True, if the creator isn't shown in the chat member list and sends messages anonymously; applicable to supergroups only\n    public let isAnonymous: Bool\n\n    /// True, if the user is a member of the chat\n    public let isMember: Bool\n\n\n    public init(\n        isAnonymous: Bool,\n        isMember: Bool\n    ) {\n        self.isAnonymous = isAnonymous\n        self.isMember = isMember\n    }\n}\n\n/// The user is a member of the chat and has some additional privileges. In basic groups, administrators can edit and delete messages sent by others, add new members, ban unprivileged members, and manage video chats. In supergroups and channels, there are more detailed options for administrator privileges\npublic struct ChatMemberStatusAdministrator: Codable, Equatable, Hashable {\n\n    /// True, if the current user can edit the administrator privileges for the called user\n    public let canBeEdited: Bool\n\n    /// Rights of the administrator\n    public let rights: ChatAdministratorRights\n\n\n    public init(\n        canBeEdited: Bool,\n        rights: ChatAdministratorRights\n    ) {\n        self.canBeEdited = canBeEdited\n        self.rights = rights\n    }\n}\n\n/// The user is a member of the chat, without any additional privileges or restrictions\npublic struct ChatMemberStatusMember: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the user will be removed from the chat because of the expired subscription; 0 if never. Ignored in setChatMemberStatus\n    public let memberUntilDate: Int\n\n\n    public init(memberUntilDate: Int) {\n        self.memberUntilDate = memberUntilDate\n    }\n}\n\n/// The user is under certain restrictions in the chat. Not supported in basic groups and channels\npublic struct ChatMemberStatusRestricted: Codable, Equatable, Hashable {\n\n    /// True, if the user is a member of the chat\n    public let isMember: Bool\n\n    /// User permissions in the chat\n    public let permissions: ChatPermissions\n\n    /// Point in time (Unix timestamp) when restrictions will be lifted from the user; 0 if never. If the user is restricted for more than 366 days or for less than 30 seconds from the current time, the user is considered to be restricted forever\n    public let restrictedUntilDate: Int\n\n\n    public init(\n        isMember: Bool,\n        permissions: ChatPermissions,\n        restrictedUntilDate: Int\n    ) {\n        self.isMember = isMember\n        self.permissions = permissions\n        self.restrictedUntilDate = restrictedUntilDate\n    }\n}\n\n/// The user or the chat was banned (and hence is not a member of the chat). Implies the user can't return to the chat, view messages, or be used as a participant identifier to join a video chat of the chat\npublic struct ChatMemberStatusBanned: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the user will be unbanned; 0 if never. If the user is banned for more than 366 days or for less than 30 seconds from the current time, the user is considered to be banned forever. Always 0 in basic groups\n    public let bannedUntilDate: Int\n\n\n    public init(bannedUntilDate: Int) {\n        self.bannedUntilDate = bannedUntilDate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatMembers.swift",
    "content": "//\n//  ChatMembers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of chat members\npublic struct ChatMembers: Codable, Equatable, Hashable {\n\n    /// A list of chat members\n    public let members: [ChatMember]\n\n    /// Approximate total number of chat members found\n    public let totalCount: Int\n\n\n    public init(\n        members: [ChatMember],\n        totalCount: Int\n    ) {\n        self.members = members\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatMembersFilter.swift",
    "content": "//\n//  ChatMembersFilter.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Specifies the kind of chat members to return in searchChatMembers\npublic indirect enum ChatMembersFilter: Codable, Equatable, Hashable {\n\n    /// Returns contacts of the user\n    case chatMembersFilterContacts\n\n    /// Returns the owner and administrators\n    case chatMembersFilterAdministrators\n\n    /// Returns all chat members, including restricted chat members\n    case chatMembersFilterMembers\n\n    /// Returns users which can be mentioned in the chat\n    case chatMembersFilterMention(ChatMembersFilterMention)\n\n    /// Returns users under certain restrictions in the chat; can be used only by administrators in a supergroup\n    case chatMembersFilterRestricted\n\n    /// Returns users banned from the chat; can be used only by administrators in a supergroup or in a channel\n    case chatMembersFilterBanned\n\n    /// Returns bot members of the chat\n    case chatMembersFilterBots\n\n\n    private enum Kind: String, Codable {\n        case chatMembersFilterContacts\n        case chatMembersFilterAdministrators\n        case chatMembersFilterMembers\n        case chatMembersFilterMention\n        case chatMembersFilterRestricted\n        case chatMembersFilterBanned\n        case chatMembersFilterBots\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .chatMembersFilterContacts:\n            self = .chatMembersFilterContacts\n        case .chatMembersFilterAdministrators:\n            self = .chatMembersFilterAdministrators\n        case .chatMembersFilterMembers:\n            self = .chatMembersFilterMembers\n        case .chatMembersFilterMention:\n            let value = try ChatMembersFilterMention(from: decoder)\n            self = .chatMembersFilterMention(value)\n        case .chatMembersFilterRestricted:\n            self = .chatMembersFilterRestricted\n        case .chatMembersFilterBanned:\n            self = .chatMembersFilterBanned\n        case .chatMembersFilterBots:\n            self = .chatMembersFilterBots\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .chatMembersFilterContacts:\n            try container.encode(Kind.chatMembersFilterContacts, forKey: .type)\n        case .chatMembersFilterAdministrators:\n            try container.encode(Kind.chatMembersFilterAdministrators, forKey: .type)\n        case .chatMembersFilterMembers:\n            try container.encode(Kind.chatMembersFilterMembers, forKey: .type)\n        case .chatMembersFilterMention(let value):\n            try container.encode(Kind.chatMembersFilterMention, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatMembersFilterRestricted:\n            try container.encode(Kind.chatMembersFilterRestricted, forKey: .type)\n        case .chatMembersFilterBanned:\n            try container.encode(Kind.chatMembersFilterBanned, forKey: .type)\n        case .chatMembersFilterBots:\n            try container.encode(Kind.chatMembersFilterBots, forKey: .type)\n        }\n    }\n}\n\n/// Returns users which can be mentioned in the chat\npublic struct ChatMembersFilterMention: Codable, Equatable, Hashable {\n\n    /// Identifier of the topic in which the users will be mentioned; pass null if none\n    public let topicId: MessageTopic?\n\n\n    public init(topicId: MessageTopic?) {\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatMessageSender.swift",
    "content": "//\n//  ChatMessageSender.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a message sender, which can be used to send messages in a chat\npublic struct ChatMessageSender: Codable, Equatable, Hashable {\n\n    /// True, if Telegram Premium is needed to use the message sender\n    public let needsPremium: Bool\n\n    /// The message sender\n    public let sender: MessageSender\n\n\n    public init(\n        needsPremium: Bool,\n        sender: MessageSender\n    ) {\n        self.needsPremium = needsPremium\n        self.sender = sender\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatMessageSenders.swift",
    "content": "//\n//  ChatMessageSenders.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of message senders, which can be used to send messages in a chat\npublic struct ChatMessageSenders: Codable, Equatable, Hashable {\n\n    /// List of available message senders\n    public let senders: [ChatMessageSender]\n\n\n    public init(senders: [ChatMessageSender]) {\n        self.senders = senders\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatNearby.swift",
    "content": "//\n//  ChatNearby.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.37-b39769be\n//  https://github.com/tdlib/td/tree/b39769be\n//\n\nimport Foundation\n\n\n/// Describes a chat located nearby\npublic struct ChatNearby: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// Distance to the chat location, in meters\n    public let distance: Int\n\n\n    public init(\n        chatId: Int64,\n        distance: Int\n    ) {\n        self.chatId = chatId\n        self.distance = distance\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatNotificationSettings.swift",
    "content": "//\n//  ChatNotificationSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about notification settings for a chat or a forum topic\npublic struct ChatNotificationSettings: Codable, Equatable, Hashable {\n\n    /// If true, notifications for messages with mentions will be created as for an ordinary unread message\n    public let disableMentionNotifications: Bool\n\n    /// If true, notifications for incoming pinned messages will be created as for an ordinary unread message\n    public let disablePinnedMessageNotifications: Bool\n\n    /// Time left before notifications will be unmuted, in seconds\n    public let muteFor: Int\n\n    /// True, if story notifications are disabled for the chat\n    public let muteStories: Bool\n\n    /// True, if message content must be displayed in notifications\n    public let showPreview: Bool\n\n    /// True, if the chat that posted a story must be displayed in notifications\n    public let showStoryPoster: Bool\n\n    /// Identifier of the notification sound to be played for messages; 0 if sound is disabled\n    public let soundId: TdInt64\n\n    /// Identifier of the notification sound to be played for stories; 0 if sound is disabled\n    public let storySoundId: TdInt64\n\n    /// If true, the value for the relevant type of chat or the forum chat is used instead of disable_mention_notifications\n    public let useDefaultDisableMentionNotifications: Bool\n\n    /// If true, the value for the relevant type of chat or the forum chat is used instead of disable_pinned_message_notifications\n    public let useDefaultDisablePinnedMessageNotifications: Bool\n\n    /// If true, the value for the relevant type of chat or the forum chat is used instead of mute_for\n    public let useDefaultMuteFor: Bool\n\n    /// If true, the value for the relevant type of chat is used instead of mute_stories\n    public let useDefaultMuteStories: Bool\n\n    /// If true, the value for the relevant type of chat or the forum chat is used instead of show_preview\n    public let useDefaultShowPreview: Bool\n\n    /// If true, the value for the relevant type of chat is used instead of show_story_poster\n    public let useDefaultShowStoryPoster: Bool\n\n    /// If true, the value for the relevant type of chat or the forum chat is used instead of sound_id\n    public let useDefaultSound: Bool\n\n    /// If true, the value for the relevant type of chat is used instead of story_sound_id\n    public let useDefaultStorySound: Bool\n\n\n    public init(\n        disableMentionNotifications: Bool,\n        disablePinnedMessageNotifications: Bool,\n        muteFor: Int,\n        muteStories: Bool,\n        showPreview: Bool,\n        showStoryPoster: Bool,\n        soundId: TdInt64,\n        storySoundId: TdInt64,\n        useDefaultDisableMentionNotifications: Bool,\n        useDefaultDisablePinnedMessageNotifications: Bool,\n        useDefaultMuteFor: Bool,\n        useDefaultMuteStories: Bool,\n        useDefaultShowPreview: Bool,\n        useDefaultShowStoryPoster: Bool,\n        useDefaultSound: Bool,\n        useDefaultStorySound: Bool\n    ) {\n        self.disableMentionNotifications = disableMentionNotifications\n        self.disablePinnedMessageNotifications = disablePinnedMessageNotifications\n        self.muteFor = muteFor\n        self.muteStories = muteStories\n        self.showPreview = showPreview\n        self.showStoryPoster = showStoryPoster\n        self.soundId = soundId\n        self.storySoundId = storySoundId\n        self.useDefaultDisableMentionNotifications = useDefaultDisableMentionNotifications\n        self.useDefaultDisablePinnedMessageNotifications = useDefaultDisablePinnedMessageNotifications\n        self.useDefaultMuteFor = useDefaultMuteFor\n        self.useDefaultMuteStories = useDefaultMuteStories\n        self.useDefaultShowPreview = useDefaultShowPreview\n        self.useDefaultShowStoryPoster = useDefaultShowStoryPoster\n        self.useDefaultSound = useDefaultSound\n        self.useDefaultStorySound = useDefaultStorySound\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatPermissions.swift",
    "content": "//\n//  ChatPermissions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes actions that a user is allowed to take in a chat\npublic struct ChatPermissions: Codable, Equatable, Hashable {\n\n    /// True, if the user may add a link preview to their messages\n    public let canAddLinkPreviews: Bool\n\n    /// True, if the user can change the chat title, photo, and other settings\n    public let canChangeInfo: Bool\n\n    /// True, if the user can create topics\n    public let canCreateTopics: Bool\n\n    /// True, if the user may change the tag of self\n    public let canEditTag: Bool\n\n    /// True, if the user can invite new users to the chat\n    public let canInviteUsers: Bool\n\n    /// True, if the user can pin messages\n    public let canPinMessages: Bool\n\n    /// True, if the user can react to messages\n    public let canReactToMessages: Bool\n\n    /// True, if the user can send music files\n    public let canSendAudios: Bool\n\n    /// True, if the user can send text messages, contacts, giveaways, giveaway winners, invoices, locations, and venues\n    public let canSendBasicMessages: Bool\n\n    /// True, if the user can send documents\n    public let canSendDocuments: Bool\n\n    /// True, if the user can send animations, games, stickers, and dice and use inline bots\n    public let canSendOtherMessages: Bool\n\n    /// True, if the user can send photos\n    public let canSendPhotos: Bool\n\n    /// True, if the user can send polls and checklists\n    public let canSendPolls: Bool\n\n    /// True, if the user can send video notes\n    public let canSendVideoNotes: Bool\n\n    /// True, if the user can send videos\n    public let canSendVideos: Bool\n\n    /// True, if the user can send voice notes\n    public let canSendVoiceNotes: Bool\n\n\n    public init(\n        canAddLinkPreviews: Bool,\n        canChangeInfo: Bool,\n        canCreateTopics: Bool,\n        canEditTag: Bool,\n        canInviteUsers: Bool,\n        canPinMessages: Bool,\n        canReactToMessages: Bool,\n        canSendAudios: Bool,\n        canSendBasicMessages: Bool,\n        canSendDocuments: Bool,\n        canSendOtherMessages: Bool,\n        canSendPhotos: Bool,\n        canSendPolls: Bool,\n        canSendVideoNotes: Bool,\n        canSendVideos: Bool,\n        canSendVoiceNotes: Bool\n    ) {\n        self.canAddLinkPreviews = canAddLinkPreviews\n        self.canChangeInfo = canChangeInfo\n        self.canCreateTopics = canCreateTopics\n        self.canEditTag = canEditTag\n        self.canInviteUsers = canInviteUsers\n        self.canPinMessages = canPinMessages\n        self.canReactToMessages = canReactToMessages\n        self.canSendAudios = canSendAudios\n        self.canSendBasicMessages = canSendBasicMessages\n        self.canSendDocuments = canSendDocuments\n        self.canSendOtherMessages = canSendOtherMessages\n        self.canSendPhotos = canSendPhotos\n        self.canSendPolls = canSendPolls\n        self.canSendVideoNotes = canSendVideoNotes\n        self.canSendVideos = canSendVideos\n        self.canSendVoiceNotes = canSendVoiceNotes\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatPhoto.swift",
    "content": "//\n//  ChatPhoto.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a chat or user profile photo\npublic struct ChatPhoto: Codable, Equatable, Hashable, Identifiable {\n\n    /// Point in time (Unix timestamp) when the photo has been added\n    public let addedDate: Int\n\n    /// A big (up to 1280x1280) animated variant of the photo in MPEG4 format; may be null\n    public let animation: AnimatedChatPhoto?\n\n    /// Unique photo identifier\n    public let id: TdInt64\n\n    /// Photo minithumbnail; may be null\n    public let minithumbnail: Minithumbnail?\n\n    /// Available variants of the photo in JPEG format, in different size\n    public let sizes: [PhotoSize]\n\n    /// A small (160x160) animated variant of the photo in MPEG4 format; may be null even if the big animation is available\n    public let smallAnimation: AnimatedChatPhoto?\n\n    /// Sticker-based version of the chat photo; may be null\n    public let sticker: ChatPhotoSticker?\n\n\n    public init(\n        addedDate: Int,\n        animation: AnimatedChatPhoto?,\n        id: TdInt64,\n        minithumbnail: Minithumbnail?,\n        sizes: [PhotoSize],\n        smallAnimation: AnimatedChatPhoto?,\n        sticker: ChatPhotoSticker?\n    ) {\n        self.addedDate = addedDate\n        self.animation = animation\n        self.id = id\n        self.minithumbnail = minithumbnail\n        self.sizes = sizes\n        self.smallAnimation = smallAnimation\n        self.sticker = sticker\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatPhotoInfo.swift",
    "content": "//\n//  ChatPhotoInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains basic information about the photo of a chat\npublic struct ChatPhotoInfo: Codable, Equatable, Hashable {\n\n    /// A big (640x640) chat photo variant in JPEG format. The file can be downloaded only before the photo is changed\n    public let big: File\n\n    /// True, if the photo has animated variant\n    public let hasAnimation: Bool\n\n    /// True, if the photo is visible only for the current user\n    public let isPersonal: Bool\n\n    /// Chat photo minithumbnail; may be null\n    public let minithumbnail: Minithumbnail?\n\n    /// A small (160x160) chat photo variant in JPEG format. The file can be downloaded only before the photo is changed\n    public let small: File\n\n\n    public init(\n        big: File,\n        hasAnimation: Bool,\n        isPersonal: Bool,\n        minithumbnail: Minithumbnail?,\n        small: File\n    ) {\n        self.big = big\n        self.hasAnimation = hasAnimation\n        self.isPersonal = isPersonal\n        self.minithumbnail = minithumbnail\n        self.small = small\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatPhotoSticker.swift",
    "content": "//\n//  ChatPhotoSticker.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Information about the sticker, which was used to create the chat photo. The sticker is shown at the center of the photo and occupies at most 67% of it\npublic struct ChatPhotoSticker: Codable, Equatable, Hashable {\n\n    /// The fill to be used as background for the sticker; rotation angle in backgroundFillGradient isn't supported\n    public let backgroundFill: BackgroundFill\n\n    /// Type of the sticker\n    public let type: ChatPhotoStickerType\n\n\n    public init(\n        backgroundFill: BackgroundFill,\n        type: ChatPhotoStickerType\n    ) {\n        self.backgroundFill = backgroundFill\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatPhotoStickerType.swift",
    "content": "//\n//  ChatPhotoStickerType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of sticker, which was used to create a chat photo\npublic indirect enum ChatPhotoStickerType: Codable, Equatable, Hashable {\n\n    /// Information about the sticker, which was used to create the chat photo\n    case chatPhotoStickerTypeRegularOrMask(ChatPhotoStickerTypeRegularOrMask)\n\n    /// Information about the custom emoji, which was used to create the chat photo\n    case chatPhotoStickerTypeCustomEmoji(ChatPhotoStickerTypeCustomEmoji)\n\n\n    private enum Kind: String, Codable {\n        case chatPhotoStickerTypeRegularOrMask\n        case chatPhotoStickerTypeCustomEmoji\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .chatPhotoStickerTypeRegularOrMask:\n            let value = try ChatPhotoStickerTypeRegularOrMask(from: decoder)\n            self = .chatPhotoStickerTypeRegularOrMask(value)\n        case .chatPhotoStickerTypeCustomEmoji:\n            let value = try ChatPhotoStickerTypeCustomEmoji(from: decoder)\n            self = .chatPhotoStickerTypeCustomEmoji(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .chatPhotoStickerTypeRegularOrMask(let value):\n            try container.encode(Kind.chatPhotoStickerTypeRegularOrMask, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatPhotoStickerTypeCustomEmoji(let value):\n            try container.encode(Kind.chatPhotoStickerTypeCustomEmoji, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Information about the sticker, which was used to create the chat photo\npublic struct ChatPhotoStickerTypeRegularOrMask: Codable, Equatable, Hashable {\n\n    /// Identifier of the sticker in the set\n    public let stickerId: TdInt64\n\n    /// Sticker set identifier\n    public let stickerSetId: TdInt64\n\n\n    public init(\n        stickerId: TdInt64,\n        stickerSetId: TdInt64\n    ) {\n        self.stickerId = stickerId\n        self.stickerSetId = stickerSetId\n    }\n}\n\n/// Information about the custom emoji, which was used to create the chat photo\npublic struct ChatPhotoStickerTypeCustomEmoji: Codable, Equatable, Hashable {\n\n    /// Identifier of the custom emoji\n    public let customEmojiId: TdInt64\n\n\n    public init(customEmojiId: TdInt64) {\n        self.customEmojiId = customEmojiId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatPhotos.swift",
    "content": "//\n//  ChatPhotos.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of chat or user profile photos\npublic struct ChatPhotos: Codable, Equatable, Hashable {\n\n    /// List of photos\n    public let photos: [ChatPhoto]\n\n    /// Total number of photos\n    public let totalCount: Int\n\n\n    public init(\n        photos: [ChatPhoto],\n        totalCount: Int\n    ) {\n        self.photos = photos\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatPosition.swift",
    "content": "//\n//  ChatPosition.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a position of a chat in a chat list\npublic struct ChatPosition: Codable, Equatable, Hashable {\n\n    /// True, if the chat is pinned in the chat list\n    public let isPinned: Bool\n\n    /// The chat list\n    public let list: ChatList\n\n    /// A parameter used to determine order of the chat in the chat list. Chats must be sorted by the pair (order, chat.id) in descending order\n    public let order: TdInt64\n\n    /// Source of the chat in the chat list; may be null\n    public let source: ChatSource?\n\n\n    public init(\n        isPinned: Bool,\n        list: ChatList,\n        order: TdInt64,\n        source: ChatSource?\n    ) {\n        self.isPinned = isPinned\n        self.list = list\n        self.order = order\n        self.source = source\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatRevenueAmount.swift",
    "content": "//\n//  ChatRevenueAmount.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about revenue earned from sponsored messages in a chat\npublic struct ChatRevenueAmount: Codable, Equatable, Hashable {\n\n    /// Amount of the cryptocurrency available for withdrawal, in the smallest units of the cryptocurrency\n    public let availableAmount: TdInt64\n\n    /// Amount of the cryptocurrency that isn't withdrawn yet, in the smallest units of the cryptocurrency\n    public let balanceAmount: TdInt64\n\n    /// Cryptocurrency in which revenue is calculated\n    public let cryptocurrency: String\n\n    /// Total amount of the cryptocurrency earned, in the smallest units of the cryptocurrency\n    public let totalAmount: TdInt64\n\n    /// True, if Telegram Stars can be withdrawn now or later\n    public let withdrawalEnabled: Bool\n\n\n    public init(\n        availableAmount: TdInt64,\n        balanceAmount: TdInt64,\n        cryptocurrency: String,\n        totalAmount: TdInt64,\n        withdrawalEnabled: Bool\n    ) {\n        self.availableAmount = availableAmount\n        self.balanceAmount = balanceAmount\n        self.cryptocurrency = cryptocurrency\n        self.totalAmount = totalAmount\n        self.withdrawalEnabled = withdrawalEnabled\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatRevenueStatistics.swift",
    "content": "//\n//  ChatRevenueStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A detailed statistics about revenue earned from sponsored messages in a chat\npublic struct ChatRevenueStatistics: Codable, Equatable, Hashable {\n\n    /// Amount of earned revenue\n    public let revenueAmount: ChatRevenueAmount\n\n    /// A graph containing amount of revenue in a given hour\n    public let revenueByHourGraph: StatisticalGraph\n\n    /// A graph containing amount of revenue\n    public let revenueGraph: StatisticalGraph\n\n    /// Current conversion rate of the cryptocurrency in which revenue is calculated to USD\n    public let usdRate: Double\n\n\n    public init(\n        revenueAmount: ChatRevenueAmount,\n        revenueByHourGraph: StatisticalGraph,\n        revenueGraph: StatisticalGraph,\n        usdRate: Double\n    ) {\n        self.revenueAmount = revenueAmount\n        self.revenueByHourGraph = revenueByHourGraph\n        self.revenueGraph = revenueGraph\n        self.usdRate = usdRate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatRevenueTransaction.swift",
    "content": "//\n//  ChatRevenueTransaction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a chat revenue transactions\npublic struct ChatRevenueTransaction: Codable, Equatable, Hashable {\n\n    /// Cryptocurrency in which revenue is calculated\n    public let cryptocurrency: String\n\n    /// The withdrawn amount, in the smallest units of the cryptocurrency\n    public let cryptocurrencyAmount: TdInt64\n\n    /// Type of the transaction\n    public let type: ChatRevenueTransactionType\n\n\n    public init(\n        cryptocurrency: String,\n        cryptocurrencyAmount: TdInt64,\n        type: ChatRevenueTransactionType\n    ) {\n        self.cryptocurrency = cryptocurrency\n        self.cryptocurrencyAmount = cryptocurrencyAmount\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatRevenueTransactionType.swift",
    "content": "//\n//  ChatRevenueTransactionType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of transaction for revenue earned from sponsored messages in a chat\npublic indirect enum ChatRevenueTransactionType: Codable, Equatable, Hashable {\n\n    /// Describes an unsupported transaction\n    case chatRevenueTransactionTypeUnsupported\n\n    /// Describes earnings from sponsored messages in a chat in some time frame\n    case chatRevenueTransactionTypeSponsoredMessageEarnings(ChatRevenueTransactionTypeSponsoredMessageEarnings)\n\n    /// Describes earnings from a published suggested post\n    case chatRevenueTransactionTypeSuggestedPostEarnings(ChatRevenueTransactionTypeSuggestedPostEarnings)\n\n    /// Describes a withdrawal of earnings through Fragment\n    case chatRevenueTransactionTypeFragmentWithdrawal(ChatRevenueTransactionTypeFragmentWithdrawal)\n\n    /// Describes a refund for failed withdrawal of earnings through Fragment\n    case chatRevenueTransactionTypeFragmentRefund(ChatRevenueTransactionTypeFragmentRefund)\n\n\n    private enum Kind: String, Codable {\n        case chatRevenueTransactionTypeUnsupported\n        case chatRevenueTransactionTypeSponsoredMessageEarnings\n        case chatRevenueTransactionTypeSuggestedPostEarnings\n        case chatRevenueTransactionTypeFragmentWithdrawal\n        case chatRevenueTransactionTypeFragmentRefund\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .chatRevenueTransactionTypeUnsupported:\n            self = .chatRevenueTransactionTypeUnsupported\n        case .chatRevenueTransactionTypeSponsoredMessageEarnings:\n            let value = try ChatRevenueTransactionTypeSponsoredMessageEarnings(from: decoder)\n            self = .chatRevenueTransactionTypeSponsoredMessageEarnings(value)\n        case .chatRevenueTransactionTypeSuggestedPostEarnings:\n            let value = try ChatRevenueTransactionTypeSuggestedPostEarnings(from: decoder)\n            self = .chatRevenueTransactionTypeSuggestedPostEarnings(value)\n        case .chatRevenueTransactionTypeFragmentWithdrawal:\n            let value = try ChatRevenueTransactionTypeFragmentWithdrawal(from: decoder)\n            self = .chatRevenueTransactionTypeFragmentWithdrawal(value)\n        case .chatRevenueTransactionTypeFragmentRefund:\n            let value = try ChatRevenueTransactionTypeFragmentRefund(from: decoder)\n            self = .chatRevenueTransactionTypeFragmentRefund(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .chatRevenueTransactionTypeUnsupported:\n            try container.encode(Kind.chatRevenueTransactionTypeUnsupported, forKey: .type)\n        case .chatRevenueTransactionTypeSponsoredMessageEarnings(let value):\n            try container.encode(Kind.chatRevenueTransactionTypeSponsoredMessageEarnings, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatRevenueTransactionTypeSuggestedPostEarnings(let value):\n            try container.encode(Kind.chatRevenueTransactionTypeSuggestedPostEarnings, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatRevenueTransactionTypeFragmentWithdrawal(let value):\n            try container.encode(Kind.chatRevenueTransactionTypeFragmentWithdrawal, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatRevenueTransactionTypeFragmentRefund(let value):\n            try container.encode(Kind.chatRevenueTransactionTypeFragmentRefund, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Describes earnings from sponsored messages in a chat in some time frame\npublic struct ChatRevenueTransactionTypeSponsoredMessageEarnings: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the earnings ended\n    public let endDate: Int\n\n    /// Point in time (Unix timestamp) when the earnings started\n    public let startDate: Int\n\n\n    public init(\n        endDate: Int,\n        startDate: Int\n    ) {\n        self.endDate = endDate\n        self.startDate = startDate\n    }\n}\n\n/// Describes earnings from a published suggested post\npublic struct ChatRevenueTransactionTypeSuggestedPostEarnings: Codable, Equatable, Hashable {\n\n    /// Identifier of the user who paid for the suggested post\n    public let userId: Int64\n\n\n    public init(userId: Int64) {\n        self.userId = userId\n    }\n}\n\n/// Describes a withdrawal of earnings through Fragment\npublic struct ChatRevenueTransactionTypeFragmentWithdrawal: Codable, Equatable, Hashable {\n\n    /// State of the withdrawal\n    public let state: RevenueWithdrawalState\n\n    /// Point in time (Unix timestamp) when the earnings withdrawal started\n    public let withdrawalDate: Int\n\n\n    public init(\n        state: RevenueWithdrawalState,\n        withdrawalDate: Int\n    ) {\n        self.state = state\n        self.withdrawalDate = withdrawalDate\n    }\n}\n\n/// Describes a refund for failed withdrawal of earnings through Fragment\npublic struct ChatRevenueTransactionTypeFragmentRefund: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the transaction was refunded\n    public let refundDate: Int\n\n\n    public init(refundDate: Int) {\n        self.refundDate = refundDate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatRevenueTransactions.swift",
    "content": "//\n//  ChatRevenueTransactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of chat revenue transactions\npublic struct ChatRevenueTransactions: Codable, Equatable, Hashable {\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// The amount of owned Toncoins; in the smallest units of the cryptocurrency\n    public let tonAmount: Int64\n\n    /// List of transactions\n    public let transactions: [ChatRevenueTransaction]\n\n\n    public init(\n        nextOffset: String,\n        tonAmount: Int64,\n        transactions: [ChatRevenueTransaction]\n    ) {\n        self.nextOffset = nextOffset\n        self.tonAmount = tonAmount\n        self.transactions = transactions\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatRevenueWithdrawalState.swift",
    "content": "//\n//  ChatRevenueWithdrawalState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.30-4257a341\n//  https://github.com/tdlib/td/tree/4257a341\n//\n\nimport Foundation\n\n\n/// Describes state of a chat revenue withdrawal\npublic indirect enum ChatRevenueWithdrawalState: Codable, Equatable, Hashable {\n\n    /// Withdrawal is pending\n    case chatRevenueWithdrawalStatePending\n\n    /// Withdrawal was completed\n    case chatRevenueWithdrawalStateCompleted(ChatRevenueWithdrawalStateCompleted)\n\n    /// Withdrawal has_failed\n    case chatRevenueWithdrawalStateFailed\n\n\n    private enum Kind: String, Codable {\n        case chatRevenueWithdrawalStatePending\n        case chatRevenueWithdrawalStateCompleted\n        case chatRevenueWithdrawalStateFailed\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .chatRevenueWithdrawalStatePending:\n            self = .chatRevenueWithdrawalStatePending\n        case .chatRevenueWithdrawalStateCompleted:\n            let value = try ChatRevenueWithdrawalStateCompleted(from: decoder)\n            self = .chatRevenueWithdrawalStateCompleted(value)\n        case .chatRevenueWithdrawalStateFailed:\n            self = .chatRevenueWithdrawalStateFailed\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .chatRevenueWithdrawalStatePending:\n            try container.encode(Kind.chatRevenueWithdrawalStatePending, forKey: .type)\n        case .chatRevenueWithdrawalStateCompleted(let value):\n            try container.encode(Kind.chatRevenueWithdrawalStateCompleted, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatRevenueWithdrawalStateFailed:\n            try container.encode(Kind.chatRevenueWithdrawalStateFailed, forKey: .type)\n        }\n    }\n}\n\n/// Withdrawal was completed\npublic struct ChatRevenueWithdrawalStateCompleted: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the withdrawal was completed\n    public let date: Int\n\n    /// The URL where the withdrawal transaction can be viewed\n    public let url: String\n\n\n    public init(\n        date: Int,\n        url: String\n    ) {\n        self.date = date\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatSource.swift",
    "content": "//\n//  ChatSource.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a reason why an external chat is shown in a chat list\npublic indirect enum ChatSource: Codable, Equatable, Hashable {\n\n    /// The chat is sponsored by the user's MTProxy server\n    case chatSourceMtprotoProxy\n\n    /// The chat contains a public service announcement\n    case chatSourcePublicServiceAnnouncement(ChatSourcePublicServiceAnnouncement)\n\n\n    private enum Kind: String, Codable {\n        case chatSourceMtprotoProxy\n        case chatSourcePublicServiceAnnouncement\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .chatSourceMtprotoProxy:\n            self = .chatSourceMtprotoProxy\n        case .chatSourcePublicServiceAnnouncement:\n            let value = try ChatSourcePublicServiceAnnouncement(from: decoder)\n            self = .chatSourcePublicServiceAnnouncement(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .chatSourceMtprotoProxy:\n            try container.encode(Kind.chatSourceMtprotoProxy, forKey: .type)\n        case .chatSourcePublicServiceAnnouncement(let value):\n            try container.encode(Kind.chatSourcePublicServiceAnnouncement, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The chat contains a public service announcement\npublic struct ChatSourcePublicServiceAnnouncement: Codable, Equatable, Hashable {\n\n    /// The text of the announcement\n    public let text: String\n\n    /// The type of the announcement\n    public let type: String\n\n\n    public init(\n        text: String,\n        type: String\n    ) {\n        self.text = text\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatStatistics.swift",
    "content": "//\n//  ChatStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a detailed statistics about a chat\npublic indirect enum ChatStatistics: Codable, Equatable, Hashable {\n\n    /// A detailed statistics about a supergroup chat\n    case chatStatisticsSupergroup(ChatStatisticsSupergroup)\n\n    /// A detailed statistics about a channel chat\n    case chatStatisticsChannel(ChatStatisticsChannel)\n\n\n    private enum Kind: String, Codable {\n        case chatStatisticsSupergroup\n        case chatStatisticsChannel\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .chatStatisticsSupergroup:\n            let value = try ChatStatisticsSupergroup(from: decoder)\n            self = .chatStatisticsSupergroup(value)\n        case .chatStatisticsChannel:\n            let value = try ChatStatisticsChannel(from: decoder)\n            self = .chatStatisticsChannel(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .chatStatisticsSupergroup(let value):\n            try container.encode(Kind.chatStatisticsSupergroup, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatStatisticsChannel(let value):\n            try container.encode(Kind.chatStatisticsChannel, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A detailed statistics about a supergroup chat\npublic struct ChatStatisticsSupergroup: Codable, Equatable, Hashable {\n\n    /// A graph containing number of different actions in the chat\n    public let actionGraph: StatisticalGraph\n\n    /// A graph containing distribution of message views per hour\n    public let dayGraph: StatisticalGraph\n\n    /// A graph containing number of new member joins per source\n    public let joinBySourceGraph: StatisticalGraph\n\n    /// A graph containing number of members joined and left the chat\n    public let joinGraph: StatisticalGraph\n\n    /// A graph containing distribution of active users per language\n    public let languageGraph: StatisticalGraph\n\n    /// Number of members in the chat\n    public let memberCount: StatisticalValue\n\n    /// A graph containing number of members in the chat\n    public let memberCountGraph: StatisticalGraph\n\n    /// A graph containing distribution of sent messages by content type\n    public let messageContentGraph: StatisticalGraph\n\n    /// Number of messages sent to the chat\n    public let messageCount: StatisticalValue\n\n    /// A period to which the statistics applies\n    public let period: DateRange\n\n    /// Number of users who sent messages to the chat\n    public let senderCount: StatisticalValue\n\n    /// List of most active administrators in the last week\n    public let topAdministrators: [ChatStatisticsAdministratorActionsInfo]\n\n    /// List of most active inviters of new members in the last week\n    public let topInviters: [ChatStatisticsInviterInfo]\n\n    /// List of users sent most messages in the last week\n    public let topSenders: [ChatStatisticsMessageSenderInfo]\n\n    /// Number of users who viewed messages in the chat\n    public let viewerCount: StatisticalValue\n\n    /// A graph containing distribution of message views per day of week\n    public let weekGraph: StatisticalGraph\n\n\n    public init(\n        actionGraph: StatisticalGraph,\n        dayGraph: StatisticalGraph,\n        joinBySourceGraph: StatisticalGraph,\n        joinGraph: StatisticalGraph,\n        languageGraph: StatisticalGraph,\n        memberCount: StatisticalValue,\n        memberCountGraph: StatisticalGraph,\n        messageContentGraph: StatisticalGraph,\n        messageCount: StatisticalValue,\n        period: DateRange,\n        senderCount: StatisticalValue,\n        topAdministrators: [ChatStatisticsAdministratorActionsInfo],\n        topInviters: [ChatStatisticsInviterInfo],\n        topSenders: [ChatStatisticsMessageSenderInfo],\n        viewerCount: StatisticalValue,\n        weekGraph: StatisticalGraph\n    ) {\n        self.actionGraph = actionGraph\n        self.dayGraph = dayGraph\n        self.joinBySourceGraph = joinBySourceGraph\n        self.joinGraph = joinGraph\n        self.languageGraph = languageGraph\n        self.memberCount = memberCount\n        self.memberCountGraph = memberCountGraph\n        self.messageContentGraph = messageContentGraph\n        self.messageCount = messageCount\n        self.period = period\n        self.senderCount = senderCount\n        self.topAdministrators = topAdministrators\n        self.topInviters = topInviters\n        self.topSenders = topSenders\n        self.viewerCount = viewerCount\n        self.weekGraph = weekGraph\n    }\n}\n\n/// A detailed statistics about a channel chat\npublic struct ChatStatisticsChannel: Codable, Equatable, Hashable {\n\n    /// A percentage of users with enabled notifications for the chat; 0-100\n    public let enabledNotificationsPercentage: Double\n\n    /// A graph containing number of views of associated with the chat instant views\n    public let instantViewInteractionGraph: StatisticalGraph\n\n    /// A graph containing number of new member joins per source\n    public let joinBySourceGraph: StatisticalGraph\n\n    /// A graph containing number of members joined and left the chat\n    public let joinGraph: StatisticalGraph\n\n    /// A graph containing number of users viewed chat messages per language\n    public let languageGraph: StatisticalGraph\n\n    /// Mean number of times reactions were added to the recently sent messages\n    public let meanMessageReactionCount: StatisticalValue\n\n    /// Mean number of times the recently sent messages were shared\n    public let meanMessageShareCount: StatisticalValue\n\n    /// Mean number of times the recently sent messages were viewed\n    public let meanMessageViewCount: StatisticalValue\n\n    /// Mean number of times reactions were added to the recently posted stories\n    public let meanStoryReactionCount: StatisticalValue\n\n    /// Mean number of times the recently posted stories were shared\n    public let meanStoryShareCount: StatisticalValue\n\n    /// Mean number of times the recently posted stories were viewed\n    public let meanStoryViewCount: StatisticalValue\n\n    /// Number of members in the chat\n    public let memberCount: StatisticalValue\n\n    /// A graph containing number of members in the chat\n    public let memberCountGraph: StatisticalGraph\n\n    /// A graph containing number of chat message views and shares\n    public let messageInteractionGraph: StatisticalGraph\n\n    /// A graph containing number of reactions on messages\n    public let messageReactionGraph: StatisticalGraph\n\n    /// A graph containing number of members muted and unmuted the chat\n    public let muteGraph: StatisticalGraph\n\n    /// A period to which the statistics applies\n    public let period: DateRange\n\n    /// Detailed statistics about number of views and shares of recently sent messages and posted stories\n    public let recentInteractions: [ChatStatisticsInteractionInfo]\n\n    /// A graph containing number of story views and shares\n    public let storyInteractionGraph: StatisticalGraph\n\n    /// A graph containing number of reactions on stories\n    public let storyReactionGraph: StatisticalGraph\n\n    /// A graph containing number of message views in a given hour in the last two weeks\n    public let viewCountByHourGraph: StatisticalGraph\n\n    /// A graph containing number of message views per source\n    public let viewCountBySourceGraph: StatisticalGraph\n\n\n    public init(\n        enabledNotificationsPercentage: Double,\n        instantViewInteractionGraph: StatisticalGraph,\n        joinBySourceGraph: StatisticalGraph,\n        joinGraph: StatisticalGraph,\n        languageGraph: StatisticalGraph,\n        meanMessageReactionCount: StatisticalValue,\n        meanMessageShareCount: StatisticalValue,\n        meanMessageViewCount: StatisticalValue,\n        meanStoryReactionCount: StatisticalValue,\n        meanStoryShareCount: StatisticalValue,\n        meanStoryViewCount: StatisticalValue,\n        memberCount: StatisticalValue,\n        memberCountGraph: StatisticalGraph,\n        messageInteractionGraph: StatisticalGraph,\n        messageReactionGraph: StatisticalGraph,\n        muteGraph: StatisticalGraph,\n        period: DateRange,\n        recentInteractions: [ChatStatisticsInteractionInfo],\n        storyInteractionGraph: StatisticalGraph,\n        storyReactionGraph: StatisticalGraph,\n        viewCountByHourGraph: StatisticalGraph,\n        viewCountBySourceGraph: StatisticalGraph\n    ) {\n        self.enabledNotificationsPercentage = enabledNotificationsPercentage\n        self.instantViewInteractionGraph = instantViewInteractionGraph\n        self.joinBySourceGraph = joinBySourceGraph\n        self.joinGraph = joinGraph\n        self.languageGraph = languageGraph\n        self.meanMessageReactionCount = meanMessageReactionCount\n        self.meanMessageShareCount = meanMessageShareCount\n        self.meanMessageViewCount = meanMessageViewCount\n        self.meanStoryReactionCount = meanStoryReactionCount\n        self.meanStoryShareCount = meanStoryShareCount\n        self.meanStoryViewCount = meanStoryViewCount\n        self.memberCount = memberCount\n        self.memberCountGraph = memberCountGraph\n        self.messageInteractionGraph = messageInteractionGraph\n        self.messageReactionGraph = messageReactionGraph\n        self.muteGraph = muteGraph\n        self.period = period\n        self.recentInteractions = recentInteractions\n        self.storyInteractionGraph = storyInteractionGraph\n        self.storyReactionGraph = storyReactionGraph\n        self.viewCountByHourGraph = viewCountByHourGraph\n        self.viewCountBySourceGraph = viewCountBySourceGraph\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatStatisticsAdministratorActionsInfo.swift",
    "content": "//\n//  ChatStatisticsAdministratorActionsInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains statistics about administrator actions done by a user\npublic struct ChatStatisticsAdministratorActionsInfo: Codable, Equatable, Hashable {\n\n    /// Number of users banned by the administrator\n    public let bannedUserCount: Int\n\n    /// Number of messages deleted by the administrator\n    public let deletedMessageCount: Int\n\n    /// Number of users restricted by the administrator\n    public let restrictedUserCount: Int\n\n    /// Administrator user identifier\n    public let userId: Int64\n\n\n    public init(\n        bannedUserCount: Int,\n        deletedMessageCount: Int,\n        restrictedUserCount: Int,\n        userId: Int64\n    ) {\n        self.bannedUserCount = bannedUserCount\n        self.deletedMessageCount = deletedMessageCount\n        self.restrictedUserCount = restrictedUserCount\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatStatisticsInteractionInfo.swift",
    "content": "//\n//  ChatStatisticsInteractionInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains statistics about interactions with a message sent in the chat or a story posted on behalf of the chat\npublic struct ChatStatisticsInteractionInfo: Codable, Equatable, Hashable {\n\n    /// Number of times the object was forwarded\n    public let forwardCount: Int\n\n    /// Type of the object\n    public let objectType: ChatStatisticsObjectType\n\n    /// Number of times reactions were added to the object\n    public let reactionCount: Int\n\n    /// Number of times the object was viewed\n    public let viewCount: Int\n\n\n    public init(\n        forwardCount: Int,\n        objectType: ChatStatisticsObjectType,\n        reactionCount: Int,\n        viewCount: Int\n    ) {\n        self.forwardCount = forwardCount\n        self.objectType = objectType\n        self.reactionCount = reactionCount\n        self.viewCount = viewCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatStatisticsInviterInfo.swift",
    "content": "//\n//  ChatStatisticsInviterInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains statistics about number of new members invited by a user\npublic struct ChatStatisticsInviterInfo: Codable, Equatable, Hashable {\n\n    /// Number of new members invited by the user\n    public let addedMemberCount: Int\n\n    /// User identifier\n    public let userId: Int64\n\n\n    public init(\n        addedMemberCount: Int,\n        userId: Int64\n    ) {\n        self.addedMemberCount = addedMemberCount\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatStatisticsMessageSenderInfo.swift",
    "content": "//\n//  ChatStatisticsMessageSenderInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains statistics about messages sent by a user\npublic struct ChatStatisticsMessageSenderInfo: Codable, Equatable, Hashable {\n\n    /// Average number of characters in sent messages; 0 if unknown\n    public let averageCharacterCount: Int\n\n    /// Number of sent messages\n    public let sentMessageCount: Int\n\n    /// User identifier\n    public let userId: Int64\n\n\n    public init(\n        averageCharacterCount: Int,\n        sentMessageCount: Int,\n        userId: Int64\n    ) {\n        self.averageCharacterCount = averageCharacterCount\n        self.sentMessageCount = sentMessageCount\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatStatisticsObjectType.swift",
    "content": "//\n//  ChatStatisticsObjectType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of object, for which statistics are provided\npublic indirect enum ChatStatisticsObjectType: Codable, Equatable, Hashable {\n\n    /// Describes a message sent in the chat\n    case chatStatisticsObjectTypeMessage(ChatStatisticsObjectTypeMessage)\n\n    /// Describes a story posted on behalf of the chat\n    case chatStatisticsObjectTypeStory(ChatStatisticsObjectTypeStory)\n\n\n    private enum Kind: String, Codable {\n        case chatStatisticsObjectTypeMessage\n        case chatStatisticsObjectTypeStory\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .chatStatisticsObjectTypeMessage:\n            let value = try ChatStatisticsObjectTypeMessage(from: decoder)\n            self = .chatStatisticsObjectTypeMessage(value)\n        case .chatStatisticsObjectTypeStory:\n            let value = try ChatStatisticsObjectTypeStory(from: decoder)\n            self = .chatStatisticsObjectTypeStory(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .chatStatisticsObjectTypeMessage(let value):\n            try container.encode(Kind.chatStatisticsObjectTypeMessage, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatStatisticsObjectTypeStory(let value):\n            try container.encode(Kind.chatStatisticsObjectTypeStory, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Describes a message sent in the chat\npublic struct ChatStatisticsObjectTypeMessage: Codable, Equatable, Hashable {\n\n    /// Message identifier\n    public let messageId: Int64\n\n\n    public init(messageId: Int64) {\n        self.messageId = messageId\n    }\n}\n\n/// Describes a story posted on behalf of the chat\npublic struct ChatStatisticsObjectTypeStory: Codable, Equatable, Hashable {\n\n    /// Story identifier\n    public let storyId: Int\n\n\n    public init(storyId: Int) {\n        self.storyId = storyId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatTheme.swift",
    "content": "//\n//  ChatTheme.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a chat theme\npublic indirect enum ChatTheme: Codable, Equatable, Hashable {\n\n    /// A chat theme based on an emoji\n    case chatThemeEmoji(ChatThemeEmoji)\n\n    /// A chat theme based on an upgraded gift\n    case chatThemeGift(ChatThemeGift)\n\n\n    private enum Kind: String, Codable {\n        case chatThemeEmoji\n        case chatThemeGift\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .chatThemeEmoji:\n            let value = try ChatThemeEmoji(from: decoder)\n            self = .chatThemeEmoji(value)\n        case .chatThemeGift:\n            let value = try ChatThemeGift(from: decoder)\n            self = .chatThemeGift(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .chatThemeEmoji(let value):\n            try container.encode(Kind.chatThemeEmoji, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatThemeGift(let value):\n            try container.encode(Kind.chatThemeGift, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A chat theme based on an emoji\npublic struct ChatThemeEmoji: Codable, Equatable, Hashable {\n\n    /// Name of the theme; full theme description is received through updateEmojiChatThemes\n    public let name: String\n\n\n    public init(name: String) {\n        self.name = name\n    }\n}\n\n/// A chat theme based on an upgraded gift\npublic struct ChatThemeGift: Codable, Equatable, Hashable {\n\n    /// The chat theme\n    public let giftTheme: GiftChatTheme\n\n\n    public init(giftTheme: GiftChatTheme) {\n        self.giftTheme = giftTheme\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatTransactionPurpose.swift",
    "content": "//\n//  ChatTransactionPurpose.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.40-22d49d5b\n//  https://github.com/tdlib/td/tree/22d49d5b\n//\n\nimport Foundation\n\n\n/// Describes purpose of a transaction with a supergroup or a channel\npublic indirect enum ChatTransactionPurpose: Codable, Equatable, Hashable {\n\n    /// Paid media were bought\n    case chatTransactionPurposePaidMedia(ChatTransactionPurposePaidMedia)\n\n    /// User joined the channel and subscribed to regular payments in Telegram Stars\n    case chatTransactionPurposeJoin(ChatTransactionPurposeJoin)\n\n    /// User paid for a reaction\n    case chatTransactionPurposeReaction(ChatTransactionPurposeReaction)\n\n    /// User received Telegram Stars from a giveaway\n    case chatTransactionPurposeGiveaway(ChatTransactionPurposeGiveaway)\n\n\n    private enum Kind: String, Codable {\n        case chatTransactionPurposePaidMedia\n        case chatTransactionPurposeJoin\n        case chatTransactionPurposeReaction\n        case chatTransactionPurposeGiveaway\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .chatTransactionPurposePaidMedia:\n            let value = try ChatTransactionPurposePaidMedia(from: decoder)\n            self = .chatTransactionPurposePaidMedia(value)\n        case .chatTransactionPurposeJoin:\n            let value = try ChatTransactionPurposeJoin(from: decoder)\n            self = .chatTransactionPurposeJoin(value)\n        case .chatTransactionPurposeReaction:\n            let value = try ChatTransactionPurposeReaction(from: decoder)\n            self = .chatTransactionPurposeReaction(value)\n        case .chatTransactionPurposeGiveaway:\n            let value = try ChatTransactionPurposeGiveaway(from: decoder)\n            self = .chatTransactionPurposeGiveaway(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .chatTransactionPurposePaidMedia(let value):\n            try container.encode(Kind.chatTransactionPurposePaidMedia, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatTransactionPurposeJoin(let value):\n            try container.encode(Kind.chatTransactionPurposeJoin, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatTransactionPurposeReaction(let value):\n            try container.encode(Kind.chatTransactionPurposeReaction, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatTransactionPurposeGiveaway(let value):\n            try container.encode(Kind.chatTransactionPurposeGiveaway, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Paid media were bought\npublic struct ChatTransactionPurposePaidMedia: Codable, Equatable, Hashable {\n\n    /// The bought media if the transaction wasn't refunded\n    public let media: [PaidMedia]\n\n    /// Identifier of the corresponding message with paid media; can be 0 or an identifier of a deleted message\n    public let messageId: Int64\n\n\n    public init(\n        media: [PaidMedia],\n        messageId: Int64\n    ) {\n        self.media = media\n        self.messageId = messageId\n    }\n}\n\n/// User joined the channel and subscribed to regular payments in Telegram Stars\npublic struct ChatTransactionPurposeJoin: Codable, Equatable, Hashable {\n\n    /// The number of seconds between consecutive Telegram Star debiting\n    public let period: Int\n\n\n    public init(period: Int) {\n        self.period = period\n    }\n}\n\n/// User paid for a reaction\npublic struct ChatTransactionPurposeReaction: Codable, Equatable, Hashable {\n\n    /// Identifier of the reacted message; can be 0 or an identifier of a deleted message\n    public let messageId: Int64\n\n\n    public init(messageId: Int64) {\n        self.messageId = messageId\n    }\n}\n\n/// User received Telegram Stars from a giveaway\npublic struct ChatTransactionPurposeGiveaway: Codable, Equatable, Hashable {\n\n    /// Identifier of the message with giveaway; can be 0 or an identifier of a deleted message\n    public let giveawayMessageId: Int64\n\n\n    public init(giveawayMessageId: Int64) {\n        self.giveawayMessageId = giveawayMessageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatType.swift",
    "content": "//\n//  ChatType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the type of chat\npublic indirect enum ChatType: Codable, Equatable, Hashable {\n\n    /// An ordinary chat with a user\n    case chatTypePrivate(ChatTypePrivate)\n\n    /// A basic group (a chat with 0-200 other users)\n    case chatTypeBasicGroup(ChatTypeBasicGroup)\n\n    /// A supergroup or channel (with unlimited members)\n    case chatTypeSupergroup(ChatTypeSupergroup)\n\n    /// A secret chat with a user\n    case chatTypeSecret(ChatTypeSecret)\n\n\n    private enum Kind: String, Codable {\n        case chatTypePrivate\n        case chatTypeBasicGroup\n        case chatTypeSupergroup\n        case chatTypeSecret\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .chatTypePrivate:\n            let value = try ChatTypePrivate(from: decoder)\n            self = .chatTypePrivate(value)\n        case .chatTypeBasicGroup:\n            let value = try ChatTypeBasicGroup(from: decoder)\n            self = .chatTypeBasicGroup(value)\n        case .chatTypeSupergroup:\n            let value = try ChatTypeSupergroup(from: decoder)\n            self = .chatTypeSupergroup(value)\n        case .chatTypeSecret:\n            let value = try ChatTypeSecret(from: decoder)\n            self = .chatTypeSecret(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .chatTypePrivate(let value):\n            try container.encode(Kind.chatTypePrivate, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatTypeBasicGroup(let value):\n            try container.encode(Kind.chatTypeBasicGroup, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatTypeSupergroup(let value):\n            try container.encode(Kind.chatTypeSupergroup, forKey: .type)\n            try value.encode(to: encoder)\n        case .chatTypeSecret(let value):\n            try container.encode(Kind.chatTypeSecret, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// An ordinary chat with a user\npublic struct ChatTypePrivate: Codable, Equatable, Hashable {\n\n    /// User identifier\n    public let userId: Int64\n\n\n    public init(userId: Int64) {\n        self.userId = userId\n    }\n}\n\n/// A basic group (a chat with 0-200 other users)\npublic struct ChatTypeBasicGroup: Codable, Equatable, Hashable {\n\n    /// Basic group identifier\n    public let basicGroupId: Int64\n\n\n    public init(basicGroupId: Int64) {\n        self.basicGroupId = basicGroupId\n    }\n}\n\n/// A supergroup or channel (with unlimited members)\npublic struct ChatTypeSupergroup: Codable, Equatable, Hashable {\n\n    /// True, if the supergroup is a channel\n    public let isChannel: Bool\n\n    /// Supergroup or channel identifier\n    public let supergroupId: Int64\n\n\n    public init(\n        isChannel: Bool,\n        supergroupId: Int64\n    ) {\n        self.isChannel = isChannel\n        self.supergroupId = supergroupId\n    }\n}\n\n/// A secret chat with a user\npublic struct ChatTypeSecret: Codable, Equatable, Hashable {\n\n    /// Secret chat identifier\n    public let secretChatId: Int\n\n    /// User identifier of the other user in the secret chat\n    public let userId: Int64\n\n\n    public init(\n        secretChatId: Int,\n        userId: Int64\n    ) {\n        self.secretChatId = secretChatId\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Chats.swift",
    "content": "//\n//  Chats.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of chats\npublic struct Chats: Codable, Equatable, Hashable {\n\n    /// List of chat identifiers\n    public let chatIds: [Int64]\n\n    /// Approximate total number of chats found\n    public let totalCount: Int\n\n\n    public init(\n        chatIds: [Int64],\n        totalCount: Int\n    ) {\n        self.chatIds = chatIds\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChatsNearby.swift",
    "content": "//\n//  ChatsNearby.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.37-b39769be\n//  https://github.com/tdlib/td/tree/b39769be\n//\n\nimport Foundation\n\n\n/// Represents a list of chats located nearby\npublic struct ChatsNearby: Codable, Equatable, Hashable {\n\n    /// List of location-based supergroups nearby\n    public let supergroupsNearby: [ChatNearby]\n\n    /// List of users nearby\n    public let usersNearby: [ChatNearby]\n\n\n    public init(\n        supergroupsNearby: [ChatNearby],\n        usersNearby: [ChatNearby]\n    ) {\n        self.supergroupsNearby = supergroupsNearby\n        self.usersNearby = usersNearby\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckAuthenticationBotToken.swift",
    "content": "//\n//  CheckAuthenticationBotToken.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks the authentication token of a bot; to log in as a bot. Works only when the current authorization state is authorizationStateWaitPhoneNumber. Can be used instead of setAuthenticationPhoneNumber and checkAuthenticationCode to log in\npublic struct CheckAuthenticationBotToken: Codable, Equatable, Hashable {\n\n    /// The bot token\n    public let token: String?\n\n\n    public init(token: String?) {\n        self.token = token\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckAuthenticationCode.swift",
    "content": "//\n//  CheckAuthenticationCode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks the authentication code. Works only when the current authorization state is authorizationStateWaitCode\npublic struct CheckAuthenticationCode: Codable, Equatable, Hashable {\n\n    /// Authentication code to check\n    public let code: String?\n\n\n    public init(code: String?) {\n        self.code = code\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckAuthenticationEmailCode.swift",
    "content": "//\n//  CheckAuthenticationEmailCode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks the authentication of an email address. Works only when the current authorization state is authorizationStateWaitEmailCode\npublic struct CheckAuthenticationEmailCode: Codable, Equatable, Hashable {\n\n    /// Email address authentication to check\n    public let code: EmailAddressAuthentication?\n\n\n    public init(code: EmailAddressAuthentication?) {\n        self.code = code\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckAuthenticationPasskey.swift",
    "content": "//\n//  CheckAuthenticationPasskey.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks a passkey to log in to the corresponding account. Call getAuthenticationPasskeyParameters to get parameters for the passkey. Works only when the current authorization state is authorizationStateWaitPhoneNumber or authorizationStateWaitOtherDeviceConfirmation, or if there is no pending authentication query and the current authorization state is authorizationStateWaitPremiumPurchase, authorizationStateWaitEmailAddress, authorizationStateWaitEmailCode, authorizationStateWaitCode, authorizationStateWaitRegistration, or authorizationStateWaitPassword\npublic struct CheckAuthenticationPasskey: Codable, Equatable, Hashable {\n\n    /// Authenticator data of the application that created the credential\n    public let authenticatorData: Data?\n\n    /// JSON-encoded client data\n    public let clientData: String?\n\n    /// Base64url-encoded identifier of the credential\n    public let credentialId: String?\n\n    /// Cryptographic signature of the credential\n    public let signature: Data?\n\n    /// User handle of the passkey\n    public let userHandle: Data?\n\n\n    public init(\n        authenticatorData: Data?,\n        clientData: String?,\n        credentialId: String?,\n        signature: Data?,\n        userHandle: Data?\n    ) {\n        self.authenticatorData = authenticatorData\n        self.clientData = clientData\n        self.credentialId = credentialId\n        self.signature = signature\n        self.userHandle = userHandle\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckAuthenticationPassword.swift",
    "content": "//\n//  CheckAuthenticationPassword.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks the 2-step verification password for correctness. Works only when the current authorization state is authorizationStateWaitPassword\npublic struct CheckAuthenticationPassword: Codable, Equatable, Hashable {\n\n    /// The 2-step verification password to check\n    public let password: String?\n\n\n    public init(password: String?) {\n        self.password = password\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckAuthenticationPasswordRecoveryCode.swift",
    "content": "//\n//  CheckAuthenticationPasswordRecoveryCode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks whether a 2-step verification password recovery code sent to an email address is valid. Works only when the current authorization state is authorizationStateWaitPassword\npublic struct CheckAuthenticationPasswordRecoveryCode: Codable, Equatable, Hashable {\n\n    /// Recovery code to check\n    public let recoveryCode: String?\n\n\n    public init(recoveryCode: String?) {\n        self.recoveryCode = recoveryCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckAuthenticationPremiumPurchase.swift",
    "content": "//\n//  CheckAuthenticationPremiumPurchase.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks whether an in-store purchase of Telegram Premium is possible before authorization. Works only when the current authorization state is authorizationStateWaitPremiumPurchase\npublic struct CheckAuthenticationPremiumPurchase: Codable, Equatable, Hashable {\n\n    /// Paid amount, in the smallest units of the currency\n    public let amount: Int64?\n\n    /// ISO 4217 currency code of the payment currency\n    public let currency: String?\n\n    /// The number of days for which the Telegram Premium subscription will be granted\n    public let premiumDayCount: Int?\n\n\n    public init(\n        amount: Int64?,\n        currency: String?,\n        premiumDayCount: Int?\n    ) {\n        self.amount = amount\n        self.currency = currency\n        self.premiumDayCount = premiumDayCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckBotUsername.swift",
    "content": "//\n//  CheckBotUsername.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks whether a username can be set for a new bot. Use checkChatUsername to check username for other chat types\npublic struct CheckBotUsername: Codable, Equatable, Hashable {\n\n    /// Username to be checked\n    public let username: String?\n\n\n    public init(username: String?) {\n        self.username = username\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckChatFolderInviteLink.swift",
    "content": "//\n//  CheckChatFolderInviteLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks the validity of an invite link for a chat folder and returns information about the corresponding chat folder\npublic struct CheckChatFolderInviteLink: Codable, Equatable, Hashable {\n\n    /// Invite link to be checked\n    public let inviteLink: String?\n\n\n    public init(inviteLink: String?) {\n        self.inviteLink = inviteLink\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckChatInviteLink.swift",
    "content": "//\n//  CheckChatInviteLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks the validity of an invite link for a chat and returns information about the corresponding chat\npublic struct CheckChatInviteLink: Codable, Equatable, Hashable {\n\n    /// Invite link to be checked\n    public let inviteLink: String?\n\n\n    public init(inviteLink: String?) {\n        self.inviteLink = inviteLink\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckChatUsername.swift",
    "content": "//\n//  CheckChatUsername.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks whether a username can be set for a chat\npublic struct CheckChatUsername: Codable, Equatable, Hashable {\n\n    /// Chat identifier; must be identifier of a supergroup chat, or a channel chat, or a private chat with self, or 0 if the chat is being created\n    public let chatId: Int64?\n\n    /// Username to be checked\n    public let username: String?\n\n\n    public init(\n        chatId: Int64?,\n        username: String?\n    ) {\n        self.chatId = chatId\n        self.username = username\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckChatUsernameResult.swift",
    "content": "//\n//  CheckChatUsernameResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents result of checking whether a username can be set for a chat\npublic indirect enum CheckChatUsernameResult: Codable, Equatable, Hashable {\n\n    /// The username can be set\n    case checkChatUsernameResultOk\n\n    /// The username is invalid\n    case checkChatUsernameResultUsernameInvalid\n\n    /// The username is occupied\n    case checkChatUsernameResultUsernameOccupied\n\n    /// The username can be purchased at https://fragment.com. Information about the username can be received using getCollectibleItemInfo\n    case checkChatUsernameResultUsernamePurchasable\n\n    /// The user has too many chats with username, one of them must be made private first\n    case checkChatUsernameResultPublicChatsTooMany\n\n    /// The user can't be a member of a public supergroup\n    case checkChatUsernameResultPublicGroupsUnavailable\n\n\n    private enum Kind: String, Codable {\n        case checkChatUsernameResultOk\n        case checkChatUsernameResultUsernameInvalid\n        case checkChatUsernameResultUsernameOccupied\n        case checkChatUsernameResultUsernamePurchasable\n        case checkChatUsernameResultPublicChatsTooMany\n        case checkChatUsernameResultPublicGroupsUnavailable\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .checkChatUsernameResultOk:\n            self = .checkChatUsernameResultOk\n        case .checkChatUsernameResultUsernameInvalid:\n            self = .checkChatUsernameResultUsernameInvalid\n        case .checkChatUsernameResultUsernameOccupied:\n            self = .checkChatUsernameResultUsernameOccupied\n        case .checkChatUsernameResultUsernamePurchasable:\n            self = .checkChatUsernameResultUsernamePurchasable\n        case .checkChatUsernameResultPublicChatsTooMany:\n            self = .checkChatUsernameResultPublicChatsTooMany\n        case .checkChatUsernameResultPublicGroupsUnavailable:\n            self = .checkChatUsernameResultPublicGroupsUnavailable\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .checkChatUsernameResultOk:\n            try container.encode(Kind.checkChatUsernameResultOk, forKey: .type)\n        case .checkChatUsernameResultUsernameInvalid:\n            try container.encode(Kind.checkChatUsernameResultUsernameInvalid, forKey: .type)\n        case .checkChatUsernameResultUsernameOccupied:\n            try container.encode(Kind.checkChatUsernameResultUsernameOccupied, forKey: .type)\n        case .checkChatUsernameResultUsernamePurchasable:\n            try container.encode(Kind.checkChatUsernameResultUsernamePurchasable, forKey: .type)\n        case .checkChatUsernameResultPublicChatsTooMany:\n            try container.encode(Kind.checkChatUsernameResultPublicChatsTooMany, forKey: .type)\n        case .checkChatUsernameResultPublicGroupsUnavailable:\n            try container.encode(Kind.checkChatUsernameResultPublicGroupsUnavailable, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckCreatedPublicChatsLimit.swift",
    "content": "//\n//  CheckCreatedPublicChatsLimit.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks whether the maximum number of owned public chats has been reached. Returns corresponding error if the limit was reached. The limit can be increased with Telegram Premium\npublic struct CheckCreatedPublicChatsLimit: Codable, Equatable, Hashable {\n\n    /// Type of the public chats, for which to check the limit\n    public let type: PublicChatType?\n\n\n    public init(type: PublicChatType?) {\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckEmailAddressVerificationCode.swift",
    "content": "//\n//  CheckEmailAddressVerificationCode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks the email address verification code for Telegram Passport\npublic struct CheckEmailAddressVerificationCode: Codable, Equatable, Hashable {\n\n    /// Verification code to check\n    public let code: String?\n\n\n    public init(code: String?) {\n        self.code = code\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckLoginEmailAddressCode.swift",
    "content": "//\n//  CheckLoginEmailAddressCode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks the login email address authentication\npublic struct CheckLoginEmailAddressCode: Codable, Equatable, Hashable {\n\n    /// Email address authentication to check\n    public let code: EmailAddressAuthentication?\n\n\n    public init(code: EmailAddressAuthentication?) {\n        self.code = code\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckOauthRequestMatchCode.swift",
    "content": "//\n//  CheckOauthRequestMatchCode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks a match-code for an OAuth authorization request. If fails, then the authorization request has failed. Otherwise, authorization confirmation dialog must be shown and the link must be processed using acceptOauthRequest or declineOauthRequest\npublic struct CheckOauthRequestMatchCode: Codable, Equatable, Hashable {\n\n    /// The matching code chosen by the user\n    public let matchCode: String?\n\n    /// URL of the OAuth deep link\n    public let url: String?\n\n\n    public init(\n        matchCode: String?,\n        url: String?\n    ) {\n        self.matchCode = matchCode\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckPasswordRecoveryCode.swift",
    "content": "//\n//  CheckPasswordRecoveryCode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks whether a 2-step verification password recovery code sent to an email address is valid\npublic struct CheckPasswordRecoveryCode: Codable, Equatable, Hashable {\n\n    /// Recovery code to check\n    public let recoveryCode: String?\n\n\n    public init(recoveryCode: String?) {\n        self.recoveryCode = recoveryCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckPhoneNumberCode.swift",
    "content": "//\n//  CheckPhoneNumberCode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks the authentication code and completes the request for which the code was sent if appropriate\npublic struct CheckPhoneNumberCode: Codable, Equatable, Hashable {\n\n    /// Authentication code to check\n    public let code: String?\n\n\n    public init(code: String?) {\n        self.code = code\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckPremiumGiftCode.swift",
    "content": "//\n//  CheckPremiumGiftCode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a Telegram Premium gift code\npublic struct CheckPremiumGiftCode: Codable, Equatable, Hashable {\n\n    /// The code to check\n    public let code: String?\n\n\n    public init(code: String?) {\n        self.code = code\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckQuickReplyShortcutName.swift",
    "content": "//\n//  CheckQuickReplyShortcutName.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks validness of a name for a quick reply shortcut. Can be called synchronously\npublic struct CheckQuickReplyShortcutName: Codable, Equatable, Hashable {\n\n    /// The name of the shortcut; 1-32 characters\n    public let name: String?\n\n\n    public init(name: String?) {\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckRecoveryEmailAddressCode.swift",
    "content": "//\n//  CheckRecoveryEmailAddressCode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks the 2-step verification recovery email address verification code\npublic struct CheckRecoveryEmailAddressCode: Codable, Equatable, Hashable {\n\n    /// Verification code to check\n    public let code: String?\n\n\n    public init(code: String?) {\n        self.code = code\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckStickerSetName.swift",
    "content": "//\n//  CheckStickerSetName.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks whether a name can be used for a new sticker set\npublic struct CheckStickerSetName: Codable, Equatable, Hashable {\n\n    /// Name to be checked\n    public let name: String?\n\n\n    public init(name: String?) {\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckStickerSetNameResult.swift",
    "content": "//\n//  CheckStickerSetNameResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents result of checking whether a name can be used for a new sticker set\npublic indirect enum CheckStickerSetNameResult: Codable, Equatable, Hashable {\n\n    /// The name can be set\n    case checkStickerSetNameResultOk\n\n    /// The name is invalid\n    case checkStickerSetNameResultNameInvalid\n\n    /// The name is occupied\n    case checkStickerSetNameResultNameOccupied\n\n\n    private enum Kind: String, Codable {\n        case checkStickerSetNameResultOk\n        case checkStickerSetNameResultNameInvalid\n        case checkStickerSetNameResultNameOccupied\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .checkStickerSetNameResultOk:\n            self = .checkStickerSetNameResultOk\n        case .checkStickerSetNameResultNameInvalid:\n            self = .checkStickerSetNameResultNameInvalid\n        case .checkStickerSetNameResultNameOccupied:\n            self = .checkStickerSetNameResultNameOccupied\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .checkStickerSetNameResultOk:\n            try container.encode(Kind.checkStickerSetNameResultOk, forKey: .type)\n        case .checkStickerSetNameResultNameInvalid:\n            try container.encode(Kind.checkStickerSetNameResultNameInvalid, forKey: .type)\n        case .checkStickerSetNameResultNameOccupied:\n            try container.encode(Kind.checkStickerSetNameResultNameOccupied, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CheckWebAppFileDownload.swift",
    "content": "//\n//  CheckWebAppFileDownload.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks whether a file can be downloaded and saved locally by Web App request\npublic struct CheckWebAppFileDownload: Codable, Equatable, Hashable {\n\n    /// Identifier of the bot, providing the Web App\n    public let botUserId: Int64?\n\n    /// Name of the file\n    public let fileName: String?\n\n    /// URL of the file\n    public let url: String?\n\n\n    public init(\n        botUserId: Int64?,\n        fileName: String?,\n        url: String?\n    ) {\n        self.botUserId = botUserId\n        self.fileName = fileName\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Checklist.swift",
    "content": "//\n//  Checklist.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a checklist\npublic struct Checklist: Codable, Equatable, Hashable {\n\n    /// True, if the current user can add tasks to the list if they have Telegram Premium subscription\n    public let canAddTasks: Bool\n\n    /// True, if the current user can mark tasks as done or not done if they have Telegram Premium subscription\n    public let canMarkTasksAsDone: Bool\n\n    /// True, if users other than creator of the list can add tasks to the list\n    public let othersCanAddTasks: Bool\n\n    /// True, if users other than creator of the list can mark tasks as done or not done. If true, then the checklist is called \"group checklist\"\n    public let othersCanMarkTasksAsDone: Bool\n\n    /// List of tasks in the checklist\n    public let tasks: [ChecklistTask]\n\n    /// Title of the checklist; may contain only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities\n    public let title: FormattedText\n\n\n    public init(\n        canAddTasks: Bool,\n        canMarkTasksAsDone: Bool,\n        othersCanAddTasks: Bool,\n        othersCanMarkTasksAsDone: Bool,\n        tasks: [ChecklistTask],\n        title: FormattedText\n    ) {\n        self.canAddTasks = canAddTasks\n        self.canMarkTasksAsDone = canMarkTasksAsDone\n        self.othersCanAddTasks = othersCanAddTasks\n        self.othersCanMarkTasksAsDone = othersCanMarkTasksAsDone\n        self.tasks = tasks\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ChecklistTask.swift",
    "content": "//\n//  ChecklistTask.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a task in a checklist\npublic struct ChecklistTask: Codable, Equatable, Hashable, Identifiable {\n\n    /// Identifier of the user or chat that completed the task; may be null if the task isn't completed yet\n    public let completedBy: MessageSender?\n\n    /// Point in time (Unix timestamp) when the task was completed; 0 if the task isn't completed\n    public let completionDate: Int\n\n    /// Unique identifier of the task\n    public let id: Int\n\n    /// Text of the task; may contain only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, DateTime and automatically found entities\n    public let text: FormattedText\n\n\n    public init(\n        completedBy: MessageSender?,\n        completionDate: Int,\n        id: Int,\n        text: FormattedText\n    ) {\n        self.completedBy = completedBy\n        self.completionDate = completionDate\n        self.id = id\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CleanFileName.swift",
    "content": "//\n//  CleanFileName.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes potentially dangerous characters from the name of a file. Returns an empty string on failure. Can be called synchronously\npublic struct CleanFileName: Codable, Equatable, Hashable {\n\n    /// File name or path to the file\n    public let fileName: String?\n\n\n    public init(fileName: String?) {\n        self.fileName = fileName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ClearAllDraftMessages.swift",
    "content": "//\n//  ClearAllDraftMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Clears message drafts in all chats\npublic struct ClearAllDraftMessages: Codable, Equatable, Hashable {\n\n    /// Pass true to keep local message drafts in secret chats\n    public let excludeSecretChats: Bool?\n\n\n    public init(excludeSecretChats: Bool?) {\n        self.excludeSecretChats = excludeSecretChats\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ClearAutosaveSettingsExceptions.swift",
    "content": "//\n//  ClearAutosaveSettingsExceptions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Clears the list of all autosave settings exceptions. The method is guaranteed to work only after at least one call to getAutosaveSettings\npublic struct ClearAutosaveSettingsExceptions: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ClearImportedContacts.swift",
    "content": "//\n//  ClearImportedContacts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Clears all imported contacts, contact list remains unchanged\npublic struct ClearImportedContacts: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ClearRecentEmojiStatuses.swift",
    "content": "//\n//  ClearRecentEmojiStatuses.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Clears the list of recently used emoji statuses for self status\npublic struct ClearRecentEmojiStatuses: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ClearRecentReactions.swift",
    "content": "//\n//  ClearRecentReactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Clears the list of recently used reactions\npublic struct ClearRecentReactions: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ClearRecentStickers.swift",
    "content": "//\n//  ClearRecentStickers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Clears the list of recently used stickers\npublic struct ClearRecentStickers: Codable, Equatable, Hashable {\n\n    /// Pass true to clear the list of stickers recently attached to photo or video files; pass false to clear the list of recently sent stickers\n    public let isAttached: Bool?\n\n\n    public init(isAttached: Bool?) {\n        self.isAttached = isAttached\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ClearRecentlyFoundChats.swift",
    "content": "//\n//  ClearRecentlyFoundChats.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Clears the list of recently found chats\npublic struct ClearRecentlyFoundChats: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ClearSearchedForHashtags.swift",
    "content": "//\n//  ClearSearchedForHashtags.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.30-4257a341\n//  https://github.com/tdlib/td/tree/4257a341\n//\n\nimport Foundation\n\n\n/// Clears the list of recently searched for hashtags\npublic struct ClearSearchedForHashtags: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ClearSearchedForTags.swift",
    "content": "//\n//  ClearSearchedForTags.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Clears the list of recently searched for hashtags or cashtags\npublic struct ClearSearchedForTags: Codable, Equatable, Hashable {\n\n    /// Pass true to clear the list of recently searched for cashtags; otherwise, the list of recently searched for hashtags will be cleared\n    public let clearCashtags: Bool?\n\n\n    public init(clearCashtags: Bool?) {\n        self.clearCashtags = clearCashtags\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ClickAnimatedEmojiMessage.swift",
    "content": "//\n//  ClickAnimatedEmojiMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that a message with an animated emoji was clicked by the user. Returns a big animated sticker to be played or a 404 error if usual animation needs to be played\npublic struct ClickAnimatedEmojiMessage: Codable, Equatable, Hashable {\n\n    /// Chat identifier of the message\n    public let chatId: Int64?\n\n    /// Identifier of the clicked message\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ClickChatSponsoredMessage.swift",
    "content": "//\n//  ClickChatSponsoredMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that the user opened the sponsored chat via the button, the name, the chat photo, a mention in the sponsored message text, or the media in the sponsored message\npublic struct ClickChatSponsoredMessage: Codable, Equatable, Hashable {\n\n    /// Chat identifier of the sponsored message\n    public let chatId: Int64?\n\n    /// Pass true if the user expanded the video from the sponsored message fullscreen before the click\n    public let fromFullscreen: Bool?\n\n    /// Pass true if the media was clicked in the sponsored message\n    public let isMediaClick: Bool?\n\n    /// Identifier of the sponsored message\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        fromFullscreen: Bool?,\n        isMediaClick: Bool?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.fromFullscreen = fromFullscreen\n        self.isMediaClick = isMediaClick\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ClickPremiumSubscriptionButton.swift",
    "content": "//\n//  ClickPremiumSubscriptionButton.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that the user clicked Premium subscription button on the Premium features screen\npublic struct ClickPremiumSubscriptionButton: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ClickVideoMessageAdvertisement.swift",
    "content": "//\n//  ClickVideoMessageAdvertisement.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that the user clicked a video message advertisement\npublic struct ClickVideoMessageAdvertisement: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the advertisement\n    public let advertisementUniqueId: Int64?\n\n\n    public init(advertisementUniqueId: Int64?) {\n        self.advertisementUniqueId = advertisementUniqueId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Close.swift",
    "content": "//\n//  Close.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Closes the TDLib instance. All databases will be flushed to disk and properly closed. After the close completes, updateAuthorizationState with authorizationStateClosed will be sent. Can be called before initialization\npublic struct Close: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CloseBirthdayUser.swift",
    "content": "//\n//  CloseBirthdayUser.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a user who had or will have a birthday soon\npublic struct CloseBirthdayUser: Codable, Equatable, Hashable {\n\n    /// Birthdate of the user\n    public let birthdate: Birthdate\n\n    /// User identifier\n    public let userId: Int64\n\n\n    public init(\n        birthdate: Birthdate,\n        userId: Int64\n    ) {\n        self.birthdate = birthdate\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CloseChat.swift",
    "content": "//\n//  CloseChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that the chat is closed by the user. Many useful activities depend on the chat being opened or closed\npublic struct CloseChat: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CloseGiftAuction.swift",
    "content": "//\n//  CloseGiftAuction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that a gift auction was closed by the user\npublic struct CloseGiftAuction: Codable, Equatable, Hashable {\n\n    /// Identifier of the gift, which auction was closed\n    public let giftId: TdInt64?\n\n\n    public init(giftId: TdInt64?) {\n        self.giftId = giftId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CloseSecretChat.swift",
    "content": "//\n//  CloseSecretChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Closes a secret chat, effectively transferring its state to secretChatStateClosed\npublic struct CloseSecretChat: Codable, Equatable, Hashable {\n\n    /// Secret chat identifier\n    public let secretChatId: Int?\n\n\n    public init(secretChatId: Int?) {\n        self.secretChatId = secretChatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CloseStory.swift",
    "content": "//\n//  CloseStory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that a story is closed by the user\npublic struct CloseStory: Codable, Equatable, Hashable {\n\n    /// The identifier of the story\n    public let storyId: Int?\n\n    /// The identifier of the poster of the story to close\n    public let storyPosterChatId: Int64?\n\n\n    public init(\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) {\n        self.storyId = storyId\n        self.storyPosterChatId = storyPosterChatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CloseWebApp.swift",
    "content": "//\n//  CloseWebApp.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that a previously opened Web App was closed\npublic struct CloseWebApp: Codable, Equatable, Hashable {\n\n    /// Identifier of Web App launch, received from openWebApp\n    public let webAppLaunchId: TdInt64?\n\n\n    public init(webAppLaunchId: TdInt64?) {\n        self.webAppLaunchId = webAppLaunchId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ClosedVectorPath.swift",
    "content": "//\n//  ClosedVectorPath.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a closed vector path. The path begins at the end point of the last command. The coordinate system origin is in the upper-left corner\npublic struct ClosedVectorPath: Codable, Equatable, Hashable {\n\n    /// List of vector path commands\n    public let commands: [VectorPathCommand]\n\n\n    public init(commands: [VectorPathCommand]) {\n        self.commands = commands\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CollectibleItemInfo.swift",
    "content": "//\n//  CollectibleItemInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a collectible item and its last purchase\npublic struct CollectibleItemInfo: Codable, Equatable, Hashable {\n\n    /// The paid amount, in the smallest units of the currency\n    public let amount: Int64\n\n    /// Cryptocurrency used to pay for the item\n    public let cryptocurrency: String\n\n    /// The paid amount, in the smallest units of the cryptocurrency\n    public let cryptocurrencyAmount: TdInt64\n\n    /// Currency for the paid amount\n    public let currency: String\n\n    /// Point in time (Unix timestamp) when the item was purchased\n    public let purchaseDate: Int\n\n    /// Individual URL for the item on https://fragment.com\n    public let url: String\n\n\n    public init(\n        amount: Int64,\n        cryptocurrency: String,\n        cryptocurrencyAmount: TdInt64,\n        currency: String,\n        purchaseDate: Int,\n        url: String\n    ) {\n        self.amount = amount\n        self.cryptocurrency = cryptocurrency\n        self.cryptocurrencyAmount = cryptocurrencyAmount\n        self.currency = currency\n        self.purchaseDate = purchaseDate\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CollectibleItemType.swift",
    "content": "//\n//  CollectibleItemType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a collectible item that can be purchased at https://fragment.com\npublic indirect enum CollectibleItemType: Codable, Equatable, Hashable {\n\n    /// A username\n    case collectibleItemTypeUsername(CollectibleItemTypeUsername)\n\n    /// A phone number\n    case collectibleItemTypePhoneNumber(CollectibleItemTypePhoneNumber)\n\n\n    private enum Kind: String, Codable {\n        case collectibleItemTypeUsername\n        case collectibleItemTypePhoneNumber\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .collectibleItemTypeUsername:\n            let value = try CollectibleItemTypeUsername(from: decoder)\n            self = .collectibleItemTypeUsername(value)\n        case .collectibleItemTypePhoneNumber:\n            let value = try CollectibleItemTypePhoneNumber(from: decoder)\n            self = .collectibleItemTypePhoneNumber(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .collectibleItemTypeUsername(let value):\n            try container.encode(Kind.collectibleItemTypeUsername, forKey: .type)\n            try value.encode(to: encoder)\n        case .collectibleItemTypePhoneNumber(let value):\n            try container.encode(Kind.collectibleItemTypePhoneNumber, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A username\npublic struct CollectibleItemTypeUsername: Codable, Equatable, Hashable {\n\n    /// The username\n    public let username: String\n\n\n    public init(username: String) {\n        self.username = username\n    }\n}\n\n/// A phone number\npublic struct CollectibleItemTypePhoneNumber: Codable, Equatable, Hashable {\n\n    /// The phone number\n    public let phoneNumber: String\n\n\n    public init(phoneNumber: String) {\n        self.phoneNumber = phoneNumber\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CommitPendingLiveStoryReactions.swift",
    "content": "//\n//  CommitPendingLiveStoryReactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Applies all pending paid reactions in a live story group call\npublic struct CommitPendingLiveStoryReactions: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n\n    public init(groupCallId: Int?) {\n        self.groupCallId = groupCallId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CommitPendingPaidMessageReactions.swift",
    "content": "//\n//  CommitPendingPaidMessageReactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Applies all pending paid reactions on a message\npublic struct CommitPendingPaidMessageReactions: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the message belongs\n    public let chatId: Int64?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ComposeTextWithAi.swift",
    "content": "//\n//  ComposeTextWithAi.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes text using an AI model; must not be used in secret chats. May return an error with a message \"AICOMPOSE_FLOOD_PREMIUM\" if Telegram Premium is required to send further requests\npublic struct ComposeTextWithAi: Codable, Equatable, Hashable {\n\n    /// Pass true to add emoji to the text\n    public let addEmojis: Bool?\n\n    /// Name of the style of the resulted text; handle updateTextCompositionStyles to get the list of supported styles; pass an empty string to keep the current style of the text\n    public let styleName: String?\n\n    /// The original text\n    public let text: FormattedText?\n\n    /// Pass a language code to which the text will be translated; pass an empty string if translation isn't needed. See translateText.to_language_code for the list of supported values\n    public let translateToLanguageCode: String?\n\n\n    public init(\n        addEmojis: Bool?,\n        styleName: String?,\n        text: FormattedText?,\n        translateToLanguageCode: String?\n    ) {\n        self.addEmojis = addEmojis\n        self.styleName = styleName\n        self.text = text\n        self.translateToLanguageCode = translateToLanguageCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ConfirmQrCodeAuthentication.swift",
    "content": "//\n//  ConfirmQrCodeAuthentication.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Confirms QR code authentication on another device. Returns created session on success\npublic struct ConfirmQrCodeAuthentication: Codable, Equatable, Hashable {\n\n    /// A link from a QR code. The link must be scanned by the in-app camera\n    public let link: String?\n\n\n    public init(link: String?) {\n        self.link = link\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ConfirmSession.swift",
    "content": "//\n//  ConfirmSession.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Confirms an unconfirmed session of the current user from another device\npublic struct ConfirmSession: Codable, Equatable, Hashable {\n\n    /// Session identifier\n    public let sessionId: TdInt64?\n\n\n    public init(sessionId: TdInt64?) {\n        self.sessionId = sessionId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ConnectAffiliateProgram.swift",
    "content": "//\n//  ConnectAffiliateProgram.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Connects an affiliate program to the given affiliate. Returns information about the connected affiliate program\npublic struct ConnectAffiliateProgram: Codable, Equatable, Hashable {\n\n    /// The affiliate to which the affiliate program will be connected\n    public let affiliate: AffiliateType?\n\n    /// Identifier of the bot, which affiliate program is connected\n    public let botUserId: Int64?\n\n\n    public init(\n        affiliate: AffiliateType?,\n        botUserId: Int64?\n    ) {\n        self.affiliate = affiliate\n        self.botUserId = botUserId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ConnectChatAffiliateProgram.swift",
    "content": "//\n//  ConnectChatAffiliateProgram.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.41-53acb2b5\n//  https://github.com/tdlib/td/tree/53acb2b5\n//\n\nimport Foundation\n\n\n/// Connects an affiliate program to the given chat. Returns information about the connected affiliate program\npublic struct ConnectChatAffiliateProgram: Codable, Equatable, Hashable {\n\n    /// Identifier of the bot, which affiliate program is connected\n    public let botUserId: Int64?\n\n    /// Identifier of the chat to which the affiliate program will be connected. Can be an identifier of the Saved Messages chat, of a chat with an owned bot, or of a channel chat with can_post_messages administrator right\n    public let chatId: Int64?\n\n\n    public init(\n        botUserId: Int64?,\n        chatId: Int64?\n    ) {\n        self.botUserId = botUserId\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ConnectedAffiliateProgram.swift",
    "content": "//\n//  ConnectedAffiliateProgram.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an affiliate program that was connected to an affiliate\npublic struct ConnectedAffiliateProgram: Codable, Equatable, Hashable {\n\n    /// User identifier of the bot created the program\n    public let botUserId: Int64\n\n    /// Point in time (Unix timestamp) when the affiliate program was connected\n    public let connectionDate: Int\n\n    /// True, if the program was canceled by the bot, or disconnected by the chat owner and isn't available anymore\n    public let isDisconnected: Bool\n\n    /// The parameters of the affiliate program\n    public let parameters: AffiliateProgramParameters\n\n    /// The number of Telegram Stars that were earned by the affiliate program\n    public let revenueStarCount: Int64\n\n    /// The link that can be used to refer users if the program is still active\n    public let url: String\n\n    /// The number of users that used the affiliate program\n    public let userCount: TdInt64\n\n\n    public init(\n        botUserId: Int64,\n        connectionDate: Int,\n        isDisconnected: Bool,\n        parameters: AffiliateProgramParameters,\n        revenueStarCount: Int64,\n        url: String,\n        userCount: TdInt64\n    ) {\n        self.botUserId = botUserId\n        self.connectionDate = connectionDate\n        self.isDisconnected = isDisconnected\n        self.parameters = parameters\n        self.revenueStarCount = revenueStarCount\n        self.url = url\n        self.userCount = userCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ConnectedAffiliatePrograms.swift",
    "content": "//\n//  ConnectedAffiliatePrograms.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of affiliate programs that were connected to an affiliate\npublic struct ConnectedAffiliatePrograms: Codable, Equatable, Hashable {\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// The list of connected affiliate programs\n    public let programs: [ConnectedAffiliateProgram]\n\n    /// The total number of affiliate programs that were connected to the affiliate\n    public let totalCount: Int\n\n\n    public init(\n        nextOffset: String,\n        programs: [ConnectedAffiliateProgram],\n        totalCount: Int\n    ) {\n        self.nextOffset = nextOffset\n        self.programs = programs\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ConnectedWebsite.swift",
    "content": "//\n//  ConnectedWebsite.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about one website the current user is logged in with Telegram\npublic struct ConnectedWebsite: Codable, Equatable, Hashable, Identifiable {\n\n    /// User identifier of a bot linked with the website\n    public let botUserId: Int64\n\n    /// The version of a browser used to log in\n    public let browser: String\n\n    /// The domain name of the website\n    public let domainName: String\n\n    /// Website identifier\n    public let id: TdInt64\n\n    /// IP address from which the user was logged in, in human-readable format\n    public let ipAddress: String\n\n    /// Point in time (Unix timestamp) when obtained authorization was last used\n    public let lastActiveDate: Int\n\n    /// Human-readable description of a country and a region from which the user was logged in, based on the IP address\n    public let location: String\n\n    /// Point in time (Unix timestamp) when the user was logged in\n    public let logInDate: Int\n\n    /// Operating system the browser is running on\n    public let platform: String\n\n\n    public init(\n        botUserId: Int64,\n        browser: String,\n        domainName: String,\n        id: TdInt64,\n        ipAddress: String,\n        lastActiveDate: Int,\n        location: String,\n        logInDate: Int,\n        platform: String\n    ) {\n        self.botUserId = botUserId\n        self.browser = browser\n        self.domainName = domainName\n        self.id = id\n        self.ipAddress = ipAddress\n        self.lastActiveDate = lastActiveDate\n        self.location = location\n        self.logInDate = logInDate\n        self.platform = platform\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ConnectedWebsites.swift",
    "content": "//\n//  ConnectedWebsites.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of websites the current user is logged in with Telegram\npublic struct ConnectedWebsites: Codable, Equatable, Hashable {\n\n    /// List of connected websites\n    public let websites: [ConnectedWebsite]\n\n\n    public init(websites: [ConnectedWebsite]) {\n        self.websites = websites\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ConnectionState.swift",
    "content": "//\n//  ConnectionState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the current state of the connection to Telegram servers\npublic indirect enum ConnectionState: Codable, Equatable, Hashable {\n\n    /// Waiting for the network to become available. Use setNetworkType to change the available network type\n    case connectionStateWaitingForNetwork\n\n    /// Establishing a connection with a proxy server\n    case connectionStateConnectingToProxy\n\n    /// Establishing a connection to the Telegram servers\n    case connectionStateConnecting\n\n    /// Downloading data expected to be received while the application was offline\n    case connectionStateUpdating\n\n    /// There is a working connection to the Telegram servers\n    case connectionStateReady\n\n\n    private enum Kind: String, Codable {\n        case connectionStateWaitingForNetwork\n        case connectionStateConnectingToProxy\n        case connectionStateConnecting\n        case connectionStateUpdating\n        case connectionStateReady\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .connectionStateWaitingForNetwork:\n            self = .connectionStateWaitingForNetwork\n        case .connectionStateConnectingToProxy:\n            self = .connectionStateConnectingToProxy\n        case .connectionStateConnecting:\n            self = .connectionStateConnecting\n        case .connectionStateUpdating:\n            self = .connectionStateUpdating\n        case .connectionStateReady:\n            self = .connectionStateReady\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .connectionStateWaitingForNetwork:\n            try container.encode(Kind.connectionStateWaitingForNetwork, forKey: .type)\n        case .connectionStateConnectingToProxy:\n            try container.encode(Kind.connectionStateConnectingToProxy, forKey: .type)\n        case .connectionStateConnecting:\n            try container.encode(Kind.connectionStateConnecting, forKey: .type)\n        case .connectionStateUpdating:\n            try container.encode(Kind.connectionStateUpdating, forKey: .type)\n        case .connectionStateReady:\n            try container.encode(Kind.connectionStateReady, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Contact.swift",
    "content": "//\n//  Contact.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a contact of a user\npublic struct Contact: Codable, Equatable, Hashable {\n\n    /// First name of the user; 1-64 characters\n    public let firstName: String\n\n    /// Last name of the user; 0-64 characters\n    public let lastName: String\n\n    /// Phone number of the user\n    public let phoneNumber: String\n\n    /// Identifier of the user, if known; 0 otherwise\n    public let userId: Int64\n\n    /// Additional data about the user in a form of vCard; 0-2048 bytes in length\n    public let vcard: String\n\n\n    public init(\n        firstName: String,\n        lastName: String,\n        phoneNumber: String,\n        userId: Int64,\n        vcard: String\n    ) {\n        self.firstName = firstName\n        self.lastName = lastName\n        self.phoneNumber = phoneNumber\n        self.userId = userId\n        self.vcard = vcard\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Count.swift",
    "content": "//\n//  Count.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a counter\npublic struct Count: Codable, Equatable, Hashable {\n\n    /// Count\n    public let count: Int\n\n\n    public init(count: Int) {\n        self.count = count\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Countries.swift",
    "content": "//\n//  Countries.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about countries\npublic struct Countries: Codable, Equatable, Hashable {\n\n    /// The list of countries\n    public let countries: [CountryInfo]\n\n\n    public init(countries: [CountryInfo]) {\n        self.countries = countries\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CountryInfo.swift",
    "content": "//\n//  CountryInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a country\npublic struct CountryInfo: Codable, Equatable, Hashable {\n\n    /// List of country calling codes\n    public let callingCodes: [String]\n\n    /// A two-letter ISO 3166-1 alpha-2 country code\n    public let countryCode: String\n\n    /// English name of the country\n    public let englishName: String\n\n    /// True, if the country must be hidden from the list of all countries\n    public let isHidden: Bool\n\n    /// Native name of the country\n    public let name: String\n\n\n    public init(\n        callingCodes: [String],\n        countryCode: String,\n        englishName: String,\n        isHidden: Bool,\n        name: String\n    ) {\n        self.callingCodes = callingCodes\n        self.countryCode = countryCode\n        self.englishName = englishName\n        self.isHidden = isHidden\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CraftGift.swift",
    "content": "//\n//  CraftGift.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Crafts a new gift from other gifts that will be permanently lost\npublic struct CraftGift: Codable, Equatable, Hashable {\n\n    /// Identifier of the gifts to use for crafting. In the case of a successful craft, the resulting gift will have the number of the first gift. Consequently, the first gift must not have been withdrawn to the TON blockchain as an NFT and must have an empty gift_address\n    public let receivedGiftIds: [String]?\n\n\n    public init(receivedGiftIds: [String]?) {\n        self.receivedGiftIds = receivedGiftIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CraftGiftResult.swift",
    "content": "//\n//  CraftGiftResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains result of gift crafting\npublic indirect enum CraftGiftResult: Codable, Equatable, Hashable {\n\n    /// Crafting was successful\n    case craftGiftResultSuccess(CraftGiftResultSuccess)\n\n    /// Crafting isn't possible because one of the gifts can't be used for crafting yet\n    case craftGiftResultTooEarly(CraftGiftResultTooEarly)\n\n    /// Crafting isn't possible because one of the gifts isn't suitable for crafting\n    case craftGiftResultInvalidGift\n\n    /// Crafting has failed\n    case craftGiftResultFail\n\n\n    private enum Kind: String, Codable {\n        case craftGiftResultSuccess\n        case craftGiftResultTooEarly\n        case craftGiftResultInvalidGift\n        case craftGiftResultFail\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .craftGiftResultSuccess:\n            let value = try CraftGiftResultSuccess(from: decoder)\n            self = .craftGiftResultSuccess(value)\n        case .craftGiftResultTooEarly:\n            let value = try CraftGiftResultTooEarly(from: decoder)\n            self = .craftGiftResultTooEarly(value)\n        case .craftGiftResultInvalidGift:\n            self = .craftGiftResultInvalidGift\n        case .craftGiftResultFail:\n            self = .craftGiftResultFail\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .craftGiftResultSuccess(let value):\n            try container.encode(Kind.craftGiftResultSuccess, forKey: .type)\n            try value.encode(to: encoder)\n        case .craftGiftResultTooEarly(let value):\n            try container.encode(Kind.craftGiftResultTooEarly, forKey: .type)\n            try value.encode(to: encoder)\n        case .craftGiftResultInvalidGift:\n            try container.encode(Kind.craftGiftResultInvalidGift, forKey: .type)\n        case .craftGiftResultFail:\n            try container.encode(Kind.craftGiftResultFail, forKey: .type)\n        }\n    }\n}\n\n/// Crafting was successful\npublic struct CraftGiftResultSuccess: Codable, Equatable, Hashable {\n\n    /// The created gift\n    public let gift: UpgradedGift\n\n    /// Unique identifier of the received gift for the current user\n    public let receivedGiftId: String\n\n\n    public init(\n        gift: UpgradedGift,\n        receivedGiftId: String\n    ) {\n        self.gift = gift\n        self.receivedGiftId = receivedGiftId\n    }\n}\n\n/// Crafting isn't possible because one of the gifts can't be used for crafting yet\npublic struct CraftGiftResultTooEarly: Codable, Equatable, Hashable {\n\n    /// Time left before the gift can be used for crafting\n    public let retryAfter: Int\n\n\n    public init(retryAfter: Int) {\n        self.retryAfter = retryAfter\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateBasicGroupChat.swift",
    "content": "//\n//  CreateBasicGroupChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an existing chat corresponding to a known basic group\npublic struct CreateBasicGroupChat: Codable, Equatable, Hashable {\n\n    /// Basic group identifier\n    public let basicGroupId: Int64?\n\n    /// Pass true to create the chat without a network request. In this case all information about the chat except its type, title and photo can be incorrect\n    public let force: Bool?\n\n\n    public init(\n        basicGroupId: Int64?,\n        force: Bool?\n    ) {\n        self.basicGroupId = basicGroupId\n        self.force = force\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateBot.swift",
    "content": "//\n//  CreateBot.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Creates a bot which will be managed by another bot. Returns the created bot. May return an error with a message \"BOT_CREATE_LIMIT_EXCEEDED\" if the user already owns the maximum allowed number of bots as per premiumLimitTypeOwnedBotCount. An internal link \"https://t.me/BotFather?start=deletebot\" can be processed to handle the error\npublic struct CreateBot: Codable, Equatable, Hashable {\n\n    /// Identifier of the bot that will manage the created bot\n    public let managerBotUserId: Int64?\n\n    /// Name of the bot; 1-64 characters\n    public let name: String?\n\n    /// Username of the bot. The username must end with \"bot\". Use checkBotUsername to find whether the name is suitable\n    public let username: String?\n\n    /// Pass true if the bot is created from an internalLinkTypeRequestManagedBot link\n    public let viaLink: Bool?\n\n\n    public init(\n        managerBotUserId: Int64?,\n        name: String?,\n        username: String?,\n        viaLink: Bool?\n    ) {\n        self.managerBotUserId = managerBotUserId\n        self.name = name\n        self.username = username\n        self.viaLink = viaLink\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateBusinessChatLink.swift",
    "content": "//\n//  CreateBusinessChatLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Creates a business chat link for the current account. Requires Telegram Business subscription. There can be up to getOption(\"business_chat_link_count_max\") links created. Returns the created link\npublic struct CreateBusinessChatLink: Codable, Equatable, Hashable {\n\n    /// Information about the link to create\n    public let linkInfo: InputBusinessChatLink?\n\n\n    public init(linkInfo: InputBusinessChatLink?) {\n        self.linkInfo = linkInfo\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateCall.swift",
    "content": "//\n//  CreateCall.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Creates a new call\npublic struct CreateCall: Codable, Equatable, Hashable {\n\n    /// Pass true to create a video call\n    public let isVideo: Bool?\n\n    /// The call protocols supported by the application\n    public let `protocol`: CallProtocol?\n\n    /// Identifier of the user to be called\n    public let userId: Int64?\n\n\n    public init(\n        isVideo: Bool?,\n        `protocol`: CallProtocol?,\n        userId: Int64?\n    ) {\n        self.isVideo = isVideo\n        self.`protocol` = `protocol`\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateChatFolder.swift",
    "content": "//\n//  CreateChatFolder.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Creates new chat folder. Returns information about the created chat folder. There can be up to getOption(\"chat_folder_count_max\") chat folders, but the limit can be increased with Telegram Premium\npublic struct CreateChatFolder: Codable, Equatable, Hashable {\n\n    /// The new chat folder\n    public let folder: ChatFolder?\n\n\n    public init(folder: ChatFolder?) {\n        self.folder = folder\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateChatFolderInviteLink.swift",
    "content": "//\n//  CreateChatFolderInviteLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Creates a new invite link for a chat folder. A link can be created for a chat folder if it has only pinned and included chats\npublic struct CreateChatFolderInviteLink: Codable, Equatable, Hashable {\n\n    /// Chat folder identifier\n    public let chatFolderId: Int?\n\n    /// Identifiers of chats to be accessible by the invite link. Use getChatsForChatFolderInviteLink to get suitable chats. Basic groups will be automatically converted to supergroups before link creation\n    public let chatIds: [Int64]?\n\n    /// Name of the link; 0-32 characters\n    public let name: String?\n\n\n    public init(\n        chatFolderId: Int?,\n        chatIds: [Int64]?,\n        name: String?\n    ) {\n        self.chatFolderId = chatFolderId\n        self.chatIds = chatIds\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateChatInviteLink.swift",
    "content": "//\n//  CreateChatInviteLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Creates a new invite link for a chat. Available for basic groups, supergroups, and channels. Requires administrator privileges and can_invite_users right in the chat\npublic struct CreateChatInviteLink: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Pass true if users joining the chat via the link need to be approved by chat administrators. In this case, member_limit must be 0\n    public let createsJoinRequest: Bool?\n\n    /// Point in time (Unix timestamp) when the link will expire; pass 0 if never\n    public let expirationDate: Int?\n\n    /// The maximum number of chat members that can join the chat via the link simultaneously; 0-99999; pass 0 if not limited\n    public let memberLimit: Int?\n\n    /// Invite link name; 0-32 characters\n    public let name: String?\n\n\n    public init(\n        chatId: Int64?,\n        createsJoinRequest: Bool?,\n        expirationDate: Int?,\n        memberLimit: Int?,\n        name: String?\n    ) {\n        self.chatId = chatId\n        self.createsJoinRequest = createsJoinRequest\n        self.expirationDate = expirationDate\n        self.memberLimit = memberLimit\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateChatSubscriptionInviteLink.swift",
    "content": "//\n//  CreateChatSubscriptionInviteLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Creates a new subscription invite link for a channel chat. Requires can_invite_users right in the chat\npublic struct CreateChatSubscriptionInviteLink: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Invite link name; 0-32 characters\n    public let name: String?\n\n    /// Information about subscription plan that will be applied to the users joining the chat via the link. Subscription period must be 2592000 in production environment, and 60 or 300 if Telegram test environment is used\n    public let subscriptionPricing: StarSubscriptionPricing?\n\n\n    public init(\n        chatId: Int64?,\n        name: String?,\n        subscriptionPricing: StarSubscriptionPricing?\n    ) {\n        self.chatId = chatId\n        self.name = name\n        self.subscriptionPricing = subscriptionPricing\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateForumTopic.swift",
    "content": "//\n//  CreateForumTopic.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Creates a topic in a forum supergroup chat or a chat with a bot with topics; requires can_manage_topics administrator or can_create_topics member right in the supergroup\npublic struct CreateForumTopic: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n    /// Icon of the topic. Icon color must be one of 0x6FB9F0, 0xFFD67E, 0xCB86DB, 0x8EEE98, 0xFF93B2, or 0xFB6F5F. Telegram Premium users can use any custom emoji as topic icon, other users can use only a custom emoji returned by getForumTopicDefaultIcons\n    public let icon: ForumTopicIcon?\n\n    /// Pass true if the name of the topic wasn't entered explicitly; for chats with bots only\n    public let isNameImplicit: Bool?\n\n    /// Name of the topic; 1-128 characters\n    public let name: String?\n\n\n    public init(\n        chatId: Int64?,\n        icon: ForumTopicIcon?,\n        isNameImplicit: Bool?,\n        name: String?\n    ) {\n        self.chatId = chatId\n        self.icon = icon\n        self.isNameImplicit = isNameImplicit\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateGiftCollection.swift",
    "content": "//\n//  CreateGiftCollection.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Creates a collection from gifts on the current user's or a channel's profile page; requires can_post_messages administrator right in the channel chat. An owner can have up to getOption(\"gift_collection_count_max\") gift collections. The new collection will be added to the end of the gift collection list of the owner. Returns the created collection\npublic struct CreateGiftCollection: Codable, Equatable, Hashable {\n\n    /// Name of the collection; 1-12 characters\n    public let name: String?\n\n    /// Identifier of the user or the channel chat that received the gifts\n    public let ownerId: MessageSender?\n\n    /// Identifier of the gifts to add to the collection; 0-getOption(\"gift_collection_size_max\") identifiers\n    public let receivedGiftIds: [String]?\n\n\n    public init(\n        name: String?,\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?\n    ) {\n        self.name = name\n        self.ownerId = ownerId\n        self.receivedGiftIds = receivedGiftIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateGroupCall.swift",
    "content": "//\n//  CreateGroupCall.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Creates a new group call that isn't bound to a chat\npublic struct CreateGroupCall: Codable, Equatable, Hashable {\n\n    /// Parameters to join the call; pass null to only create call link without joining the call\n    public let joinParameters: GroupCallJoinParameters?\n\n\n    public init(joinParameters: GroupCallJoinParameters?) {\n        self.joinParameters = joinParameters\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateInvoiceLink.swift",
    "content": "//\n//  CreateInvoiceLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Creates a link for the given invoice; for bots only\npublic struct CreateInvoiceLink: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection on behalf of which to send the request\n    public let businessConnectionId: String?\n\n    /// Information about the invoice of the type inputMessageInvoice\n    public let invoice: InputMessageContent?\n\n\n    public init(\n        businessConnectionId: String?,\n        invoice: InputMessageContent?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.invoice = invoice\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateNewBasicGroupChat.swift",
    "content": "//\n//  CreateNewBasicGroupChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Creates a new basic group and sends a corresponding messageBasicGroupChatCreate. Returns information about the newly created chat\npublic struct CreateNewBasicGroupChat: Codable, Equatable, Hashable {\n\n    /// Message auto-delete time value, in seconds; must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically\n    public let messageAutoDeleteTime: Int?\n\n    /// Title of the new basic group; 1-128 characters\n    public let title: String?\n\n    /// Identifiers of users to be added to the basic group; may be empty to create a basic group without other members\n    public let userIds: [Int64]?\n\n\n    public init(\n        messageAutoDeleteTime: Int?,\n        title: String?,\n        userIds: [Int64]?\n    ) {\n        self.messageAutoDeleteTime = messageAutoDeleteTime\n        self.title = title\n        self.userIds = userIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateNewSecretChat.swift",
    "content": "//\n//  CreateNewSecretChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Creates a new secret chat. Returns the newly created chat\npublic struct CreateNewSecretChat: Codable, Equatable, Hashable {\n\n    /// Identifier of the target user\n    public let userId: Int64?\n\n\n    public init(userId: Int64?) {\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateNewStickerSet.swift",
    "content": "//\n//  CreateNewStickerSet.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Creates a new sticker set. Returns the newly created sticker set\npublic struct CreateNewStickerSet: Codable, Equatable, Hashable {\n\n    /// Sticker set name. Can contain only English letters, digits and underscores. Must end with *\"_by_<bot username>\"* (*<bot_username>* is case insensitive) for bots; 0-64 characters. If empty, then the name returned by getSuggestedStickerSetName will be used automatically\n    public let name: String?\n\n    /// Pass true if stickers in the sticker set must be repainted; for custom emoji sticker sets only\n    public let needsRepainting: Bool?\n\n    /// Source of the sticker set; may be empty if unknown\n    public let source: String?\n\n    /// Type of the stickers in the set\n    public let stickerType: StickerType?\n\n    /// List of stickers to be added to the set; 1-200 stickers for custom emoji sticker sets, and 1-120 stickers otherwise. For TGS stickers, uploadStickerFile must be used before the sticker is shown\n    public let stickers: [InputSticker]?\n\n    /// Sticker set title; 1-64 characters\n    public let title: String?\n\n    /// Sticker set owner; ignored for regular users\n    public let userId: Int64?\n\n\n    public init(\n        name: String?,\n        needsRepainting: Bool?,\n        source: String?,\n        stickerType: StickerType?,\n        stickers: [InputSticker]?,\n        title: String?,\n        userId: Int64?\n    ) {\n        self.name = name\n        self.needsRepainting = needsRepainting\n        self.source = source\n        self.stickerType = stickerType\n        self.stickers = stickers\n        self.title = title\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateNewSupergroupChat.swift",
    "content": "//\n//  CreateNewSupergroupChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Creates a new supergroup or channel and sends a corresponding messageSupergroupChatCreate. Returns the newly created chat\npublic struct CreateNewSupergroupChat: Codable, Equatable, Hashable {\n\n    public let description: String?\n\n    /// Pass true to create a supergroup for importing messages using importMessages\n    public let forImport: Bool?\n\n    /// Pass true to create a channel chat; ignored if a forum is created\n    public let isChannel: Bool?\n\n    /// Pass true to create a forum supergroup chat\n    public let isForum: Bool?\n\n    /// Chat location if a location-based supergroup is being created; pass null to create an ordinary supergroup chat\n    public let location: ChatLocation?\n\n    /// Message auto-delete time value, in seconds; must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically\n    public let messageAutoDeleteTime: Int?\n\n    /// Title of the new chat; 1-128 characters\n    public let title: String?\n\n\n    public init(\n        description: String?,\n        forImport: Bool?,\n        isChannel: Bool?,\n        isForum: Bool?,\n        location: ChatLocation?,\n        messageAutoDeleteTime: Int?,\n        title: String?\n    ) {\n        self.description = description\n        self.forImport = forImport\n        self.isChannel = isChannel\n        self.isForum = isForum\n        self.location = location\n        self.messageAutoDeleteTime = messageAutoDeleteTime\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreatePrivateChat.swift",
    "content": "//\n//  CreatePrivateChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an existing chat corresponding to a given user\npublic struct CreatePrivateChat: Codable, Equatable, Hashable {\n\n    /// Pass true to create the chat without a network request. In this case all information about the chat except its type, title and photo can be incorrect\n    public let force: Bool?\n\n    /// User identifier\n    public let userId: Int64?\n\n\n    public init(\n        force: Bool?,\n        userId: Int64?\n    ) {\n        self.force = force\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateSecretChat.swift",
    "content": "//\n//  CreateSecretChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an existing chat corresponding to a known secret chat\npublic struct CreateSecretChat: Codable, Equatable, Hashable {\n\n    /// Secret chat identifier\n    public let secretChatId: Int?\n\n\n    public init(secretChatId: Int?) {\n        self.secretChatId = secretChatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateStoryAlbum.swift",
    "content": "//\n//  CreateStoryAlbum.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Creates an album of stories; requires can_edit_stories administrator right for supergroup and channel chats\npublic struct CreateStoryAlbum: Codable, Equatable, Hashable {\n\n    /// Name of the album; 1-12 characters\n    public let name: String?\n\n    /// Identifiers of stories to add to the album; 0-getOption(\"story_album_size_max\") identifiers\n    public let storyIds: [Int]?\n\n    /// Identifier of the chat that posted the stories\n    public let storyPosterChatId: Int64?\n\n\n    public init(\n        name: String?,\n        storyIds: [Int]?,\n        storyPosterChatId: Int64?\n    ) {\n        self.name = name\n        self.storyIds = storyIds\n        self.storyPosterChatId = storyPosterChatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateSupergroupChat.swift",
    "content": "//\n//  CreateSupergroupChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an existing chat corresponding to a known supergroup or channel\npublic struct CreateSupergroupChat: Codable, Equatable, Hashable {\n\n    /// Pass true to create the chat without a network request. In this case all information about the chat except its type, title and photo can be incorrect\n    public let force: Bool?\n\n    /// Supergroup or channel identifier\n    public let supergroupId: Int64?\n\n\n    public init(\n        force: Bool?,\n        supergroupId: Int64?\n    ) {\n        self.force = force\n        self.supergroupId = supergroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateTemporaryPassword.swift",
    "content": "//\n//  CreateTemporaryPassword.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Creates a new temporary password for processing payments\npublic struct CreateTemporaryPassword: Codable, Equatable, Hashable {\n\n    /// The 2-step verification password of the current user\n    public let password: String?\n\n    /// Time during which the temporary password will be valid, in seconds; must be between 60 and 86400\n    public let validFor: Int?\n\n\n    public init(\n        password: String?,\n        validFor: Int?\n    ) {\n        self.password = password\n        self.validFor = validFor\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateTextCompositionStyle.swift",
    "content": "//\n//  CreateTextCompositionStyle.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Creates a custom text composition style. May return an error with a message \"TONES_SAVED_TOO_MANY\" if the maximum number of added custom styles has been reached\npublic struct CreateTextCompositionStyle: Codable, Equatable, Hashable {\n\n    /// Identifier of the custom emoji corresponding to the style\n    public let customEmojiId: TdInt64?\n\n    /// Prompt that will be used for text composition; 1-getOption(\"text_composition_style_prompt_length_max\") characters\n    public let prompt: String?\n\n    /// Pass true if the current user must be shown as the creator of the style\n    public let showCreator: Bool?\n\n    /// Title of the style; 1-getOption(\"text_composition_style_title_length_max\") characters\n    public let title: String?\n\n\n    public init(\n        customEmojiId: TdInt64?,\n        prompt: String?,\n        showCreator: Bool?,\n        title: String?\n    ) {\n        self.customEmojiId = customEmojiId\n        self.prompt = prompt\n        self.showCreator = showCreator\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreateVideoChat.swift",
    "content": "//\n//  CreateVideoChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Creates a video chat (a group call bound to a chat); for basic groups, supergroups and channels only; requires can_manage_video_chats administrator right\npublic struct CreateVideoChat: Codable, Equatable, Hashable {\n\n    /// Identifier of a chat in which the video chat will be created\n    public let chatId: Int64?\n\n    /// Pass true to create an RTMP stream instead of an ordinary video chat\n    public let isRtmpStream: Bool?\n\n    /// Point in time (Unix timestamp) when the group call is expected to be started by an administrator; 0 to start the video chat immediately. The date must be at least 10 seconds and at most 8 days in the future\n    public let startDate: Int?\n\n    /// Group call title; if empty, chat title will be used\n    public let title: String?\n\n\n    public init(\n        chatId: Int64?,\n        isRtmpStream: Bool?,\n        startDate: Int?,\n        title: String?\n    ) {\n        self.chatId = chatId\n        self.isRtmpStream = isRtmpStream\n        self.startDate = startDate\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CreatedBasicGroupChat.swift",
    "content": "//\n//  CreatedBasicGroupChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a newly created basic group chat\npublic struct CreatedBasicGroupChat: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// Information about failed to add members\n    public let failedToAddMembers: FailedToAddMembers\n\n\n    public init(\n        chatId: Int64,\n        failedToAddMembers: FailedToAddMembers\n    ) {\n        self.chatId = chatId\n        self.failedToAddMembers = failedToAddMembers\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CurrentWeather.swift",
    "content": "//\n//  CurrentWeather.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the current weather\npublic struct CurrentWeather: Codable, Equatable, Hashable {\n\n    /// Emoji representing the weather\n    public let emoji: String\n\n    /// Temperature, in degree Celsius\n    public let temperature: Double\n\n\n    public init(\n        emoji: String,\n        temperature: Double\n    ) {\n        self.emoji = emoji\n        self.temperature = temperature\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/CustomRequestResult.swift",
    "content": "//\n//  CustomRequestResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains the result of a custom request\npublic struct CustomRequestResult: Codable, Equatable, Hashable {\n\n    /// A JSON-serialized result\n    public let result: String\n\n\n    public init(result: String) {\n        self.result = result\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Data.swift",
    "content": "//\n//  Data.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains some binary data\npublic struct TdData: Codable, Equatable, Hashable {\n\n    /// Data\n    public let data: Data\n\n\n    public init(data: Data) {\n        self.data = data\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DatabaseStatistics.swift",
    "content": "//\n//  DatabaseStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains database statistics\npublic struct DatabaseStatistics: Codable, Equatable, Hashable {\n\n    /// Database statistics in an unspecified human-readable format\n    public let statistics: String\n\n\n    public init(statistics: String) {\n        self.statistics = statistics\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Date.swift",
    "content": "//\n//  Date.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a date according to the Gregorian calendar\npublic struct Date: Codable, Equatable, Hashable {\n\n    /// Day of the month; 1-31\n    public let day: Int\n\n    /// Month; 1-12\n    public let month: Int\n\n    /// Year; 1-9999\n    public let year: Int\n\n\n    public init(\n        day: Int,\n        month: Int,\n        year: Int\n    ) {\n        self.day = day\n        self.month = month\n        self.year = year\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DateRange.swift",
    "content": "//\n//  DateRange.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a date range\npublic struct DateRange: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) at which the date range ends\n    public let endDate: Int\n\n    /// Point in time (Unix timestamp) at which the date range begins\n    public let startDate: Int\n\n\n    public init(\n        endDate: Int,\n        startDate: Int\n    ) {\n        self.endDate = endDate\n        self.startDate = startDate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DateTimeFormattingType.swift",
    "content": "//\n//  DateTimeFormattingType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes date and time formatting\npublic indirect enum DateTimeFormattingType: Codable, Equatable, Hashable {\n\n    /// The time must be shown relative to the current time ([in ] X seconds, minutes, hours, days, months, years [ago])\n    case dateTimeFormattingTypeRelative\n\n    /// The date and time must be shown as absolute timestamps\n    case dateTimeFormattingTypeAbsolute(DateTimeFormattingTypeAbsolute)\n\n\n    private enum Kind: String, Codable {\n        case dateTimeFormattingTypeRelative\n        case dateTimeFormattingTypeAbsolute\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .dateTimeFormattingTypeRelative:\n            self = .dateTimeFormattingTypeRelative\n        case .dateTimeFormattingTypeAbsolute:\n            let value = try DateTimeFormattingTypeAbsolute(from: decoder)\n            self = .dateTimeFormattingTypeAbsolute(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .dateTimeFormattingTypeRelative:\n            try container.encode(Kind.dateTimeFormattingTypeRelative, forKey: .type)\n        case .dateTimeFormattingTypeAbsolute(let value):\n            try container.encode(Kind.dateTimeFormattingTypeAbsolute, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The date and time must be shown as absolute timestamps\npublic struct DateTimeFormattingTypeAbsolute: Codable, Equatable, Hashable {\n\n    /// The precision with which the date is shown\n    public let datePrecision: DateTimePartPrecision\n\n    /// True, if the day of week must be shown\n    public let showDayOfWeek: Bool\n\n    /// The precision with which hours, minutes and seconds are shown\n    public let timePrecision: DateTimePartPrecision\n\n\n    public init(\n        datePrecision: DateTimePartPrecision,\n        showDayOfWeek: Bool,\n        timePrecision: DateTimePartPrecision\n    ) {\n        self.datePrecision = datePrecision\n        self.showDayOfWeek = showDayOfWeek\n        self.timePrecision = timePrecision\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DateTimePartPrecision.swift",
    "content": "//\n//  DateTimePartPrecision.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes precision with which to show a date or a time\npublic indirect enum DateTimePartPrecision: Codable, Equatable, Hashable {\n\n    /// Don't show the date or time\n    case dateTimePartPrecisionNone\n\n    /// Show the date or time in a short way (17.03.22 or 22:45)\n    case dateTimePartPrecisionShort\n\n    /// Show the date or time in a long way (March 17, 2022 or 22:45:00)\n    case dateTimePartPrecisionLong\n\n\n    private enum Kind: String, Codable {\n        case dateTimePartPrecisionNone\n        case dateTimePartPrecisionShort\n        case dateTimePartPrecisionLong\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .dateTimePartPrecisionNone:\n            self = .dateTimePartPrecisionNone\n        case .dateTimePartPrecisionShort:\n            self = .dateTimePartPrecisionShort\n        case .dateTimePartPrecisionLong:\n            self = .dateTimePartPrecisionLong\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .dateTimePartPrecisionNone:\n            try container.encode(Kind.dateTimePartPrecisionNone, forKey: .type)\n        case .dateTimePartPrecisionShort:\n            try container.encode(Kind.dateTimePartPrecisionShort, forKey: .type)\n        case .dateTimePartPrecisionLong:\n            try container.encode(Kind.dateTimePartPrecisionLong, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DatedFile.swift",
    "content": "//\n//  DatedFile.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// File with the date it was uploaded\npublic struct DatedFile: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the file was uploaded\n    public let date: Int\n\n    /// The file\n    public let file: File\n\n\n    public init(\n        date: Int,\n        file: File\n    ) {\n        self.date = date\n        self.file = file\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeclineGroupCallInvitation.swift",
    "content": "//\n//  DeclineGroupCallInvitation.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Declines an invitation to an active group call via messageGroupCall. Can be called both by the sender and the receiver of the invitation\npublic struct DeclineGroupCallInvitation: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat with the message\n    public let chatId: Int64?\n\n    /// Identifier of the message of the type messageGroupCall\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeclineOauthRequest.swift",
    "content": "//\n//  DeclineOauthRequest.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Declines an OAuth authorization request\npublic struct DeclineOauthRequest: Codable, Equatable, Hashable {\n\n    /// URL of the OAuth deep link\n    public let url: String?\n\n\n    public init(url: String?) {\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeclineSuggestedPost.swift",
    "content": "//\n//  DeclineSuggestedPost.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Declines a suggested post in a channel direct messages chat\npublic struct DeclineSuggestedPost: Codable, Equatable, Hashable {\n\n    /// Chat identifier of the channel direct messages chat\n    public let chatId: Int64?\n\n    /// Comment for the creator of the suggested post; 0-128 characters\n    public let comment: String?\n\n    /// Identifier of the message with the suggested post. Use messageProperties.can_be_declined to check whether the suggested post can be declined\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        comment: String?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.comment = comment\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DecryptGroupCallData.swift",
    "content": "//\n//  DecryptGroupCallData.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Decrypts group call data received by tgcalls\npublic struct DecryptGroupCallData: Codable, Equatable, Hashable {\n\n    /// Data to decrypt\n    public let data: Data?\n\n    /// Data channel for which data was encrypted; pass null if unknown\n    public let dataChannel: GroupCallDataChannel?\n\n    /// Group call identifier. The call must not be a video chat\n    public let groupCallId: Int?\n\n    /// Identifier of the group call participant, which sent the data\n    public let participantId: MessageSender?\n\n\n    public init(\n        data: Data?,\n        dataChannel: GroupCallDataChannel?,\n        groupCallId: Int?,\n        participantId: MessageSender?\n    ) {\n        self.data = data\n        self.dataChannel = dataChannel\n        self.groupCallId = groupCallId\n        self.participantId = participantId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeepLinkInfo.swift",
    "content": "//\n//  DeepLinkInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a tg: deep link\npublic struct DeepLinkInfo: Codable, Equatable, Hashable {\n\n    /// True, if the user must be asked to update the application\n    public let needUpdateApplication: Bool\n\n    /// Text to be shown to the user\n    public let text: FormattedText\n\n\n    public init(\n        needUpdateApplication: Bool,\n        text: FormattedText\n    ) {\n        self.needUpdateApplication = needUpdateApplication\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteAccount.swift",
    "content": "//\n//  DeleteAccount.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes the account of the current user, deleting all information associated with the user from the server. The phone number of the account can be used to create a new account. Can be called before authorization when the current authorization state is authorizationStateWaitPassword\npublic struct DeleteAccount: Codable, Equatable, Hashable {\n\n    /// The 2-step verification password of the current user. If the current user isn't authorized, then an empty string can be passed and account deletion can be canceled within one week\n    public let password: String?\n\n    /// The reason why the account was deleted; optional\n    public let reason: String?\n\n\n    public init(\n        password: String?,\n        reason: String?\n    ) {\n        self.password = password\n        self.reason = reason\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteAllCallMessages.swift",
    "content": "//\n//  DeleteAllCallMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes all call messages\npublic struct DeleteAllCallMessages: Codable, Equatable, Hashable {\n\n    /// Pass true to delete the messages for all users\n    public let revoke: Bool?\n\n\n    public init(revoke: Bool?) {\n        self.revoke = revoke\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteAllRecentMessageReactionsFromSender.swift",
    "content": "//\n//  DeleteAllRecentMessageReactionsFromSender.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes all recent reactions added by the specified sender in a chat. Supported only for basic groups and supergroups; requires can_delete_messages administrator right\npublic struct DeleteAllRecentMessageReactionsFromSender: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Identifier of the sender of reactions to delete\n    public let senderId: MessageSender?\n\n\n    public init(\n        chatId: Int64?,\n        senderId: MessageSender?\n    ) {\n        self.chatId = chatId\n        self.senderId = senderId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteAllRevokedChatInviteLinks.swift",
    "content": "//\n//  DeleteAllRevokedChatInviteLinks.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes all revoked chat invite links created by a given chat administrator. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\npublic struct DeleteAllRevokedChatInviteLinks: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// User identifier of a chat administrator, which links will be deleted. Must be an identifier of the current user for non-owner\n    public let creatorUserId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        creatorUserId: Int64?\n    ) {\n        self.chatId = chatId\n        self.creatorUserId = creatorUserId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteBotMediaPreviews.swift",
    "content": "//\n//  DeleteBotMediaPreviews.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes media previews from the list of media previews of a bot\npublic struct DeleteBotMediaPreviews: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot. The bot must be owned and must have the main Web App\n    public let botUserId: Int64?\n\n    /// File identifiers of the media to delete\n    public let fileIds: [Int]?\n\n    /// Language code of the media previews to delete\n    public let languageCode: String?\n\n\n    public init(\n        botUserId: Int64?,\n        fileIds: [Int]?,\n        languageCode: String?\n    ) {\n        self.botUserId = botUserId\n        self.fileIds = fileIds\n        self.languageCode = languageCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteBusinessChatLink.swift",
    "content": "//\n//  DeleteBusinessChatLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes a business chat link of the current account\npublic struct DeleteBusinessChatLink: Codable, Equatable, Hashable {\n\n    /// The link to delete\n    public let link: String?\n\n\n    public init(link: String?) {\n        self.link = link\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteBusinessConnectedBot.swift",
    "content": "//\n//  DeleteBusinessConnectedBot.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes the business bot that is connected to the current user account\npublic struct DeleteBusinessConnectedBot: Codable, Equatable, Hashable {\n\n    /// Unique user identifier for the bot\n    public let botUserId: Int64?\n\n\n    public init(botUserId: Int64?) {\n        self.botUserId = botUserId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteBusinessMessages.swift",
    "content": "//\n//  DeleteBusinessMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes messages on behalf of a business account; for bots only\npublic struct DeleteBusinessMessages: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection through which the messages were received\n    public let businessConnectionId: String?\n\n    /// Identifier of the messages\n    public let messageIds: [Int64]?\n\n\n    public init(\n        businessConnectionId: String?,\n        messageIds: [Int64]?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.messageIds = messageIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteBusinessStory.swift",
    "content": "//\n//  DeleteBusinessStory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes a story posted by the bot on behalf of a business account; for bots only\npublic struct DeleteBusinessStory: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection\n    public let businessConnectionId: String?\n\n    /// Identifier of the story to delete\n    public let storyId: Int?\n\n\n    public init(\n        businessConnectionId: String?,\n        storyId: Int?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.storyId = storyId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteChat.swift",
    "content": "//\n//  DeleteChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes a chat along with all messages in the corresponding chat for all chat members. For group chats this will release the usernames and remove all members. Use the field chat.can_be_deleted_for_all_users to find whether the method can be applied to the chat\npublic struct DeleteChat: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteChatBackground.swift",
    "content": "//\n//  DeleteChatBackground.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes background in a specific chat\npublic struct DeleteChatBackground: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Pass true to restore previously set background. Can be used only in private and secret chats with non-deleted users if userFullInfo.set_chat_background == true. Supposed to be used from messageChatSetBackground messages with the currently set background that was set for both sides by the other user\n    public let restorePrevious: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        restorePrevious: Bool?\n    ) {\n        self.chatId = chatId\n        self.restorePrevious = restorePrevious\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteChatFolder.swift",
    "content": "//\n//  DeleteChatFolder.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes existing chat folder\npublic struct DeleteChatFolder: Codable, Equatable, Hashable {\n\n    /// Chat folder identifier\n    public let chatFolderId: Int?\n\n    /// Identifiers of the chats to leave. The chats must be pinned or always included in the folder\n    public let leaveChatIds: [Int64]?\n\n\n    public init(\n        chatFolderId: Int?,\n        leaveChatIds: [Int64]?\n    ) {\n        self.chatFolderId = chatFolderId\n        self.leaveChatIds = leaveChatIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteChatFolderInviteLink.swift",
    "content": "//\n//  DeleteChatFolderInviteLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes an invite link for a chat folder\npublic struct DeleteChatFolderInviteLink: Codable, Equatable, Hashable {\n\n    /// Chat folder identifier\n    public let chatFolderId: Int?\n\n    /// Invite link to be deleted\n    public let inviteLink: String?\n\n\n    public init(\n        chatFolderId: Int?,\n        inviteLink: String?\n    ) {\n        self.chatFolderId = chatFolderId\n        self.inviteLink = inviteLink\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteChatHistory.swift",
    "content": "//\n//  DeleteChatHistory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes all messages in the chat. Use chat.can_be_deleted_only_for_self and chat.can_be_deleted_for_all_users fields to find whether and how the method can be applied to the chat\npublic struct DeleteChatHistory: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Pass true to remove the chat from all chat lists\n    public let removeFromChatList: Bool?\n\n    /// Pass true to delete chat history for all users\n    public let revoke: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        removeFromChatList: Bool?,\n        revoke: Bool?\n    ) {\n        self.chatId = chatId\n        self.removeFromChatList = removeFromChatList\n        self.revoke = revoke\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteChatMessagesByDate.swift",
    "content": "//\n//  DeleteChatMessagesByDate.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes all messages between the specified dates in a chat. Supported only for private chats and basic groups. Messages sent in the last 30 seconds will not be deleted\npublic struct DeleteChatMessagesByDate: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// The maximum date of the messages to delete\n    public let maxDate: Int?\n\n    /// The minimum date of the messages to delete\n    public let minDate: Int?\n\n    /// Pass true to delete chat messages for all users; private chats only\n    public let revoke: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        maxDate: Int?,\n        minDate: Int?,\n        revoke: Bool?\n    ) {\n        self.chatId = chatId\n        self.maxDate = maxDate\n        self.minDate = minDate\n        self.revoke = revoke\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteChatMessagesBySender.swift",
    "content": "//\n//  DeleteChatMessagesBySender.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes all messages sent by the specified message sender in a chat. Supported only for supergroups; requires can_delete_messages administrator right\npublic struct DeleteChatMessagesBySender: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Identifier of the sender of messages to delete\n    public let senderId: MessageSender?\n\n\n    public init(\n        chatId: Int64?,\n        senderId: MessageSender?\n    ) {\n        self.chatId = chatId\n        self.senderId = senderId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteChatReplyMarkup.swift",
    "content": "//\n//  DeleteChatReplyMarkup.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes the default reply markup from a chat. Must be called after a one-time keyboard or a replyMarkupForceReply reply markup has been used or dismissed\npublic struct DeleteChatReplyMarkup: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// The message identifier of the used keyboard\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteCommands.swift",
    "content": "//\n//  DeleteCommands.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes commands supported by the bot for the given user scope and language; for bots only\npublic struct DeleteCommands: Codable, Equatable, Hashable {\n\n    /// A two-letter ISO 639-1 language code or an empty string\n    public let languageCode: String?\n\n    /// The scope to which the commands are relevant; pass null to delete commands in the default bot command scope\n    public let scope: BotCommandScope?\n\n\n    public init(\n        languageCode: String?,\n        scope: BotCommandScope?\n    ) {\n        self.languageCode = languageCode\n        self.scope = scope\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteDefaultBackground.swift",
    "content": "//\n//  DeleteDefaultBackground.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes default background for chats\npublic struct DeleteDefaultBackground: Codable, Equatable, Hashable {\n\n    /// Pass true if the background is deleted for a dark theme\n    public let forDarkTheme: Bool?\n\n\n    public init(forDarkTheme: Bool?) {\n        self.forDarkTheme = forDarkTheme\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteDirectMessagesChatTopicHistory.swift",
    "content": "//\n//  DeleteDirectMessagesChatTopicHistory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes all messages in the topic in a channel direct messages chat administered by the current user\npublic struct DeleteDirectMessagesChatTopicHistory: Codable, Equatable, Hashable {\n\n    /// Chat identifier of the channel direct messages chat\n    public let chatId: Int64?\n\n    /// Identifier of the topic which messages will be deleted\n    public let topicId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        topicId: Int64?\n    ) {\n        self.chatId = chatId\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteDirectMessagesChatTopicMessagesByDate.swift",
    "content": "//\n//  DeleteDirectMessagesChatTopicMessagesByDate.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes all messages between the specified dates in the topic in a channel direct messages chat administered by the current user. Messages sent in the last 30 seconds will not be deleted\npublic struct DeleteDirectMessagesChatTopicMessagesByDate: Codable, Equatable, Hashable {\n\n    /// Chat identifier of the channel direct messages chat\n    public let chatId: Int64?\n\n    /// The maximum date of the messages to delete\n    public let maxDate: Int?\n\n    /// The minimum date of the messages to delete\n    public let minDate: Int?\n\n    /// Identifier of the topic which messages will be deleted\n    public let topicId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        maxDate: Int?,\n        minDate: Int?,\n        topicId: Int64?\n    ) {\n        self.chatId = chatId\n        self.maxDate = maxDate\n        self.minDate = minDate\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteFile.swift",
    "content": "//\n//  DeleteFile.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes a file from the TDLib file cache\npublic struct DeleteFile: Codable, Equatable, Hashable {\n\n    /// Identifier of the file to delete\n    public let fileId: Int?\n\n\n    public init(fileId: Int?) {\n        self.fileId = fileId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteForumTopic.swift",
    "content": "//\n//  DeleteForumTopic.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes all messages from a topic in a forum supergroup chat or a chat with a bot with topics; requires can_delete_messages administrator right in the supergroup unless the user is creator of the topic, the topic has no messages from other users and has at most 11 messages\npublic struct DeleteForumTopic: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n    /// Forum topic identifier\n    public let forumTopicId: Int?\n\n\n    public init(\n        chatId: Int64?,\n        forumTopicId: Int?\n    ) {\n        self.chatId = chatId\n        self.forumTopicId = forumTopicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteGiftCollection.swift",
    "content": "//\n//  DeleteGiftCollection.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes a gift collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat\npublic struct DeleteGiftCollection: Codable, Equatable, Hashable {\n\n    /// Identifier of the gift collection\n    public let collectionId: Int?\n\n    /// Identifier of the user or the channel chat that owns the collection\n    public let ownerId: MessageSender?\n\n\n    public init(\n        collectionId: Int?,\n        ownerId: MessageSender?\n    ) {\n        self.collectionId = collectionId\n        self.ownerId = ownerId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteGroupCallMessages.swift",
    "content": "//\n//  DeleteGroupCallMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes messages in a group call; for live story calls only. Requires groupCallMessage.can_be_deleted right\npublic struct DeleteGroupCallMessages: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// Identifiers of the messages to be deleted\n    public let messageIds: [Int]?\n\n    /// Pass true to report the messages as spam\n    public let reportSpam: Bool?\n\n\n    public init(\n        groupCallId: Int?,\n        messageIds: [Int]?,\n        reportSpam: Bool?\n    ) {\n        self.groupCallId = groupCallId\n        self.messageIds = messageIds\n        self.reportSpam = reportSpam\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteGroupCallMessagesBySender.swift",
    "content": "//\n//  DeleteGroupCallMessagesBySender.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes all messages sent by the specified message sender in a group call; for live story calls only. Requires groupCall.can_delete_messages right\npublic struct DeleteGroupCallMessagesBySender: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// Pass true to report the messages as spam\n    public let reportSpam: Bool?\n\n    /// Identifier of the sender of messages to delete\n    public let senderId: MessageSender?\n\n\n    public init(\n        groupCallId: Int?,\n        reportSpam: Bool?,\n        senderId: MessageSender?\n    ) {\n        self.groupCallId = groupCallId\n        self.reportSpam = reportSpam\n        self.senderId = senderId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteLanguagePack.swift",
    "content": "//\n//  DeleteLanguagePack.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes all information about a language pack in the current localization target. The language pack which is currently in use (including base language pack) or is being synchronized can't be deleted. Can be called before authorization\npublic struct DeleteLanguagePack: Codable, Equatable, Hashable {\n\n    /// Identifier of the language pack to delete\n    public let languagePackId: String?\n\n\n    public init(languagePackId: String?) {\n        self.languagePackId = languagePackId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteMessageReactionsFromSender.swift",
    "content": "//\n//  DeleteMessageReactionsFromSender.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes all reactions added by the specified sender on a message\npublic struct DeleteMessageReactionsFromSender: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Identifier of the message containing the reactions. Use messageProperties.can_delete_reactions to check whether the method can be used for a message\n    public let messageId: Int64?\n\n    /// Identifier of the sender of reactions to delete\n    public let senderId: MessageSender?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        senderId: MessageSender?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.senderId = senderId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteMessages.swift",
    "content": "//\n//  DeleteMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes messages\npublic struct DeleteMessages: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Identifiers of the messages to be deleted. Use messageProperties.can_be_deleted_only_for_self and messageProperties.can_be_deleted_for_all_users to get suitable messages\n    public let messageIds: [Int64]?\n\n    /// Pass true to delete messages for all chat members. Always true for supergroups, channels and secret chats\n    public let revoke: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        messageIds: [Int64]?,\n        revoke: Bool?\n    ) {\n        self.chatId = chatId\n        self.messageIds = messageIds\n        self.revoke = revoke\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeletePassportElement.swift",
    "content": "//\n//  DeletePassportElement.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes a Telegram Passport element\npublic struct DeletePassportElement: Codable, Equatable, Hashable {\n\n    /// Element type\n    public let type: PassportElementType?\n\n\n    public init(type: PassportElementType?) {\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeletePollOption.swift",
    "content": "//\n//  DeletePollOption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes an option from a poll\npublic struct DeletePollOption: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the poll belongs\n    public let chatId: Int64?\n\n    /// Identifier of the message containing the poll\n    public let messageId: Int64?\n\n    /// Unique identifier of the option. Use pollOptionProperties.can_be_deleted to check whether the option can be deleted by the user\n    public let optionId: String?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        optionId: String?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.optionId = optionId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteProfilePhoto.swift",
    "content": "//\n//  DeleteProfilePhoto.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes a profile photo\npublic struct DeleteProfilePhoto: Codable, Equatable, Hashable {\n\n    /// Identifier of the profile photo to delete\n    public let profilePhotoId: TdInt64?\n\n\n    public init(profilePhotoId: TdInt64?) {\n        self.profilePhotoId = profilePhotoId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteQuickReplyShortcut.swift",
    "content": "//\n//  DeleteQuickReplyShortcut.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes a quick reply shortcut\npublic struct DeleteQuickReplyShortcut: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the quick reply shortcut\n    public let shortcutId: Int?\n\n\n    public init(shortcutId: Int?) {\n        self.shortcutId = shortcutId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteQuickReplyShortcutMessages.swift",
    "content": "//\n//  DeleteQuickReplyShortcutMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes specified quick reply messages\npublic struct DeleteQuickReplyShortcutMessages: Codable, Equatable, Hashable {\n\n    /// Unique identifiers of the messages\n    public let messageIds: [Int64]?\n\n    /// Unique identifier of the quick reply shortcut to which the messages belong\n    public let shortcutId: Int?\n\n\n    public init(\n        messageIds: [Int64]?,\n        shortcutId: Int?\n    ) {\n        self.messageIds = messageIds\n        self.shortcutId = shortcutId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteRevokedChatInviteLink.swift",
    "content": "//\n//  DeleteRevokedChatInviteLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes revoked chat invite links. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\npublic struct DeleteRevokedChatInviteLink: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Invite link to revoke\n    public let inviteLink: String?\n\n\n    public init(\n        chatId: Int64?,\n        inviteLink: String?\n    ) {\n        self.chatId = chatId\n        self.inviteLink = inviteLink\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteSavedCredentials.swift",
    "content": "//\n//  DeleteSavedCredentials.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes saved credentials for all payment provider bots\npublic struct DeleteSavedCredentials: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteSavedMessagesTopicHistory.swift",
    "content": "//\n//  DeleteSavedMessagesTopicHistory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes all messages in a Saved Messages topic\npublic struct DeleteSavedMessagesTopicHistory: Codable, Equatable, Hashable {\n\n    /// Identifier of Saved Messages topic which messages will be deleted\n    public let savedMessagesTopicId: Int64?\n\n\n    public init(savedMessagesTopicId: Int64?) {\n        self.savedMessagesTopicId = savedMessagesTopicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteSavedMessagesTopicMessagesByDate.swift",
    "content": "//\n//  DeleteSavedMessagesTopicMessagesByDate.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes all messages between the specified dates in a Saved Messages topic. Messages sent in the last 30 seconds will not be deleted\npublic struct DeleteSavedMessagesTopicMessagesByDate: Codable, Equatable, Hashable {\n\n    /// The maximum date of the messages to delete\n    public let maxDate: Int?\n\n    /// The minimum date of the messages to delete\n    public let minDate: Int?\n\n    /// Identifier of Saved Messages topic which messages will be deleted\n    public let savedMessagesTopicId: Int64?\n\n\n    public init(\n        maxDate: Int?,\n        minDate: Int?,\n        savedMessagesTopicId: Int64?\n    ) {\n        self.maxDate = maxDate\n        self.minDate = minDate\n        self.savedMessagesTopicId = savedMessagesTopicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteSavedOrderInfo.swift",
    "content": "//\n//  DeleteSavedOrderInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes saved order information\npublic struct DeleteSavedOrderInfo: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteStickerSet.swift",
    "content": "//\n//  DeleteStickerSet.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Completely deletes a sticker set\npublic struct DeleteStickerSet: Codable, Equatable, Hashable {\n\n    /// Sticker set name. The sticker set must be owned by the current user\n    public let name: String?\n\n\n    public init(name: String?) {\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteStory.swift",
    "content": "//\n//  DeleteStory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes a previously posted story. Can be called only if story.can_be_deleted == true\npublic struct DeleteStory: Codable, Equatable, Hashable {\n\n    /// Identifier of the story to delete\n    public let storyId: Int?\n\n    /// Identifier of the chat that posted the story\n    public let storyPosterChatId: Int64?\n\n\n    public init(\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) {\n        self.storyId = storyId\n        self.storyPosterChatId = storyPosterChatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteStoryAlbum.swift",
    "content": "//\n//  DeleteStoryAlbum.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes a story album. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat\npublic struct DeleteStoryAlbum: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat that owns the stories\n    public let chatId: Int64?\n\n    /// Identifier of the story album\n    public let storyAlbumId: Int?\n\n\n    public init(\n        chatId: Int64?,\n        storyAlbumId: Int?\n    ) {\n        self.chatId = chatId\n        self.storyAlbumId = storyAlbumId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeleteTextCompositionStyle.swift",
    "content": "//\n//  DeleteTextCompositionStyle.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Deletes a custom text composition style that was created by the current user\npublic struct DeleteTextCompositionStyle: Codable, Equatable, Hashable {\n\n    /// Name of the style\n    public let name: String?\n\n\n    public init(name: String?) {\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Destroy.swift",
    "content": "//\n//  Destroy.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Closes the TDLib instance, destroying all local data without a proper logout. The current user session will remain in the list of all active sessions. All local data will be destroyed. After the destruction completes updateAuthorizationState with authorizationStateClosed will be sent. Can be called before authorization\npublic struct Destroy: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DeviceToken.swift",
    "content": "//\n//  DeviceToken.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a data needed to subscribe for push notifications through registerDevice method.\npublic indirect enum DeviceToken: Codable, Equatable, Hashable {\n\n    /// A token for Firebase Cloud Messaging\n    case deviceTokenFirebaseCloudMessaging(DeviceTokenFirebaseCloudMessaging)\n\n    /// A token for Apple Push Notification service\n    case deviceTokenApplePush(DeviceTokenApplePush)\n\n    /// A token for Apple Push Notification service VoIP notifications\n    case deviceTokenApplePushVoIP(DeviceTokenApplePushVoIP)\n\n    /// A token for Windows Push Notification Services\n    case deviceTokenWindowsPush(DeviceTokenWindowsPush)\n\n    /// A token for Microsoft Push Notification Service\n    case deviceTokenMicrosoftPush(DeviceTokenMicrosoftPush)\n\n    /// A token for Microsoft Push Notification Service VoIP channel\n    case deviceTokenMicrosoftPushVoIP(DeviceTokenMicrosoftPushVoIP)\n\n    /// A token for web Push API\n    case deviceTokenWebPush(DeviceTokenWebPush)\n\n    /// A token for Simple Push API for Firefox OS\n    case deviceTokenSimplePush(DeviceTokenSimplePush)\n\n    /// A token for Ubuntu Push Client service\n    case deviceTokenUbuntuPush(DeviceTokenUbuntuPush)\n\n    /// A token for BlackBerry Push Service\n    case deviceTokenBlackBerryPush(DeviceTokenBlackBerryPush)\n\n    /// A token for Tizen Push Service\n    case deviceTokenTizenPush(DeviceTokenTizenPush)\n\n    /// A token for HUAWEI Push Service\n    case deviceTokenHuaweiPush(DeviceTokenHuaweiPush)\n\n\n    private enum Kind: String, Codable {\n        case deviceTokenFirebaseCloudMessaging\n        case deviceTokenApplePush\n        case deviceTokenApplePushVoIP\n        case deviceTokenWindowsPush\n        case deviceTokenMicrosoftPush\n        case deviceTokenMicrosoftPushVoIP\n        case deviceTokenWebPush\n        case deviceTokenSimplePush\n        case deviceTokenUbuntuPush\n        case deviceTokenBlackBerryPush\n        case deviceTokenTizenPush\n        case deviceTokenHuaweiPush\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .deviceTokenFirebaseCloudMessaging:\n            let value = try DeviceTokenFirebaseCloudMessaging(from: decoder)\n            self = .deviceTokenFirebaseCloudMessaging(value)\n        case .deviceTokenApplePush:\n            let value = try DeviceTokenApplePush(from: decoder)\n            self = .deviceTokenApplePush(value)\n        case .deviceTokenApplePushVoIP:\n            let value = try DeviceTokenApplePushVoIP(from: decoder)\n            self = .deviceTokenApplePushVoIP(value)\n        case .deviceTokenWindowsPush:\n            let value = try DeviceTokenWindowsPush(from: decoder)\n            self = .deviceTokenWindowsPush(value)\n        case .deviceTokenMicrosoftPush:\n            let value = try DeviceTokenMicrosoftPush(from: decoder)\n            self = .deviceTokenMicrosoftPush(value)\n        case .deviceTokenMicrosoftPushVoIP:\n            let value = try DeviceTokenMicrosoftPushVoIP(from: decoder)\n            self = .deviceTokenMicrosoftPushVoIP(value)\n        case .deviceTokenWebPush:\n            let value = try DeviceTokenWebPush(from: decoder)\n            self = .deviceTokenWebPush(value)\n        case .deviceTokenSimplePush:\n            let value = try DeviceTokenSimplePush(from: decoder)\n            self = .deviceTokenSimplePush(value)\n        case .deviceTokenUbuntuPush:\n            let value = try DeviceTokenUbuntuPush(from: decoder)\n            self = .deviceTokenUbuntuPush(value)\n        case .deviceTokenBlackBerryPush:\n            let value = try DeviceTokenBlackBerryPush(from: decoder)\n            self = .deviceTokenBlackBerryPush(value)\n        case .deviceTokenTizenPush:\n            let value = try DeviceTokenTizenPush(from: decoder)\n            self = .deviceTokenTizenPush(value)\n        case .deviceTokenHuaweiPush:\n            let value = try DeviceTokenHuaweiPush(from: decoder)\n            self = .deviceTokenHuaweiPush(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .deviceTokenFirebaseCloudMessaging(let value):\n            try container.encode(Kind.deviceTokenFirebaseCloudMessaging, forKey: .type)\n            try value.encode(to: encoder)\n        case .deviceTokenApplePush(let value):\n            try container.encode(Kind.deviceTokenApplePush, forKey: .type)\n            try value.encode(to: encoder)\n        case .deviceTokenApplePushVoIP(let value):\n            try container.encode(Kind.deviceTokenApplePushVoIP, forKey: .type)\n            try value.encode(to: encoder)\n        case .deviceTokenWindowsPush(let value):\n            try container.encode(Kind.deviceTokenWindowsPush, forKey: .type)\n            try value.encode(to: encoder)\n        case .deviceTokenMicrosoftPush(let value):\n            try container.encode(Kind.deviceTokenMicrosoftPush, forKey: .type)\n            try value.encode(to: encoder)\n        case .deviceTokenMicrosoftPushVoIP(let value):\n            try container.encode(Kind.deviceTokenMicrosoftPushVoIP, forKey: .type)\n            try value.encode(to: encoder)\n        case .deviceTokenWebPush(let value):\n            try container.encode(Kind.deviceTokenWebPush, forKey: .type)\n            try value.encode(to: encoder)\n        case .deviceTokenSimplePush(let value):\n            try container.encode(Kind.deviceTokenSimplePush, forKey: .type)\n            try value.encode(to: encoder)\n        case .deviceTokenUbuntuPush(let value):\n            try container.encode(Kind.deviceTokenUbuntuPush, forKey: .type)\n            try value.encode(to: encoder)\n        case .deviceTokenBlackBerryPush(let value):\n            try container.encode(Kind.deviceTokenBlackBerryPush, forKey: .type)\n            try value.encode(to: encoder)\n        case .deviceTokenTizenPush(let value):\n            try container.encode(Kind.deviceTokenTizenPush, forKey: .type)\n            try value.encode(to: encoder)\n        case .deviceTokenHuaweiPush(let value):\n            try container.encode(Kind.deviceTokenHuaweiPush, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A token for Firebase Cloud Messaging\npublic struct DeviceTokenFirebaseCloudMessaging: Codable, Equatable, Hashable {\n\n    /// True, if push notifications must be additionally encrypted\n    public let encrypt: Bool\n\n    /// Device registration token; may be empty to deregister a device\n    public let token: String\n\n\n    public init(\n        encrypt: Bool,\n        token: String\n    ) {\n        self.encrypt = encrypt\n        self.token = token\n    }\n}\n\n/// A token for Apple Push Notification service\npublic struct DeviceTokenApplePush: Codable, Equatable, Hashable {\n\n    /// Device token; may be empty to deregister a device\n    public let deviceToken: String\n\n    /// True, if App Sandbox is enabled\n    public let isAppSandbox: Bool\n\n\n    public init(\n        deviceToken: String,\n        isAppSandbox: Bool\n    ) {\n        self.deviceToken = deviceToken\n        self.isAppSandbox = isAppSandbox\n    }\n}\n\n/// A token for Apple Push Notification service VoIP notifications\npublic struct DeviceTokenApplePushVoIP: Codable, Equatable, Hashable {\n\n    /// Device token; may be empty to deregister a device\n    public let deviceToken: String\n\n    /// True, if push notifications must be additionally encrypted\n    public let encrypt: Bool\n\n    /// True, if App Sandbox is enabled\n    public let isAppSandbox: Bool\n\n\n    public init(\n        deviceToken: String,\n        encrypt: Bool,\n        isAppSandbox: Bool\n    ) {\n        self.deviceToken = deviceToken\n        self.encrypt = encrypt\n        self.isAppSandbox = isAppSandbox\n    }\n}\n\n/// A token for Windows Push Notification Services\npublic struct DeviceTokenWindowsPush: Codable, Equatable, Hashable {\n\n    /// The access token that will be used to send notifications; may be empty to deregister a device\n    public let accessToken: String\n\n\n    public init(accessToken: String) {\n        self.accessToken = accessToken\n    }\n}\n\n/// A token for Microsoft Push Notification Service\npublic struct DeviceTokenMicrosoftPush: Codable, Equatable, Hashable {\n\n    /// Push notification channel URI; may be empty to deregister a device\n    public let channelUri: String\n\n\n    public init(channelUri: String) {\n        self.channelUri = channelUri\n    }\n}\n\n/// A token for Microsoft Push Notification Service VoIP channel\npublic struct DeviceTokenMicrosoftPushVoIP: Codable, Equatable, Hashable {\n\n    /// Push notification channel URI; may be empty to deregister a device\n    public let channelUri: String\n\n\n    public init(channelUri: String) {\n        self.channelUri = channelUri\n    }\n}\n\n/// A token for web Push API\npublic struct DeviceTokenWebPush: Codable, Equatable, Hashable {\n\n    /// Base64url-encoded authentication secret\n    public let authBase64url: String\n\n    /// Absolute URL exposed by the push service where the application server can send push messages; may be empty to deregister a device\n    public let endpoint: String\n\n    /// Base64url-encoded P-256 elliptic curve Diffie-Hellman public key\n    public let p256dhBase64url: String\n\n\n    public init(\n        authBase64url: String,\n        endpoint: String,\n        p256dhBase64url: String\n    ) {\n        self.authBase64url = authBase64url\n        self.endpoint = endpoint\n        self.p256dhBase64url = p256dhBase64url\n    }\n}\n\n/// A token for Simple Push API for Firefox OS\npublic struct DeviceTokenSimplePush: Codable, Equatable, Hashable {\n\n    /// Absolute URL exposed by the push service where the application server can send push messages; may be empty to deregister a device\n    public let endpoint: String\n\n\n    public init(endpoint: String) {\n        self.endpoint = endpoint\n    }\n}\n\n/// A token for Ubuntu Push Client service\npublic struct DeviceTokenUbuntuPush: Codable, Equatable, Hashable {\n\n    /// Token; may be empty to deregister a device\n    public let token: String\n\n\n    public init(token: String) {\n        self.token = token\n    }\n}\n\n/// A token for BlackBerry Push Service\npublic struct DeviceTokenBlackBerryPush: Codable, Equatable, Hashable {\n\n    /// Token; may be empty to deregister a device\n    public let token: String\n\n\n    public init(token: String) {\n        self.token = token\n    }\n}\n\n/// A token for Tizen Push Service\npublic struct DeviceTokenTizenPush: Codable, Equatable, Hashable {\n\n    /// Push service registration identifier; may be empty to deregister a device\n    public let regId: String\n\n\n    public init(regId: String) {\n        self.regId = regId\n    }\n}\n\n/// A token for HUAWEI Push Service\npublic struct DeviceTokenHuaweiPush: Codable, Equatable, Hashable {\n\n    /// True, if push notifications must be additionally encrypted\n    public let encrypt: Bool\n\n    /// Device registration token; may be empty to deregister a device\n    public let token: String\n\n\n    public init(\n        encrypt: Bool,\n        token: String\n    ) {\n        self.encrypt = encrypt\n        self.token = token\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DiceStickers.swift",
    "content": "//\n//  DiceStickers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains animated stickers which must be used for dice animation rendering\npublic indirect enum DiceStickers: Codable, Equatable, Hashable {\n\n    /// A regular animated sticker\n    case diceStickersRegular(DiceStickersRegular)\n\n    /// Animated stickers to be combined into a slot machine\n    case diceStickersSlotMachine(DiceStickersSlotMachine)\n\n\n    private enum Kind: String, Codable {\n        case diceStickersRegular\n        case diceStickersSlotMachine\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .diceStickersRegular:\n            let value = try DiceStickersRegular(from: decoder)\n            self = .diceStickersRegular(value)\n        case .diceStickersSlotMachine:\n            let value = try DiceStickersSlotMachine(from: decoder)\n            self = .diceStickersSlotMachine(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .diceStickersRegular(let value):\n            try container.encode(Kind.diceStickersRegular, forKey: .type)\n            try value.encode(to: encoder)\n        case .diceStickersSlotMachine(let value):\n            try container.encode(Kind.diceStickersSlotMachine, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A regular animated sticker\npublic struct DiceStickersRegular: Codable, Equatable, Hashable {\n\n    /// The animated sticker with the dice animation\n    public let sticker: Sticker\n\n\n    public init(sticker: Sticker) {\n        self.sticker = sticker\n    }\n}\n\n/// Animated stickers to be combined into a slot machine\npublic struct DiceStickersSlotMachine: Codable, Equatable, Hashable {\n\n    /// The animated sticker with the slot machine background. The background animation must start playing after all reel animations finish\n    public let background: Sticker\n\n    /// The animated sticker with the center reel\n    public let centerReel: Sticker\n\n    /// The animated sticker with the left reel\n    public let leftReel: Sticker\n\n    /// The animated sticker with the lever animation. The lever animation must play once in the initial dice state\n    public let lever: Sticker\n\n    /// The animated sticker with the right reel\n    public let rightReel: Sticker\n\n\n    public init(\n        background: Sticker,\n        centerReel: Sticker,\n        leftReel: Sticker,\n        lever: Sticker,\n        rightReel: Sticker\n    ) {\n        self.background = background\n        self.centerReel = centerReel\n        self.leftReel = leftReel\n        self.lever = lever\n        self.rightReel = rightReel\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DiffEntity.swift",
    "content": "//\n//  DiffEntity.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a change of a text\npublic struct DiffEntity: Codable, Equatable, Hashable {\n\n    /// Length of the entity, in UTF-16 code units\n    public let length: Int\n\n    /// Offset of the entity, in UTF-16 code units\n    public let offset: Int\n\n    /// Type of the entity\n    public let type: DiffEntityType\n\n\n    public init(\n        length: Int,\n        offset: Int,\n        type: DiffEntityType\n    ) {\n        self.length = length\n        self.offset = offset\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DiffEntityType.swift",
    "content": "//\n//  DiffEntityType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a change of a text\npublic indirect enum DiffEntityType: Codable, Equatable, Hashable {\n\n    /// Addition of some text\n    case diffEntityTypeInsert\n\n    /// Change of some text\n    case diffEntityTypeReplace(DiffEntityTypeReplace)\n\n    /// Removal of some text\n    case diffEntityTypeDelete\n\n\n    private enum Kind: String, Codable {\n        case diffEntityTypeInsert\n        case diffEntityTypeReplace\n        case diffEntityTypeDelete\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .diffEntityTypeInsert:\n            self = .diffEntityTypeInsert\n        case .diffEntityTypeReplace:\n            let value = try DiffEntityTypeReplace(from: decoder)\n            self = .diffEntityTypeReplace(value)\n        case .diffEntityTypeDelete:\n            self = .diffEntityTypeDelete\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .diffEntityTypeInsert:\n            try container.encode(Kind.diffEntityTypeInsert, forKey: .type)\n        case .diffEntityTypeReplace(let value):\n            try container.encode(Kind.diffEntityTypeReplace, forKey: .type)\n            try value.encode(to: encoder)\n        case .diffEntityTypeDelete:\n            try container.encode(Kind.diffEntityTypeDelete, forKey: .type)\n        }\n    }\n}\n\n/// Change of some text\npublic struct DiffEntityTypeReplace: Codable, Equatable, Hashable {\n\n    /// The old text\n    public let oldText: String\n\n\n    public init(oldText: String) {\n        self.oldText = oldText\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DiffText.swift",
    "content": "//\n//  DiffText.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A text with some changes highlighted\npublic struct DiffText: Codable, Equatable, Hashable {\n\n    /// Entities describing changes in the text. Entities don't mutually intersect with each other\n    public let entities: [DiffEntity]\n\n    /// The text\n    public let text: String\n\n\n    public init(\n        entities: [DiffEntity],\n        text: String\n    ) {\n        self.entities = entities\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DirectMessagesChatTopic.swift",
    "content": "//\n//  DirectMessagesChatTopic.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a topic in a channel direct messages chat administered by the current user\npublic struct DirectMessagesChatTopic: Codable, Equatable, Hashable, Identifiable {\n\n    /// True, if the other party can send unpaid messages even if the chat has paid messages enabled\n    public let canSendUnpaidMessages: Bool\n\n    /// Identifier of the chat to which the topic belongs\n    public let chatId: Int64\n\n    /// A draft of a message in the topic; may be null if none\n    public let draftMessage: DraftMessage?\n\n    /// Unique topic identifier\n    public let id: Int64\n\n    /// True, if the topic is marked as unread\n    public let isMarkedAsUnread: Bool\n\n    /// Last message in the topic; may be null if none or unknown\n    public let lastMessage: Message?\n\n    /// Identifier of the last read incoming message\n    public let lastReadInboxMessageId: Int64\n\n    /// Identifier of the last read outgoing message\n    public let lastReadOutboxMessageId: Int64\n\n    /// A parameter used to determine order of the topic in the topic list. Topics must be sorted by the order in descending order\n    public let order: TdInt64\n\n    /// Identifier of the user or chat that sends the messages to the topic\n    public let senderId: MessageSender\n\n    /// Number of unread messages in the chat\n    public let unreadCount: Int64\n\n    /// Number of messages with unread reactions in the chat\n    public let unreadReactionCount: Int64\n\n\n    public init(\n        canSendUnpaidMessages: Bool,\n        chatId: Int64,\n        draftMessage: DraftMessage?,\n        id: Int64,\n        isMarkedAsUnread: Bool,\n        lastMessage: Message?,\n        lastReadInboxMessageId: Int64,\n        lastReadOutboxMessageId: Int64,\n        order: TdInt64,\n        senderId: MessageSender,\n        unreadCount: Int64,\n        unreadReactionCount: Int64\n    ) {\n        self.canSendUnpaidMessages = canSendUnpaidMessages\n        self.chatId = chatId\n        self.draftMessage = draftMessage\n        self.id = id\n        self.isMarkedAsUnread = isMarkedAsUnread\n        self.lastMessage = lastMessage\n        self.lastReadInboxMessageId = lastReadInboxMessageId\n        self.lastReadOutboxMessageId = lastReadOutboxMessageId\n        self.order = order\n        self.senderId = senderId\n        self.unreadCount = unreadCount\n        self.unreadReactionCount = unreadReactionCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DisableAllSupergroupUsernames.swift",
    "content": "//\n//  DisableAllSupergroupUsernames.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Disables all active non-editable usernames of a supergroup or channel, requires owner privileges in the supergroup or channel\npublic struct DisableAllSupergroupUsernames: Codable, Equatable, Hashable {\n\n    /// Identifier of the supergroup or channel\n    public let supergroupId: Int64?\n\n\n    public init(supergroupId: Int64?) {\n        self.supergroupId = supergroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DisableProxy.swift",
    "content": "//\n//  DisableProxy.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Disables the currently enabled proxy. Can be called before authorization\npublic struct DisableProxy: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DiscardCall.swift",
    "content": "//\n//  DiscardCall.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Discards a call\npublic struct DiscardCall: Codable, Equatable, Hashable {\n\n    /// Call identifier\n    public let callId: Int?\n\n    /// Identifier of the connection used during the call\n    public let connectionId: TdInt64?\n\n    /// The call duration, in seconds\n    public let duration: Int?\n\n    /// If the call was upgraded to a group call, pass invite link to the group call\n    public let inviteLink: String?\n\n    /// Pass true if the user was disconnected\n    public let isDisconnected: Bool?\n\n    /// Pass true if the call was a video call\n    public let isVideo: Bool?\n\n\n    public init(\n        callId: Int?,\n        connectionId: TdInt64?,\n        duration: Int?,\n        inviteLink: String?,\n        isDisconnected: Bool?,\n        isVideo: Bool?\n    ) {\n        self.callId = callId\n        self.connectionId = connectionId\n        self.duration = duration\n        self.inviteLink = inviteLink\n        self.isDisconnected = isDisconnected\n        self.isVideo = isVideo\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DisconnectAffiliateProgram.swift",
    "content": "//\n//  DisconnectAffiliateProgram.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Disconnects an affiliate program from the given affiliate and immediately deactivates its referral link. Returns updated information about the disconnected affiliate program\npublic struct DisconnectAffiliateProgram: Codable, Equatable, Hashable {\n\n    /// The affiliate to which the affiliate program is connected\n    public let affiliate: AffiliateType?\n\n    /// The referral link of the affiliate program\n    public let url: String?\n\n\n    public init(\n        affiliate: AffiliateType?,\n        url: String?\n    ) {\n        self.affiliate = affiliate\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DisconnectAllWebsites.swift",
    "content": "//\n//  DisconnectAllWebsites.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Disconnects all websites from the current user's Telegram account\npublic struct DisconnectAllWebsites: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DisconnectChatAffiliateProgram.swift",
    "content": "//\n//  DisconnectChatAffiliateProgram.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.41-53acb2b5\n//  https://github.com/tdlib/td/tree/53acb2b5\n//\n\nimport Foundation\n\n\n/// Disconnects an affiliate program from the given chat and immediately deactivates its referral link. Returns updated information about the disconnected affiliate program\npublic struct DisconnectChatAffiliateProgram: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat for which the affiliate program is connected\n    public let chatId: Int64?\n\n    /// The referral link of the affiliate program\n    public let url: String?\n\n\n    public init(\n        chatId: Int64?,\n        url: String?\n    ) {\n        self.chatId = chatId\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DisconnectWebsite.swift",
    "content": "//\n//  DisconnectWebsite.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Disconnects website from the current user's Telegram account\npublic struct DisconnectWebsite: Codable, Equatable, Hashable {\n\n    /// Website identifier\n    public let websiteId: TdInt64?\n\n\n    public init(websiteId: TdInt64?) {\n        self.websiteId = websiteId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Document.swift",
    "content": "//\n//  Document.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a document of any type\npublic struct Document: Codable, Equatable, Hashable {\n\n    /// File containing the document\n    public let document: File\n\n    /// Original name of the file; as defined by the sender\n    public let fileName: String\n\n    /// MIME type of the file; as defined by the sender\n    public let mimeType: String\n\n    /// Document minithumbnail; may be null\n    public let minithumbnail: Minithumbnail?\n\n    /// Document thumbnail in JPEG or PNG format (PNG will be used only for background patterns); as defined by the sender; may be null\n    public let thumbnail: Thumbnail?\n\n\n    public init(\n        document: File,\n        fileName: String,\n        mimeType: String,\n        minithumbnail: Minithumbnail?,\n        thumbnail: Thumbnail?\n    ) {\n        self.document = document\n        self.fileName = fileName\n        self.mimeType = mimeType\n        self.minithumbnail = minithumbnail\n        self.thumbnail = thumbnail\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DownloadFile.swift",
    "content": "//\n//  DownloadFile.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Downloads a file from the cloud. Download progress and completion of the download will be notified through updateFile updates\npublic struct DownloadFile: Codable, Equatable, Hashable {\n\n    /// Identifier of the file to download\n    public let fileId: Int?\n\n    /// Number of bytes which need to be downloaded starting from the \"offset\" position before the download will automatically be canceled; use 0 to download without a limit\n    public let limit: Int64?\n\n    /// The starting position from which the file needs to be downloaded\n    public let offset: Int64?\n\n    /// Priority of the download (1-32). The higher the priority, the earlier the file will be downloaded. If the priorities of two files are equal, then the last one for which downloadFile/addFileToDownloads was called will be downloaded first\n    public let priority: Int?\n\n    /// Pass true to return response only after the file download has succeeded, has failed, has been canceled, or a new downloadFile request with different offset/limit parameters was sent; pass false to return file state immediately, just after the download has been started\n    public let synchronous: Bool?\n\n\n    public init(\n        fileId: Int?,\n        limit: Int64?,\n        offset: Int64?,\n        priority: Int?,\n        synchronous: Bool?\n    ) {\n        self.fileId = fileId\n        self.limit = limit\n        self.offset = offset\n        self.priority = priority\n        self.synchronous = synchronous\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DownloadedFileCounts.swift",
    "content": "//\n//  DownloadedFileCounts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains number of being downloaded and recently downloaded files found\npublic struct DownloadedFileCounts: Codable, Equatable, Hashable {\n\n    /// Number of active file downloads found, including paused\n    public let activeCount: Int\n\n    /// Number of completed file downloads found\n    public let completedCount: Int\n\n    /// Number of paused file downloads found\n    public let pausedCount: Int\n\n\n    public init(\n        activeCount: Int,\n        completedCount: Int,\n        pausedCount: Int\n    ) {\n        self.activeCount = activeCount\n        self.completedCount = completedCount\n        self.pausedCount = pausedCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DraftMessage.swift",
    "content": "//\n//  DraftMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a message draft\npublic struct DraftMessage: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the draft was created\n    public let date: Int\n\n    /// Identifier of the effect to apply to the message when it is sent; 0 if none\n    public let effectId: TdInt64\n\n    /// Content of the message draft; must be of the type inputMessageText, inputMessageVideoNote, or inputMessageVoiceNote\n    public let inputMessageText: InputMessageContent\n\n    /// Information about the message to be replied; inputMessageReplyToStory is unsupported; may be null if none\n    public let replyTo: InputMessageReplyTo?\n\n    /// Information about the suggested post; may be null if none\n    public let suggestedPostInfo: InputSuggestedPostInfo?\n\n\n    public init(\n        date: Int,\n        effectId: TdInt64,\n        inputMessageText: InputMessageContent,\n        replyTo: InputMessageReplyTo?,\n        suggestedPostInfo: InputSuggestedPostInfo?\n    ) {\n        self.date = date\n        self.effectId = effectId\n        self.inputMessageText = inputMessageText\n        self.replyTo = replyTo\n        self.suggestedPostInfo = suggestedPostInfo\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/DropGiftOriginalDetails.swift",
    "content": "//\n//  DropGiftOriginalDetails.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Drops original details for an upgraded gift\npublic struct DropGiftOriginalDetails: Codable, Equatable, Hashable {\n\n    /// Identifier of the gift\n    public let receivedGiftId: String?\n\n    /// The Telegram Star amount required to pay for the operation\n    public let starCount: Int64?\n\n\n    public init(\n        receivedGiftId: String?,\n        starCount: Int64?\n    ) {\n        self.receivedGiftId = receivedGiftId\n        self.starCount = starCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditBotMediaPreview.swift",
    "content": "//\n//  EditBotMediaPreview.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Replaces media preview in the list of media previews of a bot. Returns the new preview after edit is completed server-side\npublic struct EditBotMediaPreview: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot. The bot must be owned and must have the main Web App\n    public let botUserId: Int64?\n\n    /// Content of the new preview\n    public let content: InputStoryContent?\n\n    /// File identifier of the media to replace\n    public let fileId: Int?\n\n    /// Language code of the media preview to edit\n    public let languageCode: String?\n\n\n    public init(\n        botUserId: Int64?,\n        content: InputStoryContent?,\n        fileId: Int?,\n        languageCode: String?\n    ) {\n        self.botUserId = botUserId\n        self.content = content\n        self.fileId = fileId\n        self.languageCode = languageCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditBusinessChatLink.swift",
    "content": "//\n//  EditBusinessChatLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits a business chat link of the current account. Requires Telegram Business subscription. Returns the edited link\npublic struct EditBusinessChatLink: Codable, Equatable, Hashable {\n\n    /// The link to edit\n    public let link: String?\n\n    /// New description of the link\n    public let linkInfo: InputBusinessChatLink?\n\n\n    public init(\n        link: String?,\n        linkInfo: InputBusinessChatLink?\n    ) {\n        self.link = link\n        self.linkInfo = linkInfo\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditBusinessMessageCaption.swift",
    "content": "//\n//  EditBusinessMessageCaption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits the caption of a message sent on behalf of a business account; for bots only\npublic struct EditBusinessMessageCaption: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection on behalf of which the message was sent\n    public let businessConnectionId: String?\n\n    /// New message content caption; pass null to remove caption; 0-getOption(\"message_caption_length_max\") characters\n    public let caption: FormattedText?\n\n    /// The chat the message belongs to\n    public let chatId: Int64?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n    /// The new message reply markup; pass null if none\n    public let replyMarkup: ReplyMarkup?\n\n    /// Pass true to show the caption above the media; otherwise, the caption will be shown below the media. May be true only for animation, photo, and video messages\n    public let showCaptionAboveMedia: Bool?\n\n\n    public init(\n        businessConnectionId: String?,\n        caption: FormattedText?,\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        showCaptionAboveMedia: Bool?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.caption = caption\n        self.chatId = chatId\n        self.messageId = messageId\n        self.replyMarkup = replyMarkup\n        self.showCaptionAboveMedia = showCaptionAboveMedia\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditBusinessMessageChecklist.swift",
    "content": "//\n//  EditBusinessMessageChecklist.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits the content of a checklist in a message sent on behalf of a business account; for bots only\npublic struct EditBusinessMessageChecklist: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection on behalf of which the message was sent\n    public let businessConnectionId: String?\n\n    /// The chat the message belongs to\n    public let chatId: Int64?\n\n    /// The new checklist. If some tasks were completed, this information will be kept\n    public let checklist: InputChecklist?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n    /// The new message reply markup; pass null if none\n    public let replyMarkup: ReplyMarkup?\n\n\n    public init(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        checklist: InputChecklist?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.chatId = chatId\n        self.checklist = checklist\n        self.messageId = messageId\n        self.replyMarkup = replyMarkup\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditBusinessMessageLiveLocation.swift",
    "content": "//\n//  EditBusinessMessageLiveLocation.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits the content of a live location in a message sent on behalf of a business account; for bots only\npublic struct EditBusinessMessageLiveLocation: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection on behalf of which the message was sent\n    public let businessConnectionId: String?\n\n    /// The chat the message belongs to\n    public let chatId: Int64?\n\n    /// The new direction in which the location moves, in degrees; 1-360. Pass 0 if unknown\n    public let heading: Int?\n\n    /// New time relative to the message send date, for which the location can be updated, in seconds. If 0x7FFFFFFF specified, then the location can be updated forever. Otherwise, must not exceed the current live_period by more than a day, and the live location expiration date must remain in the next 90 days. Pass 0 to keep the current live_period\n    public let livePeriod: Int?\n\n    /// New location content of the message; pass null to stop sharing the live location\n    public let location: Location?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n    /// The new maximum distance for proximity alerts, in meters (0-100000). Pass 0 if the notification is disabled\n    public let proximityAlertRadius: Int?\n\n    /// The new message reply markup; pass null if none\n    public let replyMarkup: ReplyMarkup?\n\n\n    public init(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        heading: Int?,\n        livePeriod: Int?,\n        location: Location?,\n        messageId: Int64?,\n        proximityAlertRadius: Int?,\n        replyMarkup: ReplyMarkup?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.chatId = chatId\n        self.heading = heading\n        self.livePeriod = livePeriod\n        self.location = location\n        self.messageId = messageId\n        self.proximityAlertRadius = proximityAlertRadius\n        self.replyMarkup = replyMarkup\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditBusinessMessageMedia.swift",
    "content": "//\n//  EditBusinessMessageMedia.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits the media content of a message with a text, an animation, an audio, a document, a photo or a video in a message sent on behalf of a business account; for bots only\npublic struct EditBusinessMessageMedia: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection on behalf of which the message was sent\n    public let businessConnectionId: String?\n\n    /// The chat the message belongs to\n    public let chatId: Int64?\n\n    /// New content of the message. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageDocument, inputMessagePhoto or inputMessageVideo\n    public let inputMessageContent: InputMessageContent?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n    /// The new message reply markup; pass null if none; for bots only\n    public let replyMarkup: ReplyMarkup?\n\n\n    public init(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.chatId = chatId\n        self.inputMessageContent = inputMessageContent\n        self.messageId = messageId\n        self.replyMarkup = replyMarkup\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditBusinessMessageReplyMarkup.swift",
    "content": "//\n//  EditBusinessMessageReplyMarkup.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits the reply markup of a message sent on behalf of a business account; for bots only\npublic struct EditBusinessMessageReplyMarkup: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection on behalf of which the message was sent\n    public let businessConnectionId: String?\n\n    /// The chat the message belongs to\n    public let chatId: Int64?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n    /// The new message reply markup; pass null if none\n    public let replyMarkup: ReplyMarkup?\n\n\n    public init(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.chatId = chatId\n        self.messageId = messageId\n        self.replyMarkup = replyMarkup\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditBusinessMessageText.swift",
    "content": "//\n//  EditBusinessMessageText.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits the text of a text or game message sent on behalf of a business account; for bots only\npublic struct EditBusinessMessageText: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection on behalf of which the message was sent\n    public let businessConnectionId: String?\n\n    /// The chat the message belongs to\n    public let chatId: Int64?\n\n    /// New text content of the message. Must be of type inputMessageText\n    public let inputMessageContent: InputMessageContent?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n    /// The new message reply markup; pass null if none\n    public let replyMarkup: ReplyMarkup?\n\n\n    public init(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.chatId = chatId\n        self.inputMessageContent = inputMessageContent\n        self.messageId = messageId\n        self.replyMarkup = replyMarkup\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditBusinessStory.swift",
    "content": "//\n//  EditBusinessStory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes a story posted by the bot on behalf of a business account; for bots only\npublic struct EditBusinessStory: Codable, Equatable, Hashable {\n\n    /// New clickable rectangle areas to be shown on the story media\n    public let areas: InputStoryAreas?\n\n    /// New story caption\n    public let caption: FormattedText?\n\n    /// New content of the story\n    public let content: InputStoryContent?\n\n    /// The new privacy settings for the story\n    public let privacySettings: StoryPrivacySettings?\n\n    /// Identifier of the story to edit\n    public let storyId: Int?\n\n    /// Identifier of the chat that posted the story\n    public let storyPosterChatId: Int64?\n\n\n    public init(\n        areas: InputStoryAreas?,\n        caption: FormattedText?,\n        content: InputStoryContent?,\n        privacySettings: StoryPrivacySettings?,\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) {\n        self.areas = areas\n        self.caption = caption\n        self.content = content\n        self.privacySettings = privacySettings\n        self.storyId = storyId\n        self.storyPosterChatId = storyPosterChatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditChatFolder.swift",
    "content": "//\n//  EditChatFolder.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits existing chat folder. Returns information about the edited chat folder\npublic struct EditChatFolder: Codable, Equatable, Hashable {\n\n    /// Chat folder identifier\n    public let chatFolderId: Int?\n\n    /// The edited chat folder\n    public let folder: ChatFolder?\n\n\n    public init(\n        chatFolderId: Int?,\n        folder: ChatFolder?\n    ) {\n        self.chatFolderId = chatFolderId\n        self.folder = folder\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditChatFolderInviteLink.swift",
    "content": "//\n//  EditChatFolderInviteLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits an invite link for a chat folder\npublic struct EditChatFolderInviteLink: Codable, Equatable, Hashable {\n\n    /// Chat folder identifier\n    public let chatFolderId: Int?\n\n    /// New identifiers of chats to be accessible by the invite link. Use getChatsForChatFolderInviteLink to get suitable chats. Basic groups will be automatically converted to supergroups before link editing\n    public let chatIds: [Int64]?\n\n    /// Invite link to be edited\n    public let inviteLink: String?\n\n    /// New name of the link; 0-32 characters\n    public let name: String?\n\n\n    public init(\n        chatFolderId: Int?,\n        chatIds: [Int64]?,\n        inviteLink: String?,\n        name: String?\n    ) {\n        self.chatFolderId = chatFolderId\n        self.chatIds = chatIds\n        self.inviteLink = inviteLink\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditChatInviteLink.swift",
    "content": "//\n//  EditChatInviteLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits a non-primary invite link for a chat. Available for basic groups, supergroups, and channels. If the link creates a subscription, then expiration_date, member_limit and creates_join_request must not be used. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\npublic struct EditChatInviteLink: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Pass true if users joining the chat via the link need to be approved by chat administrators. In this case, member_limit must be 0\n    public let createsJoinRequest: Bool?\n\n    /// Point in time (Unix timestamp) when the link will expire; pass 0 if never\n    public let expirationDate: Int?\n\n    /// Invite link to be edited\n    public let inviteLink: String?\n\n    /// The maximum number of chat members that can join the chat via the link simultaneously; 0-99999; pass 0 if not limited\n    public let memberLimit: Int?\n\n    /// Invite link name; 0-32 characters\n    public let name: String?\n\n\n    public init(\n        chatId: Int64?,\n        createsJoinRequest: Bool?,\n        expirationDate: Int?,\n        inviteLink: String?,\n        memberLimit: Int?,\n        name: String?\n    ) {\n        self.chatId = chatId\n        self.createsJoinRequest = createsJoinRequest\n        self.expirationDate = expirationDate\n        self.inviteLink = inviteLink\n        self.memberLimit = memberLimit\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditChatSubscriptionInviteLink.swift",
    "content": "//\n//  EditChatSubscriptionInviteLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits a subscription invite link for a channel chat. Requires can_invite_users right in the chat for own links and owner privileges for other links\npublic struct EditChatSubscriptionInviteLink: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Invite link to be edited\n    public let inviteLink: String?\n\n    /// Invite link name; 0-32 characters\n    public let name: String?\n\n\n    public init(\n        chatId: Int64?,\n        inviteLink: String?,\n        name: String?\n    ) {\n        self.chatId = chatId\n        self.inviteLink = inviteLink\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditCustomLanguagePackInfo.swift",
    "content": "//\n//  EditCustomLanguagePackInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits information about a custom local language pack in the current localization target. Can be called before authorization\npublic struct EditCustomLanguagePackInfo: Codable, Equatable, Hashable {\n\n    /// New information about the custom local language pack\n    public let info: LanguagePackInfo?\n\n\n    public init(info: LanguagePackInfo?) {\n        self.info = info\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditForumTopic.swift",
    "content": "//\n//  EditForumTopic.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits title and icon of a topic in a forum supergroup chat or a chat with a bot with topics; for supergroup chats requires can_manage_topics administrator right unless the user is creator of the topic\npublic struct EditForumTopic: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n    /// Pass true to edit the icon of the topic. Icon of the General topic can't be edited\n    public let editIconCustomEmoji: Bool?\n\n    /// Forum topic identifier\n    public let forumTopicId: Int?\n\n    /// Identifier of the new custom emoji for topic icon; pass 0 to remove the custom emoji. Ignored if edit_icon_custom_emoji is false. Telegram Premium users can use any custom emoji, other users can use only a custom emoji returned by getForumTopicDefaultIcons\n    public let iconCustomEmojiId: TdInt64?\n\n    /// New name of the topic; 0-128 characters. If empty, the previous topic name is kept\n    public let name: String?\n\n\n    public init(\n        chatId: Int64?,\n        editIconCustomEmoji: Bool?,\n        forumTopicId: Int?,\n        iconCustomEmojiId: TdInt64?,\n        name: String?\n    ) {\n        self.chatId = chatId\n        self.editIconCustomEmoji = editIconCustomEmoji\n        self.forumTopicId = forumTopicId\n        self.iconCustomEmojiId = iconCustomEmojiId\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditInlineMessageCaption.swift",
    "content": "//\n//  EditInlineMessageCaption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits the caption of an inline message sent via a bot; for bots only\npublic struct EditInlineMessageCaption: Codable, Equatable, Hashable {\n\n    /// New message content caption; pass null to remove caption; 0-getOption(\"message_caption_length_max\") characters\n    public let caption: FormattedText?\n\n    /// Inline message identifier\n    public let inlineMessageId: String?\n\n    /// The new message reply markup; pass null if none\n    public let replyMarkup: ReplyMarkup?\n\n    /// Pass true to show the caption above the media; otherwise, the caption will be shown below the media. May be true only for animation, photo, and video messages\n    public let showCaptionAboveMedia: Bool?\n\n\n    public init(\n        caption: FormattedText?,\n        inlineMessageId: String?,\n        replyMarkup: ReplyMarkup?,\n        showCaptionAboveMedia: Bool?\n    ) {\n        self.caption = caption\n        self.inlineMessageId = inlineMessageId\n        self.replyMarkup = replyMarkup\n        self.showCaptionAboveMedia = showCaptionAboveMedia\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditInlineMessageLiveLocation.swift",
    "content": "//\n//  EditInlineMessageLiveLocation.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits the content of a live location in an inline message sent via a bot; for bots only\npublic struct EditInlineMessageLiveLocation: Codable, Equatable, Hashable {\n\n    /// The new direction in which the location moves, in degrees; 1-360. Pass 0 if unknown\n    public let heading: Int?\n\n    /// Inline message identifier\n    public let inlineMessageId: String?\n\n    /// New time relative to the message send date, for which the location can be updated, in seconds. If 0x7FFFFFFF specified, then the location can be updated forever. Otherwise, must not exceed the current live_period by more than a day, and the live location expiration date must remain in the next 90 days. Pass 0 to keep the current live_period\n    public let livePeriod: Int?\n\n    /// New location content of the message; pass null to stop sharing the live location\n    public let location: Location?\n\n    /// The new maximum distance for proximity alerts, in meters (0-100000). Pass 0 if the notification is disabled\n    public let proximityAlertRadius: Int?\n\n    /// The new message reply markup; pass null if none\n    public let replyMarkup: ReplyMarkup?\n\n\n    public init(\n        heading: Int?,\n        inlineMessageId: String?,\n        livePeriod: Int?,\n        location: Location?,\n        proximityAlertRadius: Int?,\n        replyMarkup: ReplyMarkup?\n    ) {\n        self.heading = heading\n        self.inlineMessageId = inlineMessageId\n        self.livePeriod = livePeriod\n        self.location = location\n        self.proximityAlertRadius = proximityAlertRadius\n        self.replyMarkup = replyMarkup\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditInlineMessageMedia.swift",
    "content": "//\n//  EditInlineMessageMedia.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits the media content of a message with a text, an animation, an audio, a document, a photo or a video in an inline message sent via a bot; for bots only\npublic struct EditInlineMessageMedia: Codable, Equatable, Hashable {\n\n    /// Inline message identifier\n    public let inlineMessageId: String?\n\n    /// New content of the message. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageDocument, inputMessagePhoto or inputMessageVideo\n    public let inputMessageContent: InputMessageContent?\n\n    /// The new message reply markup; pass null if none; for bots only\n    public let replyMarkup: ReplyMarkup?\n\n\n    public init(\n        inlineMessageId: String?,\n        inputMessageContent: InputMessageContent?,\n        replyMarkup: ReplyMarkup?\n    ) {\n        self.inlineMessageId = inlineMessageId\n        self.inputMessageContent = inputMessageContent\n        self.replyMarkup = replyMarkup\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditInlineMessageReplyMarkup.swift",
    "content": "//\n//  EditInlineMessageReplyMarkup.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits the reply markup of an inline message sent via a bot; for bots only\npublic struct EditInlineMessageReplyMarkup: Codable, Equatable, Hashable {\n\n    /// Inline message identifier\n    public let inlineMessageId: String?\n\n    /// The new message reply markup; pass null if none\n    public let replyMarkup: ReplyMarkup?\n\n\n    public init(\n        inlineMessageId: String?,\n        replyMarkup: ReplyMarkup?\n    ) {\n        self.inlineMessageId = inlineMessageId\n        self.replyMarkup = replyMarkup\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditInlineMessageText.swift",
    "content": "//\n//  EditInlineMessageText.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits the text of an inline text or game message sent via a bot; for bots only\npublic struct EditInlineMessageText: Codable, Equatable, Hashable {\n\n    /// Inline message identifier\n    public let inlineMessageId: String?\n\n    /// New text content of the message. Must be of type inputMessageText\n    public let inputMessageContent: InputMessageContent?\n\n    /// The new message reply markup; pass null if none\n    public let replyMarkup: ReplyMarkup?\n\n\n    public init(\n        inlineMessageId: String?,\n        inputMessageContent: InputMessageContent?,\n        replyMarkup: ReplyMarkup?\n    ) {\n        self.inlineMessageId = inlineMessageId\n        self.inputMessageContent = inputMessageContent\n        self.replyMarkup = replyMarkup\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditMessageCaption.swift",
    "content": "//\n//  EditMessageCaption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits the message content caption. Returns the edited message after the edit is completed on the server side\npublic struct EditMessageCaption: Codable, Equatable, Hashable {\n\n    /// New message content caption; 0-getOption(\"message_caption_length_max\") characters; pass null to remove caption\n    public let caption: FormattedText?\n\n    /// The chat the message belongs to\n    public let chatId: Int64?\n\n    /// Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    public let messageId: Int64?\n\n    /// The new message reply markup; pass null if none; for bots only\n    public let replyMarkup: ReplyMarkup?\n\n    /// Pass true to show the caption above the media; otherwise, the caption will be shown below the media. May be true only for animation, photo, and video messages\n    public let showCaptionAboveMedia: Bool?\n\n\n    public init(\n        caption: FormattedText?,\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?,\n        showCaptionAboveMedia: Bool?\n    ) {\n        self.caption = caption\n        self.chatId = chatId\n        self.messageId = messageId\n        self.replyMarkup = replyMarkup\n        self.showCaptionAboveMedia = showCaptionAboveMedia\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditMessageChecklist.swift",
    "content": "//\n//  EditMessageChecklist.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits the message content of a checklist. Returns the edited message after the edit is completed on the server side\npublic struct EditMessageChecklist: Codable, Equatable, Hashable {\n\n    /// The chat the message belongs to\n    public let chatId: Int64?\n\n    /// The new checklist. If some tasks were completed, this information will be kept\n    public let checklist: InputChecklist?\n\n    /// Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    public let messageId: Int64?\n\n    /// The new message reply markup; pass null if none; for bots only\n    public let replyMarkup: ReplyMarkup?\n\n\n    public init(\n        chatId: Int64?,\n        checklist: InputChecklist?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) {\n        self.chatId = chatId\n        self.checklist = checklist\n        self.messageId = messageId\n        self.replyMarkup = replyMarkup\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditMessageLiveLocation.swift",
    "content": "//\n//  EditMessageLiveLocation.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits the message content of a live location. Messages can be edited for a limited period of time specified in the live location. Returns the edited message after the edit is completed on the server side\npublic struct EditMessageLiveLocation: Codable, Equatable, Hashable {\n\n    /// The chat the message belongs to\n    public let chatId: Int64?\n\n    /// The new direction in which the location moves, in degrees; 1-360. Pass 0 if unknown\n    public let heading: Int?\n\n    /// New time relative to the message send date, for which the location can be updated, in seconds. If 0x7FFFFFFF specified, then the location can be updated forever. Otherwise, must not exceed the current live_period by more than a day, and the live location expiration date must remain in the next 90 days. Pass 0 to keep the current live_period\n    public let livePeriod: Int?\n\n    /// New location content of the message; pass null to stop sharing the live location\n    public let location: Location?\n\n    /// Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    public let messageId: Int64?\n\n    /// The new maximum distance for proximity alerts, in meters (0-100000). Pass 0 if the notification is disabled\n    public let proximityAlertRadius: Int?\n\n    /// The new message reply markup; pass null if none; for bots only\n    public let replyMarkup: ReplyMarkup?\n\n\n    public init(\n        chatId: Int64?,\n        heading: Int?,\n        livePeriod: Int?,\n        location: Location?,\n        messageId: Int64?,\n        proximityAlertRadius: Int?,\n        replyMarkup: ReplyMarkup?\n    ) {\n        self.chatId = chatId\n        self.heading = heading\n        self.livePeriod = livePeriod\n        self.location = location\n        self.messageId = messageId\n        self.proximityAlertRadius = proximityAlertRadius\n        self.replyMarkup = replyMarkup\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditMessageMedia.swift",
    "content": "//\n//  EditMessageMedia.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits the media content of a message, including message caption. If only the caption needs to be edited, use editMessageCaption instead. The type of message content in an album can't be changed with exception of replacing a photo with a video or vice versa. Returns the edited message after the edit is completed on the server side\npublic struct EditMessageMedia: Codable, Equatable, Hashable {\n\n    /// The chat the message belongs to\n    public let chatId: Int64?\n\n    /// New content of the message. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageDocument, inputMessagePhoto or inputMessageVideo\n    public let inputMessageContent: InputMessageContent?\n\n    /// Identifier of the message. Use messageProperties.can_edit_media to check whether the message can be edited\n    public let messageId: Int64?\n\n    /// The new message reply markup; pass null if none; for bots only\n    public let replyMarkup: ReplyMarkup?\n\n\n    public init(\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) {\n        self.chatId = chatId\n        self.inputMessageContent = inputMessageContent\n        self.messageId = messageId\n        self.replyMarkup = replyMarkup\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditMessageReplyMarkup.swift",
    "content": "//\n//  EditMessageReplyMarkup.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits the message reply markup; for bots only. Returns the edited message after the edit is completed on the server side\npublic struct EditMessageReplyMarkup: Codable, Equatable, Hashable {\n\n    /// The chat the message belongs to\n    public let chatId: Int64?\n\n    /// Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    public let messageId: Int64?\n\n    /// The new message reply markup; pass null if none\n    public let replyMarkup: ReplyMarkup?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.replyMarkup = replyMarkup\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditMessageSchedulingState.swift",
    "content": "//\n//  EditMessageSchedulingState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits the time when a scheduled message will be sent. Scheduling state of all messages in the same album or forwarded together with the message will be also changed\npublic struct EditMessageSchedulingState: Codable, Equatable, Hashable {\n\n    /// The chat the message belongs to\n    public let chatId: Int64?\n\n    /// Identifier of the message. Use messageProperties.can_edit_scheduling_state to check whether the message is suitable\n    public let messageId: Int64?\n\n    /// The new message scheduling state; pass null to send the message immediately. Must be null for messages in the state messageSchedulingStateSendWhenVideoProcessed\n    public let schedulingState: MessageSchedulingState?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        schedulingState: MessageSchedulingState?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.schedulingState = schedulingState\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditMessageText.swift",
    "content": "//\n//  EditMessageText.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits the text of a message (or a text of a game message). Returns the edited message after the edit is completed on the server side\npublic struct EditMessageText: Codable, Equatable, Hashable {\n\n    /// The chat the message belongs to\n    public let chatId: Int64?\n\n    /// New text content of the message. Must be of type inputMessageText\n    public let inputMessageContent: InputMessageContent?\n\n    /// Identifier of the message. Use messageProperties.can_be_edited to check whether the message can be edited\n    public let messageId: Int64?\n\n    /// The new message reply markup; pass null if none; for bots only\n    public let replyMarkup: ReplyMarkup?\n\n\n    public init(\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) {\n        self.chatId = chatId\n        self.inputMessageContent = inputMessageContent\n        self.messageId = messageId\n        self.replyMarkup = replyMarkup\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditProxy.swift",
    "content": "//\n//  EditProxy.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits an existing proxy server for network requests. Can be called before authorization\npublic struct EditProxy: Codable, Equatable, Hashable {\n\n    /// New comment for the proxy\n    public let comment: String?\n\n    /// Pass true to immediately enable the proxy\n    public let enable: Bool?\n\n    /// The new information about the proxy\n    public let proxy: Proxy?\n\n    /// Proxy identifier\n    public let proxyId: Int?\n\n\n    public init(\n        comment: String?,\n        enable: Bool?,\n        proxy: Proxy?,\n        proxyId: Int?\n    ) {\n        self.comment = comment\n        self.enable = enable\n        self.proxy = proxy\n        self.proxyId = proxyId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditQuickReplyMessage.swift",
    "content": "//\n//  EditQuickReplyMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Asynchronously edits the text, media or caption of a quick reply message. Use quickReplyMessage.can_be_edited to check whether a message can be edited. Media message can be edited only to a media message. Checklist messages can be edited only to a checklist message. The type of message content in an album can't be changed with exception of replacing a photo with a video or vice versa\npublic struct EditQuickReplyMessage: Codable, Equatable, Hashable {\n\n    /// New content of the message. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageChecklist, inputMessageDocument, inputMessagePhoto, inputMessageText, or inputMessageVideo\n    public let inputMessageContent: InputMessageContent?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n    /// Unique identifier of the quick reply shortcut with the message\n    public let shortcutId: Int?\n\n\n    public init(\n        inputMessageContent: InputMessageContent?,\n        messageId: Int64?,\n        shortcutId: Int?\n    ) {\n        self.inputMessageContent = inputMessageContent\n        self.messageId = messageId\n        self.shortcutId = shortcutId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditStarSubscription.swift",
    "content": "//\n//  EditStarSubscription.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Cancels or re-enables Telegram Star subscription\npublic struct EditStarSubscription: Codable, Equatable, Hashable {\n\n    /// New value of is_canceled\n    public let isCanceled: Bool?\n\n    /// Identifier of the subscription to change\n    public let subscriptionId: String?\n\n\n    public init(\n        isCanceled: Bool?,\n        subscriptionId: String?\n    ) {\n        self.isCanceled = isCanceled\n        self.subscriptionId = subscriptionId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditStory.swift",
    "content": "//\n//  EditStory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes content and caption of a story. Can be called only if story.can_be_edited == true\npublic struct EditStory: Codable, Equatable, Hashable {\n\n    /// New clickable rectangle areas to be shown on the story media; pass null to keep the current areas. Areas can't be edited if story content isn't changed\n    public let areas: InputStoryAreas?\n\n    /// New story caption; pass null to keep the current caption\n    public let caption: FormattedText?\n\n    /// New content of the story; pass null to keep the current content\n    public let content: InputStoryContent?\n\n    /// Identifier of the story to edit\n    public let storyId: Int?\n\n    /// Identifier of the chat that posted the story\n    public let storyPosterChatId: Int64?\n\n\n    public init(\n        areas: InputStoryAreas?,\n        caption: FormattedText?,\n        content: InputStoryContent?,\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) {\n        self.areas = areas\n        self.caption = caption\n        self.content = content\n        self.storyId = storyId\n        self.storyPosterChatId = storyPosterChatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditStoryCover.swift",
    "content": "//\n//  EditStoryCover.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes cover of a video story. Can be called only if story.can_be_edited == true and the story isn't being edited now\npublic struct EditStoryCover: Codable, Equatable, Hashable {\n\n    /// New timestamp of the frame, which will be used as video thumbnail\n    public let coverFrameTimestamp: Double?\n\n    /// Identifier of the story to edit\n    public let storyId: Int?\n\n    /// Identifier of the chat that posted the story\n    public let storyPosterChatId: Int64?\n\n\n    public init(\n        coverFrameTimestamp: Double?,\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) {\n        self.coverFrameTimestamp = coverFrameTimestamp\n        self.storyId = storyId\n        self.storyPosterChatId = storyPosterChatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditTextCompositionStyle.swift",
    "content": "//\n//  EditTextCompositionStyle.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Edits a custom text composition style that was created by the current user\npublic struct EditTextCompositionStyle: Codable, Equatable, Hashable {\n\n    /// Identifier of the custom emoji corresponding to the style\n    public let customEmojiId: TdInt64?\n\n    /// Name of the style\n    public let name: String?\n\n    /// Prompt that will be used for text composition; 1-getOption(\"text_composition_style_prompt_length_max\") characters\n    public let prompt: String?\n\n    /// Pass true if the current user must be shown as the creator of the style\n    public let showCreator: Bool?\n\n    /// Title of the style; 1-getOption(\"text_composition_style_title_length_max\") characters\n    public let title: String?\n\n\n    public init(\n        customEmojiId: TdInt64?,\n        name: String?,\n        prompt: String?,\n        showCreator: Bool?,\n        title: String?\n    ) {\n        self.customEmojiId = customEmojiId\n        self.name = name\n        self.prompt = prompt\n        self.showCreator = showCreator\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EditUserStarSubscription.swift",
    "content": "//\n//  EditUserStarSubscription.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Cancels or re-enables Telegram Star subscription for a user; for bots only\npublic struct EditUserStarSubscription: Codable, Equatable, Hashable {\n\n    /// Pass true to cancel the subscription; pass false to allow the user to enable it\n    public let isCanceled: Bool?\n\n    /// Telegram payment identifier of the subscription\n    public let telegramPaymentChargeId: String?\n\n    /// User identifier\n    public let userId: Int64?\n\n\n    public init(\n        isCanceled: Bool?,\n        telegramPaymentChargeId: String?,\n        userId: Int64?\n    ) {\n        self.isCanceled = isCanceled\n        self.telegramPaymentChargeId = telegramPaymentChargeId\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EmailAddressAuthentication.swift",
    "content": "//\n//  EmailAddressAuthentication.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains authentication data for an email address\npublic indirect enum EmailAddressAuthentication: Codable, Equatable, Hashable {\n\n    /// An authentication code delivered to a user's email address\n    case emailAddressAuthenticationCode(EmailAddressAuthenticationCode)\n\n    /// An authentication token received through Apple ID\n    case emailAddressAuthenticationAppleId(EmailAddressAuthenticationAppleId)\n\n    /// An authentication token received through Google ID\n    case emailAddressAuthenticationGoogleId(EmailAddressAuthenticationGoogleId)\n\n\n    private enum Kind: String, Codable {\n        case emailAddressAuthenticationCode\n        case emailAddressAuthenticationAppleId\n        case emailAddressAuthenticationGoogleId\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .emailAddressAuthenticationCode:\n            let value = try EmailAddressAuthenticationCode(from: decoder)\n            self = .emailAddressAuthenticationCode(value)\n        case .emailAddressAuthenticationAppleId:\n            let value = try EmailAddressAuthenticationAppleId(from: decoder)\n            self = .emailAddressAuthenticationAppleId(value)\n        case .emailAddressAuthenticationGoogleId:\n            let value = try EmailAddressAuthenticationGoogleId(from: decoder)\n            self = .emailAddressAuthenticationGoogleId(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .emailAddressAuthenticationCode(let value):\n            try container.encode(Kind.emailAddressAuthenticationCode, forKey: .type)\n            try value.encode(to: encoder)\n        case .emailAddressAuthenticationAppleId(let value):\n            try container.encode(Kind.emailAddressAuthenticationAppleId, forKey: .type)\n            try value.encode(to: encoder)\n        case .emailAddressAuthenticationGoogleId(let value):\n            try container.encode(Kind.emailAddressAuthenticationGoogleId, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// An authentication code delivered to a user's email address\npublic struct EmailAddressAuthenticationCode: Codable, Equatable, Hashable {\n\n    /// The code\n    public let code: String\n\n\n    public init(code: String) {\n        self.code = code\n    }\n}\n\n/// An authentication token received through Apple ID\npublic struct EmailAddressAuthenticationAppleId: Codable, Equatable, Hashable {\n\n    /// The token\n    public let token: String\n\n\n    public init(token: String) {\n        self.token = token\n    }\n}\n\n/// An authentication token received through Google ID\npublic struct EmailAddressAuthenticationGoogleId: Codable, Equatable, Hashable {\n\n    /// The token\n    public let token: String\n\n\n    public init(token: String) {\n        self.token = token\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EmailAddressAuthenticationCodeInfo.swift",
    "content": "//\n//  EmailAddressAuthenticationCodeInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Information about the email address authentication code that was sent\npublic struct EmailAddressAuthenticationCodeInfo: Codable, Equatable, Hashable {\n\n    /// Pattern of the email address to which an authentication code was sent\n    public let emailAddressPattern: String\n\n    /// Length of the code; 0 if unknown\n    public let length: Int\n\n\n    public init(\n        emailAddressPattern: String,\n        length: Int\n    ) {\n        self.emailAddressPattern = emailAddressPattern\n        self.length = length\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EmailAddressResetState.swift",
    "content": "//\n//  EmailAddressResetState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes reset state of an email address\npublic indirect enum EmailAddressResetState: Codable, Equatable, Hashable {\n\n    /// Email address can be reset after the given period. Call resetAuthenticationEmailAddress to reset it and allow the user to authorize with a code sent to the user's phone number\n    case emailAddressResetStateAvailable(EmailAddressResetStateAvailable)\n\n    /// Email address reset has already been requested. Call resetAuthenticationEmailAddress to check whether immediate reset is possible\n    case emailAddressResetStatePending(EmailAddressResetStatePending)\n\n\n    private enum Kind: String, Codable {\n        case emailAddressResetStateAvailable\n        case emailAddressResetStatePending\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .emailAddressResetStateAvailable:\n            let value = try EmailAddressResetStateAvailable(from: decoder)\n            self = .emailAddressResetStateAvailable(value)\n        case .emailAddressResetStatePending:\n            let value = try EmailAddressResetStatePending(from: decoder)\n            self = .emailAddressResetStatePending(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .emailAddressResetStateAvailable(let value):\n            try container.encode(Kind.emailAddressResetStateAvailable, forKey: .type)\n            try value.encode(to: encoder)\n        case .emailAddressResetStatePending(let value):\n            try container.encode(Kind.emailAddressResetStatePending, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Email address can be reset after the given period. Call resetAuthenticationEmailAddress to reset it and allow the user to authorize with a code sent to the user's phone number\npublic struct EmailAddressResetStateAvailable: Codable, Equatable, Hashable {\n\n    /// Time required to wait before the email address can be reset; 0 if the user is subscribed to Telegram Premium\n    public let waitPeriod: Int\n\n\n    public init(waitPeriod: Int) {\n        self.waitPeriod = waitPeriod\n    }\n}\n\n/// Email address reset has already been requested. Call resetAuthenticationEmailAddress to check whether immediate reset is possible\npublic struct EmailAddressResetStatePending: Codable, Equatable, Hashable {\n\n    /// Left time before the email address will be reset, in seconds. updateAuthorizationState is not sent when this field changes\n    public let resetIn: Int\n\n\n    public init(resetIn: Int) {\n        self.resetIn = resetIn\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EmojiCategories.swift",
    "content": "//\n//  EmojiCategories.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of emoji categories\npublic struct EmojiCategories: Codable, Equatable, Hashable {\n\n    /// List of categories\n    public let categories: [EmojiCategory]\n\n\n    public init(categories: [EmojiCategory]) {\n        self.categories = categories\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EmojiCategory.swift",
    "content": "//\n//  EmojiCategory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an emoji category\npublic struct EmojiCategory: Codable, Equatable, Hashable {\n\n    /// Custom emoji sticker, which represents icon of the category\n    public let icon: Sticker\n\n    /// True, if the category must be shown first when choosing a sticker for the start page\n    public let isGreeting: Bool\n\n    /// Name of the category\n    public let name: String\n\n    /// Source of stickers for the emoji category\n    public let source: EmojiCategorySource\n\n\n    public init(\n        icon: Sticker,\n        isGreeting: Bool,\n        name: String,\n        source: EmojiCategorySource\n    ) {\n        self.icon = icon\n        self.isGreeting = isGreeting\n        self.name = name\n        self.source = source\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EmojiCategorySource.swift",
    "content": "//\n//  EmojiCategorySource.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes source of stickers for an emoji category\npublic indirect enum EmojiCategorySource: Codable, Equatable, Hashable {\n\n    /// The category contains a list of similar emoji to search for in getStickers and searchStickers for stickers, or getInlineQueryResults with the bot getOption(\"animation_search_bot_username\") for animations\n    case emojiCategorySourceSearch(EmojiCategorySourceSearch)\n\n    /// The category contains premium stickers that must be found by getPremiumStickers\n    case emojiCategorySourcePremium\n\n\n    private enum Kind: String, Codable {\n        case emojiCategorySourceSearch\n        case emojiCategorySourcePremium\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .emojiCategorySourceSearch:\n            let value = try EmojiCategorySourceSearch(from: decoder)\n            self = .emojiCategorySourceSearch(value)\n        case .emojiCategorySourcePremium:\n            self = .emojiCategorySourcePremium\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .emojiCategorySourceSearch(let value):\n            try container.encode(Kind.emojiCategorySourceSearch, forKey: .type)\n            try value.encode(to: encoder)\n        case .emojiCategorySourcePremium:\n            try container.encode(Kind.emojiCategorySourcePremium, forKey: .type)\n        }\n    }\n}\n\n/// The category contains a list of similar emoji to search for in getStickers and searchStickers for stickers, or getInlineQueryResults with the bot getOption(\"animation_search_bot_username\") for animations\npublic struct EmojiCategorySourceSearch: Codable, Equatable, Hashable {\n\n    /// List of emojis to search for\n    public let emojis: [String]\n\n\n    public init(emojis: [String]) {\n        self.emojis = emojis\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EmojiCategoryType.swift",
    "content": "//\n//  EmojiCategoryType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of emoji category\npublic indirect enum EmojiCategoryType: Codable, Equatable, Hashable {\n\n    /// The category must be used by default (e.g., for custom emoji or animation search)\n    case emojiCategoryTypeDefault\n\n    /// The category must be used by default for regular sticker selection. It may contain greeting emoji category and premium stickers\n    case emojiCategoryTypeRegularStickers\n\n    /// The category must be used for emoji status selection\n    case emojiCategoryTypeEmojiStatus\n\n    /// The category must be used for chat photo emoji selection\n    case emojiCategoryTypeChatPhoto\n\n\n    private enum Kind: String, Codable {\n        case emojiCategoryTypeDefault\n        case emojiCategoryTypeRegularStickers\n        case emojiCategoryTypeEmojiStatus\n        case emojiCategoryTypeChatPhoto\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .emojiCategoryTypeDefault:\n            self = .emojiCategoryTypeDefault\n        case .emojiCategoryTypeRegularStickers:\n            self = .emojiCategoryTypeRegularStickers\n        case .emojiCategoryTypeEmojiStatus:\n            self = .emojiCategoryTypeEmojiStatus\n        case .emojiCategoryTypeChatPhoto:\n            self = .emojiCategoryTypeChatPhoto\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .emojiCategoryTypeDefault:\n            try container.encode(Kind.emojiCategoryTypeDefault, forKey: .type)\n        case .emojiCategoryTypeRegularStickers:\n            try container.encode(Kind.emojiCategoryTypeRegularStickers, forKey: .type)\n        case .emojiCategoryTypeEmojiStatus:\n            try container.encode(Kind.emojiCategoryTypeEmojiStatus, forKey: .type)\n        case .emojiCategoryTypeChatPhoto:\n            try container.encode(Kind.emojiCategoryTypeChatPhoto, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EmojiChatTheme.swift",
    "content": "//\n//  EmojiChatTheme.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a chat theme based on an emoji\npublic struct EmojiChatTheme: Codable, Equatable, Hashable {\n\n    /// Theme settings for a dark chat theme\n    public let darkSettings: ThemeSettings\n\n    /// Theme settings for a light chat theme\n    public let lightSettings: ThemeSettings\n\n    /// Theme name\n    public let name: String\n\n\n    public init(\n        darkSettings: ThemeSettings,\n        lightSettings: ThemeSettings,\n        name: String\n    ) {\n        self.darkSettings = darkSettings\n        self.lightSettings = lightSettings\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EmojiKeyword.swift",
    "content": "//\n//  EmojiKeyword.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents an emoji with its keyword\npublic struct EmojiKeyword: Codable, Equatable, Hashable {\n\n    /// The emoji\n    public let emoji: String\n\n    /// The keyword\n    public let keyword: String\n\n\n    public init(\n        emoji: String,\n        keyword: String\n    ) {\n        self.emoji = emoji\n        self.keyword = keyword\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EmojiKeywords.swift",
    "content": "//\n//  EmojiKeywords.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of emojis with their keywords\npublic struct EmojiKeywords: Codable, Equatable, Hashable {\n\n    /// List of emojis with their keywords\n    public let emojiKeywords: [EmojiKeyword]\n\n\n    public init(emojiKeywords: [EmojiKeyword]) {\n        self.emojiKeywords = emojiKeywords\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EmojiReaction.swift",
    "content": "//\n//  EmojiReaction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about an emoji reaction\npublic struct EmojiReaction: Codable, Equatable, Hashable {\n\n    /// Activate animation for the reaction\n    public let activateAnimation: Sticker\n\n    /// Appear animation for the reaction\n    public let appearAnimation: Sticker\n\n    /// Around animation for the reaction; may be null\n    public let aroundAnimation: Sticker?\n\n    /// Center animation for the reaction; may be null\n    public let centerAnimation: Sticker?\n\n    /// Effect animation for the reaction\n    public let effectAnimation: Sticker\n\n    /// Text representation of the reaction\n    public let emoji: String\n\n    /// True, if the reaction can be added to new messages and enabled in chats\n    public let isActive: Bool\n\n    /// Select animation for the reaction\n    public let selectAnimation: Sticker\n\n    /// Static icon for the reaction\n    public let staticIcon: Sticker\n\n    /// Reaction title\n    public let title: String\n\n\n    public init(\n        activateAnimation: Sticker,\n        appearAnimation: Sticker,\n        aroundAnimation: Sticker?,\n        centerAnimation: Sticker?,\n        effectAnimation: Sticker,\n        emoji: String,\n        isActive: Bool,\n        selectAnimation: Sticker,\n        staticIcon: Sticker,\n        title: String\n    ) {\n        self.activateAnimation = activateAnimation\n        self.appearAnimation = appearAnimation\n        self.aroundAnimation = aroundAnimation\n        self.centerAnimation = centerAnimation\n        self.effectAnimation = effectAnimation\n        self.emoji = emoji\n        self.isActive = isActive\n        self.selectAnimation = selectAnimation\n        self.staticIcon = staticIcon\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EmojiStatus.swift",
    "content": "//\n//  EmojiStatus.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an emoji to be shown instead of the Telegram Premium badge\npublic struct EmojiStatus: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the status will expire; 0 if never\n    public let expirationDate: Int\n\n    /// Type of the emoji status\n    public let type: EmojiStatusType\n\n\n    public init(\n        expirationDate: Int,\n        type: EmojiStatusType\n    ) {\n        self.expirationDate = expirationDate\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EmojiStatusCustomEmojis.swift",
    "content": "//\n//  EmojiStatusCustomEmojis.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of custom emoji identifiers for emoji statuses\npublic struct EmojiStatusCustomEmojis: Codable, Equatable, Hashable {\n\n    /// The list of custom emoji identifiers\n    public let customEmojiIds: [TdInt64]\n\n\n    public init(customEmojiIds: [TdInt64]) {\n        self.customEmojiIds = customEmojiIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EmojiStatusType.swift",
    "content": "//\n//  EmojiStatusType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of emoji status\npublic indirect enum EmojiStatusType: Codable, Equatable, Hashable {\n\n    /// A custom emoji set as emoji status\n    case emojiStatusTypeCustomEmoji(EmojiStatusTypeCustomEmoji)\n\n    /// An upgraded gift set as emoji status\n    case emojiStatusTypeUpgradedGift(EmojiStatusTypeUpgradedGift)\n\n\n    private enum Kind: String, Codable {\n        case emojiStatusTypeCustomEmoji\n        case emojiStatusTypeUpgradedGift\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .emojiStatusTypeCustomEmoji:\n            let value = try EmojiStatusTypeCustomEmoji(from: decoder)\n            self = .emojiStatusTypeCustomEmoji(value)\n        case .emojiStatusTypeUpgradedGift:\n            let value = try EmojiStatusTypeUpgradedGift(from: decoder)\n            self = .emojiStatusTypeUpgradedGift(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .emojiStatusTypeCustomEmoji(let value):\n            try container.encode(Kind.emojiStatusTypeCustomEmoji, forKey: .type)\n            try value.encode(to: encoder)\n        case .emojiStatusTypeUpgradedGift(let value):\n            try container.encode(Kind.emojiStatusTypeUpgradedGift, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A custom emoji set as emoji status\npublic struct EmojiStatusTypeCustomEmoji: Codable, Equatable, Hashable {\n\n    /// Identifier of the custom emoji in stickerFormatTgs format\n    public let customEmojiId: TdInt64\n\n\n    public init(customEmojiId: TdInt64) {\n        self.customEmojiId = customEmojiId\n    }\n}\n\n/// An upgraded gift set as emoji status\npublic struct EmojiStatusTypeUpgradedGift: Codable, Equatable, Hashable {\n\n    /// Colors of the backdrop of the upgraded gift\n    public let backdropColors: UpgradedGiftBackdropColors\n\n    /// Unique name of the upgraded gift that can be used with internalLinkTypeUpgradedGift\n    public let giftName: String\n\n    /// The title of the upgraded gift\n    public let giftTitle: String\n\n    /// Custom emoji identifier of the model of the upgraded gift\n    public let modelCustomEmojiId: TdInt64\n\n    /// Custom emoji identifier of the symbol of the upgraded gift\n    public let symbolCustomEmojiId: TdInt64\n\n    /// Identifier of the upgraded gift\n    public let upgradedGiftId: TdInt64\n\n\n    public init(\n        backdropColors: UpgradedGiftBackdropColors,\n        giftName: String,\n        giftTitle: String,\n        modelCustomEmojiId: TdInt64,\n        symbolCustomEmojiId: TdInt64,\n        upgradedGiftId: TdInt64\n    ) {\n        self.backdropColors = backdropColors\n        self.giftName = giftName\n        self.giftTitle = giftTitle\n        self.modelCustomEmojiId = modelCustomEmojiId\n        self.symbolCustomEmojiId = symbolCustomEmojiId\n        self.upgradedGiftId = upgradedGiftId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EmojiStatuses.swift",
    "content": "//\n//  EmojiStatuses.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of emoji statuses\npublic struct EmojiStatuses: Codable, Equatable, Hashable {\n\n    /// The list of emoji statuses identifiers\n    public let emojiStatuses: [EmojiStatus]\n\n\n    public init(emojiStatuses: [EmojiStatus]) {\n        self.emojiStatuses = emojiStatuses\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Emojis.swift",
    "content": "//\n//  Emojis.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of emojis\npublic struct Emojis: Codable, Equatable, Hashable {\n\n    /// List of emojis\n    public let emojis: [String]\n\n\n    public init(emojis: [String]) {\n        self.emojis = emojis\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EnableProxy.swift",
    "content": "//\n//  EnableProxy.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Enables a proxy. Only one proxy can be enabled at a time. Can be called before authorization\npublic struct EnableProxy: Codable, Equatable, Hashable {\n\n    /// Proxy identifier\n    public let proxyId: Int?\n\n\n    public init(proxyId: Int?) {\n        self.proxyId = proxyId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EncryptGroupCallData.swift",
    "content": "//\n//  EncryptGroupCallData.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Encrypts group call data before sending them over network using tgcalls\npublic struct EncryptGroupCallData: Codable, Equatable, Hashable {\n\n    /// Data to encrypt\n    public let data: Data?\n\n    /// Data channel for which data is encrypted\n    public let dataChannel: GroupCallDataChannel?\n\n    /// Group call identifier. The call must not be a video chat\n    public let groupCallId: Int?\n\n    /// Size of data prefix that must be kept unencrypted\n    public let unencryptedPrefixSize: Int?\n\n\n    public init(\n        data: Data?,\n        dataChannel: GroupCallDataChannel?,\n        groupCallId: Int?,\n        unencryptedPrefixSize: Int?\n    ) {\n        self.data = data\n        self.dataChannel = dataChannel\n        self.groupCallId = groupCallId\n        self.unencryptedPrefixSize = unencryptedPrefixSize\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EncryptedCredentials.swift",
    "content": "//\n//  EncryptedCredentials.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains encrypted Telegram Passport data credentials\npublic struct EncryptedCredentials: Codable, Equatable, Hashable {\n\n    /// The encrypted credentials\n    public let data: Data\n\n    /// The decrypted data hash\n    public let hash: Data\n\n    /// Secret for data decryption, encrypted with the service's public key\n    public let secret: Data\n\n\n    public init(\n        data: Data,\n        hash: Data,\n        secret: Data\n    ) {\n        self.data = data\n        self.hash = hash\n        self.secret = secret\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EncryptedPassportElement.swift",
    "content": "//\n//  EncryptedPassportElement.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about an encrypted Telegram Passport element; for bots only\npublic struct EncryptedPassportElement: Codable, Equatable, Hashable {\n\n    /// Encrypted JSON-encoded data about the user\n    public let data: Data\n\n    /// List of attached files\n    public let files: [DatedFile]\n\n    /// The front side of an identity document\n    public let frontSide: DatedFile\n\n    /// Hash of the entire element\n    public let hash: String\n\n    /// The reverse side of an identity document; may be null\n    public let reverseSide: DatedFile?\n\n    /// Selfie with the document; may be null\n    public let selfie: DatedFile?\n\n    /// List of files containing a certified English translation of the document\n    public let translation: [DatedFile]\n\n    /// Type of Telegram Passport element\n    public let type: PassportElementType\n\n    /// Unencrypted data, phone number or email address\n    public let value: String\n\n\n    public init(\n        data: Data,\n        files: [DatedFile],\n        frontSide: DatedFile,\n        hash: String,\n        reverseSide: DatedFile?,\n        selfie: DatedFile?,\n        translation: [DatedFile],\n        type: PassportElementType,\n        value: String\n    ) {\n        self.data = data\n        self.files = files\n        self.frontSide = frontSide\n        self.hash = hash\n        self.reverseSide = reverseSide\n        self.selfie = selfie\n        self.translation = translation\n        self.type = type\n        self.value = value\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EndGroupCall.swift",
    "content": "//\n//  EndGroupCall.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Ends a group call. Requires groupCall.can_be_managed right for video chats and live stories or groupCall.is_owned otherwise\npublic struct EndGroupCall: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n\n    public init(groupCallId: Int?) {\n        self.groupCallId = groupCallId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EndGroupCallRecording.swift",
    "content": "//\n//  EndGroupCallRecording.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Ends recording of an active group call; for video chats only. Requires groupCall.can_be_managed right\npublic struct EndGroupCallRecording: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n\n    public init(groupCallId: Int?) {\n        self.groupCallId = groupCallId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/EndGroupCallScreenSharing.swift",
    "content": "//\n//  EndGroupCallScreenSharing.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Ends screen sharing in a joined group call; not supported in live stories\npublic struct EndGroupCallScreenSharing: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n\n    public init(groupCallId: Int?) {\n        self.groupCallId = groupCallId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Error.swift",
    "content": "//\n//  Error.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// An object of this type can be returned on every function call, in case of an error\npublic struct Error: Codable, Equatable, Hashable, Swift.Error {\n\n    /// Error code; subject to future changes. If the error code is 406, the error message must not be processed in any way and must not be displayed to the user\n    public let code: Int\n\n    /// Error message; subject to future changes\n    public let message: String\n\n\n    public init(\n        code: Int,\n        message: String\n    ) {\n        self.code = code\n        self.message = message\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FactCheck.swift",
    "content": "//\n//  FactCheck.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a fact-check added to the message by an independent checker\npublic struct FactCheck: Codable, Equatable, Hashable {\n\n    /// A two-letter ISO 3166-1 alpha-2 country code of the country for which the fact-check is shown\n    public let countryCode: String\n\n    /// Text of the fact-check\n    public let text: FormattedText\n\n\n    public init(\n        countryCode: String,\n        text: FormattedText\n    ) {\n        self.countryCode = countryCode\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FailedToAddMember.swift",
    "content": "//\n//  FailedToAddMember.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a user who has failed to be added to a chat\npublic struct FailedToAddMember: Codable, Equatable, Hashable {\n\n    /// True, if subscription to Telegram Premium is required to send the user chat invite link\n    public let premiumRequiredToSendMessages: Bool\n\n    /// True, if subscription to Telegram Premium would have allowed to add the user to the chat\n    public let premiumWouldAllowInvite: Bool\n\n    /// User identifier\n    public let userId: Int64\n\n\n    public init(\n        premiumRequiredToSendMessages: Bool,\n        premiumWouldAllowInvite: Bool,\n        userId: Int64\n    ) {\n        self.premiumRequiredToSendMessages = premiumRequiredToSendMessages\n        self.premiumWouldAllowInvite = premiumWouldAllowInvite\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FailedToAddMembers.swift",
    "content": "//\n//  FailedToAddMembers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of users that has failed to be added to a chat\npublic struct FailedToAddMembers: Codable, Equatable, Hashable {\n\n    /// Information about users that weren't added to the chat\n    public let failedToAddMembers: [FailedToAddMember]\n\n\n    public init(failedToAddMembers: [FailedToAddMember]) {\n        self.failedToAddMembers = failedToAddMembers\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/File.swift",
    "content": "//\n//  File.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a file\npublic struct File: Codable, Equatable, Hashable, Identifiable {\n\n    /// Approximate file size in bytes in case the exact file size is unknown. Can be used to show download/upload progress\n    public let expectedSize: Int64\n\n    /// Unique file identifier\n    public let id: Int\n\n    /// Information about the local copy of the file\n    public let local: LocalFile\n\n    /// Information about the remote copy of the file\n    public let remote: RemoteFile\n\n    /// File size, in bytes; 0 if unknown\n    public let size: Int64\n\n\n    public init(\n        expectedSize: Int64,\n        id: Int,\n        local: LocalFile,\n        remote: RemoteFile,\n        size: Int64\n    ) {\n        self.expectedSize = expectedSize\n        self.id = id\n        self.local = local\n        self.remote = remote\n        self.size = size\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FileDownload.swift",
    "content": "//\n//  FileDownload.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a file added to file download list\npublic struct FileDownload: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the file was added to the download list\n    public let addDate: Int\n\n    /// Point in time (Unix timestamp) when the file downloading was completed; 0 if the file downloading isn't completed\n    public let completeDate: Int\n\n    /// File identifier\n    public let fileId: Int\n\n    /// True, if downloading of the file is paused\n    public let isPaused: Bool\n\n    /// The message with the file\n    public let message: Message\n\n\n    public init(\n        addDate: Int,\n        completeDate: Int,\n        fileId: Int,\n        isPaused: Bool,\n        message: Message\n    ) {\n        self.addDate = addDate\n        self.completeDate = completeDate\n        self.fileId = fileId\n        self.isPaused = isPaused\n        self.message = message\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FileDownloadedPrefixSize.swift",
    "content": "//\n//  FileDownloadedPrefixSize.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains size of downloaded prefix of a file\npublic struct FileDownloadedPrefixSize: Codable, Equatable, Hashable {\n\n    /// The prefix size, in bytes\n    public let size: Int64\n\n\n    public init(size: Int64) {\n        self.size = size\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FilePart.swift",
    "content": "//\n//  FilePart.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.47-971684a3\n//  https://github.com/tdlib/td/tree/971684a3\n//\n\nimport Foundation\n\n\n/// Contains a part of a file\npublic struct FilePart: Codable, Equatable, Hashable {\n\n    /// File bytes\n    public let data: Data\n\n\n    public init(data: Data) {\n        self.data = data\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FileType.swift",
    "content": "//\n//  FileType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents the type of file\npublic indirect enum FileType: Codable, Equatable, Hashable {\n\n    /// The data is not a file\n    case fileTypeNone\n\n    /// The file is an animation\n    case fileTypeAnimation\n\n    /// The file is an audio file\n    case fileTypeAudio\n\n    /// The file is a document\n    case fileTypeDocument\n\n    /// The file is a video for a live photo\n    case fileTypeLivePhotoVideo\n\n    /// The file is a notification sound\n    case fileTypeNotificationSound\n\n    /// The file is a photo\n    case fileTypePhoto\n\n    /// The file is a photo published as a story\n    case fileTypePhotoStory\n\n    /// The file is a profile photo\n    case fileTypeProfilePhoto\n\n    /// The file was sent to a secret chat (the file type is not known to the server)\n    case fileTypeSecret\n\n    /// The file is a thumbnail of a file from a secret chat\n    case fileTypeSecretThumbnail\n\n    /// The file is a file from Secure storage used for storing Telegram Passport files\n    case fileTypeSecure\n\n    /// The file is a self-destructing video for a live photo in a private chat\n    case fileTypeSelfDestructingLivePhotoVideo\n\n    /// The file is a self-destructing photo in a private chat\n    case fileTypeSelfDestructingPhoto\n\n    /// The file is a self-destructing video in a private chat\n    case fileTypeSelfDestructingVideo\n\n    /// The file is a self-destructing video note in a private chat\n    case fileTypeSelfDestructingVideoNote\n\n    /// The file is a self-destructing voice note in a private chat\n    case fileTypeSelfDestructingVoiceNote\n\n    /// The file is a sticker\n    case fileTypeSticker\n\n    /// The file is a thumbnail of another file\n    case fileTypeThumbnail\n\n    /// The file type is not yet known\n    case fileTypeUnknown\n\n    /// The file is a video\n    case fileTypeVideo\n\n    /// The file is a video note\n    case fileTypeVideoNote\n\n    /// The file is a video published as a story\n    case fileTypeVideoStory\n\n    /// The file is a voice note\n    case fileTypeVoiceNote\n\n    /// The file is a wallpaper or a background pattern\n    case fileTypeWallpaper\n\n\n    private enum Kind: String, Codable {\n        case fileTypeNone\n        case fileTypeAnimation\n        case fileTypeAudio\n        case fileTypeDocument\n        case fileTypeLivePhotoVideo\n        case fileTypeNotificationSound\n        case fileTypePhoto\n        case fileTypePhotoStory\n        case fileTypeProfilePhoto\n        case fileTypeSecret\n        case fileTypeSecretThumbnail\n        case fileTypeSecure\n        case fileTypeSelfDestructingLivePhotoVideo\n        case fileTypeSelfDestructingPhoto\n        case fileTypeSelfDestructingVideo\n        case fileTypeSelfDestructingVideoNote\n        case fileTypeSelfDestructingVoiceNote\n        case fileTypeSticker\n        case fileTypeThumbnail\n        case fileTypeUnknown\n        case fileTypeVideo\n        case fileTypeVideoNote\n        case fileTypeVideoStory\n        case fileTypeVoiceNote\n        case fileTypeWallpaper\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .fileTypeNone:\n            self = .fileTypeNone\n        case .fileTypeAnimation:\n            self = .fileTypeAnimation\n        case .fileTypeAudio:\n            self = .fileTypeAudio\n        case .fileTypeDocument:\n            self = .fileTypeDocument\n        case .fileTypeLivePhotoVideo:\n            self = .fileTypeLivePhotoVideo\n        case .fileTypeNotificationSound:\n            self = .fileTypeNotificationSound\n        case .fileTypePhoto:\n            self = .fileTypePhoto\n        case .fileTypePhotoStory:\n            self = .fileTypePhotoStory\n        case .fileTypeProfilePhoto:\n            self = .fileTypeProfilePhoto\n        case .fileTypeSecret:\n            self = .fileTypeSecret\n        case .fileTypeSecretThumbnail:\n            self = .fileTypeSecretThumbnail\n        case .fileTypeSecure:\n            self = .fileTypeSecure\n        case .fileTypeSelfDestructingLivePhotoVideo:\n            self = .fileTypeSelfDestructingLivePhotoVideo\n        case .fileTypeSelfDestructingPhoto:\n            self = .fileTypeSelfDestructingPhoto\n        case .fileTypeSelfDestructingVideo:\n            self = .fileTypeSelfDestructingVideo\n        case .fileTypeSelfDestructingVideoNote:\n            self = .fileTypeSelfDestructingVideoNote\n        case .fileTypeSelfDestructingVoiceNote:\n            self = .fileTypeSelfDestructingVoiceNote\n        case .fileTypeSticker:\n            self = .fileTypeSticker\n        case .fileTypeThumbnail:\n            self = .fileTypeThumbnail\n        case .fileTypeUnknown:\n            self = .fileTypeUnknown\n        case .fileTypeVideo:\n            self = .fileTypeVideo\n        case .fileTypeVideoNote:\n            self = .fileTypeVideoNote\n        case .fileTypeVideoStory:\n            self = .fileTypeVideoStory\n        case .fileTypeVoiceNote:\n            self = .fileTypeVoiceNote\n        case .fileTypeWallpaper:\n            self = .fileTypeWallpaper\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .fileTypeNone:\n            try container.encode(Kind.fileTypeNone, forKey: .type)\n        case .fileTypeAnimation:\n            try container.encode(Kind.fileTypeAnimation, forKey: .type)\n        case .fileTypeAudio:\n            try container.encode(Kind.fileTypeAudio, forKey: .type)\n        case .fileTypeDocument:\n            try container.encode(Kind.fileTypeDocument, forKey: .type)\n        case .fileTypeLivePhotoVideo:\n            try container.encode(Kind.fileTypeLivePhotoVideo, forKey: .type)\n        case .fileTypeNotificationSound:\n            try container.encode(Kind.fileTypeNotificationSound, forKey: .type)\n        case .fileTypePhoto:\n            try container.encode(Kind.fileTypePhoto, forKey: .type)\n        case .fileTypePhotoStory:\n            try container.encode(Kind.fileTypePhotoStory, forKey: .type)\n        case .fileTypeProfilePhoto:\n            try container.encode(Kind.fileTypeProfilePhoto, forKey: .type)\n        case .fileTypeSecret:\n            try container.encode(Kind.fileTypeSecret, forKey: .type)\n        case .fileTypeSecretThumbnail:\n            try container.encode(Kind.fileTypeSecretThumbnail, forKey: .type)\n        case .fileTypeSecure:\n            try container.encode(Kind.fileTypeSecure, forKey: .type)\n        case .fileTypeSelfDestructingLivePhotoVideo:\n            try container.encode(Kind.fileTypeSelfDestructingLivePhotoVideo, forKey: .type)\n        case .fileTypeSelfDestructingPhoto:\n            try container.encode(Kind.fileTypeSelfDestructingPhoto, forKey: .type)\n        case .fileTypeSelfDestructingVideo:\n            try container.encode(Kind.fileTypeSelfDestructingVideo, forKey: .type)\n        case .fileTypeSelfDestructingVideoNote:\n            try container.encode(Kind.fileTypeSelfDestructingVideoNote, forKey: .type)\n        case .fileTypeSelfDestructingVoiceNote:\n            try container.encode(Kind.fileTypeSelfDestructingVoiceNote, forKey: .type)\n        case .fileTypeSticker:\n            try container.encode(Kind.fileTypeSticker, forKey: .type)\n        case .fileTypeThumbnail:\n            try container.encode(Kind.fileTypeThumbnail, forKey: .type)\n        case .fileTypeUnknown:\n            try container.encode(Kind.fileTypeUnknown, forKey: .type)\n        case .fileTypeVideo:\n            try container.encode(Kind.fileTypeVideo, forKey: .type)\n        case .fileTypeVideoNote:\n            try container.encode(Kind.fileTypeVideoNote, forKey: .type)\n        case .fileTypeVideoStory:\n            try container.encode(Kind.fileTypeVideoStory, forKey: .type)\n        case .fileTypeVoiceNote:\n            try container.encode(Kind.fileTypeVoiceNote, forKey: .type)\n        case .fileTypeWallpaper:\n            try container.encode(Kind.fileTypeWallpaper, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FinishFileGeneration.swift",
    "content": "//\n//  FinishFileGeneration.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Finishes the file generation\npublic struct FinishFileGeneration: Codable, Equatable, Hashable {\n\n    /// If passed, the file generation has failed and must be terminated; pass null if the file generation succeeded\n    public let error: Error?\n\n    /// The identifier of the generation process\n    public let generationId: TdInt64?\n\n\n    public init(\n        error: Error?,\n        generationId: TdInt64?\n    ) {\n        self.error = error\n        self.generationId = generationId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FirebaseAuthenticationSettings.swift",
    "content": "//\n//  FirebaseAuthenticationSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains settings for Firebase Authentication in the official applications\npublic indirect enum FirebaseAuthenticationSettings: Codable, Equatable, Hashable {\n\n    /// Settings for Firebase Authentication in the official Android application\n    case firebaseAuthenticationSettingsAndroid\n\n    /// Settings for Firebase Authentication in the official iOS application\n    case firebaseAuthenticationSettingsIos(FirebaseAuthenticationSettingsIos)\n\n\n    private enum Kind: String, Codable {\n        case firebaseAuthenticationSettingsAndroid\n        case firebaseAuthenticationSettingsIos\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .firebaseAuthenticationSettingsAndroid:\n            self = .firebaseAuthenticationSettingsAndroid\n        case .firebaseAuthenticationSettingsIos:\n            let value = try FirebaseAuthenticationSettingsIos(from: decoder)\n            self = .firebaseAuthenticationSettingsIos(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .firebaseAuthenticationSettingsAndroid:\n            try container.encode(Kind.firebaseAuthenticationSettingsAndroid, forKey: .type)\n        case .firebaseAuthenticationSettingsIos(let value):\n            try container.encode(Kind.firebaseAuthenticationSettingsIos, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Settings for Firebase Authentication in the official iOS application\npublic struct FirebaseAuthenticationSettingsIos: Codable, Equatable, Hashable {\n\n    /// Device token from Apple Push Notification service\n    public let deviceToken: String\n\n    /// True, if App Sandbox is enabled\n    public let isAppSandbox: Bool\n\n\n    public init(\n        deviceToken: String,\n        isAppSandbox: Bool\n    ) {\n        self.deviceToken = deviceToken\n        self.isAppSandbox = isAppSandbox\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FirebaseDeviceVerificationParameters.swift",
    "content": "//\n//  FirebaseDeviceVerificationParameters.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes parameters to be used for device verification\npublic indirect enum FirebaseDeviceVerificationParameters: Codable, Equatable, Hashable {\n\n    /// Device verification must be performed with the SafetyNet Attestation API\n    case firebaseDeviceVerificationParametersSafetyNet(FirebaseDeviceVerificationParametersSafetyNet)\n\n    /// Device verification must be performed with the classic Play Integrity verification (https://developer.android.com/google/play/integrity/classic)\n    case firebaseDeviceVerificationParametersPlayIntegrity(FirebaseDeviceVerificationParametersPlayIntegrity)\n\n\n    private enum Kind: String, Codable {\n        case firebaseDeviceVerificationParametersSafetyNet\n        case firebaseDeviceVerificationParametersPlayIntegrity\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .firebaseDeviceVerificationParametersSafetyNet:\n            let value = try FirebaseDeviceVerificationParametersSafetyNet(from: decoder)\n            self = .firebaseDeviceVerificationParametersSafetyNet(value)\n        case .firebaseDeviceVerificationParametersPlayIntegrity:\n            let value = try FirebaseDeviceVerificationParametersPlayIntegrity(from: decoder)\n            self = .firebaseDeviceVerificationParametersPlayIntegrity(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .firebaseDeviceVerificationParametersSafetyNet(let value):\n            try container.encode(Kind.firebaseDeviceVerificationParametersSafetyNet, forKey: .type)\n            try value.encode(to: encoder)\n        case .firebaseDeviceVerificationParametersPlayIntegrity(let value):\n            try container.encode(Kind.firebaseDeviceVerificationParametersPlayIntegrity, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Device verification must be performed with the SafetyNet Attestation API\npublic struct FirebaseDeviceVerificationParametersSafetyNet: Codable, Equatable, Hashable {\n\n    /// Nonce to pass to the SafetyNet Attestation API\n    public let nonce: Data\n\n\n    public init(nonce: Data) {\n        self.nonce = nonce\n    }\n}\n\n/// Device verification must be performed with the classic Play Integrity verification (https://developer.android.com/google/play/integrity/classic)\npublic struct FirebaseDeviceVerificationParametersPlayIntegrity: Codable, Equatable, Hashable {\n\n    /// Cloud project number to pass to the Play Integrity API\n    public let cloudProjectNumber: TdInt64\n\n    /// Base64url-encoded nonce to pass to the Play Integrity API\n    public let nonce: String\n\n\n    public init(\n        cloudProjectNumber: TdInt64,\n        nonce: String\n    ) {\n        self.cloudProjectNumber = cloudProjectNumber\n        self.nonce = nonce\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FixTextWithAi.swift",
    "content": "//\n//  FixTextWithAi.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Fixes text using an AI model; must not be used in secret chats. May return an error with a message \"AICOMPOSE_FLOOD_PREMIUM\" if Telegram Premium is required to send further requests\npublic struct FixTextWithAi: Codable, Equatable, Hashable {\n\n    /// The original text\n    public let text: FormattedText?\n\n\n    public init(text: FormattedText?) {\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FixedText.swift",
    "content": "//\n//  FixedText.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A text fixed using fixTextWithAi\npublic struct FixedText: Codable, Equatable, Hashable {\n\n    /// Changes made to the original text\n    public let diffText: DiffText\n\n    /// The resulting text\n    public let text: FormattedText\n\n\n    public init(\n        diffText: DiffText,\n        text: FormattedText\n    ) {\n        self.diffText = diffText\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FormattedText.swift",
    "content": "//\n//  FormattedText.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A text with some entities\npublic struct FormattedText: Codable, Equatable, Hashable {\n\n    /// Entities contained in the text. Entities can be nested, but must not mutually intersect with each other. Pre, Code, PreCode, and DateTime entities can't contain other entities. BlockQuote entities can't contain other BlockQuote entities. Bold, Italic, Underline, Strikethrough, and Spoiler entities can contain and can be part of any other entities. All other entities can't contain each other\n    public let entities: [TextEntity]\n\n    /// The text\n    public let text: String\n\n\n    public init(\n        entities: [TextEntity],\n        text: String\n    ) {\n        self.entities = entities\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ForumTopic.swift",
    "content": "//\n//  ForumTopic.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a forum topic\npublic struct ForumTopic: Codable, Equatable, Hashable {\n\n    /// A draft of a message in the topic; may be null if none\n    public let draftMessage: DraftMessage?\n\n    /// Basic information about the topic\n    public let info: ForumTopicInfo\n\n    /// True, if the topic is pinned in the topic list\n    public let isPinned: Bool\n\n    /// Last message in the topic; may be null if unknown\n    public let lastMessage: Message?\n\n    /// Identifier of the last read incoming message\n    public let lastReadInboxMessageId: Int64\n\n    /// Identifier of the last read outgoing message\n    public let lastReadOutboxMessageId: Int64\n\n    /// Notification settings for the topic\n    public let notificationSettings: ChatNotificationSettings\n\n    /// A parameter used to determine order of the topic in the topic list. Topics must be sorted by the order in descending order\n    public let order: TdInt64\n\n    /// Number of unread messages in the topic\n    public let unreadCount: Int\n\n    /// Number of unread messages with a mention/reply in the topic\n    public let unreadMentionCount: Int\n\n    /// Number of messages with unread poll votes in the topic\n    public let unreadPollVoteCount: Int\n\n    /// Number of messages with unread reactions in the topic\n    public let unreadReactionCount: Int\n\n\n    public init(\n        draftMessage: DraftMessage?,\n        info: ForumTopicInfo,\n        isPinned: Bool,\n        lastMessage: Message?,\n        lastReadInboxMessageId: Int64,\n        lastReadOutboxMessageId: Int64,\n        notificationSettings: ChatNotificationSettings,\n        order: TdInt64,\n        unreadCount: Int,\n        unreadMentionCount: Int,\n        unreadPollVoteCount: Int,\n        unreadReactionCount: Int\n    ) {\n        self.draftMessage = draftMessage\n        self.info = info\n        self.isPinned = isPinned\n        self.lastMessage = lastMessage\n        self.lastReadInboxMessageId = lastReadInboxMessageId\n        self.lastReadOutboxMessageId = lastReadOutboxMessageId\n        self.notificationSettings = notificationSettings\n        self.order = order\n        self.unreadCount = unreadCount\n        self.unreadMentionCount = unreadMentionCount\n        self.unreadPollVoteCount = unreadPollVoteCount\n        self.unreadReactionCount = unreadReactionCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ForumTopicIcon.swift",
    "content": "//\n//  ForumTopicIcon.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a forum topic icon\npublic struct ForumTopicIcon: Codable, Equatable, Hashable {\n\n    /// Color of the topic icon in RGB format\n    public let color: Int\n\n    /// Unique identifier of the custom emoji shown on the topic icon; 0 if none\n    public let customEmojiId: TdInt64\n\n\n    public init(\n        color: Int,\n        customEmojiId: TdInt64\n    ) {\n        self.color = color\n        self.customEmojiId = customEmojiId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ForumTopicInfo.swift",
    "content": "//\n//  ForumTopicInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains basic information about a forum topic\npublic struct ForumTopicInfo: Codable, Equatable, Hashable {\n\n    /// Identifier of a forum supergroup chat or a chat with a bot to which the topic belongs\n    public let chatId: Int64\n\n    /// Point in time (Unix timestamp) when the topic was created\n    public let creationDate: Int\n\n    /// Identifier of the creator of the topic\n    public let creatorId: MessageSender\n\n    /// Forum topic identifier of the topic\n    public let forumTopicId: Int\n\n    /// Icon of the topic\n    public let icon: ForumTopicIcon\n\n    /// True, if the topic is closed. If the topic is closed, then the user must have can_manage_topics administrator right in the supergroup or must be the creator of the topic to send messages there\n    public let isClosed: Bool\n\n    /// True, if the topic is the General topic\n    public let isGeneral: Bool\n\n    /// True, if the topic is hidden above the topic list and closed; for General topic only\n    public let isHidden: Bool\n\n    /// True, if the name of the topic wasn't added explicitly\n    public let isNameImplicit: Bool\n\n    /// True, if the topic was created by the current user\n    public let isOutgoing: Bool\n\n    /// Name of the topic\n    public let name: String\n\n\n    public init(\n        chatId: Int64,\n        creationDate: Int,\n        creatorId: MessageSender,\n        forumTopicId: Int,\n        icon: ForumTopicIcon,\n        isClosed: Bool,\n        isGeneral: Bool,\n        isHidden: Bool,\n        isNameImplicit: Bool,\n        isOutgoing: Bool,\n        name: String\n    ) {\n        self.chatId = chatId\n        self.creationDate = creationDate\n        self.creatorId = creatorId\n        self.forumTopicId = forumTopicId\n        self.icon = icon\n        self.isClosed = isClosed\n        self.isGeneral = isGeneral\n        self.isHidden = isHidden\n        self.isNameImplicit = isNameImplicit\n        self.isOutgoing = isOutgoing\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ForumTopics.swift",
    "content": "//\n//  ForumTopics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a list of forum topics\npublic struct ForumTopics: Codable, Equatable, Hashable {\n\n    /// Offset date for the next getForumTopics request\n    public let nextOffsetDate: Int\n\n    /// Offset forum topic identifier for the next getForumTopics request\n    public let nextOffsetForumTopicId: Int\n\n    /// Offset message identifier for the next getForumTopics request\n    public let nextOffsetMessageId: Int64\n\n    /// List of forum topics\n    public let topics: [ForumTopic]\n\n    /// Approximate total number of forum topics found\n    public let totalCount: Int\n\n\n    public init(\n        nextOffsetDate: Int,\n        nextOffsetForumTopicId: Int,\n        nextOffsetMessageId: Int64,\n        topics: [ForumTopic],\n        totalCount: Int\n    ) {\n        self.nextOffsetDate = nextOffsetDate\n        self.nextOffsetForumTopicId = nextOffsetForumTopicId\n        self.nextOffsetMessageId = nextOffsetMessageId\n        self.topics = topics\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ForwardMessages.swift",
    "content": "//\n//  ForwardMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Forwards previously sent messages. Returns the forwarded messages in the same order as the message identifiers passed in message_ids. If a message can't be forwarded, null will be returned instead of the message\npublic struct ForwardMessages: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which to forward messages\n    public let chatId: Int64?\n\n    /// Identifier of the chat from which to forward messages\n    public let fromChatId: Int64?\n\n    /// Identifiers of the messages to forward. Message identifiers must be in a strictly increasing order. At most 100 messages can be forwarded simultaneously. A message can be forwarded only if messageProperties.can_be_forwarded\n    public let messageIds: [Int64]?\n\n    /// Options to be used to send the messages; pass null to use default options\n    public let options: MessageSendOptions?\n\n    /// Pass true to remove media captions of message copies. Ignored if send_copy is false\n    public let removeCaption: Bool?\n\n    /// Pass true to copy content of the messages without reference to the original sender. Always true if the messages are forwarded to a secret chat or are local. Use messageProperties.can_be_copied and messageProperties.can_be_copied_to_secret_chat to check whether the message is suitable\n    public let sendCopy: Bool?\n\n    /// Topic in which the messages will be forwarded; message threads aren't supported; pass null if none\n    public let topicId: MessageTopic?\n\n\n    public init(\n        chatId: Int64?,\n        fromChatId: Int64?,\n        messageIds: [Int64]?,\n        options: MessageSendOptions?,\n        removeCaption: Bool?,\n        sendCopy: Bool?,\n        topicId: MessageTopic?\n    ) {\n        self.chatId = chatId\n        self.fromChatId = fromChatId\n        self.messageIds = messageIds\n        self.options = options\n        self.removeCaption = removeCaption\n        self.sendCopy = sendCopy\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ForwardSource.swift",
    "content": "//\n//  ForwardSource.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about the last message from which a new message was forwarded last time\npublic struct ForwardSource: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the message that was forwarded belonged; may be 0 if unknown\n    public let chatId: Int64\n\n    /// Point in time (Unix timestamp) when the message is sent; 0 if unknown\n    public let date: Int\n\n    /// True, if the message that was forwarded is outgoing; always false if sender is unknown\n    public let isOutgoing: Bool\n\n    /// Identifier of the message; may be 0 if unknown\n    public let messageId: Int64\n\n    /// Identifier of the sender of the message; may be null if unknown or the new message was forwarded not to Saved Messages\n    public let senderId: MessageSender?\n\n    /// Name of the sender of the message if the sender is hidden by their privacy settings\n    public let senderName: String\n\n\n    public init(\n        chatId: Int64,\n        date: Int,\n        isOutgoing: Bool,\n        messageId: Int64,\n        senderId: MessageSender?,\n        senderName: String\n    ) {\n        self.chatId = chatId\n        self.date = date\n        self.isOutgoing = isOutgoing\n        self.messageId = messageId\n        self.senderId = senderId\n        self.senderName = senderName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FoundAffiliateProgram.swift",
    "content": "//\n//  FoundAffiliateProgram.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a found affiliate program\npublic struct FoundAffiliateProgram: Codable, Equatable, Hashable {\n\n    /// User identifier of the bot created the program\n    public let botUserId: Int64\n\n    /// Information about the affiliate program\n    public let info: AffiliateProgramInfo\n\n\n    public init(\n        botUserId: Int64,\n        info: AffiliateProgramInfo\n    ) {\n        self.botUserId = botUserId\n        self.info = info\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FoundAffiliatePrograms.swift",
    "content": "//\n//  FoundAffiliatePrograms.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of found affiliate programs\npublic struct FoundAffiliatePrograms: Codable, Equatable, Hashable {\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// The list of affiliate programs\n    public let programs: [FoundAffiliateProgram]\n\n    /// The total number of found affiliate programs\n    public let totalCount: Int\n\n\n    public init(\n        nextOffset: String,\n        programs: [FoundAffiliateProgram],\n        totalCount: Int\n    ) {\n        self.nextOffset = nextOffset\n        self.programs = programs\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FoundChatBoosts.swift",
    "content": "//\n//  FoundChatBoosts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of boosts applied to a chat\npublic struct FoundChatBoosts: Codable, Equatable, Hashable {\n\n    /// List of boosts\n    public let boosts: [ChatBoost]\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// Total number of boosts applied to the chat\n    public let totalCount: Int\n\n\n    public init(\n        boosts: [ChatBoost],\n        nextOffset: String,\n        totalCount: Int\n    ) {\n        self.boosts = boosts\n        self.nextOffset = nextOffset\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FoundChatMessages.swift",
    "content": "//\n//  FoundChatMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of messages found by a search in a given chat\npublic struct FoundChatMessages: Codable, Equatable, Hashable {\n\n    /// List of messages\n    public let messages: [Message]\n\n    /// The offset for the next request. If 0, there are no more results\n    public let nextFromMessageId: Int64\n\n    /// Approximate total number of messages found; -1 if unknown\n    public let totalCount: Int\n\n\n    public init(\n        messages: [Message],\n        nextFromMessageId: Int64,\n        totalCount: Int\n    ) {\n        self.messages = messages\n        self.nextFromMessageId = nextFromMessageId\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FoundFileDownloads.swift",
    "content": "//\n//  FoundFileDownloads.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of downloaded files, found by a search\npublic struct FoundFileDownloads: Codable, Equatable, Hashable {\n\n    /// The list of files\n    public let files: [FileDownload]\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// Total number of suitable files, ignoring offset\n    public let totalCounts: DownloadedFileCounts\n\n\n    public init(\n        files: [FileDownload],\n        nextOffset: String,\n        totalCounts: DownloadedFileCounts\n    ) {\n        self.files = files\n        self.nextOffset = nextOffset\n        self.totalCounts = totalCounts\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FoundMessages.swift",
    "content": "//\n//  FoundMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of messages found by a search\npublic struct FoundMessages: Codable, Equatable, Hashable {\n\n    /// List of messages\n    public let messages: [Message]\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// Approximate total number of messages found; -1 if unknown\n    public let totalCount: Int\n\n\n    public init(\n        messages: [Message],\n        nextOffset: String,\n        totalCount: Int\n    ) {\n        self.messages = messages\n        self.nextOffset = nextOffset\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FoundPosition.swift",
    "content": "//\n//  FoundPosition.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains 0-based match position\npublic struct FoundPosition: Codable, Equatable, Hashable {\n\n    /// The position of the match\n    public let position: Int\n\n\n    public init(position: Int) {\n        self.position = position\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FoundPositions.swift",
    "content": "//\n//  FoundPositions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains 0-based positions of matched objects\npublic struct FoundPositions: Codable, Equatable, Hashable {\n\n    /// The positions of the matched objects\n    public let positions: [Int]\n\n    /// Total number of matched objects\n    public let totalCount: Int\n\n\n    public init(\n        positions: [Int],\n        totalCount: Int\n    ) {\n        self.positions = positions\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FoundPublicPosts.swift",
    "content": "//\n//  FoundPublicPosts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of messages found by a public post search\npublic struct FoundPublicPosts: Codable, Equatable, Hashable {\n\n    /// True, if the query has failed because search limits are exceeded. In this case search_limits.daily_free_query_count will be equal to 0\n    public let areLimitsExceeded: Bool\n\n    /// List of found public posts\n    public let messages: [Message]\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// Updated public post search limits after the query; repeated requests with the same query will be free; may be null if they didn't change\n    public let searchLimits: PublicPostSearchLimits?\n\n\n    public init(\n        areLimitsExceeded: Bool,\n        messages: [Message],\n        nextOffset: String,\n        searchLimits: PublicPostSearchLimits?\n    ) {\n        self.areLimitsExceeded = areLimitsExceeded\n        self.messages = messages\n        self.nextOffset = nextOffset\n        self.searchLimits = searchLimits\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FoundStories.swift",
    "content": "//\n//  FoundStories.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of stories found by a search\npublic struct FoundStories: Codable, Equatable, Hashable {\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// List of stories\n    public let stories: [Story]\n\n    /// Approximate total number of stories found\n    public let totalCount: Int\n\n\n    public init(\n        nextOffset: String,\n        stories: [Story],\n        totalCount: Int\n    ) {\n        self.nextOffset = nextOffset\n        self.stories = stories\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FoundUsers.swift",
    "content": "//\n//  FoundUsers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of found users\npublic struct FoundUsers: Codable, Equatable, Hashable {\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// Identifiers of the found users\n    public let userIds: [Int64]\n\n\n    public init(\n        nextOffset: String,\n        userIds: [Int64]\n    ) {\n        self.nextOffset = nextOffset\n        self.userIds = userIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/FoundWebApp.swift",
    "content": "//\n//  FoundWebApp.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a Web App found by its short name\npublic struct FoundWebApp: Codable, Equatable, Hashable {\n\n    /// True, if the user must be asked for the permission to the bot to send them messages\n    public let requestWriteAccess: Bool\n\n    /// True, if there is no need to show an ordinary open URL confirmation before opening the Web App. The field must be ignored and confirmation must be shown anyway if the Web App link was hidden\n    public let skipConfirmation: Bool\n\n    /// The Web App\n    public let webApp: WebApp\n\n\n    public init(\n        requestWriteAccess: Bool,\n        skipConfirmation: Bool,\n        webApp: WebApp\n    ) {\n        self.requestWriteAccess = requestWriteAccess\n        self.skipConfirmation = skipConfirmation\n        self.webApp = webApp\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Game.swift",
    "content": "//\n//  Game.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a game. Use getInternalLink with internalLinkTypeGame to share the game\npublic struct Game: Codable, Equatable, Hashable, Identifiable {\n\n    /// Game animation; may be null\n    public let animation: Animation?\n\n    public let description: String\n\n    /// Unique game identifier\n    public let id: TdInt64\n\n    /// Game photo\n    public let photo: Photo\n\n    /// Game short name\n    public let shortName: String\n\n    /// Game text, usually containing scoreboards for a game\n    public let text: FormattedText\n\n    /// Game title\n    public let title: String\n\n\n    public init(\n        animation: Animation?,\n        description: String,\n        id: TdInt64,\n        photo: Photo,\n        shortName: String,\n        text: FormattedText,\n        title: String\n    ) {\n        self.animation = animation\n        self.description = description\n        self.id = id\n        self.photo = photo\n        self.shortName = shortName\n        self.text = text\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GameHighScore.swift",
    "content": "//\n//  GameHighScore.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains one row of the game high score table\npublic struct GameHighScore: Codable, Equatable, Hashable {\n\n    /// Position in the high score table\n    public let position: Int\n\n    /// User score\n    public let score: Int\n\n    /// User identifier\n    public let userId: Int64\n\n\n    public init(\n        position: Int,\n        score: Int,\n        userId: Int64\n    ) {\n        self.position = position\n        self.score = score\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GameHighScores.swift",
    "content": "//\n//  GameHighScores.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of game high scores\npublic struct GameHighScores: Codable, Equatable, Hashable {\n\n    /// A list of game high scores\n    public let scores: [GameHighScore]\n\n\n    public init(scores: [GameHighScore]) {\n        self.scores = scores\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetAccountTtl.swift",
    "content": "//\n//  GetAccountTtl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the period of inactivity after which the account of the current user will automatically be deleted\npublic struct GetAccountTtl: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetActiveLiveLocationMessages.swift",
    "content": "//\n//  GetActiveLiveLocationMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.34-81dc2e24\n//  https://github.com/tdlib/td/tree/81dc2e24\n//\n\nimport Foundation\n\n\n/// Returns all active live locations that need to be updated by the application. The list is persistent across application restarts only if the message database is used\npublic struct GetActiveLiveLocationMessages: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetActiveSessions.swift",
    "content": "//\n//  GetActiveSessions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns all active sessions of the current user\npublic struct GetActiveSessions: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetAllPassportElements.swift",
    "content": "//\n//  GetAllPassportElements.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns all available Telegram Passport elements\npublic struct GetAllPassportElements: Codable, Equatable, Hashable {\n\n    /// The 2-step verification password of the current user\n    public let password: String?\n\n\n    public init(password: String?) {\n        self.password = password\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetAllStickerEmojis.swift",
    "content": "//\n//  GetAllStickerEmojis.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns unique emoji that correspond to stickers to be found by the getStickers(sticker_type, query, 1000000, chat_id)\npublic struct GetAllStickerEmojis: Codable, Equatable, Hashable {\n\n    /// Chat identifier for which to find stickers\n    public let chatId: Int64?\n\n    /// Search query\n    public let query: String?\n\n    /// Pass true if only main emoji for each found sticker must be included in the result\n    public let returnOnlyMainEmoji: Bool?\n\n    /// Type of the stickers to search for\n    public let stickerType: StickerType?\n\n\n    public init(\n        chatId: Int64?,\n        query: String?,\n        returnOnlyMainEmoji: Bool?,\n        stickerType: StickerType?\n    ) {\n        self.chatId = chatId\n        self.query = query\n        self.returnOnlyMainEmoji = returnOnlyMainEmoji\n        self.stickerType = stickerType\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetAnimatedEmoji.swift",
    "content": "//\n//  GetAnimatedEmoji.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an animated emoji corresponding to a given emoji. Returns a 404 error if the emoji has no animated emoji\npublic struct GetAnimatedEmoji: Codable, Equatable, Hashable {\n\n    /// The emoji\n    public let emoji: String?\n\n\n    public init(emoji: String?) {\n        self.emoji = emoji\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetApplicationConfig.swift",
    "content": "//\n//  GetApplicationConfig.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns application config, provided by the server. Can be called before authorization\npublic struct GetApplicationConfig: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetApplicationDownloadLink.swift",
    "content": "//\n//  GetApplicationDownloadLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the link for downloading official Telegram application to be used when the current user invites friends to Telegram\npublic struct GetApplicationDownloadLink: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetArchiveChatListSettings.swift",
    "content": "//\n//  GetArchiveChatListSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns settings for automatic moving of chats to and from the Archive chat lists\npublic struct GetArchiveChatListSettings: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetArchivedStickerSets.swift",
    "content": "//\n//  GetArchivedStickerSets.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a list of archived sticker sets\npublic struct GetArchivedStickerSets: Codable, Equatable, Hashable {\n\n    /// The maximum number of sticker sets to return; up to 100\n    public let limit: Int?\n\n    /// Identifier of the sticker set from which to return the result; use 0 to get results from the beginning\n    public let offsetStickerSetId: TdInt64?\n\n    /// Type of the sticker sets to return\n    public let stickerType: StickerType?\n\n\n    public init(\n        limit: Int?,\n        offsetStickerSetId: TdInt64?,\n        stickerType: StickerType?\n    ) {\n        self.limit = limit\n        self.offsetStickerSetId = offsetStickerSetId\n        self.stickerType = stickerType\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetAttachedStickerSets.swift",
    "content": "//\n//  GetAttachedStickerSets.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a list of sticker sets attached to a file, including regular, mask, and emoji sticker sets. Currently, only animations, photos, and videos can have attached sticker sets\npublic struct GetAttachedStickerSets: Codable, Equatable, Hashable {\n\n    /// File identifier\n    public let fileId: Int?\n\n\n    public init(fileId: Int?) {\n        self.fileId = fileId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetAttachmentMenuBot.swift",
    "content": "//\n//  GetAttachmentMenuBot.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a bot that can be added to attachment or side menu\npublic struct GetAttachmentMenuBot: Codable, Equatable, Hashable {\n\n    /// Bot's user identifier\n    public let botUserId: Int64?\n\n\n    public init(botUserId: Int64?) {\n        self.botUserId = botUserId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetAuthenticationPasskeyParameters.swift",
    "content": "//\n//  GetAuthenticationPasskeyParameters.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns parameters for authentication using a passkey as JSON-serialized string\npublic struct GetAuthenticationPasskeyParameters: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetAuthorizationState.swift",
    "content": "//\n//  GetAuthorizationState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the current authorization state. This is an offline method. For informational purposes only. Use updateAuthorizationState instead to maintain the current authorization state. Can be called before initialization\npublic struct GetAuthorizationState: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetAutoDownloadSettingsPresets.swift",
    "content": "//\n//  GetAutoDownloadSettingsPresets.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns auto-download settings presets for the current user\npublic struct GetAutoDownloadSettingsPresets: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetAutosaveSettings.swift",
    "content": "//\n//  GetAutosaveSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns autosave settings for the current user\npublic struct GetAutosaveSettings: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetAvailableChatBoostSlots.swift",
    "content": "//\n//  GetAvailableChatBoostSlots.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of available chat boost slots for the current user\npublic struct GetAvailableChatBoostSlots: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetAvailableGifts.swift",
    "content": "//\n//  GetAvailableGifts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns gifts that can be sent to other users and channel chats\npublic struct GetAvailableGifts: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetBackgroundUrl.swift",
    "content": "//\n//  GetBackgroundUrl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Constructs a persistent HTTP URL for a background\npublic struct GetBackgroundUrl: Codable, Equatable, Hashable {\n\n    /// Background name\n    public let name: String?\n\n    /// Background type; backgroundTypeChatTheme isn't supported\n    public let type: BackgroundType?\n\n\n    public init(\n        name: String?,\n        type: BackgroundType?\n    ) {\n        self.name = name\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetBankCardInfo.swift",
    "content": "//\n//  GetBankCardInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a bank card\npublic struct GetBankCardInfo: Codable, Equatable, Hashable {\n\n    /// The bank card number\n    public let bankCardNumber: String?\n\n\n    public init(bankCardNumber: String?) {\n        self.bankCardNumber = bankCardNumber\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetBasicGroup.swift",
    "content": "//\n//  GetBasicGroup.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a basic group by its identifier. This is an offline method if the current user is not a bot\npublic struct GetBasicGroup: Codable, Equatable, Hashable {\n\n    /// Basic group identifier\n    public let basicGroupId: Int64?\n\n\n    public init(basicGroupId: Int64?) {\n        self.basicGroupId = basicGroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetBasicGroupFullInfo.swift",
    "content": "//\n//  GetBasicGroupFullInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns full information about a basic group by its identifier\npublic struct GetBasicGroupFullInfo: Codable, Equatable, Hashable {\n\n    /// Basic group identifier\n    public let basicGroupId: Int64?\n\n\n    public init(basicGroupId: Int64?) {\n        self.basicGroupId = basicGroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetBlockedMessageSenders.swift",
    "content": "//\n//  GetBlockedMessageSenders.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns users and chats that were blocked by the current user\npublic struct GetBlockedMessageSenders: Codable, Equatable, Hashable {\n\n    /// Block list from which to return users\n    public let blockList: BlockList?\n\n    /// The maximum number of users and chats to return; up to 100\n    public let limit: Int?\n\n    /// Number of users and chats to skip in the result; must be non-negative\n    public let offset: Int?\n\n\n    public init(\n        blockList: BlockList?,\n        limit: Int?,\n        offset: Int?\n    ) {\n        self.blockList = blockList\n        self.limit = limit\n        self.offset = offset\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetBotInfoDescription.swift",
    "content": "//\n//  GetBotInfoDescription.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the text shown in the chat with a bot if the chat is empty in the given language. Can be called only if userTypeBot.can_be_edited == true\npublic struct GetBotInfoDescription: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot\n    public let botUserId: Int64?\n\n    /// A two-letter ISO 639-1 language code or an empty string\n    public let languageCode: String?\n\n\n    public init(\n        botUserId: Int64?,\n        languageCode: String?\n    ) {\n        self.botUserId = botUserId\n        self.languageCode = languageCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetBotInfoShortDescription.swift",
    "content": "//\n//  GetBotInfoShortDescription.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the text shown on a bot's profile page and sent together with the link when users share the bot in the given language. Can be called only if userTypeBot.can_be_edited == true\npublic struct GetBotInfoShortDescription: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot\n    public let botUserId: Int64?\n\n    /// A two-letter ISO 639-1 language code or an empty string\n    public let languageCode: String?\n\n\n    public init(\n        botUserId: Int64?,\n        languageCode: String?\n    ) {\n        self.botUserId = botUserId\n        self.languageCode = languageCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetBotMediaPreviewInfo.swift",
    "content": "//\n//  GetBotMediaPreviewInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of media previews for the given language and the list of languages for which the bot has dedicated previews\npublic struct GetBotMediaPreviewInfo: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot. The bot must be owned and must have the main Web App\n    public let botUserId: Int64?\n\n    /// A two-letter ISO 639-1 language code for which to get previews. If empty, then default previews are returned\n    public let languageCode: String?\n\n\n    public init(\n        botUserId: Int64?,\n        languageCode: String?\n    ) {\n        self.botUserId = botUserId\n        self.languageCode = languageCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetBotMediaPreviews.swift",
    "content": "//\n//  GetBotMediaPreviews.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of media previews of a bot\npublic struct GetBotMediaPreviews: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot. The bot must have the main Web App\n    public let botUserId: Int64?\n\n\n    public init(botUserId: Int64?) {\n        self.botUserId = botUserId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetBotName.swift",
    "content": "//\n//  GetBotName.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the name of a bot in the given language. Can be called only if userTypeBot.can_be_edited == true\npublic struct GetBotName: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot\n    public let botUserId: Int64?\n\n    /// A two-letter ISO 639-1 language code or an empty string\n    public let languageCode: String?\n\n\n    public init(\n        botUserId: Int64?,\n        languageCode: String?\n    ) {\n        self.botUserId = botUserId\n        self.languageCode = languageCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetBotSimilarBotCount.swift",
    "content": "//\n//  GetBotSimilarBotCount.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns approximate number of bots similar to the given bot\npublic struct GetBotSimilarBotCount: Codable, Equatable, Hashable {\n\n    /// User identifier of the target bot\n    public let botUserId: Int64?\n\n    /// Pass true to get the number of bots without sending network requests, or -1 if the number of bots is unknown locally\n    public let returnLocal: Bool?\n\n\n    public init(\n        botUserId: Int64?,\n        returnLocal: Bool?\n    ) {\n        self.botUserId = botUserId\n        self.returnLocal = returnLocal\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetBotSimilarBots.swift",
    "content": "//\n//  GetBotSimilarBots.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a list of bots similar to the given bot\npublic struct GetBotSimilarBots: Codable, Equatable, Hashable {\n\n    /// User identifier of the target bot\n    public let botUserId: Int64?\n\n\n    public init(botUserId: Int64?) {\n        self.botUserId = botUserId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetBotToken.swift",
    "content": "//\n//  GetBotToken.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.63-8fc2344f\n//  https://github.com/tdlib/td/tree/8fc2344f\n//\n\nimport Foundation\n\n\n/// Returns token of a created bot; for bots only\npublic struct GetBotToken: Codable, Equatable, Hashable {\n\n    /// Identifier of the created bot\n    public let botUserId: Int64?\n\n    /// Pass true to revoke the current token and create a new one\n    public let revoke: Bool?\n\n\n    public init(\n        botUserId: Int64?,\n        revoke: Bool?\n    ) {\n        self.botUserId = botUserId\n        self.revoke = revoke\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetBusinessAccountStarAmount.swift",
    "content": "//\n//  GetBusinessAccountStarAmount.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the Telegram Star amount owned by a business account; for bots only\npublic struct GetBusinessAccountStarAmount: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection\n    public let businessConnectionId: String?\n\n\n    public init(businessConnectionId: String?) {\n        self.businessConnectionId = businessConnectionId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetBusinessChatLinkInfo.swift",
    "content": "//\n//  GetBusinessChatLinkInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a business chat link\npublic struct GetBusinessChatLinkInfo: Codable, Equatable, Hashable {\n\n    /// Name of the link\n    public let linkName: String?\n\n\n    public init(linkName: String?) {\n        self.linkName = linkName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetBusinessChatLinks.swift",
    "content": "//\n//  GetBusinessChatLinks.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns business chat links created for the current account\npublic struct GetBusinessChatLinks: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetBusinessConnectedBot.swift",
    "content": "//\n//  GetBusinessConnectedBot.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the business bot that is connected to the current user account. Returns a 404 error if there is no connected bot\npublic struct GetBusinessConnectedBot: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetBusinessConnection.swift",
    "content": "//\n//  GetBusinessConnection.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a business connection by its identifier; for bots only\npublic struct GetBusinessConnection: Codable, Equatable, Hashable {\n\n    /// Identifier of the business connection to return\n    public let connectionId: String?\n\n\n    public init(connectionId: String?) {\n        self.connectionId = connectionId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetBusinessFeatures.swift",
    "content": "//\n//  GetBusinessFeatures.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about features, available to Business users\npublic struct GetBusinessFeatures: Codable, Equatable, Hashable {\n\n    /// Source of the request; pass null if the method is called from settings or some non-standard source\n    public let source: BusinessFeature?\n\n\n    public init(source: BusinessFeature?) {\n        self.source = source\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetCallbackQueryAnswer.swift",
    "content": "//\n//  GetCallbackQueryAnswer.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends a callback query to a bot and returns an answer. Returns an error with code 502 if the bot fails to answer the query before the query timeout expires\npublic struct GetCallbackQueryAnswer: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat with the message\n    public let chatId: Int64?\n\n    /// Identifier of the message from which the query originated. The message must not be scheduled\n    public let messageId: Int64?\n\n    /// Query payload\n    public let payload: CallbackQueryPayload?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        payload: CallbackQueryPayload?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.payload = payload\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetCallbackQueryMessage.swift",
    "content": "//\n//  GetCallbackQueryMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a message with the callback button that originated a callback query; for bots only\npublic struct GetCallbackQueryMessage: Codable, Equatable, Hashable {\n\n    /// Identifier of the callback query\n    public let callbackQueryId: TdInt64?\n\n    /// Identifier of the chat the message belongs to\n    public let chatId: Int64?\n\n    /// Message identifier\n    public let messageId: Int64?\n\n\n    public init(\n        callbackQueryId: TdInt64?,\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.callbackQueryId = callbackQueryId\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChat.swift",
    "content": "//\n//  GetChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a chat by its identifier. This is an offline method if the current user is not a bot\npublic struct GetChat: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatActiveStories.swift",
    "content": "//\n//  GetChatActiveStories.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of active stories posted by the given chat\npublic struct GetChatActiveStories: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatAdministrators.swift",
    "content": "//\n//  GetChatAdministrators.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a list of administrators of the chat with their custom titles\npublic struct GetChatAdministrators: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatAffiliateProgram.swift",
    "content": "//\n//  GetChatAffiliateProgram.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.41-53acb2b5\n//  https://github.com/tdlib/td/tree/53acb2b5\n//\n\nimport Foundation\n\n\n/// Returns an affiliate program that were connected to the given chat by identifier of the bot that created the program\npublic struct GetChatAffiliateProgram: Codable, Equatable, Hashable {\n\n    /// Identifier of the bot that created the program\n    public let botUserId: Int64?\n\n    /// Identifier of the chat for which the affiliate program was connected. Can be an identifier of the Saved Messages chat, of a chat with an owned bot, or of a channel chat with can_post_messages administrator right\n    public let chatId: Int64?\n\n\n    public init(\n        botUserId: Int64?,\n        chatId: Int64?\n    ) {\n        self.botUserId = botUserId\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatAffiliatePrograms.swift",
    "content": "//\n//  GetChatAffiliatePrograms.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.41-53acb2b5\n//  https://github.com/tdlib/td/tree/53acb2b5\n//\n\nimport Foundation\n\n\n/// Returns affiliate programs that were connected to the given chat\npublic struct GetChatAffiliatePrograms: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat for which the affiliate programs were connected. Can be an identifier of the Saved Messages chat, of a chat with an owned bot, or of a channel chat with can_post_messages administrator right\n    public let chatId: Int64?\n\n    /// The maximum number of affiliate programs to return\n    public let limit: Int?\n\n    /// Offset of the first affiliate program to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n\n    public init(\n        chatId: Int64?,\n        limit: Int?,\n        offset: String?\n    ) {\n        self.chatId = chatId\n        self.limit = limit\n        self.offset = offset\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatArchivedStories.swift",
    "content": "//\n//  GetChatArchivedStories.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of all stories posted by the given chat; requires can_edit_stories administrator right in the chat. The stories are returned in reverse chronological order (i.e., in order of decreasing story_id). For optimal performance, the number of returned stories is chosen by TDLib\npublic struct GetChatArchivedStories: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Identifier of the story starting from which stories must be returned; use 0 to get results from the last story\n    public let fromStoryId: Int?\n\n    /// The maximum number of stories to be returned. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n\n    public init(\n        chatId: Int64?,\n        fromStoryId: Int?,\n        limit: Int?\n    ) {\n        self.chatId = chatId\n        self.fromStoryId = fromStoryId\n        self.limit = limit\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatAvailableMessageSenders.swift",
    "content": "//\n//  GetChatAvailableMessageSenders.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of message sender identifiers, which can be used to send messages in a chat\npublic struct GetChatAvailableMessageSenders: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatAvailablePaidMessageReactionSenders.swift",
    "content": "//\n//  GetChatAvailablePaidMessageReactionSenders.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of message sender identifiers, which can be used to send a paid reaction in a chat\npublic struct GetChatAvailablePaidMessageReactionSenders: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatBoostFeatures.swift",
    "content": "//\n//  GetChatBoostFeatures.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of features available for different chat boost levels. This is an offline method\npublic struct GetChatBoostFeatures: Codable, Equatable, Hashable {\n\n    /// Pass true to get the list of features for channels; pass false to get the list of features for supergroups\n    public let isChannel: Bool?\n\n\n    public init(isChannel: Bool?) {\n        self.isChannel = isChannel\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatBoostLevelFeatures.swift",
    "content": "//\n//  GetChatBoostLevelFeatures.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of features available on the specific chat boost level. This is an offline method\npublic struct GetChatBoostLevelFeatures: Codable, Equatable, Hashable {\n\n    /// Pass true to get the list of features for channels; pass false to get the list of features for supergroups\n    public let isChannel: Bool?\n\n    /// Chat boost level\n    public let level: Int?\n\n\n    public init(\n        isChannel: Bool?,\n        level: Int?\n    ) {\n        self.isChannel = isChannel\n        self.level = level\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatBoostLink.swift",
    "content": "//\n//  GetChatBoostLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an HTTPS link to boost the specified supergroup or channel chat\npublic struct GetChatBoostLink: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatBoostLinkInfo.swift",
    "content": "//\n//  GetChatBoostLinkInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a link to boost a chat. Can be called for any internal link of the type internalLinkTypeChatBoost\npublic struct GetChatBoostLinkInfo: Codable, Equatable, Hashable {\n\n    /// The link to boost a chat\n    public let url: String?\n\n\n    public init(url: String?) {\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatBoostStatus.swift",
    "content": "//\n//  GetChatBoostStatus.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the current boost status for a supergroup or a channel chat\npublic struct GetChatBoostStatus: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatBoosts.swift",
    "content": "//\n//  GetChatBoosts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of boosts applied to a chat; requires administrator rights in the chat\npublic struct GetChatBoosts: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n    /// The maximum number of boosts to be returned; up to 100. For optimal performance, the number of returned boosts can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n    /// Pass true to receive only boosts received from gift codes and giveaways created by the chat\n    public let onlyGiftCodes: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        limit: Int?,\n        offset: String?,\n        onlyGiftCodes: Bool?\n    ) {\n        self.chatId = chatId\n        self.limit = limit\n        self.offset = offset\n        self.onlyGiftCodes = onlyGiftCodes\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatEventLog.swift",
    "content": "//\n//  GetChatEventLog.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a list of service actions taken by chat members and administrators in the last 48 hours. Available only for supergroups and channels. Requires administrator rights. Returns results in reverse chronological order (i.e., in order of decreasing event_id)\npublic struct GetChatEventLog: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// The types of events to return; pass null to get chat events of all types\n    public let filters: ChatEventLogFilters?\n\n    /// Identifier of an event from which to return results. Use 0 to get results from the latest events\n    public let fromEventId: TdInt64?\n\n    /// The maximum number of events to return; up to 100\n    public let limit: Int?\n\n    /// Search query by which to filter events\n    public let query: String?\n\n    /// User identifiers by which to filter events. By default, events relating to all users will be returned\n    public let userIds: [Int64]?\n\n\n    public init(\n        chatId: Int64?,\n        filters: ChatEventLogFilters?,\n        fromEventId: TdInt64?,\n        limit: Int?,\n        query: String?,\n        userIds: [Int64]?\n    ) {\n        self.chatId = chatId\n        self.filters = filters\n        self.fromEventId = fromEventId\n        self.limit = limit\n        self.query = query\n        self.userIds = userIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatFolder.swift",
    "content": "//\n//  GetChatFolder.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a chat folder by its identifier\npublic struct GetChatFolder: Codable, Equatable, Hashable {\n\n    /// Chat folder identifier\n    public let chatFolderId: Int?\n\n\n    public init(chatFolderId: Int?) {\n        self.chatFolderId = chatFolderId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatFolderChatCount.swift",
    "content": "//\n//  GetChatFolderChatCount.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns approximate number of chats in a being created chat folder. Main and archive chat lists must be fully preloaded for this function to work correctly\npublic struct GetChatFolderChatCount: Codable, Equatable, Hashable {\n\n    /// The new chat folder\n    public let folder: ChatFolder?\n\n\n    public init(folder: ChatFolder?) {\n        self.folder = folder\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatFolderChatsToLeave.swift",
    "content": "//\n//  GetChatFolderChatsToLeave.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns identifiers of pinned or always included chats from a chat folder, which are suggested to be left when the chat folder is deleted\npublic struct GetChatFolderChatsToLeave: Codable, Equatable, Hashable {\n\n    /// Chat folder identifier\n    public let chatFolderId: Int?\n\n\n    public init(chatFolderId: Int?) {\n        self.chatFolderId = chatFolderId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatFolderDefaultIconName.swift",
    "content": "//\n//  GetChatFolderDefaultIconName.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns default icon name for a folder. Can be called synchronously\npublic struct GetChatFolderDefaultIconName: Codable, Equatable, Hashable {\n\n    /// Chat folder\n    public let folder: ChatFolder?\n\n\n    public init(folder: ChatFolder?) {\n        self.folder = folder\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatFolderInviteLinks.swift",
    "content": "//\n//  GetChatFolderInviteLinks.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns invite links created by the current user for a shareable chat folder\npublic struct GetChatFolderInviteLinks: Codable, Equatable, Hashable {\n\n    /// Chat folder identifier\n    public let chatFolderId: Int?\n\n\n    public init(chatFolderId: Int?) {\n        self.chatFolderId = chatFolderId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatFolderNewChats.swift",
    "content": "//\n//  GetChatFolderNewChats.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns new chats added to a shareable chat folder by its owner. The method must be called at most once in getOption(\"chat_folder_new_chats_update_period\") for the given chat folder\npublic struct GetChatFolderNewChats: Codable, Equatable, Hashable {\n\n    /// Chat folder identifier\n    public let chatFolderId: Int?\n\n\n    public init(chatFolderId: Int?) {\n        self.chatFolderId = chatFolderId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatHistory.swift",
    "content": "//\n//  GetChatHistory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns messages in a chat. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib. This is an offline method if only_local is true\npublic struct GetChatHistory: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Identifier of the message starting from which history must be fetched; use 0 to get results from the last message\n    public let fromMessageId: Int64?\n\n    /// The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    public let offset: Int?\n\n    /// Pass true to get only messages that are available without sending network requests\n    public let onlyLocal: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        onlyLocal: Bool?\n    ) {\n        self.chatId = chatId\n        self.fromMessageId = fromMessageId\n        self.limit = limit\n        self.offset = offset\n        self.onlyLocal = onlyLocal\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatInviteLink.swift",
    "content": "//\n//  GetChatInviteLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about an invite link. Requires administrator privileges and can_invite_users right in the chat to get own links and owner privileges to get other links\npublic struct GetChatInviteLink: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Invite link to get\n    public let inviteLink: String?\n\n\n    public init(\n        chatId: Int64?,\n        inviteLink: String?\n    ) {\n        self.chatId = chatId\n        self.inviteLink = inviteLink\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatInviteLinkCounts.swift",
    "content": "//\n//  GetChatInviteLinkCounts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of chat administrators with number of their invite links. Requires owner privileges in the chat\npublic struct GetChatInviteLinkCounts: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatInviteLinkMembers.swift",
    "content": "//\n//  GetChatInviteLinkMembers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns chat members joined a chat via an invite link. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\npublic struct GetChatInviteLinkMembers: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Invite link for which to return chat members\n    public let inviteLink: String?\n\n    /// The maximum number of chat members to return; up to 100\n    public let limit: Int?\n\n    /// A chat member from which to return next chat members; pass null to get results from the beginning\n    public let offsetMember: ChatInviteLinkMember?\n\n    /// Pass true if the link is a subscription link and only members with expired subscription must be returned\n    public let onlyWithExpiredSubscription: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        inviteLink: String?,\n        limit: Int?,\n        offsetMember: ChatInviteLinkMember?,\n        onlyWithExpiredSubscription: Bool?\n    ) {\n        self.chatId = chatId\n        self.inviteLink = inviteLink\n        self.limit = limit\n        self.offsetMember = offsetMember\n        self.onlyWithExpiredSubscription = onlyWithExpiredSubscription\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatInviteLinks.swift",
    "content": "//\n//  GetChatInviteLinks.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns invite links for a chat created by specified administrator. Requires administrator privileges and can_invite_users right in the chat to get own links and owner privileges to get other links\npublic struct GetChatInviteLinks: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// User identifier of a chat administrator. Must be an identifier of the current user for non-owner\n    public let creatorUserId: Int64?\n\n    /// Pass true if revoked links needs to be returned instead of active or expired\n    public let isRevoked: Bool?\n\n    /// The maximum number of invite links to return; up to 100\n    public let limit: Int?\n\n    /// Creation date of an invite link starting after which to return invite links; use 0 to get results from the beginning\n    public let offsetDate: Int?\n\n    /// Invite link starting after which to return invite links; use empty string to get results from the beginning\n    public let offsetInviteLink: String?\n\n\n    public init(\n        chatId: Int64?,\n        creatorUserId: Int64?,\n        isRevoked: Bool?,\n        limit: Int?,\n        offsetDate: Int?,\n        offsetInviteLink: String?\n    ) {\n        self.chatId = chatId\n        self.creatorUserId = creatorUserId\n        self.isRevoked = isRevoked\n        self.limit = limit\n        self.offsetDate = offsetDate\n        self.offsetInviteLink = offsetInviteLink\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatJoinRequests.swift",
    "content": "//\n//  GetChatJoinRequests.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns pending join requests in a chat\npublic struct GetChatJoinRequests: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Invite link for which to return join requests. If empty, all join requests will be returned. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    public let inviteLink: String?\n\n    /// The maximum number of requests to join the chat to return\n    public let limit: Int?\n\n    /// A chat join request from which to return next requests; pass null to get results from the beginning\n    public let offsetRequest: ChatJoinRequest?\n\n    /// A query to search for in the first names, last names and usernames of the users to return\n    public let query: String?\n\n\n    public init(\n        chatId: Int64?,\n        inviteLink: String?,\n        limit: Int?,\n        offsetRequest: ChatJoinRequest?,\n        query: String?\n    ) {\n        self.chatId = chatId\n        self.inviteLink = inviteLink\n        self.limit = limit\n        self.offsetRequest = offsetRequest\n        self.query = query\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatListsToAddChat.swift",
    "content": "//\n//  GetChatListsToAddChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns chat lists to which the chat can be added. This is an offline method\npublic struct GetChatListsToAddChat: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatMember.swift",
    "content": "//\n//  GetChatMember.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a single member of a chat\npublic struct GetChatMember: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Member identifier\n    public let memberId: MessageSender?\n\n\n    public init(\n        chatId: Int64?,\n        memberId: MessageSender?\n    ) {\n        self.chatId = chatId\n        self.memberId = memberId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatMessageByDate.swift",
    "content": "//\n//  GetChatMessageByDate.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the last message sent in a chat no later than the specified date. Returns a 404 error if such message doesn't exist\npublic struct GetChatMessageByDate: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Point in time (Unix timestamp) relative to which to search for messages\n    public let date: Int?\n\n\n    public init(\n        chatId: Int64?,\n        date: Int?\n    ) {\n        self.chatId = chatId\n        self.date = date\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatMessageCalendar.swift",
    "content": "//\n//  GetChatMessageCalendar.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about the next messages of the specified type in the chat split by days. Returns the results in reverse chronological order. Can return partial result for the last returned day. Behavior of this method depends on the value of the option \"utc_time_offset\"\npublic struct GetChatMessageCalendar: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat in which to return information about messages\n    public let chatId: Int64?\n\n    /// Filter for message content. Filters searchMessagesFilterEmpty, searchMessagesFilterMention, searchMessagesFilterUnreadMention, searchMessagesFilterUnreadReaction, and searchMessagesFilterUnreadPollVote are unsupported in this function\n    public let filter: SearchMessagesFilter?\n\n    /// The message identifier from which to return information about messages; use 0 to get results from the last message\n    public let fromMessageId: Int64?\n\n    /// Pass topic identifier to get the result only in specific topic; pass null to get the result in all topics; forum topics and message threads aren't supported\n    public let topicId: MessageTopic?\n\n\n    public init(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        fromMessageId: Int64?,\n        topicId: MessageTopic?\n    ) {\n        self.chatId = chatId\n        self.filter = filter\n        self.fromMessageId = fromMessageId\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatMessageCount.swift",
    "content": "//\n//  GetChatMessageCount.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns approximate number of messages of the specified type in the chat or its topic\npublic struct GetChatMessageCount: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat in which to count messages\n    public let chatId: Int64?\n\n    /// Filter for message content; searchMessagesFilterEmpty is unsupported in this function\n    public let filter: SearchMessagesFilter?\n\n    /// Pass true to get the number of messages without sending network requests, or -1 if the number of messages is unknown locally\n    public let returnLocal: Bool?\n\n    /// Pass topic identifier to get number of messages only in specific topic; pass null to get number of messages in all topics; message threads aren't supported\n    public let topicId: MessageTopic?\n\n\n    public init(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        returnLocal: Bool?,\n        topicId: MessageTopic?\n    ) {\n        self.chatId = chatId\n        self.filter = filter\n        self.returnLocal = returnLocal\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatMessagePosition.swift",
    "content": "//\n//  GetChatMessagePosition.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns approximate 1-based position of a message among messages, which can be found by the specified filter in the chat and topic. Cannot be used in secret chats\npublic struct GetChatMessagePosition: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat in which to find message position\n    public let chatId: Int64?\n\n    /// Filter for message content; searchMessagesFilterEmpty, searchMessagesFilterUnreadMention, searchMessagesFilterUnreadReaction, searchMessagesFilterUnreadPollVote, and searchMessagesFilterFailedToSend are unsupported in this function\n    public let filter: SearchMessagesFilter?\n\n    /// Message identifier\n    public let messageId: Int64?\n\n    /// Pass topic identifier to get position among messages only in specific topic; pass null to get position among all chat messages; message threads aren't supported\n    public let topicId: MessageTopic?\n\n\n    public init(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        messageId: Int64?,\n        topicId: MessageTopic?\n    ) {\n        self.chatId = chatId\n        self.filter = filter\n        self.messageId = messageId\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatNotificationSettingsExceptions.swift",
    "content": "//\n//  GetChatNotificationSettingsExceptions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of chats with non-default notification settings for new messages\npublic struct GetChatNotificationSettingsExceptions: Codable, Equatable, Hashable {\n\n    /// Pass true to include in the response chats with only non-default sound\n    public let compareSound: Bool?\n\n    /// If specified, only chats from the scope will be returned; pass null to return chats from all scopes\n    public let scope: NotificationSettingsScope?\n\n\n    public init(\n        compareSound: Bool?,\n        scope: NotificationSettingsScope?\n    ) {\n        self.compareSound = compareSound\n        self.scope = scope\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatOwnerAfterLeaving.swift",
    "content": "//\n//  GetChatOwnerAfterLeaving.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the user who will become the owner of the chat after 7 days if the current user does not return to the supergroup or channel during that period or immediately for basic groups; requires owner privileges in the chat. Available only for supergroups, basic groups and channel chats\npublic struct GetChatOwnerAfterLeaving: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatPinnedMessage.swift",
    "content": "//\n//  GetChatPinnedMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a newest pinned message in the chat. Returns a 404 error if the message doesn't exist\npublic struct GetChatPinnedMessage: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat the message belongs to\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatPostedToChatPageStories.swift",
    "content": "//\n//  GetChatPostedToChatPageStories.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of stories that posted by the given chat to its chat page. If from_story_id == 0, then pinned stories are returned first. Then, stories are returned in reverse chronological order (i.e., in order of decreasing story_id). For optimal performance, the number of returned stories is chosen by TDLib\npublic struct GetChatPostedToChatPageStories: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Identifier of the story starting from which stories must be returned; use 0 to get results from pinned and the newest story\n    public let fromStoryId: Int?\n\n    /// The maximum number of stories to be returned. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n\n    public init(\n        chatId: Int64?,\n        fromStoryId: Int?,\n        limit: Int?\n    ) {\n        self.chatId = chatId\n        self.fromStoryId = fromStoryId\n        self.limit = limit\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatRevenueStatistics.swift",
    "content": "//\n//  GetChatRevenueStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns detailed revenue statistics about a chat. Currently, this method can be used only for channels if supergroupFullInfo.can_get_revenue_statistics == true or bots if userFullInfo.bot_info.can_get_revenue_statistics == true\npublic struct GetChatRevenueStatistics: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Pass true if a dark theme is used by the application\n    public let isDark: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        isDark: Bool?\n    ) {\n        self.chatId = chatId\n        self.isDark = isDark\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatRevenueTransactions.swift",
    "content": "//\n//  GetChatRevenueTransactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of revenue transactions for a chat. Currently, this method can be used only for channels if supergroupFullInfo.can_get_revenue_statistics == true or bots if userFullInfo.bot_info.can_get_revenue_statistics == true\npublic struct GetChatRevenueTransactions: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// The maximum number of transactions to be returned; up to 100\n    public let limit: Int?\n\n    /// Offset of the first transaction to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n\n    public init(\n        chatId: Int64?,\n        limit: Int?,\n        offset: String?\n    ) {\n        self.chatId = chatId\n        self.limit = limit\n        self.offset = offset\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatRevenueWithdrawalUrl.swift",
    "content": "//\n//  GetChatRevenueWithdrawalUrl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a URL for chat revenue withdrawal; requires owner privileges in the channel chat or the bot. Currently, this method can be used only if getOption(\"can_withdraw_chat_revenue\") for channels with supergroupFullInfo.can_get_revenue_statistics == true or bots with userFullInfo.bot_info.can_get_revenue_statistics == true\npublic struct GetChatRevenueWithdrawalUrl: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// The 2-step verification password of the current user\n    public let password: String?\n\n\n    public init(\n        chatId: Int64?,\n        password: String?\n    ) {\n        self.chatId = chatId\n        self.password = password\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatScheduledMessages.swift",
    "content": "//\n//  GetChatScheduledMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns all scheduled messages in a chat. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\npublic struct GetChatScheduledMessages: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatSimilarChatCount.swift",
    "content": "//\n//  GetChatSimilarChatCount.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns approximate number of chats similar to the given chat\npublic struct GetChatSimilarChatCount: Codable, Equatable, Hashable {\n\n    /// Identifier of the target chat; must be an identifier of a channel chat\n    public let chatId: Int64?\n\n    /// Pass true to get the number of chats without sending network requests, or -1 if the number of chats is unknown locally\n    public let returnLocal: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        returnLocal: Bool?\n    ) {\n        self.chatId = chatId\n        self.returnLocal = returnLocal\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatSimilarChats.swift",
    "content": "//\n//  GetChatSimilarChats.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a list of chats similar to the given chat\npublic struct GetChatSimilarChats: Codable, Equatable, Hashable {\n\n    /// Identifier of the target chat; must be an identifier of a channel chat\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatSparseMessagePositions.swift",
    "content": "//\n//  GetChatSparseMessagePositions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns sparse positions of messages of the specified type in the chat to be used for shared media scroll implementation. Returns the results in reverse chronological order (i.e., in order of decreasing message_id). Cannot be used in secret chats or with searchMessagesFilterFailedToSend filter without an enabled message database\npublic struct GetChatSparseMessagePositions: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat in which to return information about message positions\n    public let chatId: Int64?\n\n    /// Filter for message content. Filters searchMessagesFilterEmpty, searchMessagesFilterMention, searchMessagesFilterUnreadMention, searchMessagesFilterUnreadReaction, and searchMessagesFilterUnreadPollVote are unsupported in this function\n    public let filter: SearchMessagesFilter?\n\n    /// The message identifier from which to return information about message positions\n    public let fromMessageId: Int64?\n\n    /// The expected number of message positions to be returned; 50-2000. A smaller number of positions can be returned, if there are not enough appropriate messages\n    public let limit: Int?\n\n    /// If not 0, only messages in the specified Saved Messages topic will be considered; pass 0 to consider all messages, or for chats other than Saved Messages\n    public let savedMessagesTopicId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        savedMessagesTopicId: Int64?\n    ) {\n        self.chatId = chatId\n        self.filter = filter\n        self.fromMessageId = fromMessageId\n        self.limit = limit\n        self.savedMessagesTopicId = savedMessagesTopicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatSponsoredMessages.swift",
    "content": "//\n//  GetChatSponsoredMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns sponsored messages to be shown in a chat; for channel chats and chats with bots only\npublic struct GetChatSponsoredMessages: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatStatistics.swift",
    "content": "//\n//  GetChatStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns detailed statistics about a chat. Currently, this method can be used only for supergroups and channels. Can be used only if supergroupFullInfo.can_get_statistics == true\npublic struct GetChatStatistics: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Pass true if a dark theme is used by the application\n    public let isDark: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        isDark: Bool?\n    ) {\n        self.chatId = chatId\n        self.isDark = isDark\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatStoryAlbums.swift",
    "content": "//\n//  GetChatStoryAlbums.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of story albums owned by the given chat\npublic struct GetChatStoryAlbums: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatStoryInteractions.swift",
    "content": "//\n//  GetChatStoryInteractions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns interactions with a story posted in a chat. Can be used only if story is posted on behalf of a chat and the user is an administrator in the chat\npublic struct GetChatStoryInteractions: Codable, Equatable, Hashable {\n\n    /// The maximum number of story interactions to return\n    public let limit: Int?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n    /// Pass true to get forwards and reposts first, then reactions, then other views; pass false to get interactions sorted just by interaction date\n    public let preferForwards: Bool?\n\n    /// Pass the default heart reaction or a suggested reaction type to receive only interactions with the specified reaction type; pass null to receive all interactions; reactionTypePaid isn't supported\n    public let reactionType: ReactionType?\n\n    /// Story identifier\n    public let storyId: Int?\n\n    /// The identifier of the poster of the story\n    public let storyPosterChatId: Int64?\n\n\n    public init(\n        limit: Int?,\n        offset: String?,\n        preferForwards: Bool?,\n        reactionType: ReactionType?,\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) {\n        self.limit = limit\n        self.offset = offset\n        self.preferForwards = preferForwards\n        self.reactionType = reactionType\n        self.storyId = storyId\n        self.storyPosterChatId = storyPosterChatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChats.swift",
    "content": "//\n//  GetChats.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an ordered list of chats from the beginning of a chat list. For informational purposes only. Use loadChats and updates processing instead to maintain chat lists in a consistent state\npublic struct GetChats: Codable, Equatable, Hashable {\n\n    /// The chat list in which to return chats; pass null to get chats from the main chat list\n    public let chatList: ChatList?\n\n    /// The maximum number of chats to be returned\n    public let limit: Int?\n\n\n    public init(\n        chatList: ChatList?,\n        limit: Int?\n    ) {\n        self.chatList = chatList\n        self.limit = limit\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatsForChatFolderInviteLink.swift",
    "content": "//\n//  GetChatsForChatFolderInviteLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns identifiers of chats from a chat folder, suitable for adding to a chat folder invite link\npublic struct GetChatsForChatFolderInviteLink: Codable, Equatable, Hashable {\n\n    /// Chat folder identifier\n    public let chatFolderId: Int?\n\n\n    public init(chatFolderId: Int?) {\n        self.chatFolderId = chatFolderId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatsToPostStories.swift",
    "content": "//\n//  GetChatsToPostStories.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns supergroup and channel chats in which the current user has the right to post stories. The chats must be rechecked with canPostStory before actually trying to post a story there\npublic struct GetChatsToPostStories: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetChatsToSendStories.swift",
    "content": "//\n//  GetChatsToSendStories.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.47-971684a3\n//  https://github.com/tdlib/td/tree/971684a3\n//\n\nimport Foundation\n\n\n/// Returns supergroup and channel chats in which the current user has the right to post stories. The chats must be rechecked with canSendStory before actually trying to post a story there\npublic struct GetChatsToSendStories: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetCloseFriends.swift",
    "content": "//\n//  GetCloseFriends.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns all close friends of the current user\npublic struct GetCloseFriends: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetCollectibleItemInfo.swift",
    "content": "//\n//  GetCollectibleItemInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a given collectible item that was purchased at https://fragment.com\npublic struct GetCollectibleItemInfo: Codable, Equatable, Hashable {\n\n    /// Type of the collectible item. The item must be used by a user and must be visible to the current user\n    public let type: CollectibleItemType?\n\n\n    public init(type: CollectibleItemType?) {\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetCommands.swift",
    "content": "//\n//  GetCommands.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of commands supported by the bot for the given user scope and language; for bots only\npublic struct GetCommands: Codable, Equatable, Hashable {\n\n    /// A two-letter ISO 639-1 language code or an empty string\n    public let languageCode: String?\n\n    /// The scope to which the commands are relevant; pass null to get commands in the default bot command scope\n    public let scope: BotCommandScope?\n\n\n    public init(\n        languageCode: String?,\n        scope: BotCommandScope?\n    ) {\n        self.languageCode = languageCode\n        self.scope = scope\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetConnectedAffiliateProgram.swift",
    "content": "//\n//  GetConnectedAffiliateProgram.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an affiliate program that was connected to the given affiliate by identifier of the bot that created the program\npublic struct GetConnectedAffiliateProgram: Codable, Equatable, Hashable {\n\n    /// The affiliate to which the affiliate program will be connected\n    public let affiliate: AffiliateType?\n\n    /// Identifier of the bot that created the program\n    public let botUserId: Int64?\n\n\n    public init(\n        affiliate: AffiliateType?,\n        botUserId: Int64?\n    ) {\n        self.affiliate = affiliate\n        self.botUserId = botUserId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetConnectedAffiliatePrograms.swift",
    "content": "//\n//  GetConnectedAffiliatePrograms.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns affiliate programs that were connected to the given affiliate\npublic struct GetConnectedAffiliatePrograms: Codable, Equatable, Hashable {\n\n    /// The affiliate to which the affiliate program were connected\n    public let affiliate: AffiliateType?\n\n    /// The maximum number of affiliate programs to return\n    public let limit: Int?\n\n    /// Offset of the first affiliate program to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n\n    public init(\n        affiliate: AffiliateType?,\n        limit: Int?,\n        offset: String?\n    ) {\n        self.affiliate = affiliate\n        self.limit = limit\n        self.offset = offset\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetConnectedWebsites.swift",
    "content": "//\n//  GetConnectedWebsites.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns all website where the current user used Telegram to log in\npublic struct GetConnectedWebsites: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetContacts.swift",
    "content": "//\n//  GetContacts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns all contacts of the user\npublic struct GetContacts: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetCountries.swift",
    "content": "//\n//  GetCountries.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about existing countries. Can be called before authorization\npublic struct GetCountries: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetCountryCode.swift",
    "content": "//\n//  GetCountryCode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Uses the current IP address to find the current country. Returns two-letter ISO 3166-1 alpha-2 country code. Can be called before authorization\npublic struct GetCountryCode: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetCountryFlagEmoji.swift",
    "content": "//\n//  GetCountryFlagEmoji.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an emoji for the given country. Returns an empty string on failure. Can be called synchronously\npublic struct GetCountryFlagEmoji: Codable, Equatable, Hashable {\n\n    /// A two-letter ISO 3166-1 alpha-2 country code as received from getCountries\n    public let countryCode: String?\n\n\n    public init(countryCode: String?) {\n        self.countryCode = countryCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetCreatedPublicChats.swift",
    "content": "//\n//  GetCreatedPublicChats.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a list of public chats of the specified type, owned by the user\npublic struct GetCreatedPublicChats: Codable, Equatable, Hashable {\n\n    /// Type of the public chats to return\n    public let type: PublicChatType?\n\n\n    public init(type: PublicChatType?) {\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetCurrentState.swift",
    "content": "//\n//  GetCurrentState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns all updates needed to restore current TDLib state, i.e. all actual updateAuthorizationState/updateUser/updateNewChat and others. This is especially useful if TDLib is run in a separate process. Can be called before initialization\npublic struct GetCurrentState: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetCurrentWeather.swift",
    "content": "//\n//  GetCurrentWeather.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the current weather in the given location\npublic struct GetCurrentWeather: Codable, Equatable, Hashable {\n\n    /// The location\n    public let location: Location?\n\n\n    public init(location: Location?) {\n        self.location = location\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetCustomEmojiReactionAnimations.swift",
    "content": "//\n//  GetCustomEmojiReactionAnimations.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns TGS stickers with generic animations for custom emoji reactions\npublic struct GetCustomEmojiReactionAnimations: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetCustomEmojiStickers.swift",
    "content": "//\n//  GetCustomEmojiStickers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of custom emoji stickers by their identifiers. Stickers are returned in arbitrary order. Only found stickers are returned\npublic struct GetCustomEmojiStickers: Codable, Equatable, Hashable {\n\n    /// Identifiers of custom emoji stickers. At most 200 custom emoji stickers can be received simultaneously\n    public let customEmojiIds: [TdInt64]?\n\n\n    public init(customEmojiIds: [TdInt64]?) {\n        self.customEmojiIds = customEmojiIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetDatabaseStatistics.swift",
    "content": "//\n//  GetDatabaseStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns database statistics\npublic struct GetDatabaseStatistics: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetDeepLinkInfo.swift",
    "content": "//\n//  GetDeepLinkInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a tg:// deep link. Use \"tg://need_update_for_some_feature\" or \"tg:some_unsupported_feature\" for testing. Returns a 404 error for unknown links. Can be called before authorization\npublic struct GetDeepLinkInfo: Codable, Equatable, Hashable {\n\n    /// The link\n    public let link: String?\n\n\n    public init(link: String?) {\n        self.link = link\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetDefaultBackgroundCustomEmojiStickers.swift",
    "content": "//\n//  GetDefaultBackgroundCustomEmojiStickers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns default list of custom emoji stickers for reply background\npublic struct GetDefaultBackgroundCustomEmojiStickers: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetDefaultChatEmojiStatuses.swift",
    "content": "//\n//  GetDefaultChatEmojiStatuses.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns default emoji statuses for chats\npublic struct GetDefaultChatEmojiStatuses: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetDefaultChatPhotoCustomEmojiStickers.swift",
    "content": "//\n//  GetDefaultChatPhotoCustomEmojiStickers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns default list of custom emoji stickers for placing on a chat photo\npublic struct GetDefaultChatPhotoCustomEmojiStickers: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetDefaultEmojiStatuses.swift",
    "content": "//\n//  GetDefaultEmojiStatuses.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns default emoji statuses for self status\npublic struct GetDefaultEmojiStatuses: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetDefaultMessageAutoDeleteTime.swift",
    "content": "//\n//  GetDefaultMessageAutoDeleteTime.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns default message auto-delete time setting for new chats\npublic struct GetDefaultMessageAutoDeleteTime: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetDefaultProfilePhotoCustomEmojiStickers.swift",
    "content": "//\n//  GetDefaultProfilePhotoCustomEmojiStickers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns default list of custom emoji stickers for placing on a profile photo\npublic struct GetDefaultProfilePhotoCustomEmojiStickers: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetDirectMessagesChatTopic.swift",
    "content": "//\n//  GetDirectMessagesChatTopic.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about the topic in a channel direct messages chat administered by the current user\npublic struct GetDirectMessagesChatTopic: Codable, Equatable, Hashable {\n\n    /// Chat identifier of the channel direct messages chat\n    public let chatId: Int64?\n\n    /// Identifier of the topic to get\n    public let topicId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        topicId: Int64?\n    ) {\n        self.chatId = chatId\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetDirectMessagesChatTopicHistory.swift",
    "content": "//\n//  GetDirectMessagesChatTopicHistory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns messages in the topic in a channel direct messages chat administered by the current user. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\npublic struct GetDirectMessagesChatTopicHistory: Codable, Equatable, Hashable {\n\n    /// Chat identifier of the channel direct messages chat\n    public let chatId: Int64?\n\n    /// Identifier of the message starting from which messages must be fetched; use 0 to get results from the last message\n    public let fromMessageId: Int64?\n\n    /// The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    public let offset: Int?\n\n    /// Identifier of the topic which messages will be fetched\n    public let topicId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        topicId: Int64?\n    ) {\n        self.chatId = chatId\n        self.fromMessageId = fromMessageId\n        self.limit = limit\n        self.offset = offset\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetDirectMessagesChatTopicMessageByDate.swift",
    "content": "//\n//  GetDirectMessagesChatTopicMessageByDate.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the last message sent in the topic in a channel direct messages chat administered by the current user no later than the specified date\npublic struct GetDirectMessagesChatTopicMessageByDate: Codable, Equatable, Hashable {\n\n    /// Chat identifier of the channel direct messages chat\n    public let chatId: Int64?\n\n    /// Point in time (Unix timestamp) relative to which to search for messages\n    public let date: Int?\n\n    /// Identifier of the topic which messages will be fetched\n    public let topicId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        date: Int?,\n        topicId: Int64?\n    ) {\n        self.chatId = chatId\n        self.date = date\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetDirectMessagesChatTopicRevenue.swift",
    "content": "//\n//  GetDirectMessagesChatTopicRevenue.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the total number of Telegram Stars received by the channel chat for direct messages from the given topic\npublic struct GetDirectMessagesChatTopicRevenue: Codable, Equatable, Hashable {\n\n    /// Chat identifier of the channel direct messages chat administered by the current user\n    public let chatId: Int64?\n\n    /// Identifier of the topic\n    public let topicId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        topicId: Int64?\n    ) {\n        self.chatId = chatId\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetDisallowedChatEmojiStatuses.swift",
    "content": "//\n//  GetDisallowedChatEmojiStatuses.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of emoji statuses, which can't be used as chat emoji status, even if they are from a sticker set with is_allowed_as_chat_emoji_status == true\npublic struct GetDisallowedChatEmojiStatuses: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetEmojiCategories.swift",
    "content": "//\n//  GetEmojiCategories.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns available emoji categories\npublic struct GetEmojiCategories: Codable, Equatable, Hashable {\n\n    /// Type of emoji categories to return; pass null to get default emoji categories\n    public let type: EmojiCategoryType?\n\n\n    public init(type: EmojiCategoryType?) {\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetEmojiReaction.swift",
    "content": "//\n//  GetEmojiReaction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about an emoji reaction. Returns a 404 error if the reaction is not found\npublic struct GetEmojiReaction: Codable, Equatable, Hashable {\n\n    /// Text representation of the reaction\n    public let emoji: String?\n\n\n    public init(emoji: String?) {\n        self.emoji = emoji\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetEmojiSuggestionsUrl.swift",
    "content": "//\n//  GetEmojiSuggestionsUrl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an HTTP URL which can be used to automatically log in to the translation platform and suggest new emoji replacements. The URL will be valid for 30 seconds after generation\npublic struct GetEmojiSuggestionsUrl: Codable, Equatable, Hashable {\n\n    /// Language code for which the emoji replacements will be suggested\n    public let languageCode: String?\n\n\n    public init(languageCode: String?) {\n        self.languageCode = languageCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetExternalLink.swift",
    "content": "//\n//  GetExternalLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an HTTP URL which can be used to automatically authorize the current user on a website after clicking an HTTP link. Use the method getExternalLinkInfo to find whether a prior user confirmation is needed. May return an empty link if just a toast about successful login has to be shown\npublic struct GetExternalLink: Codable, Equatable, Hashable {\n\n    /// Pass true if the current user allowed the bot that was returned in getExternalLinkInfo, to send them messages\n    public let allowWriteAccess: Bool?\n\n    /// The HTTP link\n    public let link: String?\n\n\n    public init(\n        allowWriteAccess: Bool?,\n        link: String?\n    ) {\n        self.allowWriteAccess = allowWriteAccess\n        self.link = link\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetExternalLinkInfo.swift",
    "content": "//\n//  GetExternalLinkInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about an action to be done when the current user clicks an external link. Don't use this method for links from secret chats if link preview is disabled in secret chats\npublic struct GetExternalLinkInfo: Codable, Equatable, Hashable {\n\n    /// The link\n    public let link: String?\n\n\n    public init(link: String?) {\n        self.link = link\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetFavoriteStickers.swift",
    "content": "//\n//  GetFavoriteStickers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns favorite stickers\npublic struct GetFavoriteStickers: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetFile.swift",
    "content": "//\n//  GetFile.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a file. This is an offline method\npublic struct GetFile: Codable, Equatable, Hashable {\n\n    /// Identifier of the file to get\n    public let fileId: Int?\n\n\n    public init(fileId: Int?) {\n        self.fileId = fileId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetFileDownloadedPrefixSize.swift",
    "content": "//\n//  GetFileDownloadedPrefixSize.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns file downloaded prefix size from a given offset, in bytes\npublic struct GetFileDownloadedPrefixSize: Codable, Equatable, Hashable {\n\n    /// Identifier of the file\n    public let fileId: Int?\n\n    /// Offset from which downloaded prefix size needs to be calculated\n    public let offset: Int64?\n\n\n    public init(\n        fileId: Int?,\n        offset: Int64?\n    ) {\n        self.fileId = fileId\n        self.offset = offset\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetFileExtension.swift",
    "content": "//\n//  GetFileExtension.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the extension of a file, guessed by its MIME type. Returns an empty string on failure. Can be called synchronously\npublic struct GetFileExtension: Codable, Equatable, Hashable {\n\n    /// The MIME type of the file\n    public let mimeType: String?\n\n\n    public init(mimeType: String?) {\n        self.mimeType = mimeType\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetFileMimeType.swift",
    "content": "//\n//  GetFileMimeType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the MIME type of a file, guessed by its extension. Returns an empty string on failure. Can be called synchronously\npublic struct GetFileMimeType: Codable, Equatable, Hashable {\n\n    /// The name of the file or path to the file\n    public let fileName: String?\n\n\n    public init(fileName: String?) {\n        self.fileName = fileName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetForumTopic.swift",
    "content": "//\n//  GetForumTopic.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a topic in a forum supergroup chat or a chat with a bot with topics\npublic struct GetForumTopic: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n    /// Forum topic identifier\n    public let forumTopicId: Int?\n\n\n    public init(\n        chatId: Int64?,\n        forumTopicId: Int?\n    ) {\n        self.chatId = chatId\n        self.forumTopicId = forumTopicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetForumTopicDefaultIcons.swift",
    "content": "//\n//  GetForumTopicDefaultIcons.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of custom emoji, which can be used as forum topic icon by all users\npublic struct GetForumTopicDefaultIcons: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetForumTopicHistory.swift",
    "content": "//\n//  GetForumTopicHistory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns messages in a topic in a forum supergroup chat or a chat with a bot with topics. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\npublic struct GetForumTopicHistory: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Forum topic identifier\n    public let forumTopicId: Int?\n\n    /// Identifier of the message starting from which history must be fetched; use 0 to get results from the last message\n    public let fromMessageId: Int64?\n\n    /// The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    public let offset: Int?\n\n\n    public init(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?\n    ) {\n        self.chatId = chatId\n        self.forumTopicId = forumTopicId\n        self.fromMessageId = fromMessageId\n        self.limit = limit\n        self.offset = offset\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetForumTopicLink.swift",
    "content": "//\n//  GetForumTopicLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an HTTPS link to a topic in a forum supergroup chat. This is an offline method\npublic struct GetForumTopicLink: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n    /// Forum topic identifier\n    public let forumTopicId: Int?\n\n\n    public init(\n        chatId: Int64?,\n        forumTopicId: Int?\n    ) {\n        self.chatId = chatId\n        self.forumTopicId = forumTopicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetForumTopics.swift",
    "content": "//\n//  GetForumTopics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns found forum topics in a forum supergroup chat or a chat with a bot with topics. This is a temporary method for getting information about topic list from the server\npublic struct GetForumTopics: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n    /// The maximum number of forum topics to be returned; up to 100. For optimal performance, the number of returned forum topics is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// The date starting from which the results need to be fetched. Use 0 or any date in the future to get results from the last topic\n    public let offsetDate: Int?\n\n    /// The forum topic identifier of the last found topic, or 0 for the first request\n    public let offsetForumTopicId: Int?\n\n    /// The message identifier of the last message in the last found topic, or 0 for the first request\n    public let offsetMessageId: Int64?\n\n    /// Query to search for in the forum topic's name\n    public let query: String?\n\n\n    public init(\n        chatId: Int64?,\n        limit: Int?,\n        offsetDate: Int?,\n        offsetForumTopicId: Int?,\n        offsetMessageId: Int64?,\n        query: String?\n    ) {\n        self.chatId = chatId\n        self.limit = limit\n        self.offsetDate = offsetDate\n        self.offsetForumTopicId = offsetForumTopicId\n        self.offsetMessageId = offsetMessageId\n        self.query = query\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetGameHighScores.swift",
    "content": "//\n//  GetGameHighScores.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the high scores for a game and some part of the high score table in the range of the specified user; for bots only\npublic struct GetGameHighScores: Codable, Equatable, Hashable {\n\n    /// The chat that contains the message with the game\n    public let chatId: Int64?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n    /// User identifier\n    public let userId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        userId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetGiftAuctionAcquiredGifts.swift",
    "content": "//\n//  GetGiftAuctionAcquiredGifts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the gifts that were acquired by the current user on a gift auction\npublic struct GetGiftAuctionAcquiredGifts: Codable, Equatable, Hashable {\n\n    /// Identifier of the auctioned gift\n    public let giftId: TdInt64?\n\n\n    public init(giftId: TdInt64?) {\n        self.giftId = giftId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetGiftAuctionState.swift",
    "content": "//\n//  GetGiftAuctionState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns auction state for a gift\npublic struct GetGiftAuctionState: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the auction\n    public let auctionId: String?\n\n\n    public init(auctionId: String?) {\n        self.auctionId = auctionId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetGiftChatThemes.swift",
    "content": "//\n//  GetGiftChatThemes.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns available to the current user gift chat themes\npublic struct GetGiftChatThemes: Codable, Equatable, Hashable {\n\n    /// The maximum number of chat themes to return\n    public let limit: Int?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n\n    public init(\n        limit: Int?,\n        offset: String?\n    ) {\n        self.limit = limit\n        self.offset = offset\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetGiftCollections.swift",
    "content": "//\n//  GetGiftCollections.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns collections of gifts owned by the given user or chat\npublic struct GetGiftCollections: Codable, Equatable, Hashable {\n\n    /// Identifier of the user or the channel chat that received the gifts\n    public let ownerId: MessageSender?\n\n\n    public init(ownerId: MessageSender?) {\n        self.ownerId = ownerId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetGiftUpgradePreview.swift",
    "content": "//\n//  GetGiftUpgradePreview.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns examples of possible upgraded gifts for a regular gift\npublic struct GetGiftUpgradePreview: Codable, Equatable, Hashable {\n\n    /// Identifier of the regular gift\n    public let regularGiftId: TdInt64?\n\n\n    public init(regularGiftId: TdInt64?) {\n        self.regularGiftId = regularGiftId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetGiftUpgradeVariants.swift",
    "content": "//\n//  GetGiftUpgradeVariants.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.60-cb863c16\n//  https://github.com/tdlib/td/tree/cb863c16\n//\n\nimport Foundation\n\n\n/// Returns all possible variants of upgraded gifts for a regular gift\npublic struct GetGiftUpgradeVariants: Codable, Equatable, Hashable {\n\n    /// Identifier of the gift\n    public let giftId: TdInt64?\n\n\n    public init(giftId: TdInt64?) {\n        self.giftId = giftId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetGiftsForCrafting.swift",
    "content": "//\n//  GetGiftsForCrafting.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns upgraded gifts of the current user who can be used to craft another gifts\npublic struct GetGiftsForCrafting: Codable, Equatable, Hashable {\n\n    /// The maximum number of gifts to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n    /// Identifier of the regular gift that will be used for crafting\n    public let regularGiftId: TdInt64?\n\n\n    public init(\n        limit: Int?,\n        offset: String?,\n        regularGiftId: TdInt64?\n    ) {\n        self.limit = limit\n        self.offset = offset\n        self.regularGiftId = regularGiftId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetGiveawayInfo.swift",
    "content": "//\n//  GetGiveawayInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a giveaway\npublic struct GetGiveawayInfo: Codable, Equatable, Hashable {\n\n    /// Identifier of the channel chat which started the giveaway\n    public let chatId: Int64?\n\n    /// Identifier of the giveaway or a giveaway winners message in the chat\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetGreetingStickers.swift",
    "content": "//\n//  GetGreetingStickers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns greeting stickers from regular sticker sets that can be used for the start page of other users\npublic struct GetGreetingStickers: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetGrossingWebAppBots.swift",
    "content": "//\n//  GetGrossingWebAppBots.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the most grossing Web App bots\npublic struct GetGrossingWebAppBots: Codable, Equatable, Hashable {\n\n    /// The maximum number of bots to be returned; up to 100\n    public let limit: Int?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n\n    public init(\n        limit: Int?,\n        offset: String?\n    ) {\n        self.limit = limit\n        self.offset = offset\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetGroupCall.swift",
    "content": "//\n//  GetGroupCall.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a group call\npublic struct GetGroupCall: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n\n    public init(groupCallId: Int?) {\n        self.groupCallId = groupCallId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetGroupCallInviteLink.swift",
    "content": "//\n//  GetGroupCallInviteLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.47-971684a3\n//  https://github.com/tdlib/td/tree/971684a3\n//\n\nimport Foundation\n\n\n/// Returns invite link to a video chat in a public chat\npublic struct GetGroupCallInviteLink: Codable, Equatable, Hashable {\n\n    /// Pass true if the invite link needs to contain an invite hash, passing which to joinGroupCall would allow the invited user to unmute themselves. Requires groupCall.can_be_managed group call flag\n    public let canSelfUnmute: Bool?\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n\n    public init(\n        canSelfUnmute: Bool?,\n        groupCallId: Int?\n    ) {\n        self.canSelfUnmute = canSelfUnmute\n        self.groupCallId = groupCallId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetGroupCallParticipants.swift",
    "content": "//\n//  GetGroupCallParticipants.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about participants of a non-joined group call that is not bound to a chat\npublic struct GetGroupCallParticipants: Codable, Equatable, Hashable {\n\n    /// The group call which participants will be returned\n    public let inputGroupCall: InputGroupCall?\n\n    /// The maximum number of participants to return; must be positive\n    public let limit: Int?\n\n\n    public init(\n        inputGroupCall: InputGroupCall?,\n        limit: Int?\n    ) {\n        self.inputGroupCall = inputGroupCall\n        self.limit = limit\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetGroupCallStreamSegment.swift",
    "content": "//\n//  GetGroupCallStreamSegment.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a file with a segment of a video chat or live story in a modified OGG format for audio or MPEG-4 format for video\npublic struct GetGroupCallStreamSegment: Codable, Equatable, Hashable {\n\n    /// Identifier of an audio/video channel to get as received from tgcalls\n    public let channelId: Int?\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// Segment duration scale; 0-1. Segment's duration is 1000/(2**scale) milliseconds\n    public let scale: Int?\n\n    /// Point in time when the stream segment begins; Unix timestamp in milliseconds\n    public let timeOffset: Int64?\n\n    /// Video quality as received from tgcalls; pass null to get the worst available quality\n    public let videoQuality: GroupCallVideoQuality?\n\n\n    public init(\n        channelId: Int?,\n        groupCallId: Int?,\n        scale: Int?,\n        timeOffset: Int64?,\n        videoQuality: GroupCallVideoQuality?\n    ) {\n        self.channelId = channelId\n        self.groupCallId = groupCallId\n        self.scale = scale\n        self.timeOffset = timeOffset\n        self.videoQuality = videoQuality\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetGroupCallStreams.swift",
    "content": "//\n//  GetGroupCallStreams.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about available streams in a video chat or a live story\npublic struct GetGroupCallStreams: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n\n    public init(groupCallId: Int?) {\n        self.groupCallId = groupCallId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetGroupsInCommon.swift",
    "content": "//\n//  GetGroupsInCommon.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a list of common group chats with a given user. Chats are sorted by their type and creation date\npublic struct GetGroupsInCommon: Codable, Equatable, Hashable {\n\n    /// The maximum number of chats to be returned; up to 100\n    public let limit: Int?\n\n    /// Chat identifier starting from which to return chats; use 0 for the first request\n    public let offsetChatId: Int64?\n\n    /// User identifier\n    public let userId: Int64?\n\n\n    public init(\n        limit: Int?,\n        offsetChatId: Int64?,\n        userId: Int64?\n    ) {\n        self.limit = limit\n        self.offsetChatId = offsetChatId\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetImportedContactCount.swift",
    "content": "//\n//  GetImportedContactCount.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the total number of imported contacts\npublic struct GetImportedContactCount: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetInactiveSupergroupChats.swift",
    "content": "//\n//  GetInactiveSupergroupChats.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a list of recently inactive supergroups and channels. Can be used when user reaches limit on the number of joined supergroups and channels and receives the error \"CHANNELS_TOO_MUCH\". Also, the limit can be increased with Telegram Premium\npublic struct GetInactiveSupergroupChats: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetInlineGameHighScores.swift",
    "content": "//\n//  GetInlineGameHighScores.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns game high scores and some part of the high score table in the range of the specified user; for bots only\npublic struct GetInlineGameHighScores: Codable, Equatable, Hashable {\n\n    /// Inline message identifier\n    public let inlineMessageId: String?\n\n    /// User identifier\n    public let userId: Int64?\n\n\n    public init(\n        inlineMessageId: String?,\n        userId: Int64?\n    ) {\n        self.inlineMessageId = inlineMessageId\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetInlineQueryResults.swift",
    "content": "//\n//  GetInlineQueryResults.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends an inline query to a bot and returns its results. Returns an error with code 502 if the bot fails to answer the query before the query timeout expires\npublic struct GetInlineQueryResults: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot\n    public let botUserId: Int64?\n\n    /// Identifier of the chat where the query was sent\n    public let chatId: Int64?\n\n    /// Offset of the first entry to return; use empty string to get the first chunk of results\n    public let offset: String?\n\n    /// Text of the query\n    public let query: String?\n\n    /// Location of the user; pass null if unknown or the bot doesn't need user's location\n    public let userLocation: Location?\n\n\n    public init(\n        botUserId: Int64?,\n        chatId: Int64?,\n        offset: String?,\n        query: String?,\n        userLocation: Location?\n    ) {\n        self.botUserId = botUserId\n        self.chatId = chatId\n        self.offset = offset\n        self.query = query\n        self.userLocation = userLocation\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetInstalledBackgrounds.swift",
    "content": "//\n//  GetInstalledBackgrounds.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns backgrounds installed by the user\npublic struct GetInstalledBackgrounds: Codable, Equatable, Hashable {\n\n    /// Pass true to order returned backgrounds for a dark theme\n    public let forDarkTheme: Bool?\n\n\n    public init(forDarkTheme: Bool?) {\n        self.forDarkTheme = forDarkTheme\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetInstalledStickerSets.swift",
    "content": "//\n//  GetInstalledStickerSets.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a list of installed sticker sets\npublic struct GetInstalledStickerSets: Codable, Equatable, Hashable {\n\n    /// Type of the sticker sets to return\n    public let stickerType: StickerType?\n\n\n    public init(stickerType: StickerType?) {\n        self.stickerType = stickerType\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetInternalLink.swift",
    "content": "//\n//  GetInternalLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an HTTPS or a tg: link with the given type. Can be called before authorization\npublic struct GetInternalLink: Codable, Equatable, Hashable {\n\n    /// Pass true to create an HTTPS link (only available for some link types); pass false to create a tg: link\n    public let isHttp: Bool?\n\n    /// Expected type of the link\n    public let type: InternalLinkType?\n\n\n    public init(\n        isHttp: Bool?,\n        type: InternalLinkType?\n    ) {\n        self.isHttp = isHttp\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetInternalLinkType.swift",
    "content": "//\n//  GetInternalLinkType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about the type of internal link. Returns a 404 error if the link is not internal. Can be called before authorization\npublic struct GetInternalLinkType: Codable, Equatable, Hashable {\n\n    /// The link\n    public let link: String?\n\n\n    public init(link: String?) {\n        self.link = link\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetJsonString.swift",
    "content": "//\n//  GetJsonString.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Converts a JsonValue object to corresponding JSON-serialized string. Can be called synchronously\npublic struct GetJsonString: Codable, Equatable, Hashable {\n\n    /// The JsonValue object\n    public let jsonValue: JsonValue?\n\n\n    public init(jsonValue: JsonValue?) {\n        self.jsonValue = jsonValue\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetJsonValue.swift",
    "content": "//\n//  GetJsonValue.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Converts a JSON-serialized string to corresponding JsonValue object. Can be called synchronously\npublic struct GetJsonValue: Codable, Equatable, Hashable {\n\n    /// The JSON-serialized string\n    public let json: String?\n\n\n    public init(json: String?) {\n        self.json = json\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetKeywordEmojis.swift",
    "content": "//\n//  GetKeywordEmojis.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns emojis matching the keyword. Supported only if the file database is enabled. Order of results is unspecified\npublic struct GetKeywordEmojis: Codable, Equatable, Hashable {\n\n    /// List of possible IETF language tags of the user's input language; may be empty if unknown\n    public let inputLanguageCodes: [String]?\n\n    /// Text to search for\n    public let text: String?\n\n\n    public init(\n        inputLanguageCodes: [String]?,\n        text: String?\n    ) {\n        self.inputLanguageCodes = inputLanguageCodes\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetLanguagePackInfo.swift",
    "content": "//\n//  GetLanguagePackInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a language pack. Returned language pack identifier may be different from a provided one. Can be called before authorization\npublic struct GetLanguagePackInfo: Codable, Equatable, Hashable {\n\n    /// Language pack identifier\n    public let languagePackId: String?\n\n\n    public init(languagePackId: String?) {\n        self.languagePackId = languagePackId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetLanguagePackString.swift",
    "content": "//\n//  GetLanguagePackString.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a string stored in the local database from the specified localization target and language pack by its key. Returns a 404 error if the string is not found. Can be called synchronously\npublic struct GetLanguagePackString: Codable, Equatable, Hashable {\n\n    /// Language pack key of the string to be returned\n    public let key: String?\n\n    /// Path to the language pack database in which strings are stored\n    public let languagePackDatabasePath: String?\n\n    /// Language pack identifier\n    public let languagePackId: String?\n\n    /// Localization target to which the language pack belongs\n    public let localizationTarget: String?\n\n\n    public init(\n        key: String?,\n        languagePackDatabasePath: String?,\n        languagePackId: String?,\n        localizationTarget: String?\n    ) {\n        self.key = key\n        self.languagePackDatabasePath = languagePackDatabasePath\n        self.languagePackId = languagePackId\n        self.localizationTarget = localizationTarget\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetLanguagePackStrings.swift",
    "content": "//\n//  GetLanguagePackStrings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns strings from a language pack in the current localization target by their keys. Can be called before authorization\npublic struct GetLanguagePackStrings: Codable, Equatable, Hashable {\n\n    /// Language pack keys of the strings to be returned; leave empty to request all available strings\n    public let keys: [String]?\n\n    /// Language pack identifier of the strings to be returned\n    public let languagePackId: String?\n\n\n    public init(\n        keys: [String]?,\n        languagePackId: String?\n    ) {\n        self.keys = keys\n        self.languagePackId = languagePackId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetLinkPreview.swift",
    "content": "//\n//  GetLinkPreview.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a link preview by the text of a message. Do not call this function too often. Returns a 404 error if the text has no link preview\npublic struct GetLinkPreview: Codable, Equatable, Hashable {\n\n    /// Options to be used for generation of the link preview; pass null to use default link preview options\n    public let linkPreviewOptions: LinkPreviewOptions?\n\n    /// Message text with formatting\n    public let text: FormattedText?\n\n\n    public init(\n        linkPreviewOptions: LinkPreviewOptions?,\n        text: FormattedText?\n    ) {\n        self.linkPreviewOptions = linkPreviewOptions\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetLiveStoryAvailableMessageSenders.swift",
    "content": "//\n//  GetLiveStoryAvailableMessageSenders.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of message sender identifiers, on whose behalf messages can be sent to a live story\npublic struct GetLiveStoryAvailableMessageSenders: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n\n    public init(groupCallId: Int?) {\n        self.groupCallId = groupCallId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetLiveStoryRtmpUrl.swift",
    "content": "//\n//  GetLiveStoryRtmpUrl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns RTMP URL for streaming to a live story; requires can_post_stories administrator right for channel chats\npublic struct GetLiveStoryRtmpUrl: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetLiveStoryStreamer.swift",
    "content": "//\n//  GetLiveStoryStreamer.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about the user or the chat that streams to a live story; for live stories that aren't an RTMP stream only\npublic struct GetLiveStoryStreamer: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n\n    public init(groupCallId: Int?) {\n        self.groupCallId = groupCallId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetLiveStoryTopDonors.swift",
    "content": "//\n//  GetLiveStoryTopDonors.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of top live story donors\npublic struct GetLiveStoryTopDonors: Codable, Equatable, Hashable {\n\n    /// Group call identifier of the live story\n    public let groupCallId: Int?\n\n\n    public init(groupCallId: Int?) {\n        self.groupCallId = groupCallId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetLocalizationTargetInfo.swift",
    "content": "//\n//  GetLocalizationTargetInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about the current localization target. This is an offline method if only_local is true. Can be called before authorization\npublic struct GetLocalizationTargetInfo: Codable, Equatable, Hashable {\n\n    /// Pass true to get only locally available information without sending network requests\n    public let onlyLocal: Bool?\n\n\n    public init(onlyLocal: Bool?) {\n        self.onlyLocal = onlyLocal\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetLogStream.swift",
    "content": "//\n//  GetLogStream.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about currently used log stream for internal logging of TDLib. Can be called synchronously\npublic struct GetLogStream: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetLogTagVerbosityLevel.swift",
    "content": "//\n//  GetLogTagVerbosityLevel.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns current verbosity level for a specified TDLib internal log tag. Can be called synchronously\npublic struct GetLogTagVerbosityLevel: Codable, Equatable, Hashable {\n\n    /// Logging tag to change verbosity level\n    public let tag: String?\n\n\n    public init(tag: String?) {\n        self.tag = tag\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetLogTags.swift",
    "content": "//\n//  GetLogTags.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of available TDLib internal log tags, for example, [\"actor\", \"binlog\", \"connections\", \"notifications\", \"proxy\"]. Can be called synchronously\npublic struct GetLogTags: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetLogVerbosityLevel.swift",
    "content": "//\n//  GetLogVerbosityLevel.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns current verbosity level of the internal logging of TDLib. Can be called synchronously\npublic struct GetLogVerbosityLevel: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetLoginPasskeys.swift",
    "content": "//\n//  GetLoginPasskeys.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of passkeys allowed to be used for the login by the current user\npublic struct GetLoginPasskeys: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetLoginUrl.swift",
    "content": "//\n//  GetLoginUrl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an HTTP URL which can be used to automatically authorize the user on a website after clicking an inline button of type inlineKeyboardButtonTypeLoginUrl. Use the method getLoginUrlInfo to find whether a prior user confirmation is needed. If an error is returned, then the button must be handled as an ordinary URL button\npublic struct GetLoginUrl: Codable, Equatable, Hashable {\n\n    /// Pass true to allow the bot to send messages to the current user. Phone number access can't be requested using the button\n    public let allowWriteAccess: Bool?\n\n    /// Button identifier\n    public let buttonId: Int64?\n\n    /// Chat identifier of the message with the button\n    public let chatId: Int64?\n\n    /// Message identifier of the message with the button\n    public let messageId: Int64?\n\n\n    public init(\n        allowWriteAccess: Bool?,\n        buttonId: Int64?,\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.allowWriteAccess = allowWriteAccess\n        self.buttonId = buttonId\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetLoginUrlInfo.swift",
    "content": "//\n//  GetLoginUrlInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a button of type inlineKeyboardButtonTypeLoginUrl. The method needs to be called when the user presses the button\npublic struct GetLoginUrlInfo: Codable, Equatable, Hashable {\n\n    /// Button identifier\n    public let buttonId: Int64?\n\n    /// Chat identifier of the message with the button\n    public let chatId: Int64?\n\n    /// Message identifier of the message with the button. The message must not be scheduled\n    public let messageId: Int64?\n\n\n    public init(\n        buttonId: Int64?,\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.buttonId = buttonId\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMainWebApp.swift",
    "content": "//\n//  GetMainWebApp.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information needed to open the main Web App of a bot\npublic struct GetMainWebApp: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot. If the bot is restricted for the current user, then show an error instead of calling the method\n    public let botUserId: Int64?\n\n    /// Identifier of the chat in which the Web App is opened; pass 0 if none\n    public let chatId: Int64?\n\n    /// Parameters to use to open the Web App\n    public let parameters: WebAppOpenParameters?\n\n    /// Start parameter from internalLinkTypeMainWebApp\n    public let startParameter: String?\n\n\n    public init(\n        botUserId: Int64?,\n        chatId: Int64?,\n        parameters: WebAppOpenParameters?,\n        startParameter: String?\n    ) {\n        self.botUserId = botUserId\n        self.chatId = chatId\n        self.parameters = parameters\n        self.startParameter = startParameter\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetManagedBotAccessSettings.swift",
    "content": "//\n//  GetManagedBotAccessSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns access settings of a managed bot; for bots only\npublic struct GetManagedBotAccessSettings: Codable, Equatable, Hashable {\n\n    /// Identifier of the managed bot\n    public let botUserId: Int64?\n\n\n    public init(botUserId: Int64?) {\n        self.botUserId = botUserId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetManagedBotToken.swift",
    "content": "//\n//  GetManagedBotToken.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns token of a managed bot; for bots only\npublic struct GetManagedBotToken: Codable, Equatable, Hashable {\n\n    /// Identifier of the managed bot\n    public let botUserId: Int64?\n\n    /// Pass true to revoke the current token and create a new one\n    public let revoke: Bool?\n\n\n    public init(\n        botUserId: Int64?,\n        revoke: Bool?\n    ) {\n        self.botUserId = botUserId\n        self.revoke = revoke\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMapThumbnailFile.swift",
    "content": "//\n//  GetMapThumbnailFile.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a file with a map thumbnail in PNG format. Only map thumbnail files with size less than 1MB can be downloaded\npublic struct GetMapThumbnailFile: Codable, Equatable, Hashable {\n\n    /// Identifier of a chat in which the thumbnail will be shown. Use 0 if unknown\n    public let chatId: Int64?\n\n    /// Map height in pixels before applying scale; 16-1024\n    public let height: Int?\n\n    /// Location of the map center\n    public let location: Location?\n\n    /// Map scale; 1-3\n    public let scale: Int?\n\n    /// Map width in pixels before applying scale; 16-1024\n    public let width: Int?\n\n    /// Map zoom level; 13-20\n    public let zoom: Int?\n\n\n    public init(\n        chatId: Int64?,\n        height: Int?,\n        location: Location?,\n        scale: Int?,\n        width: Int?,\n        zoom: Int?\n    ) {\n        self.chatId = chatId\n        self.height = height\n        self.location = location\n        self.scale = scale\n        self.width = width\n        self.zoom = zoom\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMarkdownText.swift",
    "content": "//\n//  GetMarkdownText.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Replaces text entities with Markdown formatting in a human-friendly format. Entities that can't be represented in Markdown unambiguously are kept as is. Can be called synchronously\npublic struct GetMarkdownText: Codable, Equatable, Hashable {\n\n    /// The text\n    public let text: FormattedText?\n\n\n    public init(text: FormattedText?) {\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMe.swift",
    "content": "//\n//  GetMe.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the current user\npublic struct GetMe: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMenuButton.swift",
    "content": "//\n//  GetMenuButton.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns menu button set by the bot for the given user; for bots only\npublic struct GetMenuButton: Codable, Equatable, Hashable {\n\n    /// Identifier of the user or 0 to get the default menu button\n    public let userId: Int64?\n\n\n    public init(userId: Int64?) {\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMessage.swift",
    "content": "//\n//  GetMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a message. Returns a 404 error if the message doesn't exist\npublic struct GetMessage: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat the message belongs to\n    public let chatId: Int64?\n\n    /// Identifier of the message to get\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMessageAddedReactions.swift",
    "content": "//\n//  GetMessageAddedReactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns reactions added for a message, along with their sender\npublic struct GetMessageAddedReactions: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the message belongs\n    public let chatId: Int64?\n\n    /// The maximum number of reactions to be returned; must be positive and can't be greater than 100\n    public let limit: Int?\n\n    /// Identifier of the message. Use message.interaction_info.reactions.can_get_added_reactions to check whether added reactions can be received for the message\n    public let messageId: Int64?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n    /// Type of the reactions to return; pass null to return all added reactions; reactionTypePaid isn't supported\n    public let reactionType: ReactionType?\n\n\n    public init(\n        chatId: Int64?,\n        limit: Int?,\n        messageId: Int64?,\n        offset: String?,\n        reactionType: ReactionType?\n    ) {\n        self.chatId = chatId\n        self.limit = limit\n        self.messageId = messageId\n        self.offset = offset\n        self.reactionType = reactionType\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMessageAuthor.swift",
    "content": "//\n//  GetMessageAuthor.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about actual author of a message sent on behalf of a channel. The method can be called if messageProperties.can_get_author == true\npublic struct GetMessageAuthor: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMessageAvailableReactions.swift",
    "content": "//\n//  GetMessageAvailableReactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns reactions, which can be added to a message. The list can change after updateActiveEmojiReactions, updateChatAvailableReactions for the chat, or updateMessageInteractionInfo for the message\npublic struct GetMessageAvailableReactions: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the message belongs\n    public let chatId: Int64?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n    /// Number of reaction per row, 5-25\n    public let rowSize: Int?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        rowSize: Int?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.rowSize = rowSize\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMessageEffect.swift",
    "content": "//\n//  GetMessageEffect.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a message effect. Returns a 404 error if the effect is not found\npublic struct GetMessageEffect: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the effect\n    public let effectId: TdInt64?\n\n\n    public init(effectId: TdInt64?) {\n        self.effectId = effectId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMessageEmbeddingCode.swift",
    "content": "//\n//  GetMessageEmbeddingCode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an HTML code for embedding the message. Available only if messageProperties.can_get_embedding_code\npublic struct GetMessageEmbeddingCode: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the message belongs\n    public let chatId: Int64?\n\n    /// Pass true to return an HTML code for embedding of the whole media album\n    public let forAlbum: Bool?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        forAlbum: Bool?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.forAlbum = forAlbum\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMessageFileType.swift",
    "content": "//\n//  GetMessageFileType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a file with messages exported from another application\npublic struct GetMessageFileType: Codable, Equatable, Hashable {\n\n    /// Beginning of the message file; up to 100 first lines\n    public let messageFileHead: String?\n\n\n    public init(messageFileHead: String?) {\n        self.messageFileHead = messageFileHead\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMessageImportConfirmationText.swift",
    "content": "//\n//  GetMessageImportConfirmationText.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a confirmation text to be shown to the user before starting message import\npublic struct GetMessageImportConfirmationText: Codable, Equatable, Hashable {\n\n    /// Identifier of a chat to which the messages will be imported. It must be an identifier of a private chat with a mutual contact or an identifier of a supergroup chat with can_change_info member right\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMessageLink.swift",
    "content": "//\n//  GetMessageLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an HTTPS link to a message in a chat. Available only if messageProperties.can_get_link, or if messageProperties.can_get_media_timestamp_links and a media timestamp link is generated. This is an offline method\npublic struct GetMessageLink: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the message belongs\n    public let chatId: Int64?\n\n    /// If not 0, identifier of the checklist task in the message to be linked\n    public let checklistTaskId: Int?\n\n    /// Pass true to create a link for the whole media album\n    public let forAlbum: Bool?\n\n    /// Pass true to create a link to the message as a channel post comment, in a message thread, or a forum topic\n    public let inMessageThread: Bool?\n\n    /// If not 0, timestamp from which the video/audio/video note/voice note/story playing must start, in seconds. The media can be in the message content or in its link preview\n    public let mediaTimestamp: Int?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n    /// If not empty, identifier of the poll option in the message to be linked\n    public let pollOptionId: String?\n\n\n    public init(\n        chatId: Int64?,\n        checklistTaskId: Int?,\n        forAlbum: Bool?,\n        inMessageThread: Bool?,\n        mediaTimestamp: Int?,\n        messageId: Int64?,\n        pollOptionId: String?\n    ) {\n        self.chatId = chatId\n        self.checklistTaskId = checklistTaskId\n        self.forAlbum = forAlbum\n        self.inMessageThread = inMessageThread\n        self.mediaTimestamp = mediaTimestamp\n        self.messageId = messageId\n        self.pollOptionId = pollOptionId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMessageLinkInfo.swift",
    "content": "//\n//  GetMessageLinkInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a public or private message link. Can be called for any internal link of the type internalLinkTypeMessage\npublic struct GetMessageLinkInfo: Codable, Equatable, Hashable {\n\n    /// The message link\n    public let url: String?\n\n\n    public init(url: String?) {\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMessageLocally.swift",
    "content": "//\n//  GetMessageLocally.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a message, if it is available without sending network request. Returns a 404 error if message isn't available locally. This is an offline method\npublic struct GetMessageLocally: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat the message belongs to\n    public let chatId: Int64?\n\n    /// Identifier of the message to get\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMessageProperties.swift",
    "content": "//\n//  GetMessageProperties.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns properties of a message. This is an offline method\npublic struct GetMessageProperties: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMessagePublicForwards.swift",
    "content": "//\n//  GetMessagePublicForwards.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns forwarded copies of a channel message to different public channels and public reposts as a story. Can be used only if messageProperties.can_get_statistics == true. For optimal performance, the number of returned messages and stories is chosen by TDLib\npublic struct GetMessagePublicForwards: Codable, Equatable, Hashable {\n\n    /// Chat identifier of the message\n    public let chatId: Int64?\n\n    /// The maximum number of messages and stories to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Message identifier\n    public let messageId: Int64?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n\n    public init(\n        chatId: Int64?,\n        limit: Int?,\n        messageId: Int64?,\n        offset: String?\n    ) {\n        self.chatId = chatId\n        self.limit = limit\n        self.messageId = messageId\n        self.offset = offset\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMessageReadDate.swift",
    "content": "//\n//  GetMessageReadDate.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns read date of a recent outgoing message in a private chat. The method can be called if messageProperties.can_get_read_date == true\npublic struct GetMessageReadDate: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMessageStatistics.swift",
    "content": "//\n//  GetMessageStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns detailed statistics about a message. Can be used only if messageProperties.can_get_statistics == true\npublic struct GetMessageStatistics: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Pass true if a dark theme is used by the application\n    public let isDark: Bool?\n\n    /// Message identifier\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        isDark: Bool?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.isDark = isDark\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMessageThread.swift",
    "content": "//\n//  GetMessageThread.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a message thread. Can be used only if messageProperties.can_get_message_thread == true\npublic struct GetMessageThread: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMessageThreadHistory.swift",
    "content": "//\n//  GetMessageThreadHistory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns messages in a message thread of a message. Can be used only if messageProperties.can_get_message_thread == true. Message thread of a channel message is in the channel's linked supergroup. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\npublic struct GetMessageThreadHistory: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Identifier of the message starting from which history must be fetched; use 0 to get results from the last message\n    public let fromMessageId: Int64?\n\n    /// The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Message identifier, which thread history needs to be returned\n    public let messageId: Int64?\n\n    /// Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    public let offset: Int?\n\n\n    public init(\n        chatId: Int64?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        messageId: Int64?,\n        offset: Int?\n    ) {\n        self.chatId = chatId\n        self.fromMessageId = fromMessageId\n        self.limit = limit\n        self.messageId = messageId\n        self.offset = offset\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMessageViewers.swift",
    "content": "//\n//  GetMessageViewers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns viewers of a recent outgoing message in a basic group or a supergroup chat. For video notes and voice notes only users, opened content of the message, are returned. The method can be called if messageProperties.can_get_viewers == true\npublic struct GetMessageViewers: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetMessages.swift",
    "content": "//\n//  GetMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about messages. If a message is not found, returns null on the corresponding position of the result\npublic struct GetMessages: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat the messages belong to\n    public let chatId: Int64?\n\n    /// Identifiers of the messages to get\n    public let messageIds: [Int64]?\n\n\n    public init(\n        chatId: Int64?,\n        messageIds: [Int64]?\n    ) {\n        self.chatId = chatId\n        self.messageIds = messageIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetNetworkStatistics.swift",
    "content": "//\n//  GetNetworkStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns network data usage statistics. Can be called before authorization\npublic struct GetNetworkStatistics: Codable, Equatable, Hashable {\n\n    /// Pass true to get statistics only for the current library launch\n    public let onlyCurrent: Bool?\n\n\n    public init(onlyCurrent: Bool?) {\n        self.onlyCurrent = onlyCurrent\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetNewChatPrivacySettings.swift",
    "content": "//\n//  GetNewChatPrivacySettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns privacy settings for new chat creation\npublic struct GetNewChatPrivacySettings: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetOauthLinkInfo.swift",
    "content": "//\n//  GetOauthLinkInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about an OAuth deep link. Use checkOauthRequestMatchCode, acceptOauthRequest or declineOauthRequest to process the link\npublic struct GetOauthLinkInfo: Codable, Equatable, Hashable {\n\n    /// Origin of the OAuth request if the request was received from the in-app browser; pass an empty string otherwise\n    public let inAppOrigin: String?\n\n    /// URL of the link\n    public let url: String?\n\n\n    public init(\n        inAppOrigin: String?,\n        url: String?\n    ) {\n        self.inAppOrigin = inAppOrigin\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetOption.swift",
    "content": "//\n//  GetOption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the value of an option by its name. (Check the list of available options on https://core.telegram.org/tdlib/options.) Can be called before authorization. Can be called synchronously for options \"version\" and \"commit_hash\"\npublic struct GetOption: Codable, Equatable, Hashable {\n\n    /// The name of the option\n    public let name: String?\n\n\n    public init(name: String?) {\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetOwnedBots.swift",
    "content": "//\n//  GetOwnedBots.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of bots owned by the current user\npublic struct GetOwnedBots: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetOwnedStickerSets.swift",
    "content": "//\n//  GetOwnedStickerSets.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns sticker sets owned by the current user\npublic struct GetOwnedStickerSets: Codable, Equatable, Hashable {\n\n    /// The maximum number of sticker sets to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Identifier of the sticker set from which to return owned sticker sets; use 0 to get results from the beginning\n    public let offsetStickerSetId: TdInt64?\n\n\n    public init(\n        limit: Int?,\n        offsetStickerSetId: TdInt64?\n    ) {\n        self.limit = limit\n        self.offsetStickerSetId = offsetStickerSetId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPaidMessageRevenue.swift",
    "content": "//\n//  GetPaidMessageRevenue.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the total number of Telegram Stars received by the current user for paid messages from the given user\npublic struct GetPaidMessageRevenue: Codable, Equatable, Hashable {\n\n    /// Identifier of the user\n    public let userId: Int64?\n\n\n    public init(userId: Int64?) {\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPasskeyParameters.swift",
    "content": "//\n//  GetPasskeyParameters.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns parameters for creating of a new passkey as JSON-serialized string\npublic struct GetPasskeyParameters: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPassportAuthorizationForm.swift",
    "content": "//\n//  GetPassportAuthorizationForm.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a Telegram Passport authorization form for sharing data with a service\npublic struct GetPassportAuthorizationForm: Codable, Equatable, Hashable {\n\n    /// User identifier of the service's bot\n    public let botUserId: Int64?\n\n    /// Unique request identifier provided by the service\n    public let nonce: String?\n\n    /// Service's public key\n    public let publicKey: String?\n\n    /// Telegram Passport element types requested by the service\n    public let scope: String?\n\n\n    public init(\n        botUserId: Int64?,\n        nonce: String?,\n        publicKey: String?,\n        scope: String?\n    ) {\n        self.botUserId = botUserId\n        self.nonce = nonce\n        self.publicKey = publicKey\n        self.scope = scope\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPassportAuthorizationFormAvailableElements.swift",
    "content": "//\n//  GetPassportAuthorizationFormAvailableElements.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns already available Telegram Passport elements suitable for completing a Telegram Passport authorization form. Result can be received only once for each authorization form\npublic struct GetPassportAuthorizationFormAvailableElements: Codable, Equatable, Hashable {\n\n    /// Authorization form identifier\n    public let authorizationFormId: Int?\n\n    /// The 2-step verification password of the current user\n    public let password: String?\n\n\n    public init(\n        authorizationFormId: Int?,\n        password: String?\n    ) {\n        self.authorizationFormId = authorizationFormId\n        self.password = password\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPassportElement.swift",
    "content": "//\n//  GetPassportElement.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns one of the available Telegram Passport elements\npublic struct GetPassportElement: Codable, Equatable, Hashable {\n\n    /// The 2-step verification password of the current user\n    public let password: String?\n\n    /// Telegram Passport element type\n    public let type: PassportElementType?\n\n\n    public init(\n        password: String?,\n        type: PassportElementType?\n    ) {\n        self.password = password\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPasswordState.swift",
    "content": "//\n//  GetPasswordState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the current state of 2-step verification\npublic struct GetPasswordState: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPaymentForm.swift",
    "content": "//\n//  GetPaymentForm.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an invoice payment form. This method must be called when the user presses inline button of the type inlineKeyboardButtonTypeBuy, or wants to buy access to media in a messagePaidMedia message\npublic struct GetPaymentForm: Codable, Equatable, Hashable {\n\n    /// The invoice\n    public let inputInvoice: InputInvoice?\n\n    /// Preferred payment form theme; pass null to use the default theme\n    public let theme: ThemeParameters?\n\n\n    public init(\n        inputInvoice: InputInvoice?,\n        theme: ThemeParameters?\n    ) {\n        self.inputInvoice = inputInvoice\n        self.theme = theme\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPaymentReceipt.swift",
    "content": "//\n//  GetPaymentReceipt.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a successful payment\npublic struct GetPaymentReceipt: Codable, Equatable, Hashable {\n\n    /// Chat identifier of the messagePaymentSuccessful message\n    public let chatId: Int64?\n\n    /// Message identifier\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPersonalChatHistory.swift",
    "content": "//\n//  GetPersonalChatHistory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns messages in the personal chat of a given user; for bots only\npublic struct GetPersonalChatHistory: Codable, Equatable, Hashable {\n\n    /// The maximum number of messages to be returned; 1-20\n    public let limit: Int?\n\n    /// User identifier\n    public let userId: Int64?\n\n\n    public init(\n        limit: Int?,\n        userId: Int64?\n    ) {\n        self.limit = limit\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPhoneNumberInfo.swift",
    "content": "//\n//  GetPhoneNumberInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a phone number by its prefix. Can be called before authorization\npublic struct GetPhoneNumberInfo: Codable, Equatable, Hashable {\n\n    /// The phone number prefix\n    public let phoneNumberPrefix: String?\n\n\n    public init(phoneNumberPrefix: String?) {\n        self.phoneNumberPrefix = phoneNumberPrefix\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPhoneNumberInfoSync.swift",
    "content": "//\n//  GetPhoneNumberInfoSync.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a phone number by its prefix synchronously. getCountries must be called at least once after changing localization to the specified language if properly localized country information is expected. Can be called synchronously\npublic struct GetPhoneNumberInfoSync: Codable, Equatable, Hashable {\n\n    /// A two-letter ISO 639-1 language code for country information localization\n    public let languageCode: String?\n\n    /// The phone number prefix\n    public let phoneNumberPrefix: String?\n\n\n    public init(\n        languageCode: String?,\n        phoneNumberPrefix: String?\n    ) {\n        self.languageCode = languageCode\n        self.phoneNumberPrefix = phoneNumberPrefix\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPollOptionProperties.swift",
    "content": "//\n//  GetPollOptionProperties.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns properties of a poll option. This is an offline method\npublic struct GetPollOptionProperties: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n    /// Unique identifier of the answer option, which properties will be returned\n    public let pollOptionId: String?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        pollOptionId: String?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.pollOptionId = pollOptionId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPollVoteStatistics.swift",
    "content": "//\n//  GetPollVoteStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns statistics of poll votes in a poll\npublic struct GetPollVoteStatistics: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the poll belongs\n    public let chatId: Int64?\n\n    /// Pass true if a dark theme is used by the application\n    public let isDark: Bool?\n\n    /// Identifier of the message containing the poll. Use messageProperties.can_get_poll_vote_statistics to check whether the method can be used for a message\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        isDark: Bool?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.isDark = isDark\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPollVoters.swift",
    "content": "//\n//  GetPollVoters.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns message senders voted for the specified option in a poll; use poll.can_get_voters to check whether the method can be used. For optimal performance, the number of returned users is chosen by TDLib\npublic struct GetPollVoters: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the poll belongs\n    public let chatId: Int64?\n\n    /// The maximum number of voters to be returned; must be positive and can't be greater than 50. For optimal performance, the number of returned voters is chosen by TDLib and can be smaller than the specified limit, even if the end of the voter list has not been reached\n    public let limit: Int?\n\n    /// Identifier of the message containing the poll\n    public let messageId: Int64?\n\n    /// Number of voters to skip in the result; must be non-negative\n    public let offset: Int?\n\n    /// 0-based identifier of the answer option\n    public let optionId: Int?\n\n\n    public init(\n        chatId: Int64?,\n        limit: Int?,\n        messageId: Int64?,\n        offset: Int?,\n        optionId: Int?\n    ) {\n        self.chatId = chatId\n        self.limit = limit\n        self.messageId = messageId\n        self.offset = offset\n        self.optionId = optionId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPopularWebAppBots.swift",
    "content": "//\n//  GetPopularWebAppBots.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.35-9b6ff586\n//  https://github.com/tdlib/td/tree/9b6ff586\n//\n\nimport Foundation\n\n\n/// Returns popular Web App bots\npublic struct GetPopularWebAppBots: Codable, Equatable, Hashable {\n\n    /// The maximum number of bots to be returned; up to 100\n    public let limit: Int?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n\n    public init(\n        limit: Int?,\n        offset: String?\n    ) {\n        self.limit = limit\n        self.offset = offset\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPreferredCountryLanguage.swift",
    "content": "//\n//  GetPreferredCountryLanguage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an IETF language tag of the language preferred in the country, which must be used to fill native fields in Telegram Passport personal details. Returns a 404 error if unknown\npublic struct GetPreferredCountryLanguage: Codable, Equatable, Hashable {\n\n    /// A two-letter ISO 3166-1 alpha-2 country code\n    public let countryCode: String?\n\n\n    public init(countryCode: String?) {\n        self.countryCode = countryCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPremiumFeatures.swift",
    "content": "//\n//  GetPremiumFeatures.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about features, available to Premium users\npublic struct GetPremiumFeatures: Codable, Equatable, Hashable {\n\n    /// Source of the request; pass null if the method is called from some non-standard source\n    public let source: PremiumSource?\n\n\n    public init(source: PremiumSource?) {\n        self.source = source\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPremiumGiftCodePaymentOptions.swift",
    "content": "//\n//  GetPremiumGiftCodePaymentOptions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.45-521aed8e\n//  https://github.com/tdlib/td/tree/521aed8e\n//\n\nimport Foundation\n\n\n/// Returns available options for Telegram Premium gift code or Telegram Premium giveaway creation\npublic struct GetPremiumGiftCodePaymentOptions: Codable, Equatable, Hashable {\n\n    /// Identifier of the supergroup or channel chat, which will be automatically boosted by receivers of the gift codes and which is administered by the user; 0 if none\n    public let boostedChatId: Int64?\n\n\n    public init(boostedChatId: Int64?) {\n        self.boostedChatId = boostedChatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPremiumGiftPaymentOptions.swift",
    "content": "//\n//  GetPremiumGiftPaymentOptions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns available options for gifting Telegram Premium to a user\npublic struct GetPremiumGiftPaymentOptions: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPremiumGiveawayInfo.swift",
    "content": "//\n//  GetPremiumGiveawayInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.35-9b6ff586\n//  https://github.com/tdlib/td/tree/9b6ff586\n//\n\nimport Foundation\n\n\n/// Returns information about a Telegram Premium giveaway\npublic struct GetPremiumGiveawayInfo: Codable, Equatable, Hashable {\n\n    /// Identifier of the channel chat which started the giveaway\n    public let chatId: Int64?\n\n    /// Identifier of the giveaway or a giveaway winners message in the chat\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPremiumGiveawayPaymentOptions.swift",
    "content": "//\n//  GetPremiumGiveawayPaymentOptions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns available options for creating of Telegram Premium giveaway or manual distribution of Telegram Premium among chat members\npublic struct GetPremiumGiveawayPaymentOptions: Codable, Equatable, Hashable {\n\n    /// Identifier of the supergroup or channel chat, which will be automatically boosted by receivers of the gift codes and which is administered by the user\n    public let boostedChatId: Int64?\n\n\n    public init(boostedChatId: Int64?) {\n        self.boostedChatId = boostedChatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPremiumInfoSticker.swift",
    "content": "//\n//  GetPremiumInfoSticker.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the sticker to be used as representation of the Telegram Premium subscription\npublic struct GetPremiumInfoSticker: Codable, Equatable, Hashable {\n\n    /// Number of months the Telegram Premium subscription will be active\n    public let monthCount: Int?\n\n\n    public init(monthCount: Int?) {\n        self.monthCount = monthCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPremiumLimit.swift",
    "content": "//\n//  GetPremiumLimit.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a limit, increased for Premium users. Returns a 404 error if the limit is unknown\npublic struct GetPremiumLimit: Codable, Equatable, Hashable {\n\n    /// Type of the limit\n    public let limitType: PremiumLimitType?\n\n\n    public init(limitType: PremiumLimitType?) {\n        self.limitType = limitType\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPremiumState.swift",
    "content": "//\n//  GetPremiumState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns state of Telegram Premium subscription and promotion videos for Premium features\npublic struct GetPremiumState: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPremiumStickerExamples.swift",
    "content": "//\n//  GetPremiumStickerExamples.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns examples of premium stickers for demonstration purposes\npublic struct GetPremiumStickerExamples: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPremiumStickers.swift",
    "content": "//\n//  GetPremiumStickers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns premium stickers from regular sticker sets\npublic struct GetPremiumStickers: Codable, Equatable, Hashable {\n\n    /// The maximum number of stickers to be returned; 0-100\n    public let limit: Int?\n\n\n    public init(limit: Int?) {\n        self.limit = limit\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPreparedInlineMessage.swift",
    "content": "//\n//  GetPreparedInlineMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Saves an inline message to be sent by the given user\npublic struct GetPreparedInlineMessage: Codable, Equatable, Hashable {\n\n    /// Identifier of the bot that created the message\n    public let botUserId: Int64?\n\n    /// Identifier of the prepared message\n    public let preparedMessageId: String?\n\n\n    public init(\n        botUserId: Int64?,\n        preparedMessageId: String?\n    ) {\n        self.botUserId = botUserId\n        self.preparedMessageId = preparedMessageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPreparedKeyboardButton.swift",
    "content": "//\n//  GetPreparedKeyboardButton.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a keyboard button prepared by the bot for the user. The button will be of the type keyboardButtonTypeRequestUsers, keyboardButtonTypeRequestChat, or keyboardButtonTypeRequestManagedBot\npublic struct GetPreparedKeyboardButton: Codable, Equatable, Hashable {\n\n    /// Identifier of the bot that created the button\n    public let botUserId: Int64?\n\n    /// Identifier of the prepared button\n    public let preparedButtonId: String?\n\n\n    public init(\n        botUserId: Int64?,\n        preparedButtonId: String?\n    ) {\n        self.botUserId = botUserId\n        self.preparedButtonId = preparedButtonId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetProxies.swift",
    "content": "//\n//  GetProxies.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of proxies that are currently set up. Can be called before authorization\npublic struct GetProxies: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetProxyLink.swift",
    "content": "//\n//  GetProxyLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.60-cb863c16\n//  https://github.com/tdlib/td/tree/cb863c16\n//\n\nimport Foundation\n\n\n/// Returns an HTTPS link, which can be used to add a proxy. Available only for SOCKS5 and MTProto proxies. Can be called before authorization\npublic struct GetProxyLink: Codable, Equatable, Hashable {\n\n    /// Proxy identifier\n    public let proxyId: Int?\n\n\n    public init(proxyId: Int?) {\n        self.proxyId = proxyId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPublicPostSearchLimits.swift",
    "content": "//\n//  GetPublicPostSearchLimits.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks public post search limits without actually performing the search\npublic struct GetPublicPostSearchLimits: Codable, Equatable, Hashable {\n\n    /// Query that will be searched for\n    public let query: String?\n\n\n    public init(query: String?) {\n        self.query = query\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetPushReceiverId.swift",
    "content": "//\n//  GetPushReceiverId.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a globally unique push notification subscription identifier for identification of an account, which has received a push notification. Can be called synchronously\npublic struct GetPushReceiverId: Codable, Equatable, Hashable {\n\n    /// JSON-encoded push notification payload\n    public let payload: String?\n\n\n    public init(payload: String?) {\n        self.payload = payload\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetReadDatePrivacySettings.swift",
    "content": "//\n//  GetReadDatePrivacySettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns privacy settings for message read date\npublic struct GetReadDatePrivacySettings: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetReceivedGift.swift",
    "content": "//\n//  GetReceivedGift.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a received gift\npublic struct GetReceivedGift: Codable, Equatable, Hashable {\n\n    /// Identifier of the gift\n    public let receivedGiftId: String?\n\n\n    public init(receivedGiftId: String?) {\n        self.receivedGiftId = receivedGiftId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetReceivedGifts.swift",
    "content": "//\n//  GetReceivedGifts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns gifts received by the given user or chat\npublic struct GetReceivedGifts: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection on behalf of which to send the request; for bots only\n    public let businessConnectionId: String?\n\n    /// Pass collection identifier to get gifts only from the specified collection; pass 0 to get gifts regardless of collections\n    public let collectionId: Int?\n\n    /// Pass true to exclude gifts that are just hosted and are not owned by the owner\n    public let excludeHosted: Bool?\n\n    /// Pass true to exclude gifts that can be purchased limited number of times and can't be upgraded\n    public let excludeNonUpgradable: Bool?\n\n    /// Pass true to exclude gifts that are saved to the chat's profile page. Always false for gifts received by other users and channel chats without can_post_messages administrator right\n    public let excludeSaved: Bool?\n\n    /// Pass true to exclude gifts that can be purchased unlimited number of times\n    public let excludeUnlimited: Bool?\n\n    /// Pass true to exclude gifts that aren't saved to the chat's profile page. Always true for gifts received by other users and channel chats without can_post_messages administrator right\n    public let excludeUnsaved: Bool?\n\n    /// Pass true to exclude gifts that can be purchased limited number of times and can be upgraded\n    public let excludeUpgradable: Bool?\n\n    /// Pass true to exclude upgraded gifts\n    public let excludeUpgraded: Bool?\n\n    /// Pass true to exclude gifts that can't be used in setUpgradedGiftColors\n    public let excludeWithoutColors: Bool?\n\n    /// The maximum number of gifts to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n    /// Identifier of the gift receiver\n    public let ownerId: MessageSender?\n\n    /// Pass true to sort results by gift price instead of send date\n    public let sortByPrice: Bool?\n\n\n    public init(\n        businessConnectionId: String?,\n        collectionId: Int?,\n        excludeHosted: Bool?,\n        excludeNonUpgradable: Bool?,\n        excludeSaved: Bool?,\n        excludeUnlimited: Bool?,\n        excludeUnsaved: Bool?,\n        excludeUpgradable: Bool?,\n        excludeUpgraded: Bool?,\n        excludeWithoutColors: Bool?,\n        limit: Int?,\n        offset: String?,\n        ownerId: MessageSender?,\n        sortByPrice: Bool?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.collectionId = collectionId\n        self.excludeHosted = excludeHosted\n        self.excludeNonUpgradable = excludeNonUpgradable\n        self.excludeSaved = excludeSaved\n        self.excludeUnlimited = excludeUnlimited\n        self.excludeUnsaved = excludeUnsaved\n        self.excludeUpgradable = excludeUpgradable\n        self.excludeUpgraded = excludeUpgraded\n        self.excludeWithoutColors = excludeWithoutColors\n        self.limit = limit\n        self.offset = offset\n        self.ownerId = ownerId\n        self.sortByPrice = sortByPrice\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetRecentEmojiStatuses.swift",
    "content": "//\n//  GetRecentEmojiStatuses.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns recent emoji statuses for self status\npublic struct GetRecentEmojiStatuses: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetRecentInlineBots.swift",
    "content": "//\n//  GetRecentInlineBots.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns up to 20 recently used inline bots in the order of their last usage\npublic struct GetRecentInlineBots: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetRecentStickers.swift",
    "content": "//\n//  GetRecentStickers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a list of recently used stickers\npublic struct GetRecentStickers: Codable, Equatable, Hashable {\n\n    /// Pass true to return stickers and masks that were recently attached to photos or video files; pass false to return recently sent stickers\n    public let isAttached: Bool?\n\n\n    public init(isAttached: Bool?) {\n        self.isAttached = isAttached\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetRecentlyOpenedChats.swift",
    "content": "//\n//  GetRecentlyOpenedChats.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns recently opened chats. This is an offline method. Returns chats in the order of last opening\npublic struct GetRecentlyOpenedChats: Codable, Equatable, Hashable {\n\n    /// The maximum number of chats to be returned\n    public let limit: Int?\n\n\n    public init(limit: Int?) {\n        self.limit = limit\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetRecentlyVisitedTMeUrls.swift",
    "content": "//\n//  GetRecentlyVisitedTMeUrls.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns t.me URLs recently visited by a newly registered user\npublic struct GetRecentlyVisitedTMeUrls: Codable, Equatable, Hashable {\n\n    /// Google Play referrer to identify the user\n    public let referrer: String?\n\n\n    public init(referrer: String?) {\n        self.referrer = referrer\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetRecommendedChatFolders.swift",
    "content": "//\n//  GetRecommendedChatFolders.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns recommended chat folders for the current user\npublic struct GetRecommendedChatFolders: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetRecommendedChats.swift",
    "content": "//\n//  GetRecommendedChats.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a list of channel chats recommended to the current user\npublic struct GetRecommendedChats: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetRecoveryEmailAddress.swift",
    "content": "//\n//  GetRecoveryEmailAddress.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a 2-step verification recovery email address that was previously set up. This method can be used to verify a password provided by the user\npublic struct GetRecoveryEmailAddress: Codable, Equatable, Hashable {\n\n    /// The 2-step verification password for the current user\n    public let password: String?\n\n\n    public init(password: String?) {\n        self.password = password\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetRemoteFile.swift",
    "content": "//\n//  GetRemoteFile.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a file by its remote identifier. This is an offline method. Can be used to register a URL as a file for further uploading, or sending as a message. Even the request succeeds, the file can be used only if it is still accessible to the user. For example, if the file is from a message, then the message must be not deleted and accessible to the user. If the file database is disabled, then the corresponding object with the file must be preloaded by the application\npublic struct GetRemoteFile: Codable, Equatable, Hashable {\n\n    /// File type; pass null if unknown\n    public let fileType: FileType?\n\n    /// Remote identifier of the file to get\n    public let remoteFileId: String?\n\n\n    public init(\n        fileType: FileType?,\n        remoteFileId: String?\n    ) {\n        self.fileType = fileType\n        self.remoteFileId = remoteFileId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetRepliedMessage.swift",
    "content": "//\n//  GetRepliedMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a non-bundled message that is replied by a given message. Also, returns the pinned message for messagePinMessage, the game message for messageGameScore, the invoice message for messagePaymentSuccessful, the message with a previously set same background for messageChatSetBackground, the giveaway message for messageGiveawayCompleted, the checklist message for messageChecklistTasksDone, messageChecklistTasksAdded, the message with suggested post information for messageSuggestedPostApprovalFailed, messageSuggestedPostApproved, messageSuggestedPostDeclined, messageSuggestedPostPaid, messageSuggestedPostRefunded, the message with the regular gift that was upgraded for messageUpgradedGift with origin of the type upgradedGiftOriginUpgrade, the message with gift purchase offer for messageUpgradedGiftPurchaseOfferRejected, the message with the request to disable content protection for messageChatHasProtectedContentToggled, the message with the poll for messagePollOptionAdded and messagePollOptionDeleted, and the topic creation message for topic messages without non-bundled replied message. Returns a 404 error if the message doesn't exist\npublic struct GetRepliedMessage: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat the message belongs to\n    public let chatId: Int64?\n\n    /// Identifier of the reply message\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetSavedAnimations.swift",
    "content": "//\n//  GetSavedAnimations.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns saved animations\npublic struct GetSavedAnimations: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetSavedMessagesTags.swift",
    "content": "//\n//  GetSavedMessagesTags.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns tags used in Saved Messages or a Saved Messages topic\npublic struct GetSavedMessagesTags: Codable, Equatable, Hashable {\n\n    /// Identifier of Saved Messages topic which tags will be returned; pass 0 to get all Saved Messages tags\n    public let savedMessagesTopicId: Int64?\n\n\n    public init(savedMessagesTopicId: Int64?) {\n        self.savedMessagesTopicId = savedMessagesTopicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetSavedMessagesTopicHistory.swift",
    "content": "//\n//  GetSavedMessagesTopicHistory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns messages in a Saved Messages topic. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\npublic struct GetSavedMessagesTopicHistory: Codable, Equatable, Hashable {\n\n    /// Identifier of the message starting from which messages must be fetched; use 0 to get results from the last message\n    public let fromMessageId: Int64?\n\n    /// The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than or equal to -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Specify 0 to get results from exactly the message from_message_id or a negative number from -99 to -1 to get additionally -offset newer messages\n    public let offset: Int?\n\n    /// Identifier of Saved Messages topic which messages will be fetched\n    public let savedMessagesTopicId: Int64?\n\n\n    public init(\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        savedMessagesTopicId: Int64?\n    ) {\n        self.fromMessageId = fromMessageId\n        self.limit = limit\n        self.offset = offset\n        self.savedMessagesTopicId = savedMessagesTopicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetSavedMessagesTopicMessageByDate.swift",
    "content": "//\n//  GetSavedMessagesTopicMessageByDate.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the last message sent in a Saved Messages topic no later than the specified date\npublic struct GetSavedMessagesTopicMessageByDate: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) relative to which to search for messages\n    public let date: Int?\n\n    /// Identifier of Saved Messages topic which message will be returned\n    public let savedMessagesTopicId: Int64?\n\n\n    public init(\n        date: Int?,\n        savedMessagesTopicId: Int64?\n    ) {\n        self.date = date\n        self.savedMessagesTopicId = savedMessagesTopicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetSavedNotificationSound.swift",
    "content": "//\n//  GetSavedNotificationSound.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns saved notification sound by its identifier. Returns a 404 error if there is no saved notification sound with the specified identifier\npublic struct GetSavedNotificationSound: Codable, Equatable, Hashable {\n\n    /// Identifier of the notification sound\n    public let notificationSoundId: TdInt64?\n\n\n    public init(notificationSoundId: TdInt64?) {\n        self.notificationSoundId = notificationSoundId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetSavedNotificationSounds.swift",
    "content": "//\n//  GetSavedNotificationSounds.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of saved notification sounds. If a sound isn't in the list, then default sound needs to be used\npublic struct GetSavedNotificationSounds: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetSavedOrderInfo.swift",
    "content": "//\n//  GetSavedOrderInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns saved order information. Returns a 404 error if there is no saved order information\npublic struct GetSavedOrderInfo: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetScopeNotificationSettings.swift",
    "content": "//\n//  GetScopeNotificationSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the notification settings for chats of a given type\npublic struct GetScopeNotificationSettings: Codable, Equatable, Hashable {\n\n    /// Types of chats for which to return the notification settings information\n    public let scope: NotificationSettingsScope?\n\n\n    public init(scope: NotificationSettingsScope?) {\n        self.scope = scope\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetSearchSponsoredChats.swift",
    "content": "//\n//  GetSearchSponsoredChats.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns sponsored chats to be shown in the search results\npublic struct GetSearchSponsoredChats: Codable, Equatable, Hashable {\n\n    /// Query the user searches for\n    public let query: String?\n\n\n    public init(query: String?) {\n        self.query = query\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetSearchedForHashtags.swift",
    "content": "//\n//  GetSearchedForHashtags.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.30-4257a341\n//  https://github.com/tdlib/td/tree/4257a341\n//\n\nimport Foundation\n\n\n/// Returns recently searched for hashtags or cashtags by their prefix\npublic struct GetSearchedForHashtags: Codable, Equatable, Hashable {\n\n    /// The maximum number of items to be returned\n    public let limit: Int?\n\n    /// Prefix of hashtags or cashtags to return\n    public let prefix: String?\n\n\n    public init(\n        limit: Int?,\n        prefix: String?\n    ) {\n        self.limit = limit\n        self.prefix = prefix\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetSearchedForTags.swift",
    "content": "//\n//  GetSearchedForTags.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns recently searched for hashtags or cashtags by their prefix\npublic struct GetSearchedForTags: Codable, Equatable, Hashable {\n\n    /// The maximum number of items to be returned\n    public let limit: Int?\n\n    /// Prefix of hashtags or cashtags to return\n    public let tagPrefix: String?\n\n\n    public init(\n        limit: Int?,\n        tagPrefix: String?\n    ) {\n        self.limit = limit\n        self.tagPrefix = tagPrefix\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetSecretChat.swift",
    "content": "//\n//  GetSecretChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a secret chat by its identifier. This is an offline method\npublic struct GetSecretChat: Codable, Equatable, Hashable {\n\n    /// Secret chat identifier\n    public let secretChatId: Int?\n\n\n    public init(secretChatId: Int?) {\n        self.secretChatId = secretChatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStakeDiceState.swift",
    "content": "//\n//  GetStakeDiceState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the current state of stake dice\npublic struct GetStakeDiceState: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStarAdAccountUrl.swift",
    "content": "//\n//  GetStarAdAccountUrl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a URL for a Telegram Ad platform account that can be used to set up advertisements for the chat paid in the owned Telegram Stars\npublic struct GetStarAdAccountUrl: Codable, Equatable, Hashable {\n\n    /// Identifier of the owner of the Telegram Stars; can be identifier of an owned bot, or identifier of an owned channel chat\n    public let ownerId: MessageSender?\n\n\n    public init(ownerId: MessageSender?) {\n        self.ownerId = ownerId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStarGiftPaymentOptions.swift",
    "content": "//\n//  GetStarGiftPaymentOptions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns available options for Telegram Stars gifting\npublic struct GetStarGiftPaymentOptions: Codable, Equatable, Hashable {\n\n    /// Identifier of the user who will receive Telegram Stars; pass 0 to get options for an unspecified user\n    public let userId: Int64?\n\n\n    public init(userId: Int64?) {\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStarGiveawayPaymentOptions.swift",
    "content": "//\n//  GetStarGiveawayPaymentOptions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns available options for Telegram Star giveaway creation\npublic struct GetStarGiveawayPaymentOptions: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStarPaymentOptions.swift",
    "content": "//\n//  GetStarPaymentOptions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns available options for Telegram Stars purchase\npublic struct GetStarPaymentOptions: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStarRevenueStatistics.swift",
    "content": "//\n//  GetStarRevenueStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns detailed Telegram Star revenue statistics\npublic struct GetStarRevenueStatistics: Codable, Equatable, Hashable {\n\n    /// Pass true if a dark theme is used by the application\n    public let isDark: Bool?\n\n    /// Identifier of the owner of the Telegram Stars; can be identifier of the current user, an owned bot, or a supergroup or a channel chat with supergroupFullInfo.can_get_star_revenue_statistics == true\n    public let ownerId: MessageSender?\n\n\n    public init(\n        isDark: Bool?,\n        ownerId: MessageSender?\n    ) {\n        self.isDark = isDark\n        self.ownerId = ownerId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStarSubscriptions.swift",
    "content": "//\n//  GetStarSubscriptions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of Telegram Star subscriptions for the current user\npublic struct GetStarSubscriptions: Codable, Equatable, Hashable {\n\n    /// Offset of the first subscription to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n    /// Pass true to receive only expiring subscriptions for which there are no enough Telegram Stars to extend\n    public let onlyExpiring: Bool?\n\n\n    public init(\n        offset: String?,\n        onlyExpiring: Bool?\n    ) {\n        self.offset = offset\n        self.onlyExpiring = onlyExpiring\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStarTransactions.swift",
    "content": "//\n//  GetStarTransactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of Telegram Star transactions for the specified owner\npublic struct GetStarTransactions: Codable, Equatable, Hashable {\n\n    /// Direction of the transactions to receive; pass null to get all transactions\n    public let direction: TransactionDirection?\n\n    /// The maximum number of transactions to return\n    public let limit: Int?\n\n    /// Offset of the first transaction to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n    /// Identifier of the owner of the Telegram Stars; can be the identifier of the current user, identifier of an owned bot, or identifier of a supergroup or a channel chat with supergroupFullInfo.can_get_star_revenue_statistics == true\n    public let ownerId: MessageSender?\n\n    /// If non-empty, only transactions related to the Star Subscription will be returned\n    public let subscriptionId: String?\n\n\n    public init(\n        direction: TransactionDirection?,\n        limit: Int?,\n        offset: String?,\n        ownerId: MessageSender?,\n        subscriptionId: String?\n    ) {\n        self.direction = direction\n        self.limit = limit\n        self.offset = offset\n        self.ownerId = ownerId\n        self.subscriptionId = subscriptionId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStarWithdrawalUrl.swift",
    "content": "//\n//  GetStarWithdrawalUrl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a URL for Telegram Star withdrawal\npublic struct GetStarWithdrawalUrl: Codable, Equatable, Hashable {\n\n    /// Identifier of the owner of the Telegram Stars; can be identifier of the current user, an owned bot, or an owned supergroup or channel chat\n    public let ownerId: MessageSender?\n\n    /// The 2-step verification password of the current user\n    public let password: String?\n\n    /// The number of Telegram Stars to withdraw; must be between getOption(\"star_withdrawal_count_min\") and getOption(\"star_withdrawal_count_max\")\n    public let starCount: Int64?\n\n\n    public init(\n        ownerId: MessageSender?,\n        password: String?,\n        starCount: Int64?\n    ) {\n        self.ownerId = ownerId\n        self.password = password\n        self.starCount = starCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStatisticalGraph.swift",
    "content": "//\n//  GetStatisticalGraph.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Loads an asynchronous or a zoomed in statistical graph\npublic struct GetStatisticalGraph: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// The token for graph loading\n    public let token: String?\n\n    /// X-value for zoomed in graph or 0 otherwise\n    public let x: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        token: String?,\n        x: Int64?\n    ) {\n        self.chatId = chatId\n        self.token = token\n        self.x = x\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStickerEmojis.swift",
    "content": "//\n//  GetStickerEmojis.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns emoji corresponding to a sticker. The list is only for informational purposes, because a sticker is always sent with a fixed emoji from the corresponding Sticker object\npublic struct GetStickerEmojis: Codable, Equatable, Hashable {\n\n    /// Sticker file identifier\n    public let sticker: InputFile?\n\n\n    public init(sticker: InputFile?) {\n        self.sticker = sticker\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStickerOutline.swift",
    "content": "//\n//  GetStickerOutline.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns outline of a sticker. This is an offline method. Returns a 404 error if the outline isn't known\npublic struct GetStickerOutline: Codable, Equatable, Hashable {\n\n    /// Pass true to get the outline scaled for animated emoji\n    public let forAnimatedEmoji: Bool?\n\n    /// Pass true to get the outline scaled for clicked animated emoji message\n    public let forClickedAnimatedEmojiMessage: Bool?\n\n    /// File identifier of the sticker\n    public let stickerFileId: Int?\n\n\n    public init(\n        forAnimatedEmoji: Bool?,\n        forClickedAnimatedEmojiMessage: Bool?,\n        stickerFileId: Int?\n    ) {\n        self.forAnimatedEmoji = forAnimatedEmoji\n        self.forClickedAnimatedEmojiMessage = forClickedAnimatedEmojiMessage\n        self.stickerFileId = stickerFileId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStickerOutlineSvgPath.swift",
    "content": "//\n//  GetStickerOutlineSvgPath.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns outline of a sticker as an SVG path. This is an offline method. Returns an empty string if the outline isn't known\npublic struct GetStickerOutlineSvgPath: Codable, Equatable, Hashable {\n\n    /// Pass true to get the outline scaled for animated emoji\n    public let forAnimatedEmoji: Bool?\n\n    /// Pass true to get the outline scaled for clicked animated emoji message\n    public let forClickedAnimatedEmojiMessage: Bool?\n\n    /// File identifier of the sticker\n    public let stickerFileId: Int?\n\n\n    public init(\n        forAnimatedEmoji: Bool?,\n        forClickedAnimatedEmojiMessage: Bool?,\n        stickerFileId: Int?\n    ) {\n        self.forAnimatedEmoji = forAnimatedEmoji\n        self.forClickedAnimatedEmojiMessage = forClickedAnimatedEmojiMessage\n        self.stickerFileId = stickerFileId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStickerSet.swift",
    "content": "//\n//  GetStickerSet.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a sticker set by its identifier\npublic struct GetStickerSet: Codable, Equatable, Hashable {\n\n    /// Identifier of the sticker set\n    public let setId: TdInt64?\n\n\n    public init(setId: TdInt64?) {\n        self.setId = setId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStickerSetName.swift",
    "content": "//\n//  GetStickerSetName.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns name of a sticker set by its identifier\npublic struct GetStickerSetName: Codable, Equatable, Hashable {\n\n    /// Identifier of the sticker set\n    public let setId: TdInt64?\n\n\n    public init(setId: TdInt64?) {\n        self.setId = setId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStickers.swift",
    "content": "//\n//  GetStickers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns stickers from the installed sticker sets that correspond to any of the given emoji or can be found by sticker-specific keywords. If the query is non-empty, then favorite, recently used or trending stickers may also be returned\npublic struct GetStickers: Codable, Equatable, Hashable {\n\n    /// Chat identifier for which to return stickers. Available custom emoji stickers may be different for different chats\n    public let chatId: Int64?\n\n    /// The maximum number of stickers to be returned\n    public let limit: Int?\n\n    /// Search query; a space-separated list of emojis or a keyword prefix. If empty, returns all known installed stickers\n    public let query: String?\n\n    /// Type of the stickers to return\n    public let stickerType: StickerType?\n\n\n    public init(\n        chatId: Int64?,\n        limit: Int?,\n        query: String?,\n        stickerType: StickerType?\n    ) {\n        self.chatId = chatId\n        self.limit = limit\n        self.query = query\n        self.stickerType = stickerType\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStorageStatistics.swift",
    "content": "//\n//  GetStorageStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns storage usage statistics. Can be called before authorization\npublic struct GetStorageStatistics: Codable, Equatable, Hashable {\n\n    /// The maximum number of chats with the largest storage usage for which separate statistics need to be returned. All other chats will be grouped in entries with chat_id == 0. If the chat info database is not used, the chat_limit is ignored and is always set to 0\n    public let chatLimit: Int?\n\n\n    public init(chatLimit: Int?) {\n        self.chatLimit = chatLimit\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStorageStatisticsFast.swift",
    "content": "//\n//  GetStorageStatisticsFast.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Quickly returns approximate storage usage statistics. Can be called before authorization\npublic struct GetStorageStatisticsFast: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStory.swift",
    "content": "//\n//  GetStory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a story\npublic struct GetStory: Codable, Equatable, Hashable {\n\n    /// Pass true to get only locally available information without sending network requests\n    public let onlyLocal: Bool?\n\n    /// Story identifier\n    public let storyId: Int?\n\n    /// Identifier of the chat that posted the story\n    public let storyPosterChatId: Int64?\n\n\n    public init(\n        onlyLocal: Bool?,\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) {\n        self.onlyLocal = onlyLocal\n        self.storyId = storyId\n        self.storyPosterChatId = storyPosterChatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStoryAlbumStories.swift",
    "content": "//\n//  GetStoryAlbumStories.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of stories added to the given story album. For optimal performance, the number of returned stories is chosen by TDLib\npublic struct GetStoryAlbumStories: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// The maximum number of stories to be returned. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Offset of the first entry to return; use 0 to get results from the first album story\n    public let offset: Int?\n\n    /// Story album identifier\n    public let storyAlbumId: Int?\n\n\n    public init(\n        chatId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        storyAlbumId: Int?\n    ) {\n        self.chatId = chatId\n        self.limit = limit\n        self.offset = offset\n        self.storyAlbumId = storyAlbumId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStoryAvailableReactions.swift",
    "content": "//\n//  GetStoryAvailableReactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns reactions, which can be chosen for a story\npublic struct GetStoryAvailableReactions: Codable, Equatable, Hashable {\n\n    /// Number of reaction per row, 5-25\n    public let rowSize: Int?\n\n\n    public init(rowSize: Int?) {\n        self.rowSize = rowSize\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStoryInteractions.swift",
    "content": "//\n//  GetStoryInteractions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns interactions with a story. The method can be called only for stories posted on behalf of the current user\npublic struct GetStoryInteractions: Codable, Equatable, Hashable {\n\n    /// The maximum number of story interactions to return\n    public let limit: Int?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n    /// Pass true to get only interactions by contacts; pass false to get all relevant interactions\n    public let onlyContacts: Bool?\n\n    /// Pass true to get forwards and reposts first, then reactions, then other views; pass false to get interactions sorted just by interaction date\n    public let preferForwards: Bool?\n\n    /// Pass true to get interactions with reaction first; pass false to get interactions sorted just by interaction date. Ignored if prefer_forwards == true\n    public let preferWithReaction: Bool?\n\n    /// Query to search for in names, usernames and titles; may be empty to get all relevant interactions\n    public let query: String?\n\n    /// Story identifier\n    public let storyId: Int?\n\n\n    public init(\n        limit: Int?,\n        offset: String?,\n        onlyContacts: Bool?,\n        preferForwards: Bool?,\n        preferWithReaction: Bool?,\n        query: String?,\n        storyId: Int?\n    ) {\n        self.limit = limit\n        self.offset = offset\n        self.onlyContacts = onlyContacts\n        self.preferForwards = preferForwards\n        self.preferWithReaction = preferWithReaction\n        self.query = query\n        self.storyId = storyId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStoryNotificationSettingsExceptions.swift",
    "content": "//\n//  GetStoryNotificationSettingsExceptions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of chats with non-default notification settings for stories\npublic struct GetStoryNotificationSettingsExceptions: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStoryPublicForwards.swift",
    "content": "//\n//  GetStoryPublicForwards.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns forwards of a story as a message to public chats and reposts by public channels. Can be used only if the story is posted on behalf of the current user or story.can_get_statistics == true. For optimal performance, the number of returned messages and stories is chosen by TDLib\npublic struct GetStoryPublicForwards: Codable, Equatable, Hashable {\n\n    /// The maximum number of messages and stories to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n    /// The identifier of the story\n    public let storyId: Int?\n\n    /// The identifier of the poster of the story\n    public let storyPosterChatId: Int64?\n\n\n    public init(\n        limit: Int?,\n        offset: String?,\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) {\n        self.limit = limit\n        self.offset = offset\n        self.storyId = storyId\n        self.storyPosterChatId = storyPosterChatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetStoryStatistics.swift",
    "content": "//\n//  GetStoryStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns detailed statistics about a story. Can be used only if story.can_get_statistics == true\npublic struct GetStoryStatistics: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Pass true if a dark theme is used by the application\n    public let isDark: Bool?\n\n    /// Story identifier\n    public let storyId: Int?\n\n\n    public init(\n        chatId: Int64?,\n        isDark: Bool?,\n        storyId: Int?\n    ) {\n        self.chatId = chatId\n        self.isDark = isDark\n        self.storyId = storyId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetSuggestedFileName.swift",
    "content": "//\n//  GetSuggestedFileName.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns suggested name for saving a file in a given directory\npublic struct GetSuggestedFileName: Codable, Equatable, Hashable {\n\n    /// Directory in which the file is expected to be saved\n    public let directory: String?\n\n    /// Identifier of the file\n    public let fileId: Int?\n\n\n    public init(\n        directory: String?,\n        fileId: Int?\n    ) {\n        self.directory = directory\n        self.fileId = fileId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetSuggestedStickerSetName.swift",
    "content": "//\n//  GetSuggestedStickerSetName.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a suggested name for a new sticker set with a given title\npublic struct GetSuggestedStickerSetName: Codable, Equatable, Hashable {\n\n    /// Sticker set title; 1-64 characters\n    public let title: String?\n\n\n    public init(title: String?) {\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetSuitableDiscussionChats.swift",
    "content": "//\n//  GetSuitableDiscussionChats.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a list of basic group and supergroup chats, which can be used as a discussion group for a channel. Returned basic group chats must be first upgraded to supergroups before they can be set as a discussion group. To set a returned supergroup as a discussion group, access to its old messages must be enabled using toggleSupergroupIsAllHistoryAvailable first\npublic struct GetSuitableDiscussionChats: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetSuitablePersonalChats.swift",
    "content": "//\n//  GetSuitablePersonalChats.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a list of channel chats, which can be used as a personal chat\npublic struct GetSuitablePersonalChats: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetSupergroup.swift",
    "content": "//\n//  GetSupergroup.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a supergroup or a channel by its identifier. This is an offline method if the current user is not a bot\npublic struct GetSupergroup: Codable, Equatable, Hashable {\n\n    /// Supergroup or channel identifier\n    public let supergroupId: Int64?\n\n\n    public init(supergroupId: Int64?) {\n        self.supergroupId = supergroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetSupergroupFullInfo.swift",
    "content": "//\n//  GetSupergroupFullInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns full information about a supergroup or a channel by its identifier, cached for up to 1 minute\npublic struct GetSupergroupFullInfo: Codable, Equatable, Hashable {\n\n    /// Supergroup or channel identifier\n    public let supergroupId: Int64?\n\n\n    public init(supergroupId: Int64?) {\n        self.supergroupId = supergroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetSupergroupMembers.swift",
    "content": "//\n//  GetSupergroupMembers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about members or banned users in a supergroup or channel. Can be used only if supergroupFullInfo.can_get_members == true; additionally, administrator privileges may be required for some filters\npublic struct GetSupergroupMembers: Codable, Equatable, Hashable {\n\n    /// The type of users to return; pass null to use supergroupMembersFilterRecent\n    public let filter: SupergroupMembersFilter?\n\n    /// The maximum number of users to be returned; up to 200\n    public let limit: Int?\n\n    /// Number of users to skip\n    public let offset: Int?\n\n    /// Identifier of the supergroup or channel\n    public let supergroupId: Int64?\n\n\n    public init(\n        filter: SupergroupMembersFilter?,\n        limit: Int?,\n        offset: Int?,\n        supergroupId: Int64?\n    ) {\n        self.filter = filter\n        self.limit = limit\n        self.offset = offset\n        self.supergroupId = supergroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetSupportName.swift",
    "content": "//\n//  GetSupportName.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns localized name of the Telegram support user; for Telegram support only\npublic struct GetSupportName: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetSupportUser.swift",
    "content": "//\n//  GetSupportUser.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a user who can be contacted to get support\npublic struct GetSupportUser: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetTemporaryPasswordState.swift",
    "content": "//\n//  GetTemporaryPasswordState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about the current temporary password\npublic struct GetTemporaryPasswordState: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetTextCompositionStyleExample.swift",
    "content": "//\n//  GetTextCompositionStyleExample.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an example of usage of a custom text composition style\npublic struct GetTextCompositionStyleExample: Codable, Equatable, Hashable {\n\n    /// 0-based unique number of the requested example; must be non-negative and less than getOption(\"text_composition_style_example_count\")\n    public let exampleNumber: Int?\n\n    /// Name of the style\n    public let name: String?\n\n\n    public init(\n        exampleNumber: Int?,\n        name: String?\n    ) {\n        self.exampleNumber = exampleNumber\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetTextEntities.swift",
    "content": "//\n//  GetTextEntities.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns all entities (mentions, hashtags, cashtags, bot commands, bank card numbers, URLs, and email addresses) found in the text. Can be called synchronously\npublic struct GetTextEntities: Codable, Equatable, Hashable {\n\n    /// The text in which to look for entities\n    public let text: String?\n\n\n    public init(text: String?) {\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetThemeParametersJsonString.swift",
    "content": "//\n//  GetThemeParametersJsonString.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Converts a themeParameters object to corresponding JSON-serialized string. Can be called synchronously\npublic struct GetThemeParametersJsonString: Codable, Equatable, Hashable {\n\n    /// Theme parameters to convert to JSON\n    public let theme: ThemeParameters?\n\n\n    public init(theme: ThemeParameters?) {\n        self.theme = theme\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetThemedChatEmojiStatuses.swift",
    "content": "//\n//  GetThemedChatEmojiStatuses.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns up to 8 emoji statuses, which must be shown in the emoji status list for chats\npublic struct GetThemedChatEmojiStatuses: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetThemedEmojiStatuses.swift",
    "content": "//\n//  GetThemedEmojiStatuses.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns up to 8 emoji statuses, which must be shown right after the default Premium Badge in the emoji status list for self status\npublic struct GetThemedEmojiStatuses: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetTimeZones.swift",
    "content": "//\n//  GetTimeZones.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of supported time zones\npublic struct GetTimeZones: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetTonRevenueStatistics.swift",
    "content": "//\n//  GetTonRevenueStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns detailed Toncoin revenue statistics of the current user\npublic struct GetTonRevenueStatistics: Codable, Equatable, Hashable {\n\n    /// Pass true if a dark theme is used by the application\n    public let isDark: Bool?\n\n\n    public init(isDark: Bool?) {\n        self.isDark = isDark\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetTonTransactions.swift",
    "content": "//\n//  GetTonTransactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of Toncoin transactions of the current user\npublic struct GetTonTransactions: Codable, Equatable, Hashable {\n\n    /// Direction of the transactions to receive; pass null to get all transactions\n    public let direction: TransactionDirection?\n\n    /// The maximum number of transactions to return\n    public let limit: Int?\n\n    /// Offset of the first transaction to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n\n    public init(\n        direction: TransactionDirection?,\n        limit: Int?,\n        offset: String?\n    ) {\n        self.direction = direction\n        self.limit = limit\n        self.offset = offset\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetTonWithdrawalUrl.swift",
    "content": "//\n//  GetTonWithdrawalUrl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a URL for Toncoin withdrawal from the current user's account. The user must have at least 10 toncoins to withdraw and can withdraw up to 100000 Toncoins in one transaction\npublic struct GetTonWithdrawalUrl: Codable, Equatable, Hashable {\n\n    /// The 2-step verification password of the current user\n    public let password: String?\n\n\n    public init(password: String?) {\n        self.password = password\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetTopChats.swift",
    "content": "//\n//  GetTopChats.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a list of frequently used chats\npublic struct GetTopChats: Codable, Equatable, Hashable {\n\n    /// Category of chats to be returned\n    public let category: TopChatCategory?\n\n    /// The maximum number of chats to be returned; up to 30\n    public let limit: Int?\n\n\n    public init(\n        category: TopChatCategory?,\n        limit: Int?\n    ) {\n        self.category = category\n        self.limit = limit\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetTrendingStickerSets.swift",
    "content": "//\n//  GetTrendingStickerSets.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a list of trending sticker sets. For optimal performance, the number of returned sticker sets is chosen by TDLib\npublic struct GetTrendingStickerSets: Codable, Equatable, Hashable {\n\n    /// The maximum number of sticker sets to be returned; up to 100. For optimal performance, the number of returned sticker sets is chosen by TDLib and can be smaller than the specified limit, even if the end of the list has not been reached\n    public let limit: Int?\n\n    /// The offset from which to return the sticker sets; must be non-negative\n    public let offset: Int?\n\n    /// Type of the sticker sets to return\n    public let stickerType: StickerType?\n\n\n    public init(\n        limit: Int?,\n        offset: Int?,\n        stickerType: StickerType?\n    ) {\n        self.limit = limit\n        self.offset = offset\n        self.stickerType = stickerType\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetUpgradedGift.swift",
    "content": "//\n//  GetUpgradedGift.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about an upgraded gift by its name\npublic struct GetUpgradedGift: Codable, Equatable, Hashable {\n\n    /// Unique name of the upgraded gift\n    public let name: String?\n\n\n    public init(name: String?) {\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetUpgradedGiftEmojiStatuses.swift",
    "content": "//\n//  GetUpgradedGiftEmojiStatuses.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns available upgraded gift emoji statuses for self status\npublic struct GetUpgradedGiftEmojiStatuses: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetUpgradedGiftValueInfo.swift",
    "content": "//\n//  GetUpgradedGiftValueInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about value of an upgraded gift by its name\npublic struct GetUpgradedGiftValueInfo: Codable, Equatable, Hashable {\n\n    /// Unique name of the upgraded gift\n    public let name: String?\n\n\n    public init(name: String?) {\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetUpgradedGiftVariants.swift",
    "content": "//\n//  GetUpgradedGiftVariants.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns all possible variants of upgraded gifts for a regular gift\npublic struct GetUpgradedGiftVariants: Codable, Equatable, Hashable {\n\n    /// Identifier of the regular gift\n    public let regularGiftId: TdInt64?\n\n    /// Pass true to get models that can be obtained by crafting a gift from upgraded gifts\n    public let returnCraftModels: Bool?\n\n    /// Pass true to get models that can be obtained by upgrading a regular gift\n    public let returnUpgradeModels: Bool?\n\n\n    public init(\n        regularGiftId: TdInt64?,\n        returnCraftModels: Bool?,\n        returnUpgradeModels: Bool?\n    ) {\n        self.regularGiftId = regularGiftId\n        self.returnCraftModels = returnCraftModels\n        self.returnUpgradeModels = returnUpgradeModels\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetUpgradedGiftWithdrawalUrl.swift",
    "content": "//\n//  GetUpgradedGiftWithdrawalUrl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a URL for upgraded gift withdrawal in the TON blockchain as an NFT; requires owner privileges for gifts owned by a chat\npublic struct GetUpgradedGiftWithdrawalUrl: Codable, Equatable, Hashable {\n\n    /// The 2-step verification password of the current user\n    public let password: String?\n\n    /// Identifier of the gift\n    public let receivedGiftId: String?\n\n\n    public init(\n        password: String?,\n        receivedGiftId: String?\n    ) {\n        self.password = password\n        self.receivedGiftId = receivedGiftId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetUpgradedGiftsPromotionalAnimation.swift",
    "content": "//\n//  GetUpgradedGiftsPromotionalAnimation.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns promotional animation for upgraded gifts\npublic struct GetUpgradedGiftsPromotionalAnimation: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetUser.swift",
    "content": "//\n//  GetUser.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a user by their identifier. This is an offline method if the current user is not a bot\npublic struct GetUser: Codable, Equatable, Hashable {\n\n    /// User identifier\n    public let userId: Int64?\n\n\n    public init(userId: Int64?) {\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetUserChatBoosts.swift",
    "content": "//\n//  GetUserChatBoosts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of boosts applied to a chat by a given user; requires administrator rights in the chat; for bots only\npublic struct GetUserChatBoosts: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n    /// Identifier of the user\n    public let userId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        userId: Int64?\n    ) {\n        self.chatId = chatId\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetUserFullInfo.swift",
    "content": "//\n//  GetUserFullInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns full information about a user by their identifier\npublic struct GetUserFullInfo: Codable, Equatable, Hashable {\n\n    /// User identifier\n    public let userId: Int64?\n\n\n    public init(userId: Int64?) {\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetUserGift.swift",
    "content": "//\n//  GetUserGift.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.42-2be9e799\n//  https://github.com/tdlib/td/tree/2be9e799\n//\n\nimport Foundation\n\n\n/// Returns information about a gift received or sent by the current user\npublic struct GetUserGift: Codable, Equatable, Hashable {\n\n    /// Identifier of the message with the gift\n    public let messageId: Int64?\n\n\n    public init(messageId: Int64?) {\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetUserGifts.swift",
    "content": "//\n//  GetUserGifts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.42-2be9e799\n//  https://github.com/tdlib/td/tree/2be9e799\n//\n\nimport Foundation\n\n\n/// Returns gifts saved to profile by the given user\npublic struct GetUserGifts: Codable, Equatable, Hashable {\n\n    /// The maximum number of gifts to be returned; must be positive and can't be greater than 100. For optimal performance, the number of returned objects is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n    /// Identifier of the user\n    public let userId: Int64?\n\n\n    public init(\n        limit: Int?,\n        offset: String?,\n        userId: Int64?\n    ) {\n        self.limit = limit\n        self.offset = offset\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetUserLink.swift",
    "content": "//\n//  GetUserLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an HTTPS link, which can be used to get information about the current user\npublic struct GetUserLink: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetUserPrivacySettingRules.swift",
    "content": "//\n//  GetUserPrivacySettingRules.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the current privacy settings\npublic struct GetUserPrivacySettingRules: Codable, Equatable, Hashable {\n\n    /// The privacy setting\n    public let setting: UserPrivacySetting?\n\n\n    public init(setting: UserPrivacySetting?) {\n        self.setting = setting\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetUserProfileAudios.swift",
    "content": "//\n//  GetUserProfileAudios.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of profile audio files of a user\npublic struct GetUserProfileAudios: Codable, Equatable, Hashable {\n\n    /// The maximum number of audio files to be returned; up to 100\n    public let limit: Int?\n\n    /// The number of audio files to skip; must be non-negative\n    public let offset: Int?\n\n    /// User identifier\n    public let userId: Int64?\n\n\n    public init(\n        limit: Int?,\n        offset: Int?,\n        userId: Int64?\n    ) {\n        self.limit = limit\n        self.offset = offset\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetUserProfilePhotos.swift",
    "content": "//\n//  GetUserProfilePhotos.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the profile photos of a user. Personal and public photo aren't returned\npublic struct GetUserProfilePhotos: Codable, Equatable, Hashable {\n\n    /// The maximum number of photos to be returned; up to 100\n    public let limit: Int?\n\n    /// The number of photos to skip; must be non-negative\n    public let offset: Int?\n\n    /// User identifier\n    public let userId: Int64?\n\n\n    public init(\n        limit: Int?,\n        offset: Int?,\n        userId: Int64?\n    ) {\n        self.limit = limit\n        self.offset = offset\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetUserSupportInfo.swift",
    "content": "//\n//  GetUserSupportInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns support information for the given user; for Telegram support only\npublic struct GetUserSupportInfo: Codable, Equatable, Hashable {\n\n    /// User identifier\n    public let userId: Int64?\n\n\n    public init(userId: Int64?) {\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetVideoChatAvailableParticipants.swift",
    "content": "//\n//  GetVideoChatAvailableParticipants.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the list of participant identifiers, on whose behalf a video chat in the chat can be joined\npublic struct GetVideoChatAvailableParticipants: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetVideoChatInviteLink.swift",
    "content": "//\n//  GetVideoChatInviteLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns invite link to a video chat in a public chat\npublic struct GetVideoChatInviteLink: Codable, Equatable, Hashable {\n\n    /// Pass true if the invite link needs to contain an invite hash, passing which to joinVideoChat would allow the invited user to unmute themselves. Requires groupCall.can_be_managed right\n    public let canSelfUnmute: Bool?\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n\n    public init(\n        canSelfUnmute: Bool?,\n        groupCallId: Int?\n    ) {\n        self.canSelfUnmute = canSelfUnmute\n        self.groupCallId = groupCallId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetVideoChatRtmpUrl.swift",
    "content": "//\n//  GetVideoChatRtmpUrl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns RTMP URL for streaming to the video chat of a chat; requires can_manage_video_chats administrator right\npublic struct GetVideoChatRtmpUrl: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetVideoChatStreamSegment.swift",
    "content": "//\n//  GetVideoChatStreamSegment.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.53-bdec6af5\n//  https://github.com/tdlib/td/tree/bdec6af5\n//\n\nimport Foundation\n\n\n/// Returns a file with a segment of a video chat stream in a modified OGG format for audio or MPEG-4 format for video\npublic struct GetVideoChatStreamSegment: Codable, Equatable, Hashable {\n\n    /// Identifier of an audio/video channel to get as received from tgcalls\n    public let channelId: Int?\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// Segment duration scale; 0-1. Segment's duration is 1000/(2**scale) milliseconds\n    public let scale: Int?\n\n    /// Point in time when the stream segment begins; Unix timestamp in milliseconds\n    public let timeOffset: Int64?\n\n    /// Video quality as received from tgcalls; pass null to get the worst available quality\n    public let videoQuality: GroupCallVideoQuality?\n\n\n    public init(\n        channelId: Int?,\n        groupCallId: Int?,\n        scale: Int?,\n        timeOffset: Int64?,\n        videoQuality: GroupCallVideoQuality?\n    ) {\n        self.channelId = channelId\n        self.groupCallId = groupCallId\n        self.scale = scale\n        self.timeOffset = timeOffset\n        self.videoQuality = videoQuality\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetVideoChatStreams.swift",
    "content": "//\n//  GetVideoChatStreams.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.53-bdec6af5\n//  https://github.com/tdlib/td/tree/bdec6af5\n//\n\nimport Foundation\n\n\n/// Returns information about available video chat streams\npublic struct GetVideoChatStreams: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n\n    public init(groupCallId: Int?) {\n        self.groupCallId = groupCallId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetVideoMessageAdvertisements.swift",
    "content": "//\n//  GetVideoMessageAdvertisements.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns advertisements to be shown while a video from a message is watched. Available only if messageProperties.can_get_video_advertisements\npublic struct GetVideoMessageAdvertisements: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat with the message\n    public let chatId: Int64?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetWebAppLinkUrl.swift",
    "content": "//\n//  GetWebAppLinkUrl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an HTTPS URL of a Web App to open after a link of the type internalLinkTypeWebApp is clicked\npublic struct GetWebAppLinkUrl: Codable, Equatable, Hashable {\n\n    /// Pass true if the current user allowed the bot to send them messages\n    public let allowWriteAccess: Bool?\n\n    /// Identifier of the target bot\n    public let botUserId: Int64?\n\n    /// Identifier of the chat in which the link was clicked; pass 0 if none\n    public let chatId: Int64?\n\n    /// Parameters to use to open the Web App\n    public let parameters: WebAppOpenParameters?\n\n    /// Start parameter from internalLinkTypeWebApp\n    public let startParameter: String?\n\n    /// Short name of the Web App\n    public let webAppShortName: String?\n\n\n    public init(\n        allowWriteAccess: Bool?,\n        botUserId: Int64?,\n        chatId: Int64?,\n        parameters: WebAppOpenParameters?,\n        startParameter: String?,\n        webAppShortName: String?\n    ) {\n        self.allowWriteAccess = allowWriteAccess\n        self.botUserId = botUserId\n        self.chatId = chatId\n        self.parameters = parameters\n        self.startParameter = startParameter\n        self.webAppShortName = webAppShortName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetWebAppPlaceholder.swift",
    "content": "//\n//  GetWebAppPlaceholder.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns a default placeholder for Web Apps of a bot. This is an offline method. Returns a 404 error if the placeholder isn't known\npublic struct GetWebAppPlaceholder: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot\n    public let botUserId: Int64?\n\n\n    public init(botUserId: Int64?) {\n        self.botUserId = botUserId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetWebAppUrl.swift",
    "content": "//\n//  GetWebAppUrl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an HTTPS URL of a Web App to open from the side menu, a keyboardButtonTypeWebApp button, or an inlineQueryResultsButtonTypeWebApp button\npublic struct GetWebAppUrl: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot. If the bot is restricted for the current user, then show an error instead of calling the method\n    public let botUserId: Int64?\n\n    /// Parameters to use to open the Web App\n    public let parameters: WebAppOpenParameters?\n\n    /// The URL from a keyboardButtonTypeWebApp button, inlineQueryResultsButtonTypeWebApp button, or an empty string when the bot is opened from the side menu\n    public let url: String?\n\n\n    public init(\n        botUserId: Int64?,\n        parameters: WebAppOpenParameters?,\n        url: String?\n    ) {\n        self.botUserId = botUserId\n        self.parameters = parameters\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetWebPageInstantView.swift",
    "content": "//\n//  GetWebPageInstantView.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns an instant view version of a web page if available. This is an offline method if only_local is true. Returns a 404 error if the web page has no instant view page\npublic struct GetWebPageInstantView: Codable, Equatable, Hashable {\n\n    /// Pass true to get only locally available information without sending network requests\n    public let onlyLocal: Bool?\n\n    /// The web page URL\n    public let url: String?\n\n\n    public init(\n        onlyLocal: Bool?,\n        url: String?\n    ) {\n        self.onlyLocal = onlyLocal\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GetWebPagePreview.swift",
    "content": "//\n//  GetWebPagePreview.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.32-3cd93569\n//  https://github.com/tdlib/td/tree/3cd93569\n//\n\nimport Foundation\n\n\n/// Returns a link preview by the text of a message. Do not call this function too often. Returns a 404 error if the text has no link preview\npublic struct GetWebPagePreview: Codable, Equatable, Hashable {\n\n    /// Options to be used for generation of the link preview; pass null to use default link preview options\n    public let linkPreviewOptions: LinkPreviewOptions?\n\n    /// Message text with formatting\n    public let text: FormattedText?\n\n\n    public init(\n        linkPreviewOptions: LinkPreviewOptions?,\n        text: FormattedText?\n    ) {\n        self.linkPreviewOptions = linkPreviewOptions\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Gift.swift",
    "content": "//\n//  Gift.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a gift that can be sent to another user or channel chat\npublic struct Gift: Codable, Equatable, Hashable, Identifiable {\n\n    /// Information about the auction on which the gift can be purchased; may be null if the gift can be purchased directly\n    public let auctionInfo: GiftAuction?\n\n    /// Background of the gift\n    public let background: GiftBackground\n\n    /// Number of Telegram Stars that can be claimed by the receiver instead of the regular gift by default. If the gift was paid with just bought Telegram Stars, then full value can be claimed\n    public let defaultSellStarCount: Int64\n\n    /// Point in time (Unix timestamp) when the gift was send for the first time; for sold out gifts only\n    public let firstSendDate: Int\n\n    /// True, if the gift can be used to customize the user's name, and backgrounds of profile photo, reply header, and link preview\n    public let hasColors: Bool\n\n    /// Unique identifier of the gift\n    public let id: TdInt64\n\n    /// True, if the gift is a birthday gift\n    public let isForBirthday: Bool\n\n    /// True, if the gift can be bought only by Telegram Premium subscribers\n    public let isPremium: Bool\n\n    /// Point in time (Unix timestamp) when the gift was send for the last time; for sold out gifts only\n    public let lastSendDate: Int\n\n    /// Point in time (Unix timestamp) when the gift can be sent next time by the current user; may be 0 or a date in the past. If the date is in the future, then call canSendGift to get the reason, why the gift can't be sent now\n    public let nextSendDate: Int\n\n    /// Number of times the gift can be purchased all users; may be null if not limited\n    public let overallLimits: GiftPurchaseLimits?\n\n    /// Identifier of the chat that published the gift; 0 if none\n    public let publisherChatId: Int64\n\n    /// Number of Telegram Stars that must be paid for the gift\n    public let starCount: Int64\n\n    /// The sticker representing the gift\n    public let sticker: Sticker\n\n    /// Number of Telegram Stars that must be paid to upgrade the gift; 0 if upgrade isn't possible\n    public let upgradeStarCount: Int64\n\n    /// Number of unique gift variants that are available for the upgraded gift; 0 if unknown\n    public let upgradeVariantCount: Int\n\n    /// Number of times the gift can be purchased by the current user; may be null if not limited\n    public let userLimits: GiftPurchaseLimits?\n\n\n    public init(\n        auctionInfo: GiftAuction?,\n        background: GiftBackground,\n        defaultSellStarCount: Int64,\n        firstSendDate: Int,\n        hasColors: Bool,\n        id: TdInt64,\n        isForBirthday: Bool,\n        isPremium: Bool,\n        lastSendDate: Int,\n        nextSendDate: Int,\n        overallLimits: GiftPurchaseLimits?,\n        publisherChatId: Int64,\n        starCount: Int64,\n        sticker: Sticker,\n        upgradeStarCount: Int64,\n        upgradeVariantCount: Int,\n        userLimits: GiftPurchaseLimits?\n    ) {\n        self.auctionInfo = auctionInfo\n        self.background = background\n        self.defaultSellStarCount = defaultSellStarCount\n        self.firstSendDate = firstSendDate\n        self.hasColors = hasColors\n        self.id = id\n        self.isForBirthday = isForBirthday\n        self.isPremium = isPremium\n        self.lastSendDate = lastSendDate\n        self.nextSendDate = nextSendDate\n        self.overallLimits = overallLimits\n        self.publisherChatId = publisherChatId\n        self.starCount = starCount\n        self.sticker = sticker\n        self.upgradeStarCount = upgradeStarCount\n        self.upgradeVariantCount = upgradeVariantCount\n        self.userLimits = userLimits\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftAuction.swift",
    "content": "//\n//  GiftAuction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an auction on which a gift can be purchased\npublic struct GiftAuction: Codable, Equatable, Hashable, Identifiable {\n\n    /// Number of gifts distributed in each round\n    public let giftsPerRound: Int\n\n    /// Identifier of the auction\n    public let id: String\n\n    /// Point in time (Unix timestamp) when the auction will start\n    public let startDate: Int\n\n\n    public init(\n        giftsPerRound: Int,\n        id: String,\n        startDate: Int\n    ) {\n        self.giftsPerRound = giftsPerRound\n        self.id = id\n        self.startDate = startDate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftAuctionAcquiredGift.swift",
    "content": "//\n//  GiftAuctionAcquiredGift.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a gift that was acquired by the current user on an auction\npublic struct GiftAuctionAcquiredGift: Codable, Equatable, Hashable {\n\n    /// Identifier of the auction round in which the gift was acquired\n    public let auctionRoundNumber: Int\n\n    /// Position of the user in the round among all auction participants\n    public let auctionRoundPosition: Int\n\n    /// Point in time (Unix timestamp) when the gift was acquired\n    public let date: Int\n\n    /// True, if the sender and gift text are shown only to the gift receiver; otherwise, everyone will be able to see them\n    public let isPrivate: Bool\n\n    /// Receiver of the gift\n    public let receiverId: MessageSender\n\n    /// The number of Telegram Stars that were paid for the gift\n    public let starCount: Int64\n\n    /// Message added to the gift\n    public let text: FormattedText\n\n    /// Unique number of the gift among gifts upgraded from the same gift after upgrade; 0 if yet unassigned\n    public let uniqueGiftNumber: Int\n\n\n    public init(\n        auctionRoundNumber: Int,\n        auctionRoundPosition: Int,\n        date: Int,\n        isPrivate: Bool,\n        receiverId: MessageSender,\n        starCount: Int64,\n        text: FormattedText,\n        uniqueGiftNumber: Int\n    ) {\n        self.auctionRoundNumber = auctionRoundNumber\n        self.auctionRoundPosition = auctionRoundPosition\n        self.date = date\n        self.isPrivate = isPrivate\n        self.receiverId = receiverId\n        self.starCount = starCount\n        self.text = text\n        self.uniqueGiftNumber = uniqueGiftNumber\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftAuctionAcquiredGifts.swift",
    "content": "//\n//  GiftAuctionAcquiredGifts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of gifts that were acquired by the current user on an auction\npublic struct GiftAuctionAcquiredGifts: Codable, Equatable, Hashable {\n\n    /// The list of acquired gifts\n    public let gifts: [GiftAuctionAcquiredGift]\n\n\n    public init(gifts: [GiftAuctionAcquiredGift]) {\n        self.gifts = gifts\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftAuctionState.swift",
    "content": "//\n//  GiftAuctionState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represent auction state of a gift\npublic struct GiftAuctionState: Codable, Equatable, Hashable {\n\n    /// The gift\n    public let gift: Gift\n\n    /// Auction state of the gift\n    public let state: AuctionState\n\n\n    public init(\n        gift: Gift,\n        state: AuctionState\n    ) {\n        self.gift = gift\n        self.state = state\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftBackground.swift",
    "content": "//\n//  GiftBackground.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes background of a gift\npublic struct GiftBackground: Codable, Equatable, Hashable {\n\n    /// Center color in RGB format\n    public let centerColor: Int\n\n    /// Edge color in RGB format\n    public let edgeColor: Int\n\n    /// Text color in RGB format\n    public let textColor: Int\n\n\n    public init(\n        centerColor: Int,\n        edgeColor: Int,\n        textColor: Int\n    ) {\n        self.centerColor = centerColor\n        self.edgeColor = edgeColor\n        self.textColor = textColor\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftChatTheme.swift",
    "content": "//\n//  GiftChatTheme.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a chat theme based on an upgraded gift\npublic struct GiftChatTheme: Codable, Equatable, Hashable {\n\n    /// Theme settings for a dark chat theme\n    public let darkSettings: ThemeSettings\n\n    /// The gift\n    public let gift: UpgradedGift\n\n    /// Theme settings for a light chat theme\n    public let lightSettings: ThemeSettings\n\n\n    public init(\n        darkSettings: ThemeSettings,\n        gift: UpgradedGift,\n        lightSettings: ThemeSettings\n    ) {\n        self.darkSettings = darkSettings\n        self.gift = gift\n        self.lightSettings = lightSettings\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftChatThemes.swift",
    "content": "//\n//  GiftChatThemes.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of chat themes based on upgraded gifts\npublic struct GiftChatThemes: Codable, Equatable, Hashable {\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// A list of chat themes\n    public let themes: [GiftChatTheme]\n\n\n    public init(\n        nextOffset: String,\n        themes: [GiftChatTheme]\n    ) {\n        self.nextOffset = nextOffset\n        self.themes = themes\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftCollection.swift",
    "content": "//\n//  GiftCollection.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes collection of gifts\npublic struct GiftCollection: Codable, Equatable, Hashable, Identifiable {\n\n    /// Total number of gifts in the collection\n    public let giftCount: Int\n\n    /// Icon of the collection; may be null if none\n    public let icon: Sticker?\n\n    /// Unique identifier of the collection\n    public let id: Int\n\n    /// Name of the collection\n    public let name: String\n\n\n    public init(\n        giftCount: Int,\n        icon: Sticker?,\n        id: Int,\n        name: String\n    ) {\n        self.giftCount = giftCount\n        self.icon = icon\n        self.id = id\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftCollections.swift",
    "content": "//\n//  GiftCollections.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of gift collections\npublic struct GiftCollections: Codable, Equatable, Hashable {\n\n    /// List of gift collections\n    public let collections: [GiftCollection]\n\n\n    public init(collections: [GiftCollection]) {\n        self.collections = collections\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftForResale.swift",
    "content": "//\n//  GiftForResale.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a gift available for resale\npublic struct GiftForResale: Codable, Equatable, Hashable {\n\n    /// The gift\n    public let gift: UpgradedGift\n\n    /// Unique identifier of the received gift for the current user; only for the gifts owned by the current user\n    public let receivedGiftId: String\n\n\n    public init(\n        gift: UpgradedGift,\n        receivedGiftId: String\n    ) {\n        self.gift = gift\n        self.receivedGiftId = receivedGiftId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftForResaleOrder.swift",
    "content": "//\n//  GiftForResaleOrder.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes order in which upgraded gifts for resale will be sorted\npublic indirect enum GiftForResaleOrder: Codable, Equatable, Hashable {\n\n    /// The gifts will be sorted by their price from the lowest to the highest\n    case giftForResaleOrderPrice\n\n    /// The gifts will be sorted by the last date when their price was changed from the newest to the oldest\n    case giftForResaleOrderPriceChangeDate\n\n    /// The gifts will be sorted by their number from the smallest to the largest\n    case giftForResaleOrderNumber\n\n\n    private enum Kind: String, Codable {\n        case giftForResaleOrderPrice\n        case giftForResaleOrderPriceChangeDate\n        case giftForResaleOrderNumber\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .giftForResaleOrderPrice:\n            self = .giftForResaleOrderPrice\n        case .giftForResaleOrderPriceChangeDate:\n            self = .giftForResaleOrderPriceChangeDate\n        case .giftForResaleOrderNumber:\n            self = .giftForResaleOrderNumber\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .giftForResaleOrderPrice:\n            try container.encode(Kind.giftForResaleOrderPrice, forKey: .type)\n        case .giftForResaleOrderPriceChangeDate:\n            try container.encode(Kind.giftForResaleOrderPriceChangeDate, forKey: .type)\n        case .giftForResaleOrderNumber:\n            try container.encode(Kind.giftForResaleOrderNumber, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftPremiumWithStars.swift",
    "content": "//\n//  GiftPremiumWithStars.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Allows to buy a Telegram Premium subscription for another user with payment in Telegram Stars; for bots only\npublic struct GiftPremiumWithStars: Codable, Equatable, Hashable {\n\n    /// Number of months the Telegram Premium subscription will be active for the user\n    public let monthCount: Int?\n\n    /// The number of Telegram Stars to pay for subscription\n    public let starCount: Int64?\n\n    /// Text to show to the user receiving Telegram Premium; 0-getOption(\"gift_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed\n    public let text: FormattedText?\n\n    /// Identifier of the user which will receive Telegram Premium\n    public let userId: Int64?\n\n\n    public init(\n        monthCount: Int?,\n        starCount: Int64?,\n        text: FormattedText?,\n        userId: Int64?\n    ) {\n        self.monthCount = monthCount\n        self.starCount = starCount\n        self.text = text\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftPurchaseLimits.swift",
    "content": "//\n//  GiftPurchaseLimits.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the maximum number of times that a specific gift can be purchased\npublic struct GiftPurchaseLimits: Codable, Equatable, Hashable {\n\n    /// Number of remaining times the gift can be purchased\n    public let remainingCount: Int\n\n    /// The maximum number of times the gifts can be purchased\n    public let totalCount: Int\n\n\n    public init(\n        remainingCount: Int,\n        totalCount: Int\n    ) {\n        self.remainingCount = remainingCount\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftPurchaseOfferState.swift",
    "content": "//\n//  GiftPurchaseOfferState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes state of a gift purchase offer\npublic indirect enum GiftPurchaseOfferState: Codable, Equatable, Hashable {\n\n    /// The offer must be accepted or rejected\n    case giftPurchaseOfferStatePending\n\n    /// The offer was accepted\n    case giftPurchaseOfferStateAccepted\n\n    /// The offer was rejected\n    case giftPurchaseOfferStateRejected\n\n\n    private enum Kind: String, Codable {\n        case giftPurchaseOfferStatePending\n        case giftPurchaseOfferStateAccepted\n        case giftPurchaseOfferStateRejected\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .giftPurchaseOfferStatePending:\n            self = .giftPurchaseOfferStatePending\n        case .giftPurchaseOfferStateAccepted:\n            self = .giftPurchaseOfferStateAccepted\n        case .giftPurchaseOfferStateRejected:\n            self = .giftPurchaseOfferStateRejected\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .giftPurchaseOfferStatePending:\n            try container.encode(Kind.giftPurchaseOfferStatePending, forKey: .type)\n        case .giftPurchaseOfferStateAccepted:\n            try container.encode(Kind.giftPurchaseOfferStateAccepted, forKey: .type)\n        case .giftPurchaseOfferStateRejected:\n            try container.encode(Kind.giftPurchaseOfferStateRejected, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftResaleParameters.swift",
    "content": "//\n//  GiftResaleParameters.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes parameters of a unique gift available for resale\npublic struct GiftResaleParameters: Codable, Equatable, Hashable {\n\n    /// Resale price of the gift in Telegram Stars\n    public let starCount: Int64\n\n    /// Resale price of the gift in 1/100 of Toncoin\n    public let toncoinCentCount: Int64\n\n    /// True, if the gift can be bought only using Toncoins\n    public let toncoinOnly: Bool\n\n\n    public init(\n        starCount: Int64,\n        toncoinCentCount: Int64,\n        toncoinOnly: Bool\n    ) {\n        self.starCount = starCount\n        self.toncoinCentCount = toncoinCentCount\n        self.toncoinOnly = toncoinOnly\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftResalePrice.swift",
    "content": "//\n//  GiftResalePrice.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes price of a resold gift\npublic indirect enum GiftResalePrice: Codable, Equatable, Hashable {\n\n    /// Describes price of a resold gift in Telegram Stars\n    case giftResalePriceStar(GiftResalePriceStar)\n\n    /// Describes price of a resold gift in Toncoins\n    case giftResalePriceTon(GiftResalePriceTon)\n\n\n    private enum Kind: String, Codable {\n        case giftResalePriceStar\n        case giftResalePriceTon\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .giftResalePriceStar:\n            let value = try GiftResalePriceStar(from: decoder)\n            self = .giftResalePriceStar(value)\n        case .giftResalePriceTon:\n            let value = try GiftResalePriceTon(from: decoder)\n            self = .giftResalePriceTon(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .giftResalePriceStar(let value):\n            try container.encode(Kind.giftResalePriceStar, forKey: .type)\n            try value.encode(to: encoder)\n        case .giftResalePriceTon(let value):\n            try container.encode(Kind.giftResalePriceTon, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Describes price of a resold gift in Telegram Stars\npublic struct GiftResalePriceStar: Codable, Equatable, Hashable {\n\n    /// The Telegram Star amount expected to be paid for the gift. Must be in the range getOption(\"gift_resale_star_count_min\")-getOption(\"gift_resale_star_count_max\") for gifts put for resale\n    public let starCount: Int64\n\n\n    public init(starCount: Int64) {\n        self.starCount = starCount\n    }\n}\n\n/// Describes price of a resold gift in Toncoins\npublic struct GiftResalePriceTon: Codable, Equatable, Hashable {\n\n    /// The amount of 1/100 of Toncoin expected to be paid for the gift. Must be in the range getOption(\"gift_resale_toncoin_cent_count_min\")-getOption(\"gift_resale_toncoin_cent_count_max\")\n    public let toncoinCentCount: Int64\n\n\n    public init(toncoinCentCount: Int64) {\n        self.toncoinCentCount = toncoinCentCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftResaleResult.swift",
    "content": "//\n//  GiftResaleResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes result of sending a resold gift\npublic indirect enum GiftResaleResult: Codable, Equatable, Hashable {\n\n    /// Operation was successfully completed\n    case giftResaleResultOk(GiftResaleResultOk)\n\n    /// Operation has failed, because price has increased. If the price has decreased, then the buying will succeed anyway\n    case giftResaleResultPriceIncreased(GiftResaleResultPriceIncreased)\n\n\n    private enum Kind: String, Codable {\n        case giftResaleResultOk\n        case giftResaleResultPriceIncreased\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .giftResaleResultOk:\n            let value = try GiftResaleResultOk(from: decoder)\n            self = .giftResaleResultOk(value)\n        case .giftResaleResultPriceIncreased:\n            let value = try GiftResaleResultPriceIncreased(from: decoder)\n            self = .giftResaleResultPriceIncreased(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .giftResaleResultOk(let value):\n            try container.encode(Kind.giftResaleResultOk, forKey: .type)\n            try value.encode(to: encoder)\n        case .giftResaleResultPriceIncreased(let value):\n            try container.encode(Kind.giftResaleResultPriceIncreased, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Operation was successfully completed\npublic struct GiftResaleResultOk: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the received gift; only for the gifts sent to the current user\n    public let receivedGiftId: String\n\n\n    public init(receivedGiftId: String) {\n        self.receivedGiftId = receivedGiftId\n    }\n}\n\n/// Operation has failed, because price has increased. If the price has decreased, then the buying will succeed anyway\npublic struct GiftResaleResultPriceIncreased: Codable, Equatable, Hashable {\n\n    /// New price for the gift\n    public let price: GiftResalePrice\n\n\n    public init(price: GiftResalePrice) {\n        self.price = price\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftSettings.swift",
    "content": "//\n//  GiftSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains settings for gift receiving for a user\npublic struct GiftSettings: Codable, Equatable, Hashable {\n\n    /// Types of gifts accepted by the user; for Telegram Premium users only\n    public let acceptedGiftTypes: AcceptedGiftTypes\n\n    /// True, if a button for sending a gift to the user or by the user must always be shown in the input field\n    public let showGiftButton: Bool\n\n\n    public init(\n        acceptedGiftTypes: AcceptedGiftTypes,\n        showGiftButton: Bool\n    ) {\n        self.acceptedGiftTypes = acceptedGiftTypes\n        self.showGiftButton = showGiftButton\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftUpgradePreview.swift",
    "content": "//\n//  GiftUpgradePreview.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains examples of possible upgraded gifts for the given regular gift\npublic struct GiftUpgradePreview: Codable, Equatable, Hashable {\n\n    /// Examples of possible backdrops that can be chosen for the gift after upgrade\n    public let backdrops: [UpgradedGiftBackdrop]\n\n    /// Examples of possible models that can be chosen for the gift after upgrade\n    public let models: [UpgradedGiftModel]\n\n    /// Next changes for the price for gift upgrade with more granularity than in prices\n    public let nextPrices: [GiftUpgradePrice]\n\n    /// Examples of price for gift upgrade from the maximum price to the minimum price\n    public let prices: [GiftUpgradePrice]\n\n    /// Examples of possible symbols that can be chosen for the gift after upgrade\n    public let symbols: [UpgradedGiftSymbol]\n\n\n    public init(\n        backdrops: [UpgradedGiftBackdrop],\n        models: [UpgradedGiftModel],\n        nextPrices: [GiftUpgradePrice],\n        prices: [GiftUpgradePrice],\n        symbols: [UpgradedGiftSymbol]\n    ) {\n        self.backdrops = backdrops\n        self.models = models\n        self.nextPrices = nextPrices\n        self.prices = prices\n        self.symbols = symbols\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftUpgradePrice.swift",
    "content": "//\n//  GiftUpgradePrice.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a price required to pay to upgrade a gift\npublic struct GiftUpgradePrice: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the price will be in effect\n    public let date: Int\n\n    /// The Telegram Star amount required to pay to upgrade the gift\n    public let starCount: Int64\n\n\n    public init(\n        date: Int,\n        starCount: Int64\n    ) {\n        self.date = date\n        self.starCount = starCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftUpgradeVariants.swift",
    "content": "//\n//  GiftUpgradeVariants.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains all possible variants of upgraded gifts for the given regular gift\npublic struct GiftUpgradeVariants: Codable, Equatable, Hashable {\n\n    /// Backdrops that can be chosen for the gift after upgrade\n    public let backdrops: [UpgradedGiftBackdrop]\n\n    /// Models that can be chosen for the gift after upgrade\n    public let models: [UpgradedGiftModel]\n\n    /// Symbols that can be chosen for the gift after upgrade\n    public let symbols: [UpgradedGiftSymbol]\n\n\n    public init(\n        backdrops: [UpgradedGiftBackdrop],\n        models: [UpgradedGiftModel],\n        symbols: [UpgradedGiftSymbol]\n    ) {\n        self.backdrops = backdrops\n        self.models = models\n        self.symbols = symbols\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Gifts.swift",
    "content": "//\n//  Gifts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.47-971684a3\n//  https://github.com/tdlib/td/tree/971684a3\n//\n\nimport Foundation\n\n\n/// Contains a list of gifts that can be sent to another user or channel chat\npublic struct Gifts: Codable, Equatable, Hashable {\n\n    /// The list of gifts\n    public let gifts: [Gift]\n\n\n    public init(gifts: [Gift]) {\n        self.gifts = gifts\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftsForCrafting.swift",
    "content": "//\n//  GiftsForCrafting.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of gifts received by a user or a chat\npublic struct GiftsForCrafting: Codable, Equatable, Hashable {\n\n    /// The 4 objects that describe probabilities of the crafted gift to have the backdrop or symbol of one of the original gifts for the cases when 1, 2, 3 or 4 gifts are used in the craft correspondingly\n    public let attributePersistenceProbabilities: [AttributeCraftPersistenceProbability]\n\n    /// The list of gifts\n    public let gifts: [ReceivedGift]\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// The total number of received gifts\n    public let totalCount: Int\n\n\n    public init(\n        attributePersistenceProbabilities: [AttributeCraftPersistenceProbability],\n        gifts: [ReceivedGift],\n        nextOffset: String,\n        totalCount: Int\n    ) {\n        self.attributePersistenceProbabilities = attributePersistenceProbabilities\n        self.gifts = gifts\n        self.nextOffset = nextOffset\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiftsForResale.swift",
    "content": "//\n//  GiftsForResale.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes gifts available for resale\npublic struct GiftsForResale: Codable, Equatable, Hashable {\n\n    /// Available backdrops; for searchGiftsForResale requests without offset and attributes only\n    public let backdrops: [UpgradedGiftBackdropCount]\n\n    /// The gifts\n    public let gifts: [GiftForResale]\n\n    /// Available models; for searchGiftsForResale requests without offset and attributes only\n    public let models: [UpgradedGiftModelCount]\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// Available symbols; for searchGiftsForResale requests without offset and attributes only\n    public let symbols: [UpgradedGiftSymbolCount]\n\n    /// Total number of gifts found\n    public let totalCount: Int\n\n\n    public init(\n        backdrops: [UpgradedGiftBackdropCount],\n        gifts: [GiftForResale],\n        models: [UpgradedGiftModelCount],\n        nextOffset: String,\n        symbols: [UpgradedGiftSymbolCount],\n        totalCount: Int\n    ) {\n        self.backdrops = backdrops\n        self.gifts = gifts\n        self.models = models\n        self.nextOffset = nextOffset\n        self.symbols = symbols\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiveawayInfo.swift",
    "content": "//\n//  GiveawayInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a giveaway\npublic indirect enum GiveawayInfo: Codable, Equatable, Hashable {\n\n    /// Describes an ongoing giveaway\n    case giveawayInfoOngoing(GiveawayInfoOngoing)\n\n    /// Describes a completed giveaway\n    case giveawayInfoCompleted(GiveawayInfoCompleted)\n\n\n    private enum Kind: String, Codable {\n        case giveawayInfoOngoing\n        case giveawayInfoCompleted\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .giveawayInfoOngoing:\n            let value = try GiveawayInfoOngoing(from: decoder)\n            self = .giveawayInfoOngoing(value)\n        case .giveawayInfoCompleted:\n            let value = try GiveawayInfoCompleted(from: decoder)\n            self = .giveawayInfoCompleted(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .giveawayInfoOngoing(let value):\n            try container.encode(Kind.giveawayInfoOngoing, forKey: .type)\n            try value.encode(to: encoder)\n        case .giveawayInfoCompleted(let value):\n            try container.encode(Kind.giveawayInfoCompleted, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Describes an ongoing giveaway\npublic struct GiveawayInfoOngoing: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the giveaway was created\n    public let creationDate: Int\n\n    /// True, if the giveaway has ended and results are being prepared\n    public let isEnded: Bool\n\n    /// Status of the current user in the giveaway\n    public let status: GiveawayParticipantStatus\n\n\n    public init(\n        creationDate: Int,\n        isEnded: Bool,\n        status: GiveawayParticipantStatus\n    ) {\n        self.creationDate = creationDate\n        self.isEnded = isEnded\n        self.status = status\n    }\n}\n\n/// Describes a completed giveaway\npublic struct GiveawayInfoCompleted: Codable, Equatable, Hashable {\n\n    /// Number of winners, which activated their gift codes; for Telegram Premium giveaways only\n    public let activationCount: Int\n\n    /// Point in time (Unix timestamp) when the winners were selected. May be bigger than winners selection date specified in parameters of the giveaway\n    public let actualWinnersSelectionDate: Int\n\n    /// Point in time (Unix timestamp) when the giveaway was created\n    public let creationDate: Int\n\n    /// Telegram Premium gift code that was received by the current user; empty if the user isn't a winner in the giveaway or the giveaway isn't a Telegram Premium giveaway\n    public let giftCode: String\n\n    /// True, if the current user is a winner of the giveaway\n    public let isWinner: Bool\n\n    /// True, if the giveaway was canceled and was fully refunded\n    public let wasRefunded: Bool\n\n    /// Number of winners in the giveaway\n    public let winnerCount: Int\n\n    /// The Telegram Star amount won by the current user; 0 if the user isn't a winner in the giveaway or the giveaway isn't a Telegram Star giveaway\n    public let wonStarCount: Int64\n\n\n    public init(\n        activationCount: Int,\n        actualWinnersSelectionDate: Int,\n        creationDate: Int,\n        giftCode: String,\n        isWinner: Bool,\n        wasRefunded: Bool,\n        winnerCount: Int,\n        wonStarCount: Int64\n    ) {\n        self.activationCount = activationCount\n        self.actualWinnersSelectionDate = actualWinnersSelectionDate\n        self.creationDate = creationDate\n        self.giftCode = giftCode\n        self.isWinner = isWinner\n        self.wasRefunded = wasRefunded\n        self.winnerCount = winnerCount\n        self.wonStarCount = wonStarCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiveawayParameters.swift",
    "content": "//\n//  GiveawayParameters.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes parameters of a giveaway\npublic struct GiveawayParameters: Codable, Equatable, Hashable {\n\n    /// Identifiers of other supergroup or channel chats that must be subscribed by the users to be eligible for the giveaway. There can be up to getOption(\"giveaway_additional_chat_count_max\") additional chats\n    public let additionalChatIds: [Int64]\n\n    /// Identifier of the supergroup or channel chat, which will be automatically boosted by the winners of the giveaway for duration of the Telegram Premium subscription, or for the specified time. If the chat is a channel, then can_post_messages administrator right is required in the channel, otherwise, the user must be an administrator in the supergroup\n    public let boostedChatId: Int64\n\n    /// The list of two-letter ISO 3166-1 alpha-2 codes of countries, users from which will be eligible for the giveaway. If empty, then all users can participate in the giveaway. There can be up to getOption(\"giveaway_country_count_max\") chosen countries. Users with phone number that was bought at https://fragment.com can participate in any giveaway and the country code \"FT\" must not be specified in the list\n    public let countryCodes: [String]\n\n    /// True, if the list of winners of the giveaway will be available to everyone\n    public let hasPublicWinners: Bool\n\n    /// True, if only new members of the chats will be eligible for the giveaway\n    public let onlyNewMembers: Bool\n\n    /// Additional description of the giveaway prize; 0-128 characters\n    public let prizeDescription: String\n\n    /// Point in time (Unix timestamp) when the giveaway is expected to be performed; must be 60-getOption(\"giveaway_duration_max\") seconds in the future in scheduled giveaways\n    public let winnersSelectionDate: Int\n\n\n    public init(\n        additionalChatIds: [Int64],\n        boostedChatId: Int64,\n        countryCodes: [String],\n        hasPublicWinners: Bool,\n        onlyNewMembers: Bool,\n        prizeDescription: String,\n        winnersSelectionDate: Int\n    ) {\n        self.additionalChatIds = additionalChatIds\n        self.boostedChatId = boostedChatId\n        self.countryCodes = countryCodes\n        self.hasPublicWinners = hasPublicWinners\n        self.onlyNewMembers = onlyNewMembers\n        self.prizeDescription = prizeDescription\n        self.winnersSelectionDate = winnersSelectionDate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiveawayParticipantStatus.swift",
    "content": "//\n//  GiveawayParticipantStatus.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about status of a user in a giveaway\npublic indirect enum GiveawayParticipantStatus: Codable, Equatable, Hashable {\n\n    /// The user is eligible for the giveaway\n    case giveawayParticipantStatusEligible\n\n    /// The user participates in the giveaway\n    case giveawayParticipantStatusParticipating\n\n    /// The user can't participate in the giveaway, because they have already been member of the chat\n    case giveawayParticipantStatusAlreadyWasMember(GiveawayParticipantStatusAlreadyWasMember)\n\n    /// The user can't participate in the giveaway, because they are an administrator in one of the chats that created the giveaway\n    case giveawayParticipantStatusAdministrator(GiveawayParticipantStatusAdministrator)\n\n    /// The user can't participate in the giveaway, because they phone number is from a disallowed country\n    case giveawayParticipantStatusDisallowedCountry(GiveawayParticipantStatusDisallowedCountry)\n\n\n    private enum Kind: String, Codable {\n        case giveawayParticipantStatusEligible\n        case giveawayParticipantStatusParticipating\n        case giveawayParticipantStatusAlreadyWasMember\n        case giveawayParticipantStatusAdministrator\n        case giveawayParticipantStatusDisallowedCountry\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .giveawayParticipantStatusEligible:\n            self = .giveawayParticipantStatusEligible\n        case .giveawayParticipantStatusParticipating:\n            self = .giveawayParticipantStatusParticipating\n        case .giveawayParticipantStatusAlreadyWasMember:\n            let value = try GiveawayParticipantStatusAlreadyWasMember(from: decoder)\n            self = .giveawayParticipantStatusAlreadyWasMember(value)\n        case .giveawayParticipantStatusAdministrator:\n            let value = try GiveawayParticipantStatusAdministrator(from: decoder)\n            self = .giveawayParticipantStatusAdministrator(value)\n        case .giveawayParticipantStatusDisallowedCountry:\n            let value = try GiveawayParticipantStatusDisallowedCountry(from: decoder)\n            self = .giveawayParticipantStatusDisallowedCountry(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .giveawayParticipantStatusEligible:\n            try container.encode(Kind.giveawayParticipantStatusEligible, forKey: .type)\n        case .giveawayParticipantStatusParticipating:\n            try container.encode(Kind.giveawayParticipantStatusParticipating, forKey: .type)\n        case .giveawayParticipantStatusAlreadyWasMember(let value):\n            try container.encode(Kind.giveawayParticipantStatusAlreadyWasMember, forKey: .type)\n            try value.encode(to: encoder)\n        case .giveawayParticipantStatusAdministrator(let value):\n            try container.encode(Kind.giveawayParticipantStatusAdministrator, forKey: .type)\n            try value.encode(to: encoder)\n        case .giveawayParticipantStatusDisallowedCountry(let value):\n            try container.encode(Kind.giveawayParticipantStatusDisallowedCountry, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The user can't participate in the giveaway, because they have already been member of the chat\npublic struct GiveawayParticipantStatusAlreadyWasMember: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the user joined the chat\n    public let joinedChatDate: Int\n\n\n    public init(joinedChatDate: Int) {\n        self.joinedChatDate = joinedChatDate\n    }\n}\n\n/// The user can't participate in the giveaway, because they are an administrator in one of the chats that created the giveaway\npublic struct GiveawayParticipantStatusAdministrator: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat administered by the user\n    public let chatId: Int64\n\n\n    public init(chatId: Int64) {\n        self.chatId = chatId\n    }\n}\n\n/// The user can't participate in the giveaway, because they phone number is from a disallowed country\npublic struct GiveawayParticipantStatusDisallowedCountry: Codable, Equatable, Hashable {\n\n    /// A two-letter ISO 3166-1 alpha-2 country code of the user's country\n    public let userCountryCode: String\n\n\n    public init(userCountryCode: String) {\n        self.userCountryCode = userCountryCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GiveawayPrize.swift",
    "content": "//\n//  GiveawayPrize.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a giveaway prize\npublic indirect enum GiveawayPrize: Codable, Equatable, Hashable {\n\n    /// The giveaway sends Telegram Premium subscriptions to the winners\n    case giveawayPrizePremium(GiveawayPrizePremium)\n\n    /// The giveaway sends Telegram Stars to the winners\n    case giveawayPrizeStars(GiveawayPrizeStars)\n\n\n    private enum Kind: String, Codable {\n        case giveawayPrizePremium\n        case giveawayPrizeStars\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .giveawayPrizePremium:\n            let value = try GiveawayPrizePremium(from: decoder)\n            self = .giveawayPrizePremium(value)\n        case .giveawayPrizeStars:\n            let value = try GiveawayPrizeStars(from: decoder)\n            self = .giveawayPrizeStars(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .giveawayPrizePremium(let value):\n            try container.encode(Kind.giveawayPrizePremium, forKey: .type)\n            try value.encode(to: encoder)\n        case .giveawayPrizeStars(let value):\n            try container.encode(Kind.giveawayPrizeStars, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The giveaway sends Telegram Premium subscriptions to the winners\npublic struct GiveawayPrizePremium: Codable, Equatable, Hashable {\n\n    /// Number of months the Telegram Premium subscription will be active after code activation\n    public let monthCount: Int\n\n\n    public init(monthCount: Int) {\n        self.monthCount = monthCount\n    }\n}\n\n/// The giveaway sends Telegram Stars to the winners\npublic struct GiveawayPrizeStars: Codable, Equatable, Hashable {\n\n    /// Number of Telegram Stars that will be shared by all winners\n    public let starCount: Int64\n\n\n    public init(starCount: Int64) {\n        self.starCount = starCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GroupCall.swift",
    "content": "//\n//  GroupCall.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a group call\npublic struct GroupCall: Codable, Equatable, Hashable, Identifiable {\n\n    /// True, if sending of messages is allowed in the group call\n    public let areMessagesAllowed: Bool\n\n    /// True, if the current user can manage the group call; for video chats and live stories only\n    public let canBeManaged: Bool\n\n    /// True, if the user can delete messages in the group call\n    public let canDeleteMessages: Bool\n\n    /// True, if the current user can broadcast video or share screen\n    public let canEnableVideo: Bool\n\n    /// True, if the current user can send messages to the group call\n    public let canSendMessages: Bool\n\n    /// True, if the current user can enable or disable sending of messages in the group call\n    public let canToggleAreMessagesAllowed: Bool\n\n    /// True, if the current user can enable or disable mute_new_participants setting; for video chats only\n    public let canToggleMuteNewParticipants: Bool\n\n    /// Call duration, in seconds; for ended calls only\n    public let duration: Int\n\n    /// True, if the group call is scheduled and the current user will receive a notification when the group call starts; for video chats only\n    public let enabledStartNotification: Bool\n\n    /// True, if group call participants, which are muted, aren't returned in participant list; for video chats only\n    public let hasHiddenListeners: Bool\n\n    /// Group call identifier\n    public let id: Int\n\n    /// Invite link for the group call; for group calls that aren't bound to a chat. For video chats call getVideoChatInviteLink to get the link. For live stories in chats with username call getInternalLink with internalLinkTypeLiveStory\n    public let inviteLink: String\n\n    /// True, if the call is active\n    public let isActive: Bool\n\n    /// True, if the call is joined\n    public let isJoined: Bool\n\n    /// True, if the call is a live story of a chat\n    public let isLiveStory: Bool\n\n    /// True, if the current user's video is enabled\n    public let isMyVideoEnabled: Bool\n\n    /// True, if the current user's video is paused\n    public let isMyVideoPaused: Bool\n\n    /// True, if the user is the owner of the call and can end the call, change volume level of other users, or ban users there; for group calls that aren't bound to a chat\n    public let isOwned: Bool\n\n    /// True, if the call is an RTMP stream instead of an ordinary video chat; for video chats and live stories only\n    public let isRtmpStream: Bool\n\n    /// True, if the call is bound to a chat\n    public let isVideoChat: Bool\n\n    /// True, if a video file is being recorded for the call\n    public let isVideoRecorded: Bool\n\n    /// True, if all group call participants are loaded\n    public let loadedAllParticipants: Bool\n\n    /// Message sender chosen to send messages to the group call; for live stories only; may be null if the call isn't a live story\n    public let messageSenderId: MessageSender?\n\n    /// True, if only group call administrators can unmute new participants; for video chats only\n    public let muteNewParticipants: Bool\n\n    /// True, if user was kicked from the call because of network loss and the call needs to be rejoined\n    public let needRejoin: Bool\n\n    /// The minimum number of Telegram Stars that must be paid by general participant for each sent message to the call; for live stories only\n    public let paidMessageStarCount: Int64\n\n    /// Number of participants in the group call\n    public let participantCount: Int\n\n    /// At most 3 recently speaking users in the group call\n    public let recentSpeakers: [GroupCallRecentSpeaker]\n\n    /// Duration of the ongoing group call recording, in seconds; 0 if none. An updateGroupCall update is not triggered when value of this field changes, but the same recording goes on\n    public let recordDuration: Int\n\n    /// Point in time (Unix timestamp) when the group call is expected to be started by an administrator; 0 if it is already active or was ended; for video chats only\n    public let scheduledStartDate: Int\n\n    /// Group call title; for video chats only\n    public let title: String\n\n    /// Persistent unique group call identifier\n    public let uniqueId: TdInt64\n\n\n    public init(\n        areMessagesAllowed: Bool,\n        canBeManaged: Bool,\n        canDeleteMessages: Bool,\n        canEnableVideo: Bool,\n        canSendMessages: Bool,\n        canToggleAreMessagesAllowed: Bool,\n        canToggleMuteNewParticipants: Bool,\n        duration: Int,\n        enabledStartNotification: Bool,\n        hasHiddenListeners: Bool,\n        id: Int,\n        inviteLink: String,\n        isActive: Bool,\n        isJoined: Bool,\n        isLiveStory: Bool,\n        isMyVideoEnabled: Bool,\n        isMyVideoPaused: Bool,\n        isOwned: Bool,\n        isRtmpStream: Bool,\n        isVideoChat: Bool,\n        isVideoRecorded: Bool,\n        loadedAllParticipants: Bool,\n        messageSenderId: MessageSender?,\n        muteNewParticipants: Bool,\n        needRejoin: Bool,\n        paidMessageStarCount: Int64,\n        participantCount: Int,\n        recentSpeakers: [GroupCallRecentSpeaker],\n        recordDuration: Int,\n        scheduledStartDate: Int,\n        title: String,\n        uniqueId: TdInt64\n    ) {\n        self.areMessagesAllowed = areMessagesAllowed\n        self.canBeManaged = canBeManaged\n        self.canDeleteMessages = canDeleteMessages\n        self.canEnableVideo = canEnableVideo\n        self.canSendMessages = canSendMessages\n        self.canToggleAreMessagesAllowed = canToggleAreMessagesAllowed\n        self.canToggleMuteNewParticipants = canToggleMuteNewParticipants\n        self.duration = duration\n        self.enabledStartNotification = enabledStartNotification\n        self.hasHiddenListeners = hasHiddenListeners\n        self.id = id\n        self.inviteLink = inviteLink\n        self.isActive = isActive\n        self.isJoined = isJoined\n        self.isLiveStory = isLiveStory\n        self.isMyVideoEnabled = isMyVideoEnabled\n        self.isMyVideoPaused = isMyVideoPaused\n        self.isOwned = isOwned\n        self.isRtmpStream = isRtmpStream\n        self.isVideoChat = isVideoChat\n        self.isVideoRecorded = isVideoRecorded\n        self.loadedAllParticipants = loadedAllParticipants\n        self.messageSenderId = messageSenderId\n        self.muteNewParticipants = muteNewParticipants\n        self.needRejoin = needRejoin\n        self.paidMessageStarCount = paidMessageStarCount\n        self.participantCount = participantCount\n        self.recentSpeakers = recentSpeakers\n        self.recordDuration = recordDuration\n        self.scheduledStartDate = scheduledStartDate\n        self.title = title\n        self.uniqueId = uniqueId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GroupCallDataChannel.swift",
    "content": "//\n//  GroupCallDataChannel.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes data channel for a group call\npublic indirect enum GroupCallDataChannel: Codable, Equatable, Hashable {\n\n    /// The main data channel for audio and video data\n    case groupCallDataChannelMain\n\n    /// The data channel for screen sharing\n    case groupCallDataChannelScreenSharing\n\n\n    private enum Kind: String, Codable {\n        case groupCallDataChannelMain\n        case groupCallDataChannelScreenSharing\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .groupCallDataChannelMain:\n            self = .groupCallDataChannelMain\n        case .groupCallDataChannelScreenSharing:\n            self = .groupCallDataChannelScreenSharing\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .groupCallDataChannelMain:\n            try container.encode(Kind.groupCallDataChannelMain, forKey: .type)\n        case .groupCallDataChannelScreenSharing:\n            try container.encode(Kind.groupCallDataChannelScreenSharing, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GroupCallId.swift",
    "content": "//\n//  GroupCallId.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains the group call identifier\npublic struct GroupCallId: Codable, Equatable, Hashable, Identifiable {\n\n    /// Group call identifier\n    public let id: Int\n\n\n    public init(id: Int) {\n        self.id = id\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GroupCallInfo.swift",
    "content": "//\n//  GroupCallInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a just created or just joined group call\npublic struct GroupCallInfo: Codable, Equatable, Hashable {\n\n    /// Identifier of the group call\n    public let groupCallId: Int\n\n    /// Join response payload for tgcalls; empty if the call isn't joined\n    public let joinPayload: String\n\n\n    public init(\n        groupCallId: Int,\n        joinPayload: String\n    ) {\n        self.groupCallId = groupCallId\n        self.joinPayload = joinPayload\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GroupCallJoinParameters.swift",
    "content": "//\n//  GroupCallJoinParameters.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes parameters used to join a group call\npublic struct GroupCallJoinParameters: Codable, Equatable, Hashable {\n\n    /// Audio channel synchronization source identifier; received from tgcalls\n    public let audioSourceId: Int\n\n    /// Pass true to join the call with muted microphone\n    public let isMuted: Bool\n\n    /// Pass true if the user's video is enabled\n    public let isMyVideoEnabled: Bool\n\n    /// Group call join payload; received from tgcalls\n    public let payload: String\n\n\n    public init(\n        audioSourceId: Int,\n        isMuted: Bool,\n        isMyVideoEnabled: Bool,\n        payload: String\n    ) {\n        self.audioSourceId = audioSourceId\n        self.isMuted = isMuted\n        self.isMyVideoEnabled = isMyVideoEnabled\n        self.payload = payload\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GroupCallMessage.swift",
    "content": "//\n//  GroupCallMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a message sent in a group call\npublic struct GroupCallMessage: Codable, Equatable, Hashable {\n\n    /// True, if the message can be deleted by the current user; for live stories only\n    public let canBeDeleted: Bool\n\n    /// Point in time (Unix timestamp) when the message was sent\n    public let date: Int\n\n    /// True, if the message is sent by the owner of the call and must be treated as a message of the maximum level; for live stories only\n    public let isFromOwner: Bool\n\n    /// Unique message identifier within the group call\n    public let messageId: Int\n\n    /// The number of Telegram Stars that were paid to send the message; for live stories only\n    public let paidMessageStarCount: Int64\n\n    /// Identifier of the sender of the message\n    public let senderId: MessageSender\n\n    /// Text of the message. If empty, then the message is a paid reaction in a live story\n    public let text: FormattedText\n\n\n    public init(\n        canBeDeleted: Bool,\n        date: Int,\n        isFromOwner: Bool,\n        messageId: Int,\n        paidMessageStarCount: Int64,\n        senderId: MessageSender,\n        text: FormattedText\n    ) {\n        self.canBeDeleted = canBeDeleted\n        self.date = date\n        self.isFromOwner = isFromOwner\n        self.messageId = messageId\n        self.paidMessageStarCount = paidMessageStarCount\n        self.senderId = senderId\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GroupCallMessageLevel.swift",
    "content": "//\n//  GroupCallMessageLevel.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a level of features for a message sent in a live story group call\npublic struct GroupCallMessageLevel: Codable, Equatable, Hashable {\n\n    /// Background color for the message the RGB format\n    public let backgroundColor: Int\n\n    /// The first color used to show the message text in the RGB format\n    public let firstColor: Int\n\n    /// The maximum allowed number of custom emoji in the message text\n    public let maxCustomEmojiCount: Int\n\n    /// The maximum allowed length of the message text\n    public let maxTextLength: Int\n\n    /// The minimum number of Telegram Stars required to get features of the level\n    public let minStarCount: Int64\n\n    /// The amount of time the message of this level will be pinned, in seconds\n    public let pinDuration: Int\n\n    /// The second color used to show the message text in the RGB format\n    public let secondColor: Int\n\n\n    public init(\n        backgroundColor: Int,\n        firstColor: Int,\n        maxCustomEmojiCount: Int,\n        maxTextLength: Int,\n        minStarCount: Int64,\n        pinDuration: Int,\n        secondColor: Int\n    ) {\n        self.backgroundColor = backgroundColor\n        self.firstColor = firstColor\n        self.maxCustomEmojiCount = maxCustomEmojiCount\n        self.maxTextLength = maxTextLength\n        self.minStarCount = minStarCount\n        self.pinDuration = pinDuration\n        self.secondColor = secondColor\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GroupCallParticipant.swift",
    "content": "//\n//  GroupCallParticipant.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a group call participant\npublic struct GroupCallParticipant: Codable, Equatable, Hashable {\n\n    /// User's audio channel synchronization source identifier\n    public let audioSourceId: Int\n\n    /// The participant user's bio or the participant chat's description\n    public let bio: String\n\n    /// True, if the current user can mute the participant for all other group call participants\n    public let canBeMutedForAllUsers: Bool\n\n    /// True, if the current user can mute the participant only for self\n    public let canBeMutedForCurrentUser: Bool\n\n    /// True, if the current user can allow the participant to unmute themselves or unmute the participant (if the participant is the current user)\n    public let canBeUnmutedForAllUsers: Bool\n\n    /// True, if the current user can unmute the participant for self\n    public let canBeUnmutedForCurrentUser: Bool\n\n    /// True, if the participant is muted for all users, but can unmute themselves\n    public let canUnmuteSelf: Bool\n\n    /// True, if the participant is the current user\n    public let isCurrentUser: Bool\n\n    /// True, if the participant hand is raised\n    public let isHandRaised: Bool\n\n    /// True, if the participant is muted for all users\n    public let isMutedForAllUsers: Bool\n\n    /// True, if the participant is muted for the current user\n    public let isMutedForCurrentUser: Bool\n\n    /// True, if the participant is speaking as set by setGroupCallParticipantIsSpeaking\n    public let isSpeaking: Bool\n\n    /// User's order in the group call participant list. Orders must be compared lexicographically. The bigger is order, the higher is user in the list. If order is empty, the user must be removed from the participant list\n    public let order: String\n\n    /// Identifier of the group call participant\n    public let participantId: MessageSender\n\n    /// User's screen sharing audio channel synchronization source identifier\n    public let screenSharingAudioSourceId: Int\n\n    /// Information about user's screen sharing video channel; may be null if there is no active screen sharing video\n    public let screenSharingVideoInfo: GroupCallParticipantVideoInfo?\n\n    /// Information about user's video channel; may be null if there is no active video\n    public let videoInfo: GroupCallParticipantVideoInfo?\n\n    /// Participant's volume level; 1-20000 in hundreds of percents\n    public let volumeLevel: Int\n\n\n    public init(\n        audioSourceId: Int,\n        bio: String,\n        canBeMutedForAllUsers: Bool,\n        canBeMutedForCurrentUser: Bool,\n        canBeUnmutedForAllUsers: Bool,\n        canBeUnmutedForCurrentUser: Bool,\n        canUnmuteSelf: Bool,\n        isCurrentUser: Bool,\n        isHandRaised: Bool,\n        isMutedForAllUsers: Bool,\n        isMutedForCurrentUser: Bool,\n        isSpeaking: Bool,\n        order: String,\n        participantId: MessageSender,\n        screenSharingAudioSourceId: Int,\n        screenSharingVideoInfo: GroupCallParticipantVideoInfo?,\n        videoInfo: GroupCallParticipantVideoInfo?,\n        volumeLevel: Int\n    ) {\n        self.audioSourceId = audioSourceId\n        self.bio = bio\n        self.canBeMutedForAllUsers = canBeMutedForAllUsers\n        self.canBeMutedForCurrentUser = canBeMutedForCurrentUser\n        self.canBeUnmutedForAllUsers = canBeUnmutedForAllUsers\n        self.canBeUnmutedForCurrentUser = canBeUnmutedForCurrentUser\n        self.canUnmuteSelf = canUnmuteSelf\n        self.isCurrentUser = isCurrentUser\n        self.isHandRaised = isHandRaised\n        self.isMutedForAllUsers = isMutedForAllUsers\n        self.isMutedForCurrentUser = isMutedForCurrentUser\n        self.isSpeaking = isSpeaking\n        self.order = order\n        self.participantId = participantId\n        self.screenSharingAudioSourceId = screenSharingAudioSourceId\n        self.screenSharingVideoInfo = screenSharingVideoInfo\n        self.videoInfo = videoInfo\n        self.volumeLevel = volumeLevel\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GroupCallParticipantVideoInfo.swift",
    "content": "//\n//  GroupCallParticipantVideoInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a group call participant's video channel\npublic struct GroupCallParticipantVideoInfo: Codable, Equatable, Hashable {\n\n    /// Video channel endpoint identifier\n    public let endpointId: String\n\n    /// True, if the video is paused. This flag needs to be ignored, if new video frames are received\n    public let isPaused: Bool\n\n    /// List of synchronization source groups of the video\n    public let sourceGroups: [GroupCallVideoSourceGroup]\n\n\n    public init(\n        endpointId: String,\n        isPaused: Bool,\n        sourceGroups: [GroupCallVideoSourceGroup]\n    ) {\n        self.endpointId = endpointId\n        self.isPaused = isPaused\n        self.sourceGroups = sourceGroups\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GroupCallParticipants.swift",
    "content": "//\n//  GroupCallParticipants.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains identifiers of group call participants\npublic struct GroupCallParticipants: Codable, Equatable, Hashable {\n\n    /// Identifiers of the participants\n    public let participantIds: [MessageSender]\n\n    /// Total number of group call participants\n    public let totalCount: Int\n\n\n    public init(\n        participantIds: [MessageSender],\n        totalCount: Int\n    ) {\n        self.participantIds = participantIds\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GroupCallRecentSpeaker.swift",
    "content": "//\n//  GroupCallRecentSpeaker.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a recently speaking participant in a group call\npublic struct GroupCallRecentSpeaker: Codable, Equatable, Hashable {\n\n    /// True, is the user has spoken recently\n    public let isSpeaking: Bool\n\n    /// Group call participant identifier\n    public let participantId: MessageSender\n\n\n    public init(\n        isSpeaking: Bool,\n        participantId: MessageSender\n    ) {\n        self.isSpeaking = isSpeaking\n        self.participantId = participantId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GroupCallStream.swift",
    "content": "//\n//  GroupCallStream.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an available stream in a video chat or a live story\npublic struct GroupCallStream: Codable, Equatable, Hashable {\n\n    /// Identifier of an audio/video channel\n    public let channelId: Int\n\n    /// Scale of segment durations in the stream. The duration is 1000/(2**scale) milliseconds\n    public let scale: Int\n\n    /// Point in time when the stream currently ends; Unix timestamp in milliseconds\n    public let timeOffset: Int64\n\n\n    public init(\n        channelId: Int,\n        scale: Int,\n        timeOffset: Int64\n    ) {\n        self.channelId = channelId\n        self.scale = scale\n        self.timeOffset = timeOffset\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GroupCallStreams.swift",
    "content": "//\n//  GroupCallStreams.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of group call streams\npublic struct GroupCallStreams: Codable, Equatable, Hashable {\n\n    /// A list of group call streams\n    public let streams: [GroupCallStream]\n\n\n    public init(streams: [GroupCallStream]) {\n        self.streams = streams\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GroupCallVideoQuality.swift",
    "content": "//\n//  GroupCallVideoQuality.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the quality of a group call video\npublic indirect enum GroupCallVideoQuality: Codable, Equatable, Hashable {\n\n    /// The worst available video quality\n    case groupCallVideoQualityThumbnail\n\n    /// The medium video quality\n    case groupCallVideoQualityMedium\n\n    /// The best available video quality\n    case groupCallVideoQualityFull\n\n\n    private enum Kind: String, Codable {\n        case groupCallVideoQualityThumbnail\n        case groupCallVideoQualityMedium\n        case groupCallVideoQualityFull\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .groupCallVideoQualityThumbnail:\n            self = .groupCallVideoQualityThumbnail\n        case .groupCallVideoQualityMedium:\n            self = .groupCallVideoQualityMedium\n        case .groupCallVideoQualityFull:\n            self = .groupCallVideoQualityFull\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .groupCallVideoQualityThumbnail:\n            try container.encode(Kind.groupCallVideoQualityThumbnail, forKey: .type)\n        case .groupCallVideoQualityMedium:\n            try container.encode(Kind.groupCallVideoQualityMedium, forKey: .type)\n        case .groupCallVideoQualityFull:\n            try container.encode(Kind.groupCallVideoQualityFull, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/GroupCallVideoSourceGroup.swift",
    "content": "//\n//  GroupCallVideoSourceGroup.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a group of video synchronization source identifiers\npublic struct GroupCallVideoSourceGroup: Codable, Equatable, Hashable {\n\n    /// The semantics of sources, one of \"SIM\" or \"FID\"\n    public let semantics: String\n\n    /// The list of synchronization source identifiers\n    public let sourceIds: [Int]\n\n\n    public init(\n        semantics: String,\n        sourceIds: [Int]\n    ) {\n        self.semantics = semantics\n        self.sourceIds = sourceIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Hashtags.swift",
    "content": "//\n//  Hashtags.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of hashtags\npublic struct Hashtags: Codable, Equatable, Hashable {\n\n    /// A list of hashtags\n    public let hashtags: [String]\n\n\n    public init(hashtags: [String]) {\n        self.hashtags = hashtags\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/HideContactCloseBirthdays.swift",
    "content": "//\n//  HideContactCloseBirthdays.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Hides the list of contacts that have close birthdays for 24 hours\npublic struct HideContactCloseBirthdays: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/HideSuggestedAction.swift",
    "content": "//\n//  HideSuggestedAction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Hides a suggested action\npublic struct HideSuggestedAction: Codable, Equatable, Hashable {\n\n    /// Suggested action to hide\n    public let action: SuggestedAction?\n\n\n    public init(action: SuggestedAction?) {\n        self.action = action\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/HttpUrl.swift",
    "content": "//\n//  HttpUrl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains an HTTP URL\npublic struct HttpUrl: Codable, Equatable, Hashable {\n\n    /// The URL\n    public let url: String\n\n\n    public init(url: String) {\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/IdentityDocument.swift",
    "content": "//\n//  IdentityDocument.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// An identity document\npublic struct IdentityDocument: Codable, Equatable, Hashable {\n\n    /// Document expiration date; may be null if not applicable\n    public let expirationDate: Date?\n\n    /// Front side of the document\n    public let frontSide: DatedFile\n\n    /// Document number; 1-24 characters\n    public let number: String\n\n    /// Reverse side of the document; only for driver license and identity card; may be null\n    public let reverseSide: DatedFile?\n\n    /// Selfie with the document; may be null\n    public let selfie: DatedFile?\n\n    /// List of files containing a certified English translation of the document\n    public let translation: [DatedFile]\n\n\n    public init(\n        expirationDate: Date?,\n        frontSide: DatedFile,\n        number: String,\n        reverseSide: DatedFile?,\n        selfie: DatedFile?,\n        translation: [DatedFile]\n    ) {\n        self.expirationDate = expirationDate\n        self.frontSide = frontSide\n        self.number = number\n        self.reverseSide = reverseSide\n        self.selfie = selfie\n        self.translation = translation\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ImportContacts.swift",
    "content": "//\n//  ImportContacts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds new contacts or edits existing contacts by their phone numbers; contacts' user identifiers are ignored\npublic struct ImportContacts: Codable, Equatable, Hashable {\n\n    /// The list of contacts to import or edit\n    public let contacts: [ImportedContact]?\n\n\n    public init(contacts: [ImportedContact]?) {\n        self.contacts = contacts\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ImportMessages.swift",
    "content": "//\n//  ImportMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Imports messages exported from another application\npublic struct ImportMessages: Codable, Equatable, Hashable {\n\n    /// Files used in the imported messages. Only inputFileLocal and inputFileGenerated are supported. The files must not be previously uploaded\n    public let attachedFiles: [InputFile]?\n\n    /// Identifier of a chat to which the messages will be imported. It must be an identifier of a private chat with a mutual contact or an identifier of a supergroup chat with can_change_info member right\n    public let chatId: Int64?\n\n    /// File with messages to import. Only inputFileLocal and inputFileGenerated are supported. The file must not be previously uploaded\n    public let messageFile: InputFile?\n\n\n    public init(\n        attachedFiles: [InputFile]?,\n        chatId: Int64?,\n        messageFile: InputFile?\n    ) {\n        self.attachedFiles = attachedFiles\n        self.chatId = chatId\n        self.messageFile = messageFile\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ImportedContact.swift",
    "content": "//\n//  ImportedContact.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a contact to import\npublic struct ImportedContact: Codable, Equatable, Hashable {\n\n    /// First name of the user; 1-64 characters\n    public let firstName: String\n\n    /// Last name of the user; 0-64 characters\n    public let lastName: String\n\n    /// Note to add about the user; 0-getOption(\"user_note_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed; pass null to keep the current user's note\n    public let note: FormattedText?\n\n    /// Phone number of the user\n    public let phoneNumber: String\n\n\n    public init(\n        firstName: String,\n        lastName: String,\n        note: FormattedText?,\n        phoneNumber: String\n    ) {\n        self.firstName = firstName\n        self.lastName = lastName\n        self.note = note\n        self.phoneNumber = phoneNumber\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ImportedContacts.swift",
    "content": "//\n//  ImportedContacts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents the result of an importContacts request\npublic struct ImportedContacts: Codable, Equatable, Hashable {\n\n    /// The number of users that imported the corresponding contact; 0 for already registered users or if unavailable\n    public let importerCount: [Int]\n\n    /// User identifiers of the imported contacts in the same order as they were specified in the request; 0 if the contact is not yet a registered user\n    public let userIds: [Int64]\n\n\n    public init(\n        importerCount: [Int],\n        userIds: [Int64]\n    ) {\n        self.importerCount = importerCount\n        self.userIds = userIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/IncreaseGiftAuctionBid.swift",
    "content": "//\n//  IncreaseGiftAuctionBid.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Increases a bid for an auction gift without changing gift text and receiver\npublic struct IncreaseGiftAuctionBid: Codable, Equatable, Hashable {\n\n    /// Identifier of the gift to put the bid on\n    public let giftId: TdInt64?\n\n    /// The number of Telegram Stars to put in the bid\n    public let starCount: Int64?\n\n\n    public init(\n        giftId: TdInt64?,\n        starCount: Int64?\n    ) {\n        self.giftId = giftId\n        self.starCount = starCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InlineKeyboardButton.swift",
    "content": "//\n//  InlineKeyboardButton.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a single button in an inline keyboard\npublic struct InlineKeyboardButton: Codable, Equatable, Hashable {\n\n    /// Identifier of the custom emoji that must be shown on the button; 0 if none\n    public let iconCustomEmojiId: TdInt64\n\n    /// Style of the button\n    public let style: ButtonStyle\n\n    /// Text of the button\n    public let text: String\n\n    /// Type of the button\n    public let type: InlineKeyboardButtonType\n\n\n    public init(\n        iconCustomEmojiId: TdInt64,\n        style: ButtonStyle,\n        text: String,\n        type: InlineKeyboardButtonType\n    ) {\n        self.iconCustomEmojiId = iconCustomEmojiId\n        self.style = style\n        self.text = text\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InlineKeyboardButtonType.swift",
    "content": "//\n//  InlineKeyboardButtonType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the type of inline keyboard button\npublic indirect enum InlineKeyboardButtonType: Codable, Equatable, Hashable {\n\n    /// A button that opens a specified URL\n    case inlineKeyboardButtonTypeUrl(InlineKeyboardButtonTypeUrl)\n\n    /// A button that opens a specified URL and automatically authorize the current user by calling getLoginUrlInfo\n    case inlineKeyboardButtonTypeLoginUrl(InlineKeyboardButtonTypeLoginUrl)\n\n    /// A button that opens a Web App by calling openWebApp\n    case inlineKeyboardButtonTypeWebApp(InlineKeyboardButtonTypeWebApp)\n\n    /// A button that sends a callback query to a bot\n    case inlineKeyboardButtonTypeCallback(InlineKeyboardButtonTypeCallback)\n\n    /// A button that asks for the 2-step verification password of the current user and then sends a callback query to a bot\n    case inlineKeyboardButtonTypeCallbackWithPassword(InlineKeyboardButtonTypeCallbackWithPassword)\n\n    /// A button with a game that sends a callback query to a bot. This button must be in the first column and row of the keyboard and can be attached only to a message with content of the type messageGame\n    case inlineKeyboardButtonTypeCallbackGame\n\n    /// A button that forces an inline query to the bot to be inserted in the input field\n    case inlineKeyboardButtonTypeSwitchInline(InlineKeyboardButtonTypeSwitchInline)\n\n    /// A button to buy something. This button must be in the first column and row of the keyboard and can be attached only to a message with content of the type messageInvoice\n    case inlineKeyboardButtonTypeBuy\n\n    /// A button with a user reference to be handled in the same way as textEntityTypeMentionName entities\n    case inlineKeyboardButtonTypeUser(InlineKeyboardButtonTypeUser)\n\n    /// A button that copies specified text to clipboard\n    case inlineKeyboardButtonTypeCopyText(InlineKeyboardButtonTypeCopyText)\n\n\n    private enum Kind: String, Codable {\n        case inlineKeyboardButtonTypeUrl\n        case inlineKeyboardButtonTypeLoginUrl\n        case inlineKeyboardButtonTypeWebApp\n        case inlineKeyboardButtonTypeCallback\n        case inlineKeyboardButtonTypeCallbackWithPassword\n        case inlineKeyboardButtonTypeCallbackGame\n        case inlineKeyboardButtonTypeSwitchInline\n        case inlineKeyboardButtonTypeBuy\n        case inlineKeyboardButtonTypeUser\n        case inlineKeyboardButtonTypeCopyText\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inlineKeyboardButtonTypeUrl:\n            let value = try InlineKeyboardButtonTypeUrl(from: decoder)\n            self = .inlineKeyboardButtonTypeUrl(value)\n        case .inlineKeyboardButtonTypeLoginUrl:\n            let value = try InlineKeyboardButtonTypeLoginUrl(from: decoder)\n            self = .inlineKeyboardButtonTypeLoginUrl(value)\n        case .inlineKeyboardButtonTypeWebApp:\n            let value = try InlineKeyboardButtonTypeWebApp(from: decoder)\n            self = .inlineKeyboardButtonTypeWebApp(value)\n        case .inlineKeyboardButtonTypeCallback:\n            let value = try InlineKeyboardButtonTypeCallback(from: decoder)\n            self = .inlineKeyboardButtonTypeCallback(value)\n        case .inlineKeyboardButtonTypeCallbackWithPassword:\n            let value = try InlineKeyboardButtonTypeCallbackWithPassword(from: decoder)\n            self = .inlineKeyboardButtonTypeCallbackWithPassword(value)\n        case .inlineKeyboardButtonTypeCallbackGame:\n            self = .inlineKeyboardButtonTypeCallbackGame\n        case .inlineKeyboardButtonTypeSwitchInline:\n            let value = try InlineKeyboardButtonTypeSwitchInline(from: decoder)\n            self = .inlineKeyboardButtonTypeSwitchInline(value)\n        case .inlineKeyboardButtonTypeBuy:\n            self = .inlineKeyboardButtonTypeBuy\n        case .inlineKeyboardButtonTypeUser:\n            let value = try InlineKeyboardButtonTypeUser(from: decoder)\n            self = .inlineKeyboardButtonTypeUser(value)\n        case .inlineKeyboardButtonTypeCopyText:\n            let value = try InlineKeyboardButtonTypeCopyText(from: decoder)\n            self = .inlineKeyboardButtonTypeCopyText(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inlineKeyboardButtonTypeUrl(let value):\n            try container.encode(Kind.inlineKeyboardButtonTypeUrl, forKey: .type)\n            try value.encode(to: encoder)\n        case .inlineKeyboardButtonTypeLoginUrl(let value):\n            try container.encode(Kind.inlineKeyboardButtonTypeLoginUrl, forKey: .type)\n            try value.encode(to: encoder)\n        case .inlineKeyboardButtonTypeWebApp(let value):\n            try container.encode(Kind.inlineKeyboardButtonTypeWebApp, forKey: .type)\n            try value.encode(to: encoder)\n        case .inlineKeyboardButtonTypeCallback(let value):\n            try container.encode(Kind.inlineKeyboardButtonTypeCallback, forKey: .type)\n            try value.encode(to: encoder)\n        case .inlineKeyboardButtonTypeCallbackWithPassword(let value):\n            try container.encode(Kind.inlineKeyboardButtonTypeCallbackWithPassword, forKey: .type)\n            try value.encode(to: encoder)\n        case .inlineKeyboardButtonTypeCallbackGame:\n            try container.encode(Kind.inlineKeyboardButtonTypeCallbackGame, forKey: .type)\n        case .inlineKeyboardButtonTypeSwitchInline(let value):\n            try container.encode(Kind.inlineKeyboardButtonTypeSwitchInline, forKey: .type)\n            try value.encode(to: encoder)\n        case .inlineKeyboardButtonTypeBuy:\n            try container.encode(Kind.inlineKeyboardButtonTypeBuy, forKey: .type)\n        case .inlineKeyboardButtonTypeUser(let value):\n            try container.encode(Kind.inlineKeyboardButtonTypeUser, forKey: .type)\n            try value.encode(to: encoder)\n        case .inlineKeyboardButtonTypeCopyText(let value):\n            try container.encode(Kind.inlineKeyboardButtonTypeCopyText, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A button that opens a specified URL\npublic struct InlineKeyboardButtonTypeUrl: Codable, Equatable, Hashable {\n\n    /// HTTP or tg:// URL to open. If the link is of the type internalLinkTypeWebApp, then the button must be marked as a Web App button\n    public let url: String\n\n\n    public init(url: String) {\n        self.url = url\n    }\n}\n\n/// A button that opens a specified URL and automatically authorize the current user by calling getLoginUrlInfo\npublic struct InlineKeyboardButtonTypeLoginUrl: Codable, Equatable, Hashable, Identifiable {\n\n    /// If non-empty, new text of the button in forwarded messages\n    public let forwardText: String\n\n    /// Unique button identifier\n    public let id: Int64\n\n    /// An HTTP URL to pass to getLoginUrlInfo\n    public let url: String\n\n\n    public init(\n        forwardText: String,\n        id: Int64,\n        url: String\n    ) {\n        self.forwardText = forwardText\n        self.id = id\n        self.url = url\n    }\n}\n\n/// A button that opens a Web App by calling openWebApp\npublic struct InlineKeyboardButtonTypeWebApp: Codable, Equatable, Hashable {\n\n    /// An HTTP URL to pass to openWebApp\n    public let url: String\n\n\n    public init(url: String) {\n        self.url = url\n    }\n}\n\n/// A button that sends a callback query to a bot\npublic struct InlineKeyboardButtonTypeCallback: Codable, Equatable, Hashable {\n\n    /// Data to be sent to the bot via a callback query\n    public let data: Data\n\n\n    public init(data: Data) {\n        self.data = data\n    }\n}\n\n/// A button that asks for the 2-step verification password of the current user and then sends a callback query to a bot\npublic struct InlineKeyboardButtonTypeCallbackWithPassword: Codable, Equatable, Hashable {\n\n    /// Data to be sent to the bot via a callback query\n    public let data: Data\n\n\n    public init(data: Data) {\n        self.data = data\n    }\n}\n\n/// A button that forces an inline query to the bot to be inserted in the input field\npublic struct InlineKeyboardButtonTypeSwitchInline: Codable, Equatable, Hashable {\n\n    /// Inline query to be sent to the bot\n    public let query: String\n\n    /// Target chat from which to send the inline query\n    public let targetChat: TargetChat\n\n\n    public init(\n        query: String,\n        targetChat: TargetChat\n    ) {\n        self.query = query\n        self.targetChat = targetChat\n    }\n}\n\n/// A button with a user reference to be handled in the same way as textEntityTypeMentionName entities\npublic struct InlineKeyboardButtonTypeUser: Codable, Equatable, Hashable {\n\n    /// User identifier\n    public let userId: Int64\n\n\n    public init(userId: Int64) {\n        self.userId = userId\n    }\n}\n\n/// A button that copies specified text to clipboard\npublic struct InlineKeyboardButtonTypeCopyText: Codable, Equatable, Hashable {\n\n    /// The text to copy to clipboard\n    public let text: String\n\n\n    public init(text: String) {\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InlineMessageId.swift",
    "content": "//\n//  InlineMessageId.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains identifier of a sent guest message\npublic struct InlineMessageId: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique identifier for the message\n    public let id: String\n\n\n    public init(id: String) {\n        self.id = id\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InlineQueryResult.swift",
    "content": "//\n//  InlineQueryResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a single result of an inline query\npublic indirect enum InlineQueryResult: Codable, Equatable, Hashable {\n\n    /// Represents a link to an article or web page\n    case inlineQueryResultArticle(InlineQueryResultArticle)\n\n    /// Represents a user contact\n    case inlineQueryResultContact(InlineQueryResultContact)\n\n    /// Represents a point on the map\n    case inlineQueryResultLocation(InlineQueryResultLocation)\n\n    /// Represents information about a venue\n    case inlineQueryResultVenue(InlineQueryResultVenue)\n\n    /// Represents information about a game\n    case inlineQueryResultGame(InlineQueryResultGame)\n\n    /// Represents an animation file\n    case inlineQueryResultAnimation(InlineQueryResultAnimation)\n\n    /// Represents an audio file\n    case inlineQueryResultAudio(InlineQueryResultAudio)\n\n    /// Represents a document\n    case inlineQueryResultDocument(InlineQueryResultDocument)\n\n    /// Represents a photo\n    case inlineQueryResultPhoto(InlineQueryResultPhoto)\n\n    /// Represents a sticker\n    case inlineQueryResultSticker(InlineQueryResultSticker)\n\n    /// Represents a video\n    case inlineQueryResultVideo(InlineQueryResultVideo)\n\n    /// Represents a voice note\n    case inlineQueryResultVoiceNote(InlineQueryResultVoiceNote)\n\n\n    private enum Kind: String, Codable {\n        case inlineQueryResultArticle\n        case inlineQueryResultContact\n        case inlineQueryResultLocation\n        case inlineQueryResultVenue\n        case inlineQueryResultGame\n        case inlineQueryResultAnimation\n        case inlineQueryResultAudio\n        case inlineQueryResultDocument\n        case inlineQueryResultPhoto\n        case inlineQueryResultSticker\n        case inlineQueryResultVideo\n        case inlineQueryResultVoiceNote\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inlineQueryResultArticle:\n            let value = try InlineQueryResultArticle(from: decoder)\n            self = .inlineQueryResultArticle(value)\n        case .inlineQueryResultContact:\n            let value = try InlineQueryResultContact(from: decoder)\n            self = .inlineQueryResultContact(value)\n        case .inlineQueryResultLocation:\n            let value = try InlineQueryResultLocation(from: decoder)\n            self = .inlineQueryResultLocation(value)\n        case .inlineQueryResultVenue:\n            let value = try InlineQueryResultVenue(from: decoder)\n            self = .inlineQueryResultVenue(value)\n        case .inlineQueryResultGame:\n            let value = try InlineQueryResultGame(from: decoder)\n            self = .inlineQueryResultGame(value)\n        case .inlineQueryResultAnimation:\n            let value = try InlineQueryResultAnimation(from: decoder)\n            self = .inlineQueryResultAnimation(value)\n        case .inlineQueryResultAudio:\n            let value = try InlineQueryResultAudio(from: decoder)\n            self = .inlineQueryResultAudio(value)\n        case .inlineQueryResultDocument:\n            let value = try InlineQueryResultDocument(from: decoder)\n            self = .inlineQueryResultDocument(value)\n        case .inlineQueryResultPhoto:\n            let value = try InlineQueryResultPhoto(from: decoder)\n            self = .inlineQueryResultPhoto(value)\n        case .inlineQueryResultSticker:\n            let value = try InlineQueryResultSticker(from: decoder)\n            self = .inlineQueryResultSticker(value)\n        case .inlineQueryResultVideo:\n            let value = try InlineQueryResultVideo(from: decoder)\n            self = .inlineQueryResultVideo(value)\n        case .inlineQueryResultVoiceNote:\n            let value = try InlineQueryResultVoiceNote(from: decoder)\n            self = .inlineQueryResultVoiceNote(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inlineQueryResultArticle(let value):\n            try container.encode(Kind.inlineQueryResultArticle, forKey: .type)\n            try value.encode(to: encoder)\n        case .inlineQueryResultContact(let value):\n            try container.encode(Kind.inlineQueryResultContact, forKey: .type)\n            try value.encode(to: encoder)\n        case .inlineQueryResultLocation(let value):\n            try container.encode(Kind.inlineQueryResultLocation, forKey: .type)\n            try value.encode(to: encoder)\n        case .inlineQueryResultVenue(let value):\n            try container.encode(Kind.inlineQueryResultVenue, forKey: .type)\n            try value.encode(to: encoder)\n        case .inlineQueryResultGame(let value):\n            try container.encode(Kind.inlineQueryResultGame, forKey: .type)\n            try value.encode(to: encoder)\n        case .inlineQueryResultAnimation(let value):\n            try container.encode(Kind.inlineQueryResultAnimation, forKey: .type)\n            try value.encode(to: encoder)\n        case .inlineQueryResultAudio(let value):\n            try container.encode(Kind.inlineQueryResultAudio, forKey: .type)\n            try value.encode(to: encoder)\n        case .inlineQueryResultDocument(let value):\n            try container.encode(Kind.inlineQueryResultDocument, forKey: .type)\n            try value.encode(to: encoder)\n        case .inlineQueryResultPhoto(let value):\n            try container.encode(Kind.inlineQueryResultPhoto, forKey: .type)\n            try value.encode(to: encoder)\n        case .inlineQueryResultSticker(let value):\n            try container.encode(Kind.inlineQueryResultSticker, forKey: .type)\n            try value.encode(to: encoder)\n        case .inlineQueryResultVideo(let value):\n            try container.encode(Kind.inlineQueryResultVideo, forKey: .type)\n            try value.encode(to: encoder)\n        case .inlineQueryResultVoiceNote(let value):\n            try container.encode(Kind.inlineQueryResultVoiceNote, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Represents a link to an article or web page\npublic struct InlineQueryResultArticle: Codable, Equatable, Hashable, Identifiable {\n\n    public let description: String\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// Result thumbnail in JPEG format; may be null\n    public let thumbnail: Thumbnail?\n\n    /// Title of the result\n    public let title: String\n\n    /// URL of the result, if it exists\n    public let url: String\n\n\n    public init(\n        description: String,\n        id: String,\n        thumbnail: Thumbnail?,\n        title: String,\n        url: String\n    ) {\n        self.description = description\n        self.id = id\n        self.thumbnail = thumbnail\n        self.title = title\n        self.url = url\n    }\n}\n\n/// Represents a user contact\npublic struct InlineQueryResultContact: Codable, Equatable, Hashable, Identifiable {\n\n    /// A user contact\n    public let contact: Contact\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// Result thumbnail in JPEG format; may be null\n    public let thumbnail: Thumbnail?\n\n\n    public init(\n        contact: Contact,\n        id: String,\n        thumbnail: Thumbnail?\n    ) {\n        self.contact = contact\n        self.id = id\n        self.thumbnail = thumbnail\n    }\n}\n\n/// Represents a point on the map\npublic struct InlineQueryResultLocation: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// Location result\n    public let location: Location\n\n    /// Result thumbnail in JPEG format; may be null\n    public let thumbnail: Thumbnail?\n\n    /// Title of the result\n    public let title: String\n\n\n    public init(\n        id: String,\n        location: Location,\n        thumbnail: Thumbnail?,\n        title: String\n    ) {\n        self.id = id\n        self.location = location\n        self.thumbnail = thumbnail\n        self.title = title\n    }\n}\n\n/// Represents information about a venue\npublic struct InlineQueryResultVenue: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// Result thumbnail in JPEG format; may be null\n    public let thumbnail: Thumbnail?\n\n    /// Venue result\n    public let venue: Venue\n\n\n    public init(\n        id: String,\n        thumbnail: Thumbnail?,\n        venue: Venue\n    ) {\n        self.id = id\n        self.thumbnail = thumbnail\n        self.venue = venue\n    }\n}\n\n/// Represents information about a game\npublic struct InlineQueryResultGame: Codable, Equatable, Hashable, Identifiable {\n\n    /// Game result\n    public let game: Game\n\n    /// Unique identifier of the query result\n    public let id: String\n\n\n    public init(\n        game: Game,\n        id: String\n    ) {\n        self.game = game\n        self.id = id\n    }\n}\n\n/// Represents an animation file\npublic struct InlineQueryResultAnimation: Codable, Equatable, Hashable, Identifiable {\n\n    /// Animation file\n    public let animation: Animation\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// Animation title\n    public let title: String\n\n\n    public init(\n        animation: Animation,\n        id: String,\n        title: String\n    ) {\n        self.animation = animation\n        self.id = id\n        self.title = title\n    }\n}\n\n/// Represents an audio file\npublic struct InlineQueryResultAudio: Codable, Equatable, Hashable, Identifiable {\n\n    /// Audio file\n    public let audio: Audio\n\n    /// Unique identifier of the query result\n    public let id: String\n\n\n    public init(\n        audio: Audio,\n        id: String\n    ) {\n        self.audio = audio\n        self.id = id\n    }\n}\n\n/// Represents a document\npublic struct InlineQueryResultDocument: Codable, Equatable, Hashable, Identifiable {\n\n    public let description: String\n\n    /// Document\n    public let document: Document\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// Document title\n    public let title: String\n\n\n    public init(\n        description: String,\n        document: Document,\n        id: String,\n        title: String\n    ) {\n        self.description = description\n        self.document = document\n        self.id = id\n        self.title = title\n    }\n}\n\n/// Represents a photo\npublic struct InlineQueryResultPhoto: Codable, Equatable, Hashable, Identifiable {\n\n    public let description: String\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// Photo\n    public let photo: Photo\n\n    /// Title of the result, if known\n    public let title: String\n\n\n    public init(\n        description: String,\n        id: String,\n        photo: Photo,\n        title: String\n    ) {\n        self.description = description\n        self.id = id\n        self.photo = photo\n        self.title = title\n    }\n}\n\n/// Represents a sticker\npublic struct InlineQueryResultSticker: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// Sticker\n    public let sticker: Sticker\n\n\n    public init(\n        id: String,\n        sticker: Sticker\n    ) {\n        self.id = id\n        self.sticker = sticker\n    }\n}\n\n/// Represents a video\npublic struct InlineQueryResultVideo: Codable, Equatable, Hashable, Identifiable {\n\n    public let description: String\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// Title of the video\n    public let title: String\n\n    /// Video\n    public let video: Video\n\n\n    public init(\n        description: String,\n        id: String,\n        title: String,\n        video: Video\n    ) {\n        self.description = description\n        self.id = id\n        self.title = title\n        self.video = video\n    }\n}\n\n/// Represents a voice note\npublic struct InlineQueryResultVoiceNote: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// Title of the voice note\n    public let title: String\n\n    /// Voice note\n    public let voiceNote: VoiceNote\n\n\n    public init(\n        id: String,\n        title: String,\n        voiceNote: VoiceNote\n    ) {\n        self.id = id\n        self.title = title\n        self.voiceNote = voiceNote\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InlineQueryResults.swift",
    "content": "//\n//  InlineQueryResults.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents the results of the inline query. Use sendInlineQueryResultMessage to send the result of the query\npublic struct InlineQueryResults: Codable, Equatable, Hashable {\n\n    /// Button to be shown above inline query results; may be null\n    public let button: InlineQueryResultsButton?\n\n    /// Unique identifier of the inline query\n    public let inlineQueryId: TdInt64\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// Results of the query\n    public let results: [InlineQueryResult]\n\n\n    public init(\n        button: InlineQueryResultsButton?,\n        inlineQueryId: TdInt64,\n        nextOffset: String,\n        results: [InlineQueryResult]\n    ) {\n        self.button = button\n        self.inlineQueryId = inlineQueryId\n        self.nextOffset = nextOffset\n        self.results = results\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InlineQueryResultsButton.swift",
    "content": "//\n//  InlineQueryResultsButton.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a button to be shown above inline query results\npublic struct InlineQueryResultsButton: Codable, Equatable, Hashable {\n\n    /// The text of the button\n    public let text: String\n\n    /// Type of the button\n    public let type: InlineQueryResultsButtonType\n\n\n    public init(\n        text: String,\n        type: InlineQueryResultsButtonType\n    ) {\n        self.text = text\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InlineQueryResultsButtonType.swift",
    "content": "//\n//  InlineQueryResultsButtonType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents type of button in results of inline query\npublic indirect enum InlineQueryResultsButtonType: Codable, Equatable, Hashable {\n\n    /// Describes the button that opens a private chat with the bot and sends a start message to the bot with the given parameter\n    case inlineQueryResultsButtonTypeStartBot(InlineQueryResultsButtonTypeStartBot)\n\n    /// Describes the button that opens a Web App by calling getWebAppUrl\n    case inlineQueryResultsButtonTypeWebApp(InlineQueryResultsButtonTypeWebApp)\n\n\n    private enum Kind: String, Codable {\n        case inlineQueryResultsButtonTypeStartBot\n        case inlineQueryResultsButtonTypeWebApp\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inlineQueryResultsButtonTypeStartBot:\n            let value = try InlineQueryResultsButtonTypeStartBot(from: decoder)\n            self = .inlineQueryResultsButtonTypeStartBot(value)\n        case .inlineQueryResultsButtonTypeWebApp:\n            let value = try InlineQueryResultsButtonTypeWebApp(from: decoder)\n            self = .inlineQueryResultsButtonTypeWebApp(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inlineQueryResultsButtonTypeStartBot(let value):\n            try container.encode(Kind.inlineQueryResultsButtonTypeStartBot, forKey: .type)\n            try value.encode(to: encoder)\n        case .inlineQueryResultsButtonTypeWebApp(let value):\n            try container.encode(Kind.inlineQueryResultsButtonTypeWebApp, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Describes the button that opens a private chat with the bot and sends a start message to the bot with the given parameter\npublic struct InlineQueryResultsButtonTypeStartBot: Codable, Equatable, Hashable {\n\n    /// The parameter for the bot start message\n    public let parameter: String\n\n\n    public init(parameter: String) {\n        self.parameter = parameter\n    }\n}\n\n/// Describes the button that opens a Web App by calling getWebAppUrl\npublic struct InlineQueryResultsButtonTypeWebApp: Codable, Equatable, Hashable {\n\n    /// An HTTP URL to pass to getWebAppUrl\n    public let url: String\n\n\n    public init(url: String) {\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputBackground.swift",
    "content": "//\n//  InputBackground.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about background to set\npublic indirect enum InputBackground: Codable, Equatable, Hashable {\n\n    /// A background from a local file\n    case inputBackgroundLocal(InputBackgroundLocal)\n\n    /// A background from the server\n    case inputBackgroundRemote(InputBackgroundRemote)\n\n    /// A background previously set in the chat; for chat backgrounds only\n    case inputBackgroundPrevious(InputBackgroundPrevious)\n\n\n    private enum Kind: String, Codable {\n        case inputBackgroundLocal\n        case inputBackgroundRemote\n        case inputBackgroundPrevious\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inputBackgroundLocal:\n            let value = try InputBackgroundLocal(from: decoder)\n            self = .inputBackgroundLocal(value)\n        case .inputBackgroundRemote:\n            let value = try InputBackgroundRemote(from: decoder)\n            self = .inputBackgroundRemote(value)\n        case .inputBackgroundPrevious:\n            let value = try InputBackgroundPrevious(from: decoder)\n            self = .inputBackgroundPrevious(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inputBackgroundLocal(let value):\n            try container.encode(Kind.inputBackgroundLocal, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputBackgroundRemote(let value):\n            try container.encode(Kind.inputBackgroundRemote, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputBackgroundPrevious(let value):\n            try container.encode(Kind.inputBackgroundPrevious, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A background from a local file\npublic struct InputBackgroundLocal: Codable, Equatable, Hashable {\n\n    /// Background file to use. Only inputFileLocal and inputFileGenerated are supported. The file must be in JPEG format for wallpapers and in PNG format for patterns\n    public let background: InputFile\n\n\n    public init(background: InputFile) {\n        self.background = background\n    }\n}\n\n/// A background from the server\npublic struct InputBackgroundRemote: Codable, Equatable, Hashable {\n\n    /// The background identifier\n    public let backgroundId: TdInt64\n\n\n    public init(backgroundId: TdInt64) {\n        self.backgroundId = backgroundId\n    }\n}\n\n/// A background previously set in the chat; for chat backgrounds only\npublic struct InputBackgroundPrevious: Codable, Equatable, Hashable {\n\n    /// Identifier of the message with the background\n    public let messageId: Int64\n\n\n    public init(messageId: Int64) {\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputBusinessChatLink.swift",
    "content": "//\n//  InputBusinessChatLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a business chat link to create or edit\npublic struct InputBusinessChatLink: Codable, Equatable, Hashable {\n\n    /// Message draft text that will be added to the input field\n    public let text: FormattedText\n\n    /// Link title\n    public let title: String\n\n\n    public init(\n        text: FormattedText,\n        title: String\n    ) {\n        self.text = text\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputBusinessStartPage.swift",
    "content": "//\n//  InputBusinessStartPage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes settings for a business account start page to set\npublic struct InputBusinessStartPage: Codable, Equatable, Hashable {\n\n    /// Message text of the start page; 0-getOption(\"business_start_page_message_length_max\") characters\n    public let message: String\n\n    /// Greeting sticker of the start page; pass null if none. The sticker must belong to a sticker set and must not be a custom emoji\n    public let sticker: InputFile?\n\n    /// Title text of the start page; 0-getOption(\"business_start_page_title_length_max\") characters\n    public let title: String\n\n\n    public init(\n        message: String,\n        sticker: InputFile?,\n        title: String\n    ) {\n        self.message = message\n        self.sticker = sticker\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputCall.swift",
    "content": "//\n//  InputCall.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a call\npublic indirect enum InputCall: Codable, Equatable, Hashable {\n\n    /// A just ended call\n    case inputCallDiscarded(InputCallDiscarded)\n\n    /// A call from a message of the type messageCall with non-zero messageCall.unique_id\n    case inputCallFromMessage(InputCallFromMessage)\n\n\n    private enum Kind: String, Codable {\n        case inputCallDiscarded\n        case inputCallFromMessage\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inputCallDiscarded:\n            let value = try InputCallDiscarded(from: decoder)\n            self = .inputCallDiscarded(value)\n        case .inputCallFromMessage:\n            let value = try InputCallFromMessage(from: decoder)\n            self = .inputCallFromMessage(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inputCallDiscarded(let value):\n            try container.encode(Kind.inputCallDiscarded, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputCallFromMessage(let value):\n            try container.encode(Kind.inputCallFromMessage, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A just ended call\npublic struct InputCallDiscarded: Codable, Equatable, Hashable {\n\n    /// Identifier of the call\n    public let callId: Int\n\n\n    public init(callId: Int) {\n        self.callId = callId\n    }\n}\n\n/// A call from a message of the type messageCall with non-zero messageCall.unique_id\npublic struct InputCallFromMessage: Codable, Equatable, Hashable {\n\n    /// Chat identifier of the message\n    public let chatId: Int64\n\n    /// Message identifier\n    public let messageId: Int64\n\n\n    public init(\n        chatId: Int64,\n        messageId: Int64\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputChatPhoto.swift",
    "content": "//\n//  InputChatPhoto.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a photo to be set as a user profile or chat photo\npublic indirect enum InputChatPhoto: Codable, Equatable, Hashable {\n\n    /// A previously used profile photo of the current user\n    case inputChatPhotoPrevious(InputChatPhotoPrevious)\n\n    /// A static photo in JPEG format\n    case inputChatPhotoStatic(InputChatPhotoStatic)\n\n    /// An animation in MPEG4 format; must be square, at most 10 seconds long, have width between 160 and 1280 and be at most 2MB in size\n    case inputChatPhotoAnimation(InputChatPhotoAnimation)\n\n    /// A sticker on a custom background\n    case inputChatPhotoSticker(InputChatPhotoSticker)\n\n\n    private enum Kind: String, Codable {\n        case inputChatPhotoPrevious\n        case inputChatPhotoStatic\n        case inputChatPhotoAnimation\n        case inputChatPhotoSticker\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inputChatPhotoPrevious:\n            let value = try InputChatPhotoPrevious(from: decoder)\n            self = .inputChatPhotoPrevious(value)\n        case .inputChatPhotoStatic:\n            let value = try InputChatPhotoStatic(from: decoder)\n            self = .inputChatPhotoStatic(value)\n        case .inputChatPhotoAnimation:\n            let value = try InputChatPhotoAnimation(from: decoder)\n            self = .inputChatPhotoAnimation(value)\n        case .inputChatPhotoSticker:\n            let value = try InputChatPhotoSticker(from: decoder)\n            self = .inputChatPhotoSticker(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inputChatPhotoPrevious(let value):\n            try container.encode(Kind.inputChatPhotoPrevious, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputChatPhotoStatic(let value):\n            try container.encode(Kind.inputChatPhotoStatic, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputChatPhotoAnimation(let value):\n            try container.encode(Kind.inputChatPhotoAnimation, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputChatPhotoSticker(let value):\n            try container.encode(Kind.inputChatPhotoSticker, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A previously used profile photo of the current user\npublic struct InputChatPhotoPrevious: Codable, Equatable, Hashable {\n\n    /// Identifier of the current user's profile photo to reuse\n    public let chatPhotoId: TdInt64\n\n\n    public init(chatPhotoId: TdInt64) {\n        self.chatPhotoId = chatPhotoId\n    }\n}\n\n/// A static photo in JPEG format\npublic struct InputChatPhotoStatic: Codable, Equatable, Hashable {\n\n    /// Photo to be set as profile photo. Only inputFileLocal and inputFileGenerated are allowed\n    public let photo: InputFile\n\n\n    public init(photo: InputFile) {\n        self.photo = photo\n    }\n}\n\n/// An animation in MPEG4 format; must be square, at most 10 seconds long, have width between 160 and 1280 and be at most 2MB in size\npublic struct InputChatPhotoAnimation: Codable, Equatable, Hashable {\n\n    /// Animation to be set as profile photo. Only inputFileLocal and inputFileGenerated are allowed\n    public let animation: InputFile\n\n    /// Timestamp of the frame, which will be used as static chat photo\n    public let mainFrameTimestamp: Double\n\n\n    public init(\n        animation: InputFile,\n        mainFrameTimestamp: Double\n    ) {\n        self.animation = animation\n        self.mainFrameTimestamp = mainFrameTimestamp\n    }\n}\n\n/// A sticker on a custom background\npublic struct InputChatPhotoSticker: Codable, Equatable, Hashable {\n\n    /// Information about the sticker\n    public let sticker: ChatPhotoSticker\n\n\n    public init(sticker: ChatPhotoSticker) {\n        self.sticker = sticker\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputChatTheme.swift",
    "content": "//\n//  InputChatTheme.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a chat theme to set\npublic indirect enum InputChatTheme: Codable, Equatable, Hashable {\n\n    /// A theme based on an emoji\n    case inputChatThemeEmoji(InputChatThemeEmoji)\n\n    /// A theme based on an upgraded gift\n    case inputChatThemeGift(InputChatThemeGift)\n\n\n    private enum Kind: String, Codable {\n        case inputChatThemeEmoji\n        case inputChatThemeGift\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inputChatThemeEmoji:\n            let value = try InputChatThemeEmoji(from: decoder)\n            self = .inputChatThemeEmoji(value)\n        case .inputChatThemeGift:\n            let value = try InputChatThemeGift(from: decoder)\n            self = .inputChatThemeGift(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inputChatThemeEmoji(let value):\n            try container.encode(Kind.inputChatThemeEmoji, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputChatThemeGift(let value):\n            try container.encode(Kind.inputChatThemeGift, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A theme based on an emoji\npublic struct InputChatThemeEmoji: Codable, Equatable, Hashable {\n\n    /// Name of the theme\n    public let name: String\n\n\n    public init(name: String) {\n        self.name = name\n    }\n}\n\n/// A theme based on an upgraded gift\npublic struct InputChatThemeGift: Codable, Equatable, Hashable {\n\n    /// Name of the upgraded gift. A gift can be used only in one chat in a time. When the same gift is used in another chat, theme in the previous chat is reset to default\n    public let name: String\n\n\n    public init(name: String) {\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputChecklist.swift",
    "content": "//\n//  InputChecklist.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a checklist to be sent\npublic struct InputChecklist: Codable, Equatable, Hashable {\n\n    /// True, if other users can add tasks to the list\n    public let othersCanAddTasks: Bool\n\n    /// True, if other users can mark tasks as done or not done\n    public let othersCanMarkTasksAsDone: Bool\n\n    /// List of tasks in the checklist; 1-getOption(\"checklist_task_count_max\") tasks\n    public let tasks: [InputChecklistTask]\n\n    /// Title of the checklist; 1-getOption(\"checklist_title_length_max\") characters. May contain only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities\n    public let title: FormattedText\n\n\n    public init(\n        othersCanAddTasks: Bool,\n        othersCanMarkTasksAsDone: Bool,\n        tasks: [InputChecklistTask],\n        title: FormattedText\n    ) {\n        self.othersCanAddTasks = othersCanAddTasks\n        self.othersCanMarkTasksAsDone = othersCanMarkTasksAsDone\n        self.tasks = tasks\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputChecklistTask.swift",
    "content": "//\n//  InputChecklistTask.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a task in a checklist to be sent\npublic struct InputChecklistTask: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique identifier of the task; must be positive\n    public let id: Int\n\n    /// Text of the task; 1-getOption(\"checklist_task_text_length_max\") characters without line feeds. May contain only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities\n    public let text: FormattedText\n\n\n    public init(\n        id: Int,\n        text: FormattedText\n    ) {\n        self.id = id\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputCredentials.swift",
    "content": "//\n//  InputCredentials.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about the payment method chosen by the user\npublic indirect enum InputCredentials: Codable, Equatable, Hashable {\n\n    /// Applies if a user chooses some previously saved payment credentials. To use their previously saved credentials, the user must have a valid temporary password\n    case inputCredentialsSaved(InputCredentialsSaved)\n\n    /// Applies if a user enters new credentials on a payment provider website\n    case inputCredentialsNew(InputCredentialsNew)\n\n    /// Applies if a user enters new credentials using Apple Pay\n    case inputCredentialsApplePay(InputCredentialsApplePay)\n\n    /// Applies if a user enters new credentials using Google Pay\n    case inputCredentialsGooglePay(InputCredentialsGooglePay)\n\n\n    private enum Kind: String, Codable {\n        case inputCredentialsSaved\n        case inputCredentialsNew\n        case inputCredentialsApplePay\n        case inputCredentialsGooglePay\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inputCredentialsSaved:\n            let value = try InputCredentialsSaved(from: decoder)\n            self = .inputCredentialsSaved(value)\n        case .inputCredentialsNew:\n            let value = try InputCredentialsNew(from: decoder)\n            self = .inputCredentialsNew(value)\n        case .inputCredentialsApplePay:\n            let value = try InputCredentialsApplePay(from: decoder)\n            self = .inputCredentialsApplePay(value)\n        case .inputCredentialsGooglePay:\n            let value = try InputCredentialsGooglePay(from: decoder)\n            self = .inputCredentialsGooglePay(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inputCredentialsSaved(let value):\n            try container.encode(Kind.inputCredentialsSaved, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputCredentialsNew(let value):\n            try container.encode(Kind.inputCredentialsNew, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputCredentialsApplePay(let value):\n            try container.encode(Kind.inputCredentialsApplePay, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputCredentialsGooglePay(let value):\n            try container.encode(Kind.inputCredentialsGooglePay, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Applies if a user chooses some previously saved payment credentials. To use their previously saved credentials, the user must have a valid temporary password\npublic struct InputCredentialsSaved: Codable, Equatable, Hashable {\n\n    /// Identifier of the saved credentials\n    public let savedCredentialsId: String\n\n\n    public init(savedCredentialsId: String) {\n        self.savedCredentialsId = savedCredentialsId\n    }\n}\n\n/// Applies if a user enters new credentials on a payment provider website\npublic struct InputCredentialsNew: Codable, Equatable, Hashable {\n\n    /// True, if the credential identifier can be saved on the server side\n    public let allowSave: Bool\n\n    /// JSON-encoded data with the credential identifier from the payment provider\n    public let data: String\n\n\n    public init(\n        allowSave: Bool,\n        data: String\n    ) {\n        self.allowSave = allowSave\n        self.data = data\n    }\n}\n\n/// Applies if a user enters new credentials using Apple Pay\npublic struct InputCredentialsApplePay: Codable, Equatable, Hashable {\n\n    /// JSON-encoded data with the credential identifier\n    public let data: String\n\n\n    public init(data: String) {\n        self.data = data\n    }\n}\n\n/// Applies if a user enters new credentials using Google Pay\npublic struct InputCredentialsGooglePay: Codable, Equatable, Hashable {\n\n    /// JSON-encoded data with the credential identifier\n    public let data: String\n\n\n    public init(data: String) {\n        self.data = data\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputFile.swift",
    "content": "//\n//  InputFile.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Points to a file\npublic indirect enum InputFile: Codable, Equatable, Hashable {\n\n    /// A file defined by its unique identifier\n    case inputFileId(InputFileId)\n\n    /// A file defined by its remote identifier. The remote identifier is guaranteed to be usable only if the corresponding file is still accessible to the user and known to TDLib. For example, if the file is from a message, then the message must be not deleted and accessible to the user. If the file database is disabled, then the corresponding object with the file must be preloaded by the application\n    case inputFileRemote(InputFileRemote)\n\n    /// A file defined by a local path\n    case inputFileLocal(InputFileLocal)\n\n    /// A file generated by the application. The application must handle updates updateFileGenerationStart and updateFileGenerationStop to generate the file when asked by TDLib\n    case inputFileGenerated(InputFileGenerated)\n\n\n    private enum Kind: String, Codable {\n        case inputFileId\n        case inputFileRemote\n        case inputFileLocal\n        case inputFileGenerated\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inputFileId:\n            let value = try InputFileId(from: decoder)\n            self = .inputFileId(value)\n        case .inputFileRemote:\n            let value = try InputFileRemote(from: decoder)\n            self = .inputFileRemote(value)\n        case .inputFileLocal:\n            let value = try InputFileLocal(from: decoder)\n            self = .inputFileLocal(value)\n        case .inputFileGenerated:\n            let value = try InputFileGenerated(from: decoder)\n            self = .inputFileGenerated(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inputFileId(let value):\n            try container.encode(Kind.inputFileId, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputFileRemote(let value):\n            try container.encode(Kind.inputFileRemote, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputFileLocal(let value):\n            try container.encode(Kind.inputFileLocal, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputFileGenerated(let value):\n            try container.encode(Kind.inputFileGenerated, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A file defined by its unique identifier\npublic struct InputFileId: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique file identifier\n    public let id: Int\n\n\n    public init(id: Int) {\n        self.id = id\n    }\n}\n\n/// A file defined by its remote identifier. The remote identifier is guaranteed to be usable only if the corresponding file is still accessible to the user and known to TDLib. For example, if the file is from a message, then the message must be not deleted and accessible to the user. If the file database is disabled, then the corresponding object with the file must be preloaded by the application\npublic struct InputFileRemote: Codable, Equatable, Hashable, Identifiable {\n\n    /// Remote file identifier\n    public let id: String\n\n\n    public init(id: String) {\n        self.id = id\n    }\n}\n\n/// A file defined by a local path\npublic struct InputFileLocal: Codable, Equatable, Hashable {\n\n    /// Local path to the file\n    public let path: String\n\n\n    public init(path: String) {\n        self.path = path\n    }\n}\n\n/// A file generated by the application. The application must handle updates updateFileGenerationStart and updateFileGenerationStop to generate the file when asked by TDLib\npublic struct InputFileGenerated: Codable, Equatable, Hashable {\n\n    /// String specifying the conversion applied to the original file; must be persistent across application restarts. Conversions beginning with '#' are reserved for internal TDLib usage\n    public let conversion: String\n\n    /// Expected size of the generated file, in bytes; pass 0 if unknown\n    public let expectedSize: Int64\n\n    /// Local path to a file from which the file is generated. The path doesn't have to be a valid path and is used by TDLib only to detect name and MIME type of the generated file\n    public let originalPath: String\n\n\n    public init(\n        conversion: String,\n        expectedSize: Int64,\n        originalPath: String\n    ) {\n        self.conversion = conversion\n        self.expectedSize = expectedSize\n        self.originalPath = originalPath\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputGroupCall.swift",
    "content": "//\n//  InputGroupCall.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a non-joined group call that isn't bound to a chat\npublic indirect enum InputGroupCall: Codable, Equatable, Hashable {\n\n    /// The group call is accessible through a link\n    case inputGroupCallLink(InputGroupCallLink)\n\n    /// The group call is accessible through a message of the type messageGroupCall\n    case inputGroupCallMessage(InputGroupCallMessage)\n\n\n    private enum Kind: String, Codable {\n        case inputGroupCallLink\n        case inputGroupCallMessage\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inputGroupCallLink:\n            let value = try InputGroupCallLink(from: decoder)\n            self = .inputGroupCallLink(value)\n        case .inputGroupCallMessage:\n            let value = try InputGroupCallMessage(from: decoder)\n            self = .inputGroupCallMessage(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inputGroupCallLink(let value):\n            try container.encode(Kind.inputGroupCallLink, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputGroupCallMessage(let value):\n            try container.encode(Kind.inputGroupCallMessage, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The group call is accessible through a link\npublic struct InputGroupCallLink: Codable, Equatable, Hashable {\n\n    /// The link for the group call\n    public let link: String\n\n\n    public init(link: String) {\n        self.link = link\n    }\n}\n\n/// The group call is accessible through a message of the type messageGroupCall\npublic struct InputGroupCallMessage: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat with the message\n    public let chatId: Int64\n\n    /// Identifier of the message of the type messageGroupCall\n    public let messageId: Int64\n\n\n    public init(\n        chatId: Int64,\n        messageId: Int64\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputIdentityDocument.swift",
    "content": "//\n//  InputIdentityDocument.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// An identity document to be saved to Telegram Passport\npublic struct InputIdentityDocument: Codable, Equatable, Hashable {\n\n    /// Document expiration date; pass null if not applicable\n    public let expirationDate: Date?\n\n    /// Front side of the document\n    public let frontSide: InputFile\n\n    /// Document number; 1-24 characters\n    public let number: String\n\n    /// Reverse side of the document; only for driver license and identity card; pass null otherwise\n    public let reverseSide: InputFile?\n\n    /// Selfie with the document; pass null if unavailable\n    public let selfie: InputFile?\n\n    /// List of files containing a certified English translation of the document\n    public let translation: [InputFile]\n\n\n    public init(\n        expirationDate: Date?,\n        frontSide: InputFile,\n        number: String,\n        reverseSide: InputFile?,\n        selfie: InputFile?,\n        translation: [InputFile]\n    ) {\n        self.expirationDate = expirationDate\n        self.frontSide = frontSide\n        self.number = number\n        self.reverseSide = reverseSide\n        self.selfie = selfie\n        self.translation = translation\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputInlineQueryResult.swift",
    "content": "//\n//  InputInlineQueryResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a single result of an inline query; for bots only\npublic indirect enum InputInlineQueryResult: Codable, Equatable, Hashable {\n\n    /// Represents a link to an animated GIF or an animated (i.e., without sound) H.264/MPEG-4 AVC video\n    case inputInlineQueryResultAnimation(InputInlineQueryResultAnimation)\n\n    /// Represents a link to an article or web page\n    case inputInlineQueryResultArticle(InputInlineQueryResultArticle)\n\n    /// Represents a link to an MP3 audio file\n    case inputInlineQueryResultAudio(InputInlineQueryResultAudio)\n\n    /// Represents a user contact\n    case inputInlineQueryResultContact(InputInlineQueryResultContact)\n\n    /// Represents a link to a file\n    case inputInlineQueryResultDocument(InputInlineQueryResultDocument)\n\n    /// Represents a game\n    case inputInlineQueryResultGame(InputInlineQueryResultGame)\n\n    /// Represents a point on the map\n    case inputInlineQueryResultLocation(InputInlineQueryResultLocation)\n\n    /// Represents link to a JPEG image\n    case inputInlineQueryResultPhoto(InputInlineQueryResultPhoto)\n\n    /// Represents a link to a WEBP, TGS, or WEBM sticker\n    case inputInlineQueryResultSticker(InputInlineQueryResultSticker)\n\n    /// Represents information about a venue\n    case inputInlineQueryResultVenue(InputInlineQueryResultVenue)\n\n    /// Represents a link to a page containing an embedded video player or a video file\n    case inputInlineQueryResultVideo(InputInlineQueryResultVideo)\n\n    /// Represents a link to an opus-encoded audio file within an OGG container, single channel audio\n    case inputInlineQueryResultVoiceNote(InputInlineQueryResultVoiceNote)\n\n\n    private enum Kind: String, Codable {\n        case inputInlineQueryResultAnimation\n        case inputInlineQueryResultArticle\n        case inputInlineQueryResultAudio\n        case inputInlineQueryResultContact\n        case inputInlineQueryResultDocument\n        case inputInlineQueryResultGame\n        case inputInlineQueryResultLocation\n        case inputInlineQueryResultPhoto\n        case inputInlineQueryResultSticker\n        case inputInlineQueryResultVenue\n        case inputInlineQueryResultVideo\n        case inputInlineQueryResultVoiceNote\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inputInlineQueryResultAnimation:\n            let value = try InputInlineQueryResultAnimation(from: decoder)\n            self = .inputInlineQueryResultAnimation(value)\n        case .inputInlineQueryResultArticle:\n            let value = try InputInlineQueryResultArticle(from: decoder)\n            self = .inputInlineQueryResultArticle(value)\n        case .inputInlineQueryResultAudio:\n            let value = try InputInlineQueryResultAudio(from: decoder)\n            self = .inputInlineQueryResultAudio(value)\n        case .inputInlineQueryResultContact:\n            let value = try InputInlineQueryResultContact(from: decoder)\n            self = .inputInlineQueryResultContact(value)\n        case .inputInlineQueryResultDocument:\n            let value = try InputInlineQueryResultDocument(from: decoder)\n            self = .inputInlineQueryResultDocument(value)\n        case .inputInlineQueryResultGame:\n            let value = try InputInlineQueryResultGame(from: decoder)\n            self = .inputInlineQueryResultGame(value)\n        case .inputInlineQueryResultLocation:\n            let value = try InputInlineQueryResultLocation(from: decoder)\n            self = .inputInlineQueryResultLocation(value)\n        case .inputInlineQueryResultPhoto:\n            let value = try InputInlineQueryResultPhoto(from: decoder)\n            self = .inputInlineQueryResultPhoto(value)\n        case .inputInlineQueryResultSticker:\n            let value = try InputInlineQueryResultSticker(from: decoder)\n            self = .inputInlineQueryResultSticker(value)\n        case .inputInlineQueryResultVenue:\n            let value = try InputInlineQueryResultVenue(from: decoder)\n            self = .inputInlineQueryResultVenue(value)\n        case .inputInlineQueryResultVideo:\n            let value = try InputInlineQueryResultVideo(from: decoder)\n            self = .inputInlineQueryResultVideo(value)\n        case .inputInlineQueryResultVoiceNote:\n            let value = try InputInlineQueryResultVoiceNote(from: decoder)\n            self = .inputInlineQueryResultVoiceNote(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inputInlineQueryResultAnimation(let value):\n            try container.encode(Kind.inputInlineQueryResultAnimation, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputInlineQueryResultArticle(let value):\n            try container.encode(Kind.inputInlineQueryResultArticle, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputInlineQueryResultAudio(let value):\n            try container.encode(Kind.inputInlineQueryResultAudio, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputInlineQueryResultContact(let value):\n            try container.encode(Kind.inputInlineQueryResultContact, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputInlineQueryResultDocument(let value):\n            try container.encode(Kind.inputInlineQueryResultDocument, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputInlineQueryResultGame(let value):\n            try container.encode(Kind.inputInlineQueryResultGame, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputInlineQueryResultLocation(let value):\n            try container.encode(Kind.inputInlineQueryResultLocation, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputInlineQueryResultPhoto(let value):\n            try container.encode(Kind.inputInlineQueryResultPhoto, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputInlineQueryResultSticker(let value):\n            try container.encode(Kind.inputInlineQueryResultSticker, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputInlineQueryResultVenue(let value):\n            try container.encode(Kind.inputInlineQueryResultVenue, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputInlineQueryResultVideo(let value):\n            try container.encode(Kind.inputInlineQueryResultVideo, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputInlineQueryResultVoiceNote(let value):\n            try container.encode(Kind.inputInlineQueryResultVoiceNote, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Represents a link to an animated GIF or an animated (i.e., without sound) H.264/MPEG-4 AVC video\npublic struct InputInlineQueryResultAnimation: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// The content of the message to be sent. Must be one of the following types: inputMessageText, inputMessageAnimation, inputMessageInvoice, inputMessageLocation, inputMessageVenue or inputMessageContact\n    public let inputMessageContent: InputMessageContent\n\n    /// The message reply markup; pass null if none. Must be of type replyMarkupInlineKeyboard or null\n    public let replyMarkup: ReplyMarkup?\n\n    /// MIME type of the video thumbnail. If non-empty, must be one of \"image/jpeg\", \"image/gif\" and \"video/mp4\"\n    public let thumbnailMimeType: String\n\n    /// URL of the result thumbnail (JPEG, GIF, or MPEG4), if it exists\n    public let thumbnailUrl: String\n\n    /// Title of the query result\n    public let title: String\n\n    /// Duration of the video, in seconds\n    public let videoDuration: Int\n\n    /// Height of the video\n    public let videoHeight: Int\n\n    /// MIME type of the video file. Must be one of \"image/gif\" and \"video/mp4\"\n    public let videoMimeType: String\n\n    /// The URL of the video file (file size must not exceed 1MB)\n    public let videoUrl: String\n\n    /// Width of the video\n    public let videoWidth: Int\n\n\n    public init(\n        id: String,\n        inputMessageContent: InputMessageContent,\n        replyMarkup: ReplyMarkup?,\n        thumbnailMimeType: String,\n        thumbnailUrl: String,\n        title: String,\n        videoDuration: Int,\n        videoHeight: Int,\n        videoMimeType: String,\n        videoUrl: String,\n        videoWidth: Int\n    ) {\n        self.id = id\n        self.inputMessageContent = inputMessageContent\n        self.replyMarkup = replyMarkup\n        self.thumbnailMimeType = thumbnailMimeType\n        self.thumbnailUrl = thumbnailUrl\n        self.title = title\n        self.videoDuration = videoDuration\n        self.videoHeight = videoHeight\n        self.videoMimeType = videoMimeType\n        self.videoUrl = videoUrl\n        self.videoWidth = videoWidth\n    }\n}\n\n/// Represents a link to an article or web page\npublic struct InputInlineQueryResultArticle: Codable, Equatable, Hashable, Identifiable {\n\n    public let description: String\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// The content of the message to be sent. Must be one of the following types: inputMessageText, inputMessageInvoice, inputMessageLocation, inputMessageVenue or inputMessageContact\n    public let inputMessageContent: InputMessageContent\n\n    /// The message reply markup; pass null if none. Must be of type replyMarkupInlineKeyboard or null\n    public let replyMarkup: ReplyMarkup?\n\n    /// Thumbnail height, if known\n    public let thumbnailHeight: Int\n\n    /// URL of the result thumbnail, if it exists\n    public let thumbnailUrl: String\n\n    /// Thumbnail width, if known\n    public let thumbnailWidth: Int\n\n    /// Title of the result\n    public let title: String\n\n    /// URL of the result, if it exists\n    public let url: String\n\n\n    public init(\n        description: String,\n        id: String,\n        inputMessageContent: InputMessageContent,\n        replyMarkup: ReplyMarkup?,\n        thumbnailHeight: Int,\n        thumbnailUrl: String,\n        thumbnailWidth: Int,\n        title: String,\n        url: String\n    ) {\n        self.description = description\n        self.id = id\n        self.inputMessageContent = inputMessageContent\n        self.replyMarkup = replyMarkup\n        self.thumbnailHeight = thumbnailHeight\n        self.thumbnailUrl = thumbnailUrl\n        self.thumbnailWidth = thumbnailWidth\n        self.title = title\n        self.url = url\n    }\n}\n\n/// Represents a link to an MP3 audio file\npublic struct InputInlineQueryResultAudio: Codable, Equatable, Hashable, Identifiable {\n\n    /// Audio file duration, in seconds\n    public let audioDuration: Int\n\n    /// The URL of the audio file\n    public let audioUrl: String\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// The content of the message to be sent. Must be one of the following types: inputMessageText, inputMessageAudio, inputMessageInvoice, inputMessageLocation, inputMessageVenue or inputMessageContact\n    public let inputMessageContent: InputMessageContent\n\n    /// Performer of the audio file\n    public let performer: String\n\n    /// The message reply markup; pass null if none. Must be of type replyMarkupInlineKeyboard or null\n    public let replyMarkup: ReplyMarkup?\n\n    /// Title of the audio file\n    public let title: String\n\n\n    public init(\n        audioDuration: Int,\n        audioUrl: String,\n        id: String,\n        inputMessageContent: InputMessageContent,\n        performer: String,\n        replyMarkup: ReplyMarkup?,\n        title: String\n    ) {\n        self.audioDuration = audioDuration\n        self.audioUrl = audioUrl\n        self.id = id\n        self.inputMessageContent = inputMessageContent\n        self.performer = performer\n        self.replyMarkup = replyMarkup\n        self.title = title\n    }\n}\n\n/// Represents a user contact\npublic struct InputInlineQueryResultContact: Codable, Equatable, Hashable, Identifiable {\n\n    /// User contact\n    public let contact: Contact\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// The content of the message to be sent. Must be one of the following types: inputMessageText, inputMessageInvoice, inputMessageLocation, inputMessageVenue or inputMessageContact\n    public let inputMessageContent: InputMessageContent\n\n    /// The message reply markup; pass null if none. Must be of type replyMarkupInlineKeyboard or null\n    public let replyMarkup: ReplyMarkup?\n\n    /// Thumbnail height, if known\n    public let thumbnailHeight: Int\n\n    /// URL of the result thumbnail, if it exists\n    public let thumbnailUrl: String\n\n    /// Thumbnail width, if known\n    public let thumbnailWidth: Int\n\n\n    public init(\n        contact: Contact,\n        id: String,\n        inputMessageContent: InputMessageContent,\n        replyMarkup: ReplyMarkup?,\n        thumbnailHeight: Int,\n        thumbnailUrl: String,\n        thumbnailWidth: Int\n    ) {\n        self.contact = contact\n        self.id = id\n        self.inputMessageContent = inputMessageContent\n        self.replyMarkup = replyMarkup\n        self.thumbnailHeight = thumbnailHeight\n        self.thumbnailUrl = thumbnailUrl\n        self.thumbnailWidth = thumbnailWidth\n    }\n}\n\n/// Represents a link to a file\npublic struct InputInlineQueryResultDocument: Codable, Equatable, Hashable, Identifiable {\n\n    public let description: String\n\n    /// URL of the file\n    public let documentUrl: String\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// The content of the message to be sent. Must be one of the following types: inputMessageText, inputMessageDocument, inputMessageInvoice, inputMessageLocation, inputMessageVenue or inputMessageContact\n    public let inputMessageContent: InputMessageContent\n\n    /// MIME type of the file content; only \"application/pdf\" and \"application/zip\" are currently allowed\n    public let mimeType: String\n\n    /// The message reply markup; pass null if none. Must be of type replyMarkupInlineKeyboard or null\n    public let replyMarkup: ReplyMarkup?\n\n    /// Height of the thumbnail\n    public let thumbnailHeight: Int\n\n    /// The URL of the file thumbnail, if it exists\n    public let thumbnailUrl: String\n\n    /// Width of the thumbnail\n    public let thumbnailWidth: Int\n\n    /// Title of the resulting file\n    public let title: String\n\n\n    public init(\n        description: String,\n        documentUrl: String,\n        id: String,\n        inputMessageContent: InputMessageContent,\n        mimeType: String,\n        replyMarkup: ReplyMarkup?,\n        thumbnailHeight: Int,\n        thumbnailUrl: String,\n        thumbnailWidth: Int,\n        title: String\n    ) {\n        self.description = description\n        self.documentUrl = documentUrl\n        self.id = id\n        self.inputMessageContent = inputMessageContent\n        self.mimeType = mimeType\n        self.replyMarkup = replyMarkup\n        self.thumbnailHeight = thumbnailHeight\n        self.thumbnailUrl = thumbnailUrl\n        self.thumbnailWidth = thumbnailWidth\n        self.title = title\n    }\n}\n\n/// Represents a game\npublic struct InputInlineQueryResultGame: Codable, Equatable, Hashable, Identifiable {\n\n    /// Short name of the game\n    public let gameShortName: String\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// The message reply markup; pass null if none. Must be of type replyMarkupInlineKeyboard or null\n    public let replyMarkup: ReplyMarkup?\n\n\n    public init(\n        gameShortName: String,\n        id: String,\n        replyMarkup: ReplyMarkup?\n    ) {\n        self.gameShortName = gameShortName\n        self.id = id\n        self.replyMarkup = replyMarkup\n    }\n}\n\n/// Represents a point on the map\npublic struct InputInlineQueryResultLocation: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// The content of the message to be sent. Must be one of the following types: inputMessageText, inputMessageInvoice, inputMessageLocation, inputMessageVenue or inputMessageContact\n    public let inputMessageContent: InputMessageContent\n\n    /// Amount of time relative to the message sent time until the location can be updated, in seconds\n    public let livePeriod: Int\n\n    /// Location result\n    public let location: Location\n\n    /// The message reply markup; pass null if none. Must be of type replyMarkupInlineKeyboard or null\n    public let replyMarkup: ReplyMarkup?\n\n    /// Thumbnail height, if known\n    public let thumbnailHeight: Int\n\n    /// URL of the result thumbnail, if it exists\n    public let thumbnailUrl: String\n\n    /// Thumbnail width, if known\n    public let thumbnailWidth: Int\n\n    /// Title of the result\n    public let title: String\n\n\n    public init(\n        id: String,\n        inputMessageContent: InputMessageContent,\n        livePeriod: Int,\n        location: Location,\n        replyMarkup: ReplyMarkup?,\n        thumbnailHeight: Int,\n        thumbnailUrl: String,\n        thumbnailWidth: Int,\n        title: String\n    ) {\n        self.id = id\n        self.inputMessageContent = inputMessageContent\n        self.livePeriod = livePeriod\n        self.location = location\n        self.replyMarkup = replyMarkup\n        self.thumbnailHeight = thumbnailHeight\n        self.thumbnailUrl = thumbnailUrl\n        self.thumbnailWidth = thumbnailWidth\n        self.title = title\n    }\n}\n\n/// Represents link to a JPEG image\npublic struct InputInlineQueryResultPhoto: Codable, Equatable, Hashable, Identifiable {\n\n    public let description: String\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// The content of the message to be sent. Must be one of the following types: inputMessageText, inputMessagePhoto, inputMessageInvoice, inputMessageLocation, inputMessageVenue or inputMessageContact\n    public let inputMessageContent: InputMessageContent\n\n    /// Height of the photo\n    public let photoHeight: Int\n\n    /// The URL of the JPEG photo (photo size must not exceed 5MB)\n    public let photoUrl: String\n\n    /// Width of the photo\n    public let photoWidth: Int\n\n    /// The message reply markup; pass null if none. Must be of type replyMarkupInlineKeyboard or null\n    public let replyMarkup: ReplyMarkup?\n\n    /// URL of the photo thumbnail, if it exists\n    public let thumbnailUrl: String\n\n    /// Title of the result, if known\n    public let title: String\n\n\n    public init(\n        description: String,\n        id: String,\n        inputMessageContent: InputMessageContent,\n        photoHeight: Int,\n        photoUrl: String,\n        photoWidth: Int,\n        replyMarkup: ReplyMarkup?,\n        thumbnailUrl: String,\n        title: String\n    ) {\n        self.description = description\n        self.id = id\n        self.inputMessageContent = inputMessageContent\n        self.photoHeight = photoHeight\n        self.photoUrl = photoUrl\n        self.photoWidth = photoWidth\n        self.replyMarkup = replyMarkup\n        self.thumbnailUrl = thumbnailUrl\n        self.title = title\n    }\n}\n\n/// Represents a link to a WEBP, TGS, or WEBM sticker\npublic struct InputInlineQueryResultSticker: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// The content of the message to be sent. Must be one of the following types: inputMessageText, inputMessageSticker, inputMessageInvoice, inputMessageLocation, inputMessageVenue or inputMessageContact\n    public let inputMessageContent: InputMessageContent\n\n    /// The message reply markup; pass null if none. Must be of type replyMarkupInlineKeyboard or null\n    public let replyMarkup: ReplyMarkup?\n\n    /// Height of the sticker\n    public let stickerHeight: Int\n\n    /// The URL of the WEBP, TGS, or WEBM sticker (sticker file size must not exceed 5MB)\n    public let stickerUrl: String\n\n    /// Width of the sticker\n    public let stickerWidth: Int\n\n    /// URL of the sticker thumbnail, if it exists\n    public let thumbnailUrl: String\n\n\n    public init(\n        id: String,\n        inputMessageContent: InputMessageContent,\n        replyMarkup: ReplyMarkup?,\n        stickerHeight: Int,\n        stickerUrl: String,\n        stickerWidth: Int,\n        thumbnailUrl: String\n    ) {\n        self.id = id\n        self.inputMessageContent = inputMessageContent\n        self.replyMarkup = replyMarkup\n        self.stickerHeight = stickerHeight\n        self.stickerUrl = stickerUrl\n        self.stickerWidth = stickerWidth\n        self.thumbnailUrl = thumbnailUrl\n    }\n}\n\n/// Represents information about a venue\npublic struct InputInlineQueryResultVenue: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// The content of the message to be sent. Must be one of the following types: inputMessageText, inputMessageInvoice, inputMessageLocation, inputMessageVenue or inputMessageContact\n    public let inputMessageContent: InputMessageContent\n\n    /// The message reply markup; pass null if none. Must be of type replyMarkupInlineKeyboard or null\n    public let replyMarkup: ReplyMarkup?\n\n    /// Thumbnail height, if known\n    public let thumbnailHeight: Int\n\n    /// URL of the result thumbnail, if it exists\n    public let thumbnailUrl: String\n\n    /// Thumbnail width, if known\n    public let thumbnailWidth: Int\n\n    /// Venue result\n    public let venue: Venue\n\n\n    public init(\n        id: String,\n        inputMessageContent: InputMessageContent,\n        replyMarkup: ReplyMarkup?,\n        thumbnailHeight: Int,\n        thumbnailUrl: String,\n        thumbnailWidth: Int,\n        venue: Venue\n    ) {\n        self.id = id\n        self.inputMessageContent = inputMessageContent\n        self.replyMarkup = replyMarkup\n        self.thumbnailHeight = thumbnailHeight\n        self.thumbnailUrl = thumbnailUrl\n        self.thumbnailWidth = thumbnailWidth\n        self.venue = venue\n    }\n}\n\n/// Represents a link to a page containing an embedded video player or a video file\npublic struct InputInlineQueryResultVideo: Codable, Equatable, Hashable, Identifiable {\n\n    public let description: String\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// The content of the message to be sent. Must be one of the following types: inputMessageText, inputMessageVideo, inputMessageInvoice, inputMessageLocation, inputMessageVenue or inputMessageContact\n    public let inputMessageContent: InputMessageContent\n\n    /// MIME type of the content of the video URL, only \"text/html\" or \"video/mp4\" are currently supported\n    public let mimeType: String\n\n    /// The message reply markup; pass null if none. Must be of type replyMarkupInlineKeyboard or null\n    public let replyMarkup: ReplyMarkup?\n\n    /// The URL of the video thumbnail (JPEG), if it exists\n    public let thumbnailUrl: String\n\n    /// Title of the result\n    public let title: String\n\n    /// Video duration, in seconds\n    public let videoDuration: Int\n\n    /// Height of the video\n    public let videoHeight: Int\n\n    /// URL of the embedded video player or video file\n    public let videoUrl: String\n\n    /// Width of the video\n    public let videoWidth: Int\n\n\n    public init(\n        description: String,\n        id: String,\n        inputMessageContent: InputMessageContent,\n        mimeType: String,\n        replyMarkup: ReplyMarkup?,\n        thumbnailUrl: String,\n        title: String,\n        videoDuration: Int,\n        videoHeight: Int,\n        videoUrl: String,\n        videoWidth: Int\n    ) {\n        self.description = description\n        self.id = id\n        self.inputMessageContent = inputMessageContent\n        self.mimeType = mimeType\n        self.replyMarkup = replyMarkup\n        self.thumbnailUrl = thumbnailUrl\n        self.title = title\n        self.videoDuration = videoDuration\n        self.videoHeight = videoHeight\n        self.videoUrl = videoUrl\n        self.videoWidth = videoWidth\n    }\n}\n\n/// Represents a link to an opus-encoded audio file within an OGG container, single channel audio\npublic struct InputInlineQueryResultVoiceNote: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique identifier of the query result\n    public let id: String\n\n    /// The content of the message to be sent. Must be one of the following types: inputMessageText, inputMessageVoiceNote, inputMessageInvoice, inputMessageLocation, inputMessageVenue or inputMessageContact\n    public let inputMessageContent: InputMessageContent\n\n    /// The message reply markup; pass null if none. Must be of type replyMarkupInlineKeyboard or null\n    public let replyMarkup: ReplyMarkup?\n\n    /// Title of the voice note\n    public let title: String\n\n    /// Duration of the voice note, in seconds\n    public let voiceNoteDuration: Int\n\n    /// The URL of the voice note file\n    public let voiceNoteUrl: String\n\n\n    public init(\n        id: String,\n        inputMessageContent: InputMessageContent,\n        replyMarkup: ReplyMarkup?,\n        title: String,\n        voiceNoteDuration: Int,\n        voiceNoteUrl: String\n    ) {\n        self.id = id\n        self.inputMessageContent = inputMessageContent\n        self.replyMarkup = replyMarkup\n        self.title = title\n        self.voiceNoteDuration = voiceNoteDuration\n        self.voiceNoteUrl = voiceNoteUrl\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputInvoice.swift",
    "content": "//\n//  InputInvoice.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an invoice to process\npublic indirect enum InputInvoice: Codable, Equatable, Hashable {\n\n    /// An invoice from a message of the type messageInvoice or paid media purchase from messagePaidMedia\n    case inputInvoiceMessage(InputInvoiceMessage)\n\n    /// An invoice from a link of the type internalLinkTypeInvoice\n    case inputInvoiceName(InputInvoiceName)\n\n    /// An invoice for a payment toward Telegram; must not be used in the in-store apps\n    case inputInvoiceTelegram(InputInvoiceTelegram)\n\n\n    private enum Kind: String, Codable {\n        case inputInvoiceMessage\n        case inputInvoiceName\n        case inputInvoiceTelegram\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inputInvoiceMessage:\n            let value = try InputInvoiceMessage(from: decoder)\n            self = .inputInvoiceMessage(value)\n        case .inputInvoiceName:\n            let value = try InputInvoiceName(from: decoder)\n            self = .inputInvoiceName(value)\n        case .inputInvoiceTelegram:\n            let value = try InputInvoiceTelegram(from: decoder)\n            self = .inputInvoiceTelegram(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inputInvoiceMessage(let value):\n            try container.encode(Kind.inputInvoiceMessage, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputInvoiceName(let value):\n            try container.encode(Kind.inputInvoiceName, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputInvoiceTelegram(let value):\n            try container.encode(Kind.inputInvoiceTelegram, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// An invoice from a message of the type messageInvoice or paid media purchase from messagePaidMedia\npublic struct InputInvoiceMessage: Codable, Equatable, Hashable {\n\n    /// Chat identifier of the message\n    public let chatId: Int64\n\n    /// Message identifier. Use messageProperties.can_be_paid to check whether the message can be used in the method\n    public let messageId: Int64\n\n\n    public init(\n        chatId: Int64,\n        messageId: Int64\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n/// An invoice from a link of the type internalLinkTypeInvoice\npublic struct InputInvoiceName: Codable, Equatable, Hashable {\n\n    /// Name of the invoice\n    public let name: String\n\n\n    public init(name: String) {\n        self.name = name\n    }\n}\n\n/// An invoice for a payment toward Telegram; must not be used in the in-store apps\npublic struct InputInvoiceTelegram: Codable, Equatable, Hashable {\n\n    /// Transaction purpose\n    public let purpose: TelegramPaymentPurpose\n\n\n    public init(purpose: TelegramPaymentPurpose) {\n        self.purpose = purpose\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputMessageContent.swift",
    "content": "//\n//  InputMessageContent.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// The content of a message to send\n/// This Swift enum is recursive.\npublic indirect enum InputMessageContent: Codable, Equatable, Hashable {\n\n    /// A text message\n    case inputMessageText(InputMessageText)\n\n    /// An animation message (GIF-style).\n    case inputMessageAnimation(InputMessageAnimation)\n\n    /// An audio message\n    case inputMessageAudio(InputMessageAudio)\n\n    /// A document message (general file)\n    case inputMessageDocument(InputMessageDocument)\n\n    /// A message with paid media; can be used only in channel chats with supergroupFullInfo.has_paid_media_allowed\n    case inputMessagePaidMedia(InputMessagePaidMedia)\n\n    /// A photo message\n    case inputMessagePhoto(InputMessagePhoto)\n\n    /// A sticker message\n    case inputMessageSticker(InputMessageSticker)\n\n    /// A video message\n    case inputMessageVideo(InputMessageVideo)\n\n    /// A video note message\n    case inputMessageVideoNote(InputMessageVideoNote)\n\n    /// A voice note message\n    case inputMessageVoiceNote(InputMessageVoiceNote)\n\n    /// A message with a location\n    case inputMessageLocation(InputMessageLocation)\n\n    /// A message with information about a venue\n    case inputMessageVenue(InputMessageVenue)\n\n    /// A message containing a user contact\n    case inputMessageContact(InputMessageContact)\n\n    /// A dice message\n    case inputMessageDice(InputMessageDice)\n\n    /// A message with a game; not supported for channels or secret chats\n    case inputMessageGame(InputMessageGame)\n\n    /// A message with an invoice; can be used only by bots\n    case inputMessageInvoice(InputMessageInvoice)\n\n    /// A message with a poll. Polls can't be sent to secret chats and channel direct messages chats. Polls can be sent to a private chat only if the chat is a chat with a bot or the Saved Messages chat\n    case inputMessagePoll(InputMessagePoll)\n\n    /// A stake dice message\n    case inputMessageStakeDice(InputMessageStakeDice)\n\n    /// A message with a forwarded story. Stories can't be forwarded to secret chats. A story can be forwarded only if story.can_be_forwarded\n    case inputMessageStory(InputMessageStory)\n\n    /// A message with a checklist. Checklists can't be sent to secret chats, channel chats and channel direct messages chats; for Telegram Premium users only\n    case inputMessageChecklist(InputMessageChecklist)\n\n    /// A forwarded message\n    case inputMessageForwarded(InputMessageForwarded)\n\n\n    private enum Kind: String, Codable {\n        case inputMessageText\n        case inputMessageAnimation\n        case inputMessageAudio\n        case inputMessageDocument\n        case inputMessagePaidMedia\n        case inputMessagePhoto\n        case inputMessageSticker\n        case inputMessageVideo\n        case inputMessageVideoNote\n        case inputMessageVoiceNote\n        case inputMessageLocation\n        case inputMessageVenue\n        case inputMessageContact\n        case inputMessageDice\n        case inputMessageGame\n        case inputMessageInvoice\n        case inputMessagePoll\n        case inputMessageStakeDice\n        case inputMessageStory\n        case inputMessageChecklist\n        case inputMessageForwarded\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inputMessageText:\n            let value = try InputMessageText(from: decoder)\n            self = .inputMessageText(value)\n        case .inputMessageAnimation:\n            let value = try InputMessageAnimation(from: decoder)\n            self = .inputMessageAnimation(value)\n        case .inputMessageAudio:\n            let value = try InputMessageAudio(from: decoder)\n            self = .inputMessageAudio(value)\n        case .inputMessageDocument:\n            let value = try InputMessageDocument(from: decoder)\n            self = .inputMessageDocument(value)\n        case .inputMessagePaidMedia:\n            let value = try InputMessagePaidMedia(from: decoder)\n            self = .inputMessagePaidMedia(value)\n        case .inputMessagePhoto:\n            let value = try InputMessagePhoto(from: decoder)\n            self = .inputMessagePhoto(value)\n        case .inputMessageSticker:\n            let value = try InputMessageSticker(from: decoder)\n            self = .inputMessageSticker(value)\n        case .inputMessageVideo:\n            let value = try InputMessageVideo(from: decoder)\n            self = .inputMessageVideo(value)\n        case .inputMessageVideoNote:\n            let value = try InputMessageVideoNote(from: decoder)\n            self = .inputMessageVideoNote(value)\n        case .inputMessageVoiceNote:\n            let value = try InputMessageVoiceNote(from: decoder)\n            self = .inputMessageVoiceNote(value)\n        case .inputMessageLocation:\n            let value = try InputMessageLocation(from: decoder)\n            self = .inputMessageLocation(value)\n        case .inputMessageVenue:\n            let value = try InputMessageVenue(from: decoder)\n            self = .inputMessageVenue(value)\n        case .inputMessageContact:\n            let value = try InputMessageContact(from: decoder)\n            self = .inputMessageContact(value)\n        case .inputMessageDice:\n            let value = try InputMessageDice(from: decoder)\n            self = .inputMessageDice(value)\n        case .inputMessageGame:\n            let value = try InputMessageGame(from: decoder)\n            self = .inputMessageGame(value)\n        case .inputMessageInvoice:\n            let value = try InputMessageInvoice(from: decoder)\n            self = .inputMessageInvoice(value)\n        case .inputMessagePoll:\n            let value = try InputMessagePoll(from: decoder)\n            self = .inputMessagePoll(value)\n        case .inputMessageStakeDice:\n            let value = try InputMessageStakeDice(from: decoder)\n            self = .inputMessageStakeDice(value)\n        case .inputMessageStory:\n            let value = try InputMessageStory(from: decoder)\n            self = .inputMessageStory(value)\n        case .inputMessageChecklist:\n            let value = try InputMessageChecklist(from: decoder)\n            self = .inputMessageChecklist(value)\n        case .inputMessageForwarded:\n            let value = try InputMessageForwarded(from: decoder)\n            self = .inputMessageForwarded(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inputMessageText(let value):\n            try container.encode(Kind.inputMessageText, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessageAnimation(let value):\n            try container.encode(Kind.inputMessageAnimation, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessageAudio(let value):\n            try container.encode(Kind.inputMessageAudio, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessageDocument(let value):\n            try container.encode(Kind.inputMessageDocument, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessagePaidMedia(let value):\n            try container.encode(Kind.inputMessagePaidMedia, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessagePhoto(let value):\n            try container.encode(Kind.inputMessagePhoto, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessageSticker(let value):\n            try container.encode(Kind.inputMessageSticker, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessageVideo(let value):\n            try container.encode(Kind.inputMessageVideo, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessageVideoNote(let value):\n            try container.encode(Kind.inputMessageVideoNote, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessageVoiceNote(let value):\n            try container.encode(Kind.inputMessageVoiceNote, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessageLocation(let value):\n            try container.encode(Kind.inputMessageLocation, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessageVenue(let value):\n            try container.encode(Kind.inputMessageVenue, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessageContact(let value):\n            try container.encode(Kind.inputMessageContact, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessageDice(let value):\n            try container.encode(Kind.inputMessageDice, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessageGame(let value):\n            try container.encode(Kind.inputMessageGame, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessageInvoice(let value):\n            try container.encode(Kind.inputMessageInvoice, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessagePoll(let value):\n            try container.encode(Kind.inputMessagePoll, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessageStakeDice(let value):\n            try container.encode(Kind.inputMessageStakeDice, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessageStory(let value):\n            try container.encode(Kind.inputMessageStory, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessageChecklist(let value):\n            try container.encode(Kind.inputMessageChecklist, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessageForwarded(let value):\n            try container.encode(Kind.inputMessageForwarded, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A text message\npublic struct InputMessageText: Codable, Equatable, Hashable {\n\n    /// True, if the chat message draft must be deleted\n    public let clearDraft: Bool\n\n    /// Options to be used for generation of a link preview; may be null if none; pass null to use default link preview options\n    public let linkPreviewOptions: LinkPreviewOptions?\n\n    /// Formatted text to be sent; 0-getOption(\"message_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, BlockQuote, ExpandableBlockQuote, Code, Pre, PreCode, TextUrl, MentionName, and DateTime entities are allowed to be specified manually\n    public let text: FormattedText\n\n\n    public init(\n        clearDraft: Bool,\n        linkPreviewOptions: LinkPreviewOptions?,\n        text: FormattedText\n    ) {\n        self.clearDraft = clearDraft\n        self.linkPreviewOptions = linkPreviewOptions\n        self.text = text\n    }\n}\n\n/// An animation message (GIF-style).\npublic struct InputMessageAnimation: Codable, Equatable, Hashable {\n\n    /// File identifiers of the stickers added to the animation, if applicable\n    public let addedStickerFileIds: [Int]\n\n    /// Animation file to be sent\n    public let animation: InputFile\n\n    /// Animation caption; pass null to use an empty caption; 0-getOption(\"message_caption_length_max\") characters\n    public let caption: FormattedText?\n\n    /// Duration of the animation, in seconds\n    public let duration: Int\n\n    /// True, if the animation preview must be covered by a spoiler animation; not supported in secret chats\n    public let hasSpoiler: Bool\n\n    /// Height of the animation; may be replaced by the server\n    public let height: Int\n\n    /// True, if the caption must be shown above the animation; otherwise, the caption must be shown below the animation; not supported in secret chats\n    public let showCaptionAboveMedia: Bool\n\n    /// Animation thumbnail; pass null to skip thumbnail uploading\n    public let thumbnail: InputThumbnail?\n\n    /// Width of the animation; may be replaced by the server\n    public let width: Int\n\n\n    public init(\n        addedStickerFileIds: [Int],\n        animation: InputFile,\n        caption: FormattedText?,\n        duration: Int,\n        hasSpoiler: Bool,\n        height: Int,\n        showCaptionAboveMedia: Bool,\n        thumbnail: InputThumbnail?,\n        width: Int\n    ) {\n        self.addedStickerFileIds = addedStickerFileIds\n        self.animation = animation\n        self.caption = caption\n        self.duration = duration\n        self.hasSpoiler = hasSpoiler\n        self.height = height\n        self.showCaptionAboveMedia = showCaptionAboveMedia\n        self.thumbnail = thumbnail\n        self.width = width\n    }\n}\n\n/// An audio message\npublic struct InputMessageAudio: Codable, Equatable, Hashable {\n\n    /// Thumbnail of the cover for the album; pass null to skip thumbnail uploading\n    public let albumCoverThumbnail: InputThumbnail?\n\n    /// Audio file to be sent\n    public let audio: InputFile\n\n    /// Audio caption; pass null to use an empty caption; 0-getOption(\"message_caption_length_max\") characters\n    public let caption: FormattedText?\n\n    /// Duration of the audio, in seconds; may be replaced by the server\n    public let duration: Int\n\n    /// Performer of the audio; 0-64 characters, may be replaced by the server\n    public let performer: String\n\n    /// Title of the audio; 0-64 characters; may be replaced by the server\n    public let title: String\n\n\n    public init(\n        albumCoverThumbnail: InputThumbnail?,\n        audio: InputFile,\n        caption: FormattedText?,\n        duration: Int,\n        performer: String,\n        title: String\n    ) {\n        self.albumCoverThumbnail = albumCoverThumbnail\n        self.audio = audio\n        self.caption = caption\n        self.duration = duration\n        self.performer = performer\n        self.title = title\n    }\n}\n\n/// A document message (general file)\npublic struct InputMessageDocument: Codable, Equatable, Hashable {\n\n    /// Document caption; pass null to use an empty caption; 0-getOption(\"message_caption_length_max\") characters\n    public let caption: FormattedText?\n\n    /// Pass true to disable automatic file type detection and send the document as a file. Always true for files sent to secret chats\n    public let disableContentTypeDetection: Bool\n\n    /// Document to be sent\n    public let document: InputFile\n\n    /// Document thumbnail; pass null to skip thumbnail uploading\n    public let thumbnail: InputThumbnail?\n\n\n    public init(\n        caption: FormattedText?,\n        disableContentTypeDetection: Bool,\n        document: InputFile,\n        thumbnail: InputThumbnail?\n    ) {\n        self.caption = caption\n        self.disableContentTypeDetection = disableContentTypeDetection\n        self.document = document\n        self.thumbnail = thumbnail\n    }\n}\n\n/// A message with paid media; can be used only in channel chats with supergroupFullInfo.has_paid_media_allowed\npublic struct InputMessagePaidMedia: Codable, Equatable, Hashable {\n\n    /// Message caption; pass null to use an empty caption; 0-getOption(\"message_caption_length_max\") characters\n    public let caption: FormattedText?\n\n    /// The content of the paid media\n    public let paidMedia: [InputPaidMedia]\n\n    /// Bot-provided data for the paid media; bots only\n    public let payload: String\n\n    /// True, if the caption must be shown above the media; otherwise, the caption must be shown below the media; not supported in secret chats\n    public let showCaptionAboveMedia: Bool\n\n    /// The number of Telegram Stars that must be paid to see the media; 1-getOption(\"paid_media_message_star_count_max\")\n    public let starCount: Int64\n\n\n    public init(\n        caption: FormattedText?,\n        paidMedia: [InputPaidMedia],\n        payload: String,\n        showCaptionAboveMedia: Bool,\n        starCount: Int64\n    ) {\n        self.caption = caption\n        self.paidMedia = paidMedia\n        self.payload = payload\n        self.showCaptionAboveMedia = showCaptionAboveMedia\n        self.starCount = starCount\n    }\n}\n\n/// A photo message\npublic struct InputMessagePhoto: Codable, Equatable, Hashable {\n\n    /// File identifiers of the stickers added to the photo, if applicable\n    public let addedStickerFileIds: [Int]\n\n    /// Photo caption; pass null to use an empty caption; 0-getOption(\"message_caption_length_max\") characters\n    public let caption: FormattedText?\n\n    /// True, if the photo preview must be covered by a spoiler animation; not supported in secret chats\n    public let hasSpoiler: Bool\n\n    /// Photo height\n    public let height: Int\n\n    /// Photo to send. The photo must be at most 10 MB in size. The photo's width and height must not exceed 10000 in total. Width and height ratio must be at most 20\n    public let photo: InputFile\n\n    /// Photo self-destruct type; pass null if none; private chats only\n    public let selfDestructType: MessageSelfDestructType?\n\n    /// True, if the caption must be shown above the photo; otherwise, the caption must be shown below the photo; not supported in secret chats\n    public let showCaptionAboveMedia: Bool\n\n    /// Photo thumbnail to be sent; pass null to skip thumbnail uploading. The thumbnail is sent to the other party only in secret chats\n    public let thumbnail: InputThumbnail?\n\n    /// Video of the live photo; not supported in secret chats; pass null if the photo isn't a live photo\n    public let video: InputFile?\n\n    /// Photo width\n    public let width: Int\n\n\n    public init(\n        addedStickerFileIds: [Int],\n        caption: FormattedText?,\n        hasSpoiler: Bool,\n        height: Int,\n        photo: InputFile,\n        selfDestructType: MessageSelfDestructType?,\n        showCaptionAboveMedia: Bool,\n        thumbnail: InputThumbnail?,\n        video: InputFile?,\n        width: Int\n    ) {\n        self.addedStickerFileIds = addedStickerFileIds\n        self.caption = caption\n        self.hasSpoiler = hasSpoiler\n        self.height = height\n        self.photo = photo\n        self.selfDestructType = selfDestructType\n        self.showCaptionAboveMedia = showCaptionAboveMedia\n        self.thumbnail = thumbnail\n        self.video = video\n        self.width = width\n    }\n}\n\n/// A sticker message\npublic struct InputMessageSticker: Codable, Equatable, Hashable {\n\n    /// Emoji used to choose the sticker\n    public let emoji: String\n\n    /// Sticker height\n    public let height: Int\n\n    /// Sticker to be sent\n    public let sticker: InputFile\n\n    /// Sticker thumbnail; pass null to skip thumbnail uploading\n    public let thumbnail: InputThumbnail?\n\n    /// Sticker width\n    public let width: Int\n\n\n    public init(\n        emoji: String,\n        height: Int,\n        sticker: InputFile,\n        thumbnail: InputThumbnail?,\n        width: Int\n    ) {\n        self.emoji = emoji\n        self.height = height\n        self.sticker = sticker\n        self.thumbnail = thumbnail\n        self.width = width\n    }\n}\n\n/// A video message\npublic struct InputMessageVideo: Codable, Equatable, Hashable {\n\n    /// File identifiers of the stickers added to the video, if applicable\n    public let addedStickerFileIds: [Int]\n\n    /// Video caption; pass null to use an empty caption; 0-getOption(\"message_caption_length_max\") characters\n    public let caption: FormattedText?\n\n    /// Cover of the video; pass null to skip cover uploading; not supported in secret chats and for self-destructing messages\n    public let cover: InputFile?\n\n    /// Duration of the video, in seconds\n    public let duration: Int\n\n    /// True, if the video preview must be covered by a spoiler animation; not supported in secret chats\n    public let hasSpoiler: Bool\n\n    /// Video height\n    public let height: Int\n\n    /// Video self-destruct type; pass null if none; private chats only\n    public let selfDestructType: MessageSelfDestructType?\n\n    /// True, if the caption must be shown above the video; otherwise, the caption must be shown below the video; not supported in secret chats\n    public let showCaptionAboveMedia: Bool\n\n    /// Timestamp from which the video playing must start, in seconds\n    public let startTimestamp: Int\n\n    /// True, if the video is expected to be streamed\n    public let supportsStreaming: Bool\n\n    /// Video thumbnail; pass null to skip thumbnail uploading\n    public let thumbnail: InputThumbnail?\n\n    /// Video to be sent. The video is expected to be re-encoded to MPEG4 format with H.264 codec by the sender\n    public let video: InputFile\n\n    /// Video width\n    public let width: Int\n\n\n    public init(\n        addedStickerFileIds: [Int],\n        caption: FormattedText?,\n        cover: InputFile?,\n        duration: Int,\n        hasSpoiler: Bool,\n        height: Int,\n        selfDestructType: MessageSelfDestructType?,\n        showCaptionAboveMedia: Bool,\n        startTimestamp: Int,\n        supportsStreaming: Bool,\n        thumbnail: InputThumbnail?,\n        video: InputFile,\n        width: Int\n    ) {\n        self.addedStickerFileIds = addedStickerFileIds\n        self.caption = caption\n        self.cover = cover\n        self.duration = duration\n        self.hasSpoiler = hasSpoiler\n        self.height = height\n        self.selfDestructType = selfDestructType\n        self.showCaptionAboveMedia = showCaptionAboveMedia\n        self.startTimestamp = startTimestamp\n        self.supportsStreaming = supportsStreaming\n        self.thumbnail = thumbnail\n        self.video = video\n        self.width = width\n    }\n}\n\n/// A video note message\npublic struct InputMessageVideoNote: Codable, Equatable, Hashable {\n\n    /// Duration of the video, in seconds; 0-60\n    public let duration: Int\n\n    /// Video width and height; must be positive and not greater than 640\n    public let length: Int\n\n    /// Video note self-destruct type; may be null if none; pass null if none; private chats only\n    public let selfDestructType: MessageSelfDestructType?\n\n    /// Video thumbnail; may be null if empty; pass null to skip thumbnail uploading\n    public let thumbnail: InputThumbnail?\n\n    /// Video note to be sent. The video is expected to be encoded to MPEG4 format with H.264 codec and have no data outside of the visible circle\n    public let videoNote: InputFile\n\n\n    public init(\n        duration: Int,\n        length: Int,\n        selfDestructType: MessageSelfDestructType?,\n        thumbnail: InputThumbnail?,\n        videoNote: InputFile\n    ) {\n        self.duration = duration\n        self.length = length\n        self.selfDestructType = selfDestructType\n        self.thumbnail = thumbnail\n        self.videoNote = videoNote\n    }\n}\n\n/// A voice note message\npublic struct InputMessageVoiceNote: Codable, Equatable, Hashable {\n\n    /// Voice note caption; may be null if empty; pass null to use an empty caption; 0-getOption(\"message_caption_length_max\") characters\n    public let caption: FormattedText?\n\n    /// Duration of the voice note, in seconds\n    public let duration: Int\n\n    /// Voice note self-destruct type; may be null if none; pass null if none; private chats only\n    public let selfDestructType: MessageSelfDestructType?\n\n    /// Voice note to be sent. The voice note must be encoded with the Opus codec and stored inside an OGG container with a single audio channel, or be in MP3 or M4A format as regular audio\n    public let voiceNote: InputFile\n\n    /// Waveform representation of the voice note in 5-bit format\n    public let waveform: Data\n\n\n    public init(\n        caption: FormattedText?,\n        duration: Int,\n        selfDestructType: MessageSelfDestructType?,\n        voiceNote: InputFile,\n        waveform: Data\n    ) {\n        self.caption = caption\n        self.duration = duration\n        self.selfDestructType = selfDestructType\n        self.voiceNote = voiceNote\n        self.waveform = waveform\n    }\n}\n\n/// A message with a location\npublic struct InputMessageLocation: Codable, Equatable, Hashable {\n\n    /// For live locations, a direction in which the location moves, in degrees; 1-360. Pass 0 if unknown\n    public let heading: Int\n\n    /// Period for which the location can be updated, in seconds; must be between 60 and 86400 for a temporary live location, 0x7FFFFFFF for permanent live location, and 0 otherwise\n    public let livePeriod: Int\n\n    /// Location to be sent\n    public let location: Location\n\n    /// For live locations, a maximum distance to another chat member for proximity alerts, in meters (0-100000). Pass 0 if the notification is disabled. Can't be enabled in channels and Saved Messages\n    public let proximityAlertRadius: Int\n\n\n    public init(\n        heading: Int,\n        livePeriod: Int,\n        location: Location,\n        proximityAlertRadius: Int\n    ) {\n        self.heading = heading\n        self.livePeriod = livePeriod\n        self.location = location\n        self.proximityAlertRadius = proximityAlertRadius\n    }\n}\n\n/// A message with information about a venue\npublic struct InputMessageVenue: Codable, Equatable, Hashable {\n\n    /// Venue to send\n    public let venue: Venue\n\n\n    public init(venue: Venue) {\n        self.venue = venue\n    }\n}\n\n/// A message containing a user contact\npublic struct InputMessageContact: Codable, Equatable, Hashable {\n\n    /// Contact to send\n    public let contact: Contact\n\n\n    public init(contact: Contact) {\n        self.contact = contact\n    }\n}\n\n/// A dice message\npublic struct InputMessageDice: Codable, Equatable, Hashable {\n\n    /// True, if the chat message draft must be deleted\n    public let clearDraft: Bool\n\n    /// Emoji on which the dice throw animation is based\n    public let emoji: String\n\n\n    public init(\n        clearDraft: Bool,\n        emoji: String\n    ) {\n        self.clearDraft = clearDraft\n        self.emoji = emoji\n    }\n}\n\n/// A message with a game; not supported for channels or secret chats\npublic struct InputMessageGame: Codable, Equatable, Hashable {\n\n    /// User identifier of the bot that owns the game\n    public let botUserId: Int64\n\n    /// Short name of the game\n    public let gameShortName: String\n\n\n    public init(\n        botUserId: Int64,\n        gameShortName: String\n    ) {\n        self.botUserId = botUserId\n        self.gameShortName = gameShortName\n    }\n}\n\n/// A message with an invoice; can be used only by bots\npublic struct InputMessageInvoice: Codable, Equatable, Hashable {\n\n    public let description: String\n\n    /// Invoice\n    public let invoice: Invoice\n\n    /// The content of paid media attached to the invoice; pass null if none\n    public let paidMedia: InputPaidMedia?\n\n    /// Paid media caption; pass null to use an empty caption; 0-getOption(\"message_caption_length_max\") characters\n    public let paidMediaCaption: FormattedText?\n\n    /// The invoice payload\n    public let payload: Data\n\n    /// Product photo height\n    public let photoHeight: Int\n\n    /// Product photo size\n    public let photoSize: Int\n\n    /// Product photo URL; optional\n    public let photoUrl: String\n\n    /// Product photo width\n    public let photoWidth: Int\n\n    /// JSON-encoded data about the invoice, which will be shared with the payment provider\n    public let providerData: String\n\n    /// Payment provider token; may be empty for payments in Telegram Stars\n    public let providerToken: String\n\n    /// Unique invoice bot deep link parameter for the generation of this invoice. If empty, it would be possible to pay directly from forwards of the invoice message\n    public let startParameter: String\n\n    /// Product title; 1-32 characters\n    public let title: String\n\n\n    public init(\n        description: String,\n        invoice: Invoice,\n        paidMedia: InputPaidMedia?,\n        paidMediaCaption: FormattedText?,\n        payload: Data,\n        photoHeight: Int,\n        photoSize: Int,\n        photoUrl: String,\n        photoWidth: Int,\n        providerData: String,\n        providerToken: String,\n        startParameter: String,\n        title: String\n    ) {\n        self.description = description\n        self.invoice = invoice\n        self.paidMedia = paidMedia\n        self.paidMediaCaption = paidMediaCaption\n        self.payload = payload\n        self.photoHeight = photoHeight\n        self.photoSize = photoSize\n        self.photoUrl = photoUrl\n        self.photoWidth = photoWidth\n        self.providerData = providerData\n        self.providerToken = providerToken\n        self.startParameter = startParameter\n        self.title = title\n    }\n}\n\n/// A message with a poll. Polls can't be sent to secret chats and channel direct messages chats. Polls can be sent to a private chat only if the chat is a chat with a bot or the Saved Messages chat\npublic struct InputMessagePoll: Codable, Equatable, Hashable {\n\n    /// True, if multiple answer options can be chosen simultaneously\n    public let allowsMultipleAnswers: Bool\n\n    /// True, if the poll can be answered multiple times\n    public let allowsRevoting: Bool\n\n    /// Point in time (Unix timestamp) when the poll will automatically be closed; must be 0-getOption(\"poll_open_period_max\") seconds in the future; pass 0 if not specified\n    public let closeDate: Int\n\n    /// The list of two-letter ISO 3166-1 alpha-2 codes of countries, users from which will be able to vote; for channel chats only. If empty, then all users can participate in the poll. There can be up to getOption(\"poll_country_count_max\") chosen countries\n    public let countryCodes: [String]\n\n    public let description: FormattedText\n\n    /// True, if the poll results will appear only after the poll closes\n    public let hideResultsUntilCloses: Bool\n\n    /// True, if the poll voters are anonymous. Non-anonymous polls can't be sent or forwarded to channels\n    public let isAnonymous: Bool\n\n    /// True, if the poll needs to be sent already closed; for bots only\n    public let isClosed: Bool\n\n    /// Media attached to the poll; pass null if none. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageDocument, non-live inputMessageLocation, inputMessagePhoto, inputMessageVenue, or inputMessageVideo without caption\n    public let media: InputMessageContent?\n\n    /// True, if only the users that are members of the chat for more than a day will be able to vote; for channel chats only\n    public let membersOnly: Bool\n\n    /// Amount of time the poll will be active after creation, in seconds; 0-getOption(\"poll_open_period_max\"); pass 0 if not specified\n    public let openPeriod: Int\n\n    /// List of poll answer options; 1-getOption(\"poll_answer_count_max\") options\n    public let options: [InputPollOption]\n\n    /// Poll question; 1-255 characters (up to 300 characters for bots). Only custom emoji entities are allowed to be added and only by Premium users\n    public let question: FormattedText\n\n    /// True, if poll options must be shown in a fixed random order\n    public let shuffleOptions: Bool\n\n    /// Type of the poll\n    public let type: InputPollType\n\n\n    public init(\n        allowsMultipleAnswers: Bool,\n        allowsRevoting: Bool,\n        closeDate: Int,\n        countryCodes: [String],\n        description: FormattedText,\n        hideResultsUntilCloses: Bool,\n        isAnonymous: Bool,\n        isClosed: Bool,\n        media: InputMessageContent?,\n        membersOnly: Bool,\n        openPeriod: Int,\n        options: [InputPollOption],\n        question: FormattedText,\n        shuffleOptions: Bool,\n        type: InputPollType\n    ) {\n        self.allowsMultipleAnswers = allowsMultipleAnswers\n        self.allowsRevoting = allowsRevoting\n        self.closeDate = closeDate\n        self.countryCodes = countryCodes\n        self.description = description\n        self.hideResultsUntilCloses = hideResultsUntilCloses\n        self.isAnonymous = isAnonymous\n        self.isClosed = isClosed\n        self.media = media\n        self.membersOnly = membersOnly\n        self.openPeriod = openPeriod\n        self.options = options\n        self.question = question\n        self.shuffleOptions = shuffleOptions\n        self.type = type\n    }\n}\n\n/// A stake dice message\npublic struct InputMessageStakeDice: Codable, Equatable, Hashable {\n\n    /// True, if the chat message draft must be deleted\n    public let clearDraft: Bool\n\n    /// The Toncoin amount that will be staked; in the smallest units of the currency. Must be in the range getOption(\"stake_dice_stake_amount_min\")-getOption(\"stake_dice_stake_amount_max\")\n    public let stakeToncoinAmount: Int64\n\n    /// Hash of the stake dice state. The state hash can be used only if it was received recently enough. Otherwise, a new state must be requested using getStakeDiceState\n    public let stateHash: String\n\n\n    public init(\n        clearDraft: Bool,\n        stakeToncoinAmount: Int64,\n        stateHash: String\n    ) {\n        self.clearDraft = clearDraft\n        self.stakeToncoinAmount = stakeToncoinAmount\n        self.stateHash = stateHash\n    }\n}\n\n/// A message with a forwarded story. Stories can't be forwarded to secret chats. A story can be forwarded only if story.can_be_forwarded\npublic struct InputMessageStory: Codable, Equatable, Hashable {\n\n    /// Story identifier\n    public let storyId: Int\n\n    /// Identifier of the chat that posted the story\n    public let storyPosterChatId: Int64\n\n\n    public init(\n        storyId: Int,\n        storyPosterChatId: Int64\n    ) {\n        self.storyId = storyId\n        self.storyPosterChatId = storyPosterChatId\n    }\n}\n\n/// A message with a checklist. Checklists can't be sent to secret chats, channel chats and channel direct messages chats; for Telegram Premium users only\npublic struct InputMessageChecklist: Codable, Equatable, Hashable {\n\n    /// The checklist to send\n    public let checklist: InputChecklist\n\n\n    public init(checklist: InputChecklist) {\n        self.checklist = checklist\n    }\n}\n\n/// A forwarded message\npublic struct InputMessageForwarded: Codable, Equatable, Hashable {\n\n    /// Options to be used to copy content of the message without reference to the original sender; pass null to forward the message as usual\n    public let copyOptions: MessageCopyOptions?\n\n    /// Identifier for the chat this forwarded message came from\n    public let fromChatId: Int64\n\n    /// Pass true if a game message is being shared from a launched game; applies only to game messages\n    public let inGameShare: Bool\n\n    /// Identifier of the message to forward. A message can be forwarded only if messageProperties.can_be_forwarded\n    public let messageId: Int64\n\n    /// The new video start timestamp; ignored if replace_video_start_timestamp == false\n    public let newVideoStartTimestamp: Int\n\n    /// Pass true to replace video start timestamp in the forwarded message\n    public let replaceVideoStartTimestamp: Bool\n\n\n    public init(\n        copyOptions: MessageCopyOptions?,\n        fromChatId: Int64,\n        inGameShare: Bool,\n        messageId: Int64,\n        newVideoStartTimestamp: Int,\n        replaceVideoStartTimestamp: Bool\n    ) {\n        self.copyOptions = copyOptions\n        self.fromChatId = fromChatId\n        self.inGameShare = inGameShare\n        self.messageId = messageId\n        self.newVideoStartTimestamp = newVideoStartTimestamp\n        self.replaceVideoStartTimestamp = replaceVideoStartTimestamp\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputMessageReplyTo.swift",
    "content": "//\n//  InputMessageReplyTo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about the message or the story to be replied\npublic indirect enum InputMessageReplyTo: Codable, Equatable, Hashable {\n\n    /// Describes a message to be replied in the same chat and forum topic\n    case inputMessageReplyToMessage(InputMessageReplyToMessage)\n\n    /// Describes a message to be replied that is from a different chat or a forum topic; not supported in secret chats\n    case inputMessageReplyToExternalMessage(InputMessageReplyToExternalMessage)\n\n    /// Describes a story to be replied\n    case inputMessageReplyToStory(InputMessageReplyToStory)\n\n\n    private enum Kind: String, Codable {\n        case inputMessageReplyToMessage\n        case inputMessageReplyToExternalMessage\n        case inputMessageReplyToStory\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inputMessageReplyToMessage:\n            let value = try InputMessageReplyToMessage(from: decoder)\n            self = .inputMessageReplyToMessage(value)\n        case .inputMessageReplyToExternalMessage:\n            let value = try InputMessageReplyToExternalMessage(from: decoder)\n            self = .inputMessageReplyToExternalMessage(value)\n        case .inputMessageReplyToStory:\n            let value = try InputMessageReplyToStory(from: decoder)\n            self = .inputMessageReplyToStory(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inputMessageReplyToMessage(let value):\n            try container.encode(Kind.inputMessageReplyToMessage, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessageReplyToExternalMessage(let value):\n            try container.encode(Kind.inputMessageReplyToExternalMessage, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputMessageReplyToStory(let value):\n            try container.encode(Kind.inputMessageReplyToStory, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Describes a message to be replied in the same chat and forum topic\npublic struct InputMessageReplyToMessage: Codable, Equatable, Hashable {\n\n    /// Identifier of the checklist task in the message to be replied; pass 0 to reply to the whole message\n    public let checklistTaskId: Int\n\n    /// The identifier of the message to be replied in the same chat and forum topic. A message can be replied in the same chat and forum topic only if messageProperties.can_be_replied\n    public let messageId: Int64\n\n    /// Identifier of the poll option in the message to be replied; pass an empty string if none\n    public let pollOptionId: String\n\n    /// Quote from the message to be replied; pass null if none. Must always be null for replies in secret chats\n    public let quote: InputTextQuote?\n\n\n    public init(\n        checklistTaskId: Int,\n        messageId: Int64,\n        pollOptionId: String,\n        quote: InputTextQuote?\n    ) {\n        self.checklistTaskId = checklistTaskId\n        self.messageId = messageId\n        self.pollOptionId = pollOptionId\n        self.quote = quote\n    }\n}\n\n/// Describes a message to be replied that is from a different chat or a forum topic; not supported in secret chats\npublic struct InputMessageReplyToExternalMessage: Codable, Equatable, Hashable {\n\n    /// The identifier of the chat to which the message to be replied belongs\n    public let chatId: Int64\n\n    /// Identifier of the checklist task in the message to be replied; pass 0 to reply to the whole message\n    public let checklistTaskId: Int\n\n    /// The identifier of the message to be replied in the specified chat. A message can be replied in another chat or forum topic only if messageProperties.can_be_replied_in_another_chat\n    public let messageId: Int64\n\n    /// Identifier of the poll option in the message to be replied; pass an empty string if none\n    public let pollOptionId: String\n\n    /// Quote from the message to be replied; pass null if none\n    public let quote: InputTextQuote?\n\n\n    public init(\n        chatId: Int64,\n        checklistTaskId: Int,\n        messageId: Int64,\n        pollOptionId: String,\n        quote: InputTextQuote?\n    ) {\n        self.chatId = chatId\n        self.checklistTaskId = checklistTaskId\n        self.messageId = messageId\n        self.pollOptionId = pollOptionId\n        self.quote = quote\n    }\n}\n\n/// Describes a story to be replied\npublic struct InputMessageReplyToStory: Codable, Equatable, Hashable {\n\n    /// The identifier of the story\n    public let storyId: Int\n\n    /// The identifier of the poster of the story. Currently, stories can be replied only in the chat that posted the story; channel stories can't be replied\n    public let storyPosterChatId: Int64\n\n\n    public init(\n        storyId: Int,\n        storyPosterChatId: Int64\n    ) {\n        self.storyId = storyId\n        self.storyPosterChatId = storyPosterChatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputPaidMedia.swift",
    "content": "//\n//  InputPaidMedia.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a paid media to be sent\npublic struct InputPaidMedia: Codable, Equatable, Hashable {\n\n    /// File identifiers of the stickers added to the media, if applicable\n    public let addedStickerFileIds: [Int]\n\n    /// Media height\n    public let height: Int\n\n    /// Photo or video to be sent\n    public let media: InputFile\n\n    /// Media thumbnail; pass null to skip thumbnail uploading\n    public let thumbnail: InputThumbnail?\n\n    /// Type of the media\n    public let type: InputPaidMediaType\n\n    /// Media width\n    public let width: Int\n\n\n    public init(\n        addedStickerFileIds: [Int],\n        height: Int,\n        media: InputFile,\n        thumbnail: InputThumbnail?,\n        type: InputPaidMediaType,\n        width: Int\n    ) {\n        self.addedStickerFileIds = addedStickerFileIds\n        self.height = height\n        self.media = media\n        self.thumbnail = thumbnail\n        self.type = type\n        self.width = width\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputPaidMediaType.swift",
    "content": "//\n//  InputPaidMediaType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of paid media to sent\npublic indirect enum InputPaidMediaType: Codable, Equatable, Hashable {\n\n    /// The media is a photo. The photo must be at most 10 MB in size. The photo's width and height must not exceed 10000 in total. Width and height ratio must be at most 20\n    case inputPaidMediaTypePhoto(InputPaidMediaTypePhoto)\n\n    /// The media is a video\n    case inputPaidMediaTypeVideo(InputPaidMediaTypeVideo)\n\n\n    private enum Kind: String, Codable {\n        case inputPaidMediaTypePhoto\n        case inputPaidMediaTypeVideo\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inputPaidMediaTypePhoto:\n            let value = try InputPaidMediaTypePhoto(from: decoder)\n            self = .inputPaidMediaTypePhoto(value)\n        case .inputPaidMediaTypeVideo:\n            let value = try InputPaidMediaTypeVideo(from: decoder)\n            self = .inputPaidMediaTypeVideo(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inputPaidMediaTypePhoto(let value):\n            try container.encode(Kind.inputPaidMediaTypePhoto, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPaidMediaTypeVideo(let value):\n            try container.encode(Kind.inputPaidMediaTypeVideo, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The media is a photo. The photo must be at most 10 MB in size. The photo's width and height must not exceed 10000 in total. Width and height ratio must be at most 20\npublic struct InputPaidMediaTypePhoto: Codable, Equatable, Hashable {\n\n    /// Video of the live photo; pass null if the photo isn't a live photo\n    public let video: InputFile?\n\n\n    public init(video: InputFile?) {\n        self.video = video\n    }\n}\n\n/// The media is a video\npublic struct InputPaidMediaTypeVideo: Codable, Equatable, Hashable {\n\n    /// Cover of the video; pass null to skip cover uploading\n    public let cover: InputFile?\n\n    /// Duration of the video, in seconds\n    public let duration: Int\n\n    /// Timestamp from which the video playing must start, in seconds\n    public let startTimestamp: Int\n\n    /// True, if the video is expected to be streamed\n    public let supportsStreaming: Bool\n\n\n    public init(\n        cover: InputFile?,\n        duration: Int,\n        startTimestamp: Int,\n        supportsStreaming: Bool\n    ) {\n        self.cover = cover\n        self.duration = duration\n        self.startTimestamp = startTimestamp\n        self.supportsStreaming = supportsStreaming\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputPassportElement.swift",
    "content": "//\n//  InputPassportElement.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a Telegram Passport element to be saved\npublic indirect enum InputPassportElement: Codable, Equatable, Hashable {\n\n    /// A Telegram Passport element to be saved containing the user's personal details\n    case inputPassportElementPersonalDetails(InputPassportElementPersonalDetails)\n\n    /// A Telegram Passport element to be saved containing the user's passport\n    case inputPassportElementPassport(InputPassportElementPassport)\n\n    /// A Telegram Passport element to be saved containing the user's driver license\n    case inputPassportElementDriverLicense(InputPassportElementDriverLicense)\n\n    /// A Telegram Passport element to be saved containing the user's identity card\n    case inputPassportElementIdentityCard(InputPassportElementIdentityCard)\n\n    /// A Telegram Passport element to be saved containing the user's internal passport\n    case inputPassportElementInternalPassport(InputPassportElementInternalPassport)\n\n    /// A Telegram Passport element to be saved containing the user's address\n    case inputPassportElementAddress(InputPassportElementAddress)\n\n    /// A Telegram Passport element to be saved containing the user's utility bill\n    case inputPassportElementUtilityBill(InputPassportElementUtilityBill)\n\n    /// A Telegram Passport element to be saved containing the user's bank statement\n    case inputPassportElementBankStatement(InputPassportElementBankStatement)\n\n    /// A Telegram Passport element to be saved containing the user's rental agreement\n    case inputPassportElementRentalAgreement(InputPassportElementRentalAgreement)\n\n    /// A Telegram Passport element to be saved containing the user's passport registration\n    case inputPassportElementPassportRegistration(InputPassportElementPassportRegistration)\n\n    /// A Telegram Passport element to be saved containing the user's temporary registration\n    case inputPassportElementTemporaryRegistration(InputPassportElementTemporaryRegistration)\n\n    /// A Telegram Passport element to be saved containing the user's phone number\n    case inputPassportElementPhoneNumber(InputPassportElementPhoneNumber)\n\n    /// A Telegram Passport element to be saved containing the user's email address\n    case inputPassportElementEmailAddress(InputPassportElementEmailAddress)\n\n\n    private enum Kind: String, Codable {\n        case inputPassportElementPersonalDetails\n        case inputPassportElementPassport\n        case inputPassportElementDriverLicense\n        case inputPassportElementIdentityCard\n        case inputPassportElementInternalPassport\n        case inputPassportElementAddress\n        case inputPassportElementUtilityBill\n        case inputPassportElementBankStatement\n        case inputPassportElementRentalAgreement\n        case inputPassportElementPassportRegistration\n        case inputPassportElementTemporaryRegistration\n        case inputPassportElementPhoneNumber\n        case inputPassportElementEmailAddress\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inputPassportElementPersonalDetails:\n            let value = try InputPassportElementPersonalDetails(from: decoder)\n            self = .inputPassportElementPersonalDetails(value)\n        case .inputPassportElementPassport:\n            let value = try InputPassportElementPassport(from: decoder)\n            self = .inputPassportElementPassport(value)\n        case .inputPassportElementDriverLicense:\n            let value = try InputPassportElementDriverLicense(from: decoder)\n            self = .inputPassportElementDriverLicense(value)\n        case .inputPassportElementIdentityCard:\n            let value = try InputPassportElementIdentityCard(from: decoder)\n            self = .inputPassportElementIdentityCard(value)\n        case .inputPassportElementInternalPassport:\n            let value = try InputPassportElementInternalPassport(from: decoder)\n            self = .inputPassportElementInternalPassport(value)\n        case .inputPassportElementAddress:\n            let value = try InputPassportElementAddress(from: decoder)\n            self = .inputPassportElementAddress(value)\n        case .inputPassportElementUtilityBill:\n            let value = try InputPassportElementUtilityBill(from: decoder)\n            self = .inputPassportElementUtilityBill(value)\n        case .inputPassportElementBankStatement:\n            let value = try InputPassportElementBankStatement(from: decoder)\n            self = .inputPassportElementBankStatement(value)\n        case .inputPassportElementRentalAgreement:\n            let value = try InputPassportElementRentalAgreement(from: decoder)\n            self = .inputPassportElementRentalAgreement(value)\n        case .inputPassportElementPassportRegistration:\n            let value = try InputPassportElementPassportRegistration(from: decoder)\n            self = .inputPassportElementPassportRegistration(value)\n        case .inputPassportElementTemporaryRegistration:\n            let value = try InputPassportElementTemporaryRegistration(from: decoder)\n            self = .inputPassportElementTemporaryRegistration(value)\n        case .inputPassportElementPhoneNumber:\n            let value = try InputPassportElementPhoneNumber(from: decoder)\n            self = .inputPassportElementPhoneNumber(value)\n        case .inputPassportElementEmailAddress:\n            let value = try InputPassportElementEmailAddress(from: decoder)\n            self = .inputPassportElementEmailAddress(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inputPassportElementPersonalDetails(let value):\n            try container.encode(Kind.inputPassportElementPersonalDetails, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPassportElementPassport(let value):\n            try container.encode(Kind.inputPassportElementPassport, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPassportElementDriverLicense(let value):\n            try container.encode(Kind.inputPassportElementDriverLicense, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPassportElementIdentityCard(let value):\n            try container.encode(Kind.inputPassportElementIdentityCard, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPassportElementInternalPassport(let value):\n            try container.encode(Kind.inputPassportElementInternalPassport, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPassportElementAddress(let value):\n            try container.encode(Kind.inputPassportElementAddress, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPassportElementUtilityBill(let value):\n            try container.encode(Kind.inputPassportElementUtilityBill, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPassportElementBankStatement(let value):\n            try container.encode(Kind.inputPassportElementBankStatement, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPassportElementRentalAgreement(let value):\n            try container.encode(Kind.inputPassportElementRentalAgreement, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPassportElementPassportRegistration(let value):\n            try container.encode(Kind.inputPassportElementPassportRegistration, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPassportElementTemporaryRegistration(let value):\n            try container.encode(Kind.inputPassportElementTemporaryRegistration, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPassportElementPhoneNumber(let value):\n            try container.encode(Kind.inputPassportElementPhoneNumber, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPassportElementEmailAddress(let value):\n            try container.encode(Kind.inputPassportElementEmailAddress, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A Telegram Passport element to be saved containing the user's personal details\npublic struct InputPassportElementPersonalDetails: Codable, Equatable, Hashable {\n\n    /// Personal details of the user\n    public let personalDetails: PersonalDetails\n\n\n    public init(personalDetails: PersonalDetails) {\n        self.personalDetails = personalDetails\n    }\n}\n\n/// A Telegram Passport element to be saved containing the user's passport\npublic struct InputPassportElementPassport: Codable, Equatable, Hashable {\n\n    /// The passport to be saved\n    public let passport: InputIdentityDocument\n\n\n    public init(passport: InputIdentityDocument) {\n        self.passport = passport\n    }\n}\n\n/// A Telegram Passport element to be saved containing the user's driver license\npublic struct InputPassportElementDriverLicense: Codable, Equatable, Hashable {\n\n    /// The driver license to be saved\n    public let driverLicense: InputIdentityDocument\n\n\n    public init(driverLicense: InputIdentityDocument) {\n        self.driverLicense = driverLicense\n    }\n}\n\n/// A Telegram Passport element to be saved containing the user's identity card\npublic struct InputPassportElementIdentityCard: Codable, Equatable, Hashable {\n\n    /// The identity card to be saved\n    public let identityCard: InputIdentityDocument\n\n\n    public init(identityCard: InputIdentityDocument) {\n        self.identityCard = identityCard\n    }\n}\n\n/// A Telegram Passport element to be saved containing the user's internal passport\npublic struct InputPassportElementInternalPassport: Codable, Equatable, Hashable {\n\n    /// The internal passport to be saved\n    public let internalPassport: InputIdentityDocument\n\n\n    public init(internalPassport: InputIdentityDocument) {\n        self.internalPassport = internalPassport\n    }\n}\n\n/// A Telegram Passport element to be saved containing the user's address\npublic struct InputPassportElementAddress: Codable, Equatable, Hashable {\n\n    /// The address to be saved\n    public let address: Address\n\n\n    public init(address: Address) {\n        self.address = address\n    }\n}\n\n/// A Telegram Passport element to be saved containing the user's utility bill\npublic struct InputPassportElementUtilityBill: Codable, Equatable, Hashable {\n\n    /// The utility bill to be saved\n    public let utilityBill: InputPersonalDocument\n\n\n    public init(utilityBill: InputPersonalDocument) {\n        self.utilityBill = utilityBill\n    }\n}\n\n/// A Telegram Passport element to be saved containing the user's bank statement\npublic struct InputPassportElementBankStatement: Codable, Equatable, Hashable {\n\n    /// The bank statement to be saved\n    public let bankStatement: InputPersonalDocument\n\n\n    public init(bankStatement: InputPersonalDocument) {\n        self.bankStatement = bankStatement\n    }\n}\n\n/// A Telegram Passport element to be saved containing the user's rental agreement\npublic struct InputPassportElementRentalAgreement: Codable, Equatable, Hashable {\n\n    /// The rental agreement to be saved\n    public let rentalAgreement: InputPersonalDocument\n\n\n    public init(rentalAgreement: InputPersonalDocument) {\n        self.rentalAgreement = rentalAgreement\n    }\n}\n\n/// A Telegram Passport element to be saved containing the user's passport registration\npublic struct InputPassportElementPassportRegistration: Codable, Equatable, Hashable {\n\n    /// The passport registration page to be saved\n    public let passportRegistration: InputPersonalDocument\n\n\n    public init(passportRegistration: InputPersonalDocument) {\n        self.passportRegistration = passportRegistration\n    }\n}\n\n/// A Telegram Passport element to be saved containing the user's temporary registration\npublic struct InputPassportElementTemporaryRegistration: Codable, Equatable, Hashable {\n\n    /// The temporary registration document to be saved\n    public let temporaryRegistration: InputPersonalDocument\n\n\n    public init(temporaryRegistration: InputPersonalDocument) {\n        self.temporaryRegistration = temporaryRegistration\n    }\n}\n\n/// A Telegram Passport element to be saved containing the user's phone number\npublic struct InputPassportElementPhoneNumber: Codable, Equatable, Hashable {\n\n    /// The phone number to be saved\n    public let phoneNumber: String\n\n\n    public init(phoneNumber: String) {\n        self.phoneNumber = phoneNumber\n    }\n}\n\n/// A Telegram Passport element to be saved containing the user's email address\npublic struct InputPassportElementEmailAddress: Codable, Equatable, Hashable {\n\n    /// The email address to be saved\n    public let emailAddress: String\n\n\n    public init(emailAddress: String) {\n        self.emailAddress = emailAddress\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputPassportElementError.swift",
    "content": "//\n//  InputPassportElementError.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains the description of an error in a Telegram Passport element; for bots only\npublic struct InputPassportElementError: Codable, Equatable, Hashable {\n\n    /// Error message\n    public let message: String\n\n    /// Error source\n    public let source: InputPassportElementErrorSource\n\n    /// Type of Telegram Passport element that has the error\n    public let type: PassportElementType\n\n\n    public init(\n        message: String,\n        source: InputPassportElementErrorSource,\n        type: PassportElementType\n    ) {\n        self.message = message\n        self.source = source\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputPassportElementErrorSource.swift",
    "content": "//\n//  InputPassportElementErrorSource.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains the description of an error in a Telegram Passport element; for bots only\npublic indirect enum InputPassportElementErrorSource: Codable, Equatable, Hashable {\n\n    /// The element contains an error in an unspecified place. The error will be considered resolved when new data is added\n    case inputPassportElementErrorSourceUnspecified(InputPassportElementErrorSourceUnspecified)\n\n    /// A data field contains an error. The error is considered resolved when the field's value changes\n    case inputPassportElementErrorSourceDataField(InputPassportElementErrorSourceDataField)\n\n    /// The front side of the document contains an error. The error is considered resolved when the file with the front side of the document changes\n    case inputPassportElementErrorSourceFrontSide(InputPassportElementErrorSourceFrontSide)\n\n    /// The reverse side of the document contains an error. The error is considered resolved when the file with the reverse side of the document changes\n    case inputPassportElementErrorSourceReverseSide(InputPassportElementErrorSourceReverseSide)\n\n    /// The selfie contains an error. The error is considered resolved when the file with the selfie changes\n    case inputPassportElementErrorSourceSelfie(InputPassportElementErrorSourceSelfie)\n\n    /// One of the files containing the translation of the document contains an error. The error is considered resolved when the file with the translation changes\n    case inputPassportElementErrorSourceTranslationFile(InputPassportElementErrorSourceTranslationFile)\n\n    /// The translation of the document contains an error. The error is considered resolved when the list of files changes\n    case inputPassportElementErrorSourceTranslationFiles(InputPassportElementErrorSourceTranslationFiles)\n\n    /// The file contains an error. The error is considered resolved when the file changes\n    case inputPassportElementErrorSourceFile(InputPassportElementErrorSourceFile)\n\n    /// The list of attached files contains an error. The error is considered resolved when the file list changes\n    case inputPassportElementErrorSourceFiles(InputPassportElementErrorSourceFiles)\n\n\n    private enum Kind: String, Codable {\n        case inputPassportElementErrorSourceUnspecified\n        case inputPassportElementErrorSourceDataField\n        case inputPassportElementErrorSourceFrontSide\n        case inputPassportElementErrorSourceReverseSide\n        case inputPassportElementErrorSourceSelfie\n        case inputPassportElementErrorSourceTranslationFile\n        case inputPassportElementErrorSourceTranslationFiles\n        case inputPassportElementErrorSourceFile\n        case inputPassportElementErrorSourceFiles\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inputPassportElementErrorSourceUnspecified:\n            let value = try InputPassportElementErrorSourceUnspecified(from: decoder)\n            self = .inputPassportElementErrorSourceUnspecified(value)\n        case .inputPassportElementErrorSourceDataField:\n            let value = try InputPassportElementErrorSourceDataField(from: decoder)\n            self = .inputPassportElementErrorSourceDataField(value)\n        case .inputPassportElementErrorSourceFrontSide:\n            let value = try InputPassportElementErrorSourceFrontSide(from: decoder)\n            self = .inputPassportElementErrorSourceFrontSide(value)\n        case .inputPassportElementErrorSourceReverseSide:\n            let value = try InputPassportElementErrorSourceReverseSide(from: decoder)\n            self = .inputPassportElementErrorSourceReverseSide(value)\n        case .inputPassportElementErrorSourceSelfie:\n            let value = try InputPassportElementErrorSourceSelfie(from: decoder)\n            self = .inputPassportElementErrorSourceSelfie(value)\n        case .inputPassportElementErrorSourceTranslationFile:\n            let value = try InputPassportElementErrorSourceTranslationFile(from: decoder)\n            self = .inputPassportElementErrorSourceTranslationFile(value)\n        case .inputPassportElementErrorSourceTranslationFiles:\n            let value = try InputPassportElementErrorSourceTranslationFiles(from: decoder)\n            self = .inputPassportElementErrorSourceTranslationFiles(value)\n        case .inputPassportElementErrorSourceFile:\n            let value = try InputPassportElementErrorSourceFile(from: decoder)\n            self = .inputPassportElementErrorSourceFile(value)\n        case .inputPassportElementErrorSourceFiles:\n            let value = try InputPassportElementErrorSourceFiles(from: decoder)\n            self = .inputPassportElementErrorSourceFiles(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inputPassportElementErrorSourceUnspecified(let value):\n            try container.encode(Kind.inputPassportElementErrorSourceUnspecified, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPassportElementErrorSourceDataField(let value):\n            try container.encode(Kind.inputPassportElementErrorSourceDataField, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPassportElementErrorSourceFrontSide(let value):\n            try container.encode(Kind.inputPassportElementErrorSourceFrontSide, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPassportElementErrorSourceReverseSide(let value):\n            try container.encode(Kind.inputPassportElementErrorSourceReverseSide, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPassportElementErrorSourceSelfie(let value):\n            try container.encode(Kind.inputPassportElementErrorSourceSelfie, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPassportElementErrorSourceTranslationFile(let value):\n            try container.encode(Kind.inputPassportElementErrorSourceTranslationFile, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPassportElementErrorSourceTranslationFiles(let value):\n            try container.encode(Kind.inputPassportElementErrorSourceTranslationFiles, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPassportElementErrorSourceFile(let value):\n            try container.encode(Kind.inputPassportElementErrorSourceFile, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPassportElementErrorSourceFiles(let value):\n            try container.encode(Kind.inputPassportElementErrorSourceFiles, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The element contains an error in an unspecified place. The error will be considered resolved when new data is added\npublic struct InputPassportElementErrorSourceUnspecified: Codable, Equatable, Hashable {\n\n    /// Current hash of the entire element\n    public let elementHash: Data\n\n\n    public init(elementHash: Data) {\n        self.elementHash = elementHash\n    }\n}\n\n/// A data field contains an error. The error is considered resolved when the field's value changes\npublic struct InputPassportElementErrorSourceDataField: Codable, Equatable, Hashable {\n\n    /// Current data hash\n    public let dataHash: Data\n\n    /// Field name\n    public let fieldName: String\n\n\n    public init(\n        dataHash: Data,\n        fieldName: String\n    ) {\n        self.dataHash = dataHash\n        self.fieldName = fieldName\n    }\n}\n\n/// The front side of the document contains an error. The error is considered resolved when the file with the front side of the document changes\npublic struct InputPassportElementErrorSourceFrontSide: Codable, Equatable, Hashable {\n\n    /// Current hash of the file containing the front side\n    public let fileHash: Data\n\n\n    public init(fileHash: Data) {\n        self.fileHash = fileHash\n    }\n}\n\n/// The reverse side of the document contains an error. The error is considered resolved when the file with the reverse side of the document changes\npublic struct InputPassportElementErrorSourceReverseSide: Codable, Equatable, Hashable {\n\n    /// Current hash of the file containing the reverse side\n    public let fileHash: Data\n\n\n    public init(fileHash: Data) {\n        self.fileHash = fileHash\n    }\n}\n\n/// The selfie contains an error. The error is considered resolved when the file with the selfie changes\npublic struct InputPassportElementErrorSourceSelfie: Codable, Equatable, Hashable {\n\n    /// Current hash of the file containing the selfie\n    public let fileHash: Data\n\n\n    public init(fileHash: Data) {\n        self.fileHash = fileHash\n    }\n}\n\n/// One of the files containing the translation of the document contains an error. The error is considered resolved when the file with the translation changes\npublic struct InputPassportElementErrorSourceTranslationFile: Codable, Equatable, Hashable {\n\n    /// Current hash of the file containing the translation\n    public let fileHash: Data\n\n\n    public init(fileHash: Data) {\n        self.fileHash = fileHash\n    }\n}\n\n/// The translation of the document contains an error. The error is considered resolved when the list of files changes\npublic struct InputPassportElementErrorSourceTranslationFiles: Codable, Equatable, Hashable {\n\n    /// Current hashes of all files with the translation\n    public let fileHashes: [Data]\n\n\n    public init(fileHashes: [Data]) {\n        self.fileHashes = fileHashes\n    }\n}\n\n/// The file contains an error. The error is considered resolved when the file changes\npublic struct InputPassportElementErrorSourceFile: Codable, Equatable, Hashable {\n\n    /// Current hash of the file which has the error\n    public let fileHash: Data\n\n\n    public init(fileHash: Data) {\n        self.fileHash = fileHash\n    }\n}\n\n/// The list of attached files contains an error. The error is considered resolved when the file list changes\npublic struct InputPassportElementErrorSourceFiles: Codable, Equatable, Hashable {\n\n    /// Current hashes of all attached files\n    public let fileHashes: [Data]\n\n\n    public init(fileHashes: [Data]) {\n        self.fileHashes = fileHashes\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputPersonalDocument.swift",
    "content": "//\n//  InputPersonalDocument.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A personal document to be saved to Telegram Passport\npublic struct InputPersonalDocument: Codable, Equatable, Hashable {\n\n    /// List of files containing the pages of the document\n    public let files: [InputFile]\n\n    /// List of files containing a certified English translation of the document\n    public let translation: [InputFile]\n\n\n    public init(\n        files: [InputFile],\n        translation: [InputFile]\n    ) {\n        self.files = files\n        self.translation = translation\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputPollOption.swift",
    "content": "//\n//  InputPollOption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes one answer option of a poll to be created\npublic struct InputPollOption: Codable, Equatable, Hashable {\n\n    /// Option media; pass null if none; ignored in addPollOption. Must be one of the following types: inputMessageAnimation, non-live inputMessageLocation, inputMessagePhoto, inputMessageSticker, inputMessageVenue, or inputMessageVideo without caption\n    public let media: InputMessageContent?\n\n    /// Option text; 1-100 characters. Only custom emoji entities are allowed to be added and only by Premium users\n    public let text: FormattedText\n\n\n    public init(\n        media: InputMessageContent?,\n        text: FormattedText\n    ) {\n        self.media = media\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputPollType.swift",
    "content": "//\n//  InputPollType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the type of poll to send\npublic indirect enum InputPollType: Codable, Equatable, Hashable {\n\n    /// A regular poll\n    case inputPollTypeRegular(InputPollTypeRegular)\n\n    /// A poll in quiz mode, which has predefined correct answers\n    case inputPollTypeQuiz(InputPollTypeQuiz)\n\n\n    private enum Kind: String, Codable {\n        case inputPollTypeRegular\n        case inputPollTypeQuiz\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inputPollTypeRegular:\n            let value = try InputPollTypeRegular(from: decoder)\n            self = .inputPollTypeRegular(value)\n        case .inputPollTypeQuiz:\n            let value = try InputPollTypeQuiz(from: decoder)\n            self = .inputPollTypeQuiz(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inputPollTypeRegular(let value):\n            try container.encode(Kind.inputPollTypeRegular, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputPollTypeQuiz(let value):\n            try container.encode(Kind.inputPollTypeQuiz, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A regular poll\npublic struct InputPollTypeRegular: Codable, Equatable, Hashable {\n\n    /// True, if answer options can be added to the poll after creation; not supported in channel chats and for anonymous polls\n    public let allowAddingOptions: Bool\n\n\n    public init(allowAddingOptions: Bool) {\n        self.allowAddingOptions = allowAddingOptions\n    }\n}\n\n/// A poll in quiz mode, which has predefined correct answers\npublic struct InputPollTypeQuiz: Codable, Equatable, Hashable {\n\n    /// Increasing list of 0-based identifiers of the correct answer options; must be non-empty\n    public let correctOptionIds: [Int]\n\n    /// Text that is shown when the user chooses an incorrect answer or taps on the lamp icon; 0-200 characters with at most 2 line feeds\n    public let explanation: FormattedText\n\n    /// Media that is shown when the user chooses an incorrect answer or taps on the lamp icon; pass null if none. Must be one of the following types: inputMessageAnimation, inputMessageAudio, inputMessageDocument, non-live inputMessageLocation, inputMessagePhoto, inputMessageVenue, or inputMessageVideo without caption\n    public let explanationMedia: InputMessageContent?\n\n\n    public init(\n        correctOptionIds: [Int],\n        explanation: FormattedText,\n        explanationMedia: InputMessageContent?\n    ) {\n        self.correctOptionIds = correctOptionIds\n        self.explanation = explanation\n        self.explanationMedia = explanationMedia\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputSticker.swift",
    "content": "//\n//  InputSticker.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A sticker to be added to a sticker set\npublic struct InputSticker: Codable, Equatable, Hashable {\n\n    /// String with 1-20 emoji corresponding to the sticker\n    public let emojis: String\n\n    /// Format of the sticker\n    public let format: StickerFormat\n\n    /// List of up to 20 keywords with total length up to 64 characters, which can be used to find the sticker\n    public let keywords: [String]\n\n    /// Position where the mask is placed; pass null if not specified\n    public let maskPosition: MaskPosition?\n\n    /// File with the sticker; must fit in a 512x512 square. For WEBP stickers the file must be in WEBP or PNG format, which will be converted to WEBP server-side. See https://core.telegram.org/animated_stickers#technical-requirements for technical requirements\n    public let sticker: InputFile\n\n\n    public init(\n        emojis: String,\n        format: StickerFormat,\n        keywords: [String],\n        maskPosition: MaskPosition?,\n        sticker: InputFile\n    ) {\n        self.emojis = emojis\n        self.format = format\n        self.keywords = keywords\n        self.maskPosition = maskPosition\n        self.sticker = sticker\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputStoryArea.swift",
    "content": "//\n//  InputStoryArea.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a clickable rectangle area on a story media to be added\npublic struct InputStoryArea: Codable, Equatable, Hashable {\n\n    /// Position of the area\n    public let position: StoryAreaPosition\n\n    /// Type of the area\n    public let type: InputStoryAreaType\n\n\n    public init(\n        position: StoryAreaPosition,\n        type: InputStoryAreaType\n    ) {\n        self.position = position\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputStoryAreaType.swift",
    "content": "//\n//  InputStoryAreaType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of clickable area on a story media to be added\npublic indirect enum InputStoryAreaType: Codable, Equatable, Hashable {\n\n    /// An area pointing to a location\n    case inputStoryAreaTypeLocation(InputStoryAreaTypeLocation)\n\n    /// An area pointing to a venue found by the bot getOption(\"venue_search_bot_username\")\n    case inputStoryAreaTypeFoundVenue(InputStoryAreaTypeFoundVenue)\n\n    /// An area pointing to a venue already added to the story\n    case inputStoryAreaTypePreviousVenue(InputStoryAreaTypePreviousVenue)\n\n    /// An area pointing to a suggested reaction\n    case inputStoryAreaTypeSuggestedReaction(InputStoryAreaTypeSuggestedReaction)\n\n    /// An area pointing to a message\n    case inputStoryAreaTypeMessage(InputStoryAreaTypeMessage)\n\n    /// An area pointing to a HTTP or tg:// link\n    case inputStoryAreaTypeLink(InputStoryAreaTypeLink)\n\n    /// An area with information about weather\n    case inputStoryAreaTypeWeather(InputStoryAreaTypeWeather)\n\n    /// An area with an upgraded gift\n    case inputStoryAreaTypeUpgradedGift(InputStoryAreaTypeUpgradedGift)\n\n\n    private enum Kind: String, Codable {\n        case inputStoryAreaTypeLocation\n        case inputStoryAreaTypeFoundVenue\n        case inputStoryAreaTypePreviousVenue\n        case inputStoryAreaTypeSuggestedReaction\n        case inputStoryAreaTypeMessage\n        case inputStoryAreaTypeLink\n        case inputStoryAreaTypeWeather\n        case inputStoryAreaTypeUpgradedGift\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inputStoryAreaTypeLocation:\n            let value = try InputStoryAreaTypeLocation(from: decoder)\n            self = .inputStoryAreaTypeLocation(value)\n        case .inputStoryAreaTypeFoundVenue:\n            let value = try InputStoryAreaTypeFoundVenue(from: decoder)\n            self = .inputStoryAreaTypeFoundVenue(value)\n        case .inputStoryAreaTypePreviousVenue:\n            let value = try InputStoryAreaTypePreviousVenue(from: decoder)\n            self = .inputStoryAreaTypePreviousVenue(value)\n        case .inputStoryAreaTypeSuggestedReaction:\n            let value = try InputStoryAreaTypeSuggestedReaction(from: decoder)\n            self = .inputStoryAreaTypeSuggestedReaction(value)\n        case .inputStoryAreaTypeMessage:\n            let value = try InputStoryAreaTypeMessage(from: decoder)\n            self = .inputStoryAreaTypeMessage(value)\n        case .inputStoryAreaTypeLink:\n            let value = try InputStoryAreaTypeLink(from: decoder)\n            self = .inputStoryAreaTypeLink(value)\n        case .inputStoryAreaTypeWeather:\n            let value = try InputStoryAreaTypeWeather(from: decoder)\n            self = .inputStoryAreaTypeWeather(value)\n        case .inputStoryAreaTypeUpgradedGift:\n            let value = try InputStoryAreaTypeUpgradedGift(from: decoder)\n            self = .inputStoryAreaTypeUpgradedGift(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inputStoryAreaTypeLocation(let value):\n            try container.encode(Kind.inputStoryAreaTypeLocation, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputStoryAreaTypeFoundVenue(let value):\n            try container.encode(Kind.inputStoryAreaTypeFoundVenue, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputStoryAreaTypePreviousVenue(let value):\n            try container.encode(Kind.inputStoryAreaTypePreviousVenue, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputStoryAreaTypeSuggestedReaction(let value):\n            try container.encode(Kind.inputStoryAreaTypeSuggestedReaction, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputStoryAreaTypeMessage(let value):\n            try container.encode(Kind.inputStoryAreaTypeMessage, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputStoryAreaTypeLink(let value):\n            try container.encode(Kind.inputStoryAreaTypeLink, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputStoryAreaTypeWeather(let value):\n            try container.encode(Kind.inputStoryAreaTypeWeather, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputStoryAreaTypeUpgradedGift(let value):\n            try container.encode(Kind.inputStoryAreaTypeUpgradedGift, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// An area pointing to a location\npublic struct InputStoryAreaTypeLocation: Codable, Equatable, Hashable {\n\n    /// Address of the location; pass null if unknown\n    public let address: LocationAddress?\n\n    /// The location\n    public let location: Location\n\n\n    public init(\n        address: LocationAddress?,\n        location: Location\n    ) {\n        self.address = address\n        self.location = location\n    }\n}\n\n/// An area pointing to a venue found by the bot getOption(\"venue_search_bot_username\")\npublic struct InputStoryAreaTypeFoundVenue: Codable, Equatable, Hashable {\n\n    /// Identifier of the inline query, used to found the venue\n    public let queryId: TdInt64\n\n    /// Identifier of the inline query result\n    public let resultId: String\n\n\n    public init(\n        queryId: TdInt64,\n        resultId: String\n    ) {\n        self.queryId = queryId\n        self.resultId = resultId\n    }\n}\n\n/// An area pointing to a venue already added to the story\npublic struct InputStoryAreaTypePreviousVenue: Codable, Equatable, Hashable {\n\n    /// Identifier of the venue in the provider database\n    public let venueId: String\n\n    /// Provider of the venue\n    public let venueProvider: String\n\n\n    public init(\n        venueId: String,\n        venueProvider: String\n    ) {\n        self.venueId = venueId\n        self.venueProvider = venueProvider\n    }\n}\n\n/// An area pointing to a suggested reaction\npublic struct InputStoryAreaTypeSuggestedReaction: Codable, Equatable, Hashable {\n\n    /// True, if reaction has a dark background\n    public let isDark: Bool\n\n    /// True, if reaction corner is flipped\n    public let isFlipped: Bool\n\n    /// Type of the reaction\n    public let reactionType: ReactionType\n\n\n    public init(\n        isDark: Bool,\n        isFlipped: Bool,\n        reactionType: ReactionType\n    ) {\n        self.isDark = isDark\n        self.isFlipped = isFlipped\n        self.reactionType = reactionType\n    }\n}\n\n/// An area pointing to a message\npublic struct InputStoryAreaTypeMessage: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat with the message. Currently, the chat must be a supergroup or a channel chat\n    public let chatId: Int64\n\n    /// Identifier of the message. Use messageProperties.can_be_shared_in_story to check whether the message is suitable\n    public let messageId: Int64\n\n\n    public init(\n        chatId: Int64,\n        messageId: Int64\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n/// An area pointing to a HTTP or tg:// link\npublic struct InputStoryAreaTypeLink: Codable, Equatable, Hashable {\n\n    /// HTTP or tg:// URL to be opened when the area is clicked\n    public let url: String\n\n\n    public init(url: String) {\n        self.url = url\n    }\n}\n\n/// An area with information about weather\npublic struct InputStoryAreaTypeWeather: Codable, Equatable, Hashable {\n\n    /// A color of the area background in the ARGB format\n    public let backgroundColor: Int\n\n    /// Emoji representing the weather\n    public let emoji: String\n\n    /// Temperature, in degree Celsius\n    public let temperature: Double\n\n\n    public init(\n        backgroundColor: Int,\n        emoji: String,\n        temperature: Double\n    ) {\n        self.backgroundColor = backgroundColor\n        self.emoji = emoji\n        self.temperature = temperature\n    }\n}\n\n/// An area with an upgraded gift\npublic struct InputStoryAreaTypeUpgradedGift: Codable, Equatable, Hashable {\n\n    /// Unique name of the upgraded gift\n    public let giftName: String\n\n\n    public init(giftName: String) {\n        self.giftName = giftName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputStoryAreas.swift",
    "content": "//\n//  InputStoryAreas.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of story areas to be added\npublic struct InputStoryAreas: Codable, Equatable, Hashable {\n\n    /// List of input story areas. Currently, a story can have up to 10 inputStoryAreaTypeLocation, inputStoryAreaTypeFoundVenue, and inputStoryAreaTypePreviousVenue areas, up to getOption(\"story_suggested_reaction_area_count_max\") inputStoryAreaTypeSuggestedReaction areas, up to 1 inputStoryAreaTypeMessage area, up to getOption(\"story_link_area_count_max\") inputStoryAreaTypeLink areas if the current user is a Telegram Premium user, up to 3 inputStoryAreaTypeWeather areas, and up to 1 inputStoryAreaTypeUpgradedGift area\n    public let areas: [InputStoryArea]\n\n\n    public init(areas: [InputStoryArea]) {\n        self.areas = areas\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputStoryContent.swift",
    "content": "//\n//  InputStoryContent.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// The content of a story to post\npublic indirect enum InputStoryContent: Codable, Equatable, Hashable {\n\n    /// A photo story\n    case inputStoryContentPhoto(InputStoryContentPhoto)\n\n    /// A video story\n    case inputStoryContentVideo(InputStoryContentVideo)\n\n\n    private enum Kind: String, Codable {\n        case inputStoryContentPhoto\n        case inputStoryContentVideo\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inputStoryContentPhoto:\n            let value = try InputStoryContentPhoto(from: decoder)\n            self = .inputStoryContentPhoto(value)\n        case .inputStoryContentVideo:\n            let value = try InputStoryContentVideo(from: decoder)\n            self = .inputStoryContentVideo(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inputStoryContentPhoto(let value):\n            try container.encode(Kind.inputStoryContentPhoto, forKey: .type)\n            try value.encode(to: encoder)\n        case .inputStoryContentVideo(let value):\n            try container.encode(Kind.inputStoryContentVideo, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A photo story\npublic struct InputStoryContentPhoto: Codable, Equatable, Hashable {\n\n    /// File identifiers of the stickers added to the photo, if applicable\n    public let addedStickerFileIds: [Int]\n\n    /// Photo to send. The photo must be at most 10 MB in size. The photo size must be 1080x1920\n    public let photo: InputFile\n\n\n    public init(\n        addedStickerFileIds: [Int],\n        photo: InputFile\n    ) {\n        self.addedStickerFileIds = addedStickerFileIds\n        self.photo = photo\n    }\n}\n\n/// A video story\npublic struct InputStoryContentVideo: Codable, Equatable, Hashable {\n\n    /// File identifiers of the stickers added to the video, if applicable\n    public let addedStickerFileIds: [Int]\n\n    /// Timestamp of the frame, which will be used as video thumbnail\n    public let coverFrameTimestamp: Double\n\n    /// Precise duration of the video, in seconds; 0-60\n    public let duration: Double\n\n    /// True, if the video has no sound\n    public let isAnimation: Bool\n\n    /// Video to be sent. The video size must be 720x1280. The video must be streamable and stored in MPEG4 format, after encoding with H.265 codec and key frames added each second\n    public let video: InputFile\n\n\n    public init(\n        addedStickerFileIds: [Int],\n        coverFrameTimestamp: Double,\n        duration: Double,\n        isAnimation: Bool,\n        video: InputFile\n    ) {\n        self.addedStickerFileIds = addedStickerFileIds\n        self.coverFrameTimestamp = coverFrameTimestamp\n        self.duration = duration\n        self.isAnimation = isAnimation\n        self.video = video\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputSuggestedPostInfo.swift",
    "content": "//\n//  InputSuggestedPostInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a post to suggest\npublic struct InputSuggestedPostInfo: Codable, Equatable, Hashable {\n\n    /// Price of the suggested post; pass null to suggest a post without payment. If the current user isn't an administrator of the channel direct messages chat and has no enough funds to pay for the post, then the error \"BALANCE_TOO_LOW\" will be returned immediately\n    public let price: SuggestedPostPrice?\n\n    /// Point in time (Unix timestamp) when the post is expected to be published; pass 0 if the date isn't restricted. If specified, then the date must be getOption(\"suggested_post_send_delay_min\")-getOption(\"suggested_post_send_delay_max\") seconds in the future\n    public let sendDate: Int\n\n\n    public init(\n        price: SuggestedPostPrice?,\n        sendDate: Int\n    ) {\n        self.price = price\n        self.sendDate = sendDate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputTextQuote.swift",
    "content": "//\n//  InputTextQuote.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes manually chosen quote from another message\npublic struct InputTextQuote: Codable, Equatable, Hashable {\n\n    /// Quote position in the original message in UTF-16 code units\n    public let position: Int\n\n    /// Text of the quote; 0-getOption(\"message_reply_quote_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed to be kept and must be kept in the quote\n    public let text: FormattedText\n\n\n    public init(\n        position: Int,\n        text: FormattedText\n    ) {\n        self.position = position\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InputThumbnail.swift",
    "content": "//\n//  InputThumbnail.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A thumbnail to be sent along with a file; must be in JPEG or WEBP format for stickers, and less than 200 KB in size\npublic struct InputThumbnail: Codable, Equatable, Hashable {\n\n    /// Thumbnail height, usually shouldn't exceed 320. Use 0 if unknown\n    public let height: Int\n\n    /// Thumbnail file to send. Sending thumbnails by file_id is currently not supported\n    public let thumbnail: InputFile\n\n    /// Thumbnail width, usually shouldn't exceed 320. Use 0 if unknown\n    public let width: Int\n\n\n    public init(\n        height: Int,\n        thumbnail: InputFile,\n        width: Int\n    ) {\n        self.height = height\n        self.thumbnail = thumbnail\n        self.width = width\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InternalLinkType.swift",
    "content": "//\n//  InternalLinkType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an internal https://t.me or tg: link, which must be processed by the application in a special way\n/// This Swift enum is recursive.\npublic indirect enum InternalLinkType: Codable, Equatable, Hashable {\n\n    /// The link is a link to an attachment menu bot to be opened in the specified or a chosen chat. Process given target_chat to open the chat. Then, call searchPublicChat with the given bot username, check that the user is a bot and can be added to attachment menu. Then, use getAttachmentMenuBot to receive information about the bot. If the bot isn't added to attachment menu, then show a disclaimer about Mini Apps being third-party applications, ask the user to accept their Terms of service and confirm adding the bot to side and attachment menu. If the user accept the terms and confirms adding, then use toggleBotIsAddedToAttachmentMenu to add the bot. If the attachment menu bot can't be used in the opened chat, show an error to the user. If the bot is added to attachment menu and can be used in the chat, then use openWebApp with the given URL\n    case internalLinkTypeAttachmentMenuBot(InternalLinkTypeAttachmentMenuBot)\n\n    /// The link contains an authentication code. Call checkAuthenticationCode with the code if the current authorization state is authorizationStateWaitCode\n    case internalLinkTypeAuthenticationCode(InternalLinkTypeAuthenticationCode)\n\n    /// The link is a link to a background. Call searchBackground with the given background name to process the link. If background is found and the user wants to apply it, then call setDefaultBackground\n    case internalLinkTypeBackground(InternalLinkTypeBackground)\n\n    /// The link is a link to a Telegram bot, which is expected to be added to a channel chat as an administrator. Call searchPublicChat with the given bot username and check that the user is a bot, ask the current user to select a channel chat to add the bot to as an administrator. Then, call getChatMember to receive the current bot rights in the chat and if the bot already is an administrator, check that the current user can edit its administrator rights and combine received rights with the requested administrator rights. Then, show confirmation box to the user, and call setChatMemberStatus with the chosen chat and confirmed rights\n    case internalLinkTypeBotAddToChannel(InternalLinkTypeBotAddToChannel)\n\n    /// The link is a link to a chat with a Telegram bot. Call searchPublicChat with the given bot username, check that the user is a bot, show START button in the chat with the bot, and then call sendBotStartMessage with the given start parameter after the button is pressed\n    case internalLinkTypeBotStart(InternalLinkTypeBotStart)\n\n    /// The link is a link to a Telegram bot, which is expected to be added to a group chat. Call searchPublicChat with the given bot username, check that the user is a bot and can be added to groups, ask the current user to select a basic group or a supergroup chat to add the bot to, taking into account that bots can be added to a public supergroup only by administrators of the supergroup. If administrator rights are provided by the link, call getChatMember to receive the current bot rights in the chat and if the bot already is an administrator, check that the current user can edit its administrator rights, combine received rights with the requested administrator rights, show confirmation box to the user, and call setChatMemberStatus with the chosen chat and confirmed administrator rights. Before call to setChatMemberStatus it may be required to upgrade the chosen basic group chat to a supergroup chat. Then, if start_parameter isn't empty, call sendBotStartMessage with the given start parameter and the chosen chat; otherwise, just send /start message with bot's username added to the chat\n    case internalLinkTypeBotStartInGroup(InternalLinkTypeBotStartInGroup)\n\n    /// The link is a link to a business chat. Use getBusinessChatLinkInfo with the provided link name to get information about the link, then open received private chat and replace chat draft with the provided text\n    case internalLinkTypeBusinessChat(InternalLinkTypeBusinessChat)\n\n    /// The link is a link to the Call tab or page\n    case internalLinkTypeCallsPage(InternalLinkTypeCallsPage)\n\n    /// The link is an affiliate program link. Call searchChatAffiliateProgram with the given username and referrer to process the link\n    case internalLinkTypeChatAffiliateProgram(InternalLinkTypeChatAffiliateProgram)\n\n    /// The link is a link to boost a Telegram chat. Call getChatBoostLinkInfo with the given URL to process the link. If the chat is found, then call getChatBoostStatus and getAvailableChatBoostSlots to get the current boost status and check whether the chat can be boosted. If the user wants to boost the chat and the chat can be boosted, then call boostChat\n    case internalLinkTypeChatBoost(InternalLinkTypeChatBoost)\n\n    /// The link is an invite link to a chat folder. Call checkChatFolderInviteLink with the given invite link to process the link. If the link is valid and the user wants to join the chat folder, then call addChatFolderByInviteLink\n    case internalLinkTypeChatFolderInvite(InternalLinkTypeChatFolderInvite)\n\n    /// The link is a chat invite link. Call checkChatInviteLink with the given invite link to process the link. If the link is valid and the user wants to join the chat, then call joinChatByInviteLink\n    case internalLinkTypeChatInvite(InternalLinkTypeChatInvite)\n\n    /// The link is a link that allows to select some chats\n    case internalLinkTypeChatSelection\n\n    /// The link is a link to the Contacts tab or page\n    case internalLinkTypeContactsPage(InternalLinkTypeContactsPage)\n\n    /// The link is a link to a channel direct messages chat by username of the channel. Call searchPublicChat with the given chat username to process the link. If the chat is found and is channel, open the direct messages chat of the channel\n    case internalLinkTypeDirectMessagesChat(InternalLinkTypeDirectMessagesChat)\n\n    /// The link is a link to a game. Call searchPublicChat with the given bot username, check that the user is a bot, ask the current user to select a chat to send the game, and then call sendMessage with inputMessageGame\n    case internalLinkTypeGame(InternalLinkTypeGame)\n\n    /// The link is a link to a gift auction. Call getGiftAuctionState with the given auction identifier to process the link\n    case internalLinkTypeGiftAuction(InternalLinkTypeGiftAuction)\n\n    /// The link is a link to a gift collection. Call searchPublicChat with the given username, then call getReceivedGifts with the received gift owner identifier and the given collection identifier, then show the collection if received\n    case internalLinkTypeGiftCollection(InternalLinkTypeGiftCollection)\n\n    /// The link is a link to a group call that isn't bound to a chat. Use getGroupCallParticipants to get the list of group call participants and show them on the join group call screen. Call joinGroupCall with the given invite_link to join the call\n    case internalLinkTypeGroupCall(InternalLinkTypeGroupCall)\n\n    /// The link must be opened in an Instant View. Call getWebPageInstantView with the given URL to process the link. If Instant View is found, then show it, otherwise, open the fallback URL in an external browser\n    case internalLinkTypeInstantView(InternalLinkTypeInstantView)\n\n    /// The link is a link to an invoice. Call getPaymentForm with the given invoice name to process the link\n    case internalLinkTypeInvoice(InternalLinkTypeInvoice)\n\n    /// The link is a link to a language pack. Call getLanguagePackInfo with the given language pack identifier to process the link. If the language pack is found and the user wants to apply it, then call setOption for the option \"language_pack_id\"\n    case internalLinkTypeLanguagePack(InternalLinkTypeLanguagePack)\n\n    /// The link is a link to a live story. Call searchPublicChat with the given chat username, then getChatActiveStories to get active stories in the chat, then find a live story among active stories of the chat, and then joinLiveStory to join the live story\n    case internalLinkTypeLiveStory(InternalLinkTypeLiveStory)\n\n    /// The link is a link to the main Web App of a bot. Call searchPublicChat with the given bot username, check that the user is a bot and has the main Web App. If the bot can be added to attachment menu, then use getAttachmentMenuBot to receive information about the bot, then if the bot isn't added to side menu, show a disclaimer about Mini Apps being third-party applications, ask the user to accept their Terms of service and confirm adding the bot to side and attachment menu, then if the user accepts the terms and confirms adding, use toggleBotIsAddedToAttachmentMenu to add the bot. Then, use getMainWebApp with the given start parameter and mode and open the returned URL as a Web App\n    case internalLinkTypeMainWebApp(InternalLinkTypeMainWebApp)\n\n    /// The link is a link to a Telegram message or a forum topic. Call getMessageLinkInfo with the given URL to process the link, and then open received forum topic or chat and show the message there\n    case internalLinkTypeMessage(InternalLinkTypeMessage)\n\n    /// The link contains a message draft text. A share screen needs to be shown to the user, then the chosen chat must be opened and the text is added to the input field\n    case internalLinkTypeMessageDraft(InternalLinkTypeMessageDraft)\n\n    /// The link is a link to the My Profile application page\n    case internalLinkTypeMyProfilePage(InternalLinkTypeMyProfilePage)\n\n    /// The link is a link to the screen for creating a new channel chat\n    case internalLinkTypeNewChannelChat\n\n    /// The link is a link to the screen for creating a new group chat\n    case internalLinkTypeNewGroupChat\n\n    /// The link is a link to the screen for creating a new private chat with a contact\n    case internalLinkTypeNewPrivateChat\n\n    /// The link is a link to open the story posting interface\n    case internalLinkTypeNewStory(InternalLinkTypeNewStory)\n\n    /// The link is an OAuth link. Call getOauthLinkInfo with the given URL to process the link if the link was received from outside of the application; otherwise, ignore it. After getOauthLinkInfo, show the user confirmation dialog and process it with checkOauthRequestMatchCode, acceptOauthRequest or declineOauthRequest\n    case internalLinkTypeOauth(InternalLinkTypeOauth)\n\n    /// The link contains a request of Telegram passport data. Call getPassportAuthorizationForm with the given parameters to process the link if the link was received from outside of the application; otherwise, ignore it\n    case internalLinkTypePassportDataRequest(InternalLinkTypePassportDataRequest)\n\n    /// The link can be used to confirm ownership of a phone number to prevent account deletion. Call sendPhoneNumberCode with the given phone number and with phoneNumberCodeTypeConfirmOwnership with the given hash to process the link. If succeeded, call checkPhoneNumberCode to check entered by the user code, or resendPhoneNumberCode to resend it\n    case internalLinkTypePhoneNumberConfirmation(InternalLinkTypePhoneNumberConfirmation)\n\n    /// The link is a link to the Premium features screen of the application from which the user can subscribe to Telegram Premium. Call getPremiumFeatures with the given referrer to process the link\n    case internalLinkTypePremiumFeaturesPage(InternalLinkTypePremiumFeaturesPage)\n\n    /// The link is a link with a Telegram Premium gift code. Call checkPremiumGiftCode with the given code to process the link. If the code is valid and the user wants to apply it, then call applyPremiumGiftCode\n    case internalLinkTypePremiumGiftCode(InternalLinkTypePremiumGiftCode)\n\n    /// The link is a link to the screen for gifting Telegram Premium subscriptions to friends via inputInvoiceTelegram with telegramPaymentPurposePremiumGift payments or in-store purchases\n    case internalLinkTypePremiumGiftPurchase(InternalLinkTypePremiumGiftPurchase)\n\n    /// The link is a link to a proxy. Call addProxy with the given parameters to process the link and add the proxy\n    case internalLinkTypeProxy(InternalLinkTypeProxy)\n\n    /// The link is a link to a chat by its username. Call searchPublicChat with the given chat username to process the link. If the chat is found, open its profile information screen or the chat itself. If draft text isn't empty and the chat is a private chat with a regular user, then put the draft text in the input field\n    case internalLinkTypePublicChat(InternalLinkTypePublicChat)\n\n    /// The link can be used to login the current user on another device, but it must be scanned from QR-code using in-app camera. An alert similar to \"This code can be used to allow someone to log in to your Telegram account. To confirm Telegram login, please go to Settings > Devices > Scan QR and scan the code\" needs to be shown\n    case internalLinkTypeQrCodeAuthentication\n\n    /// The link is a link to a dialog for creating of a managed bot. Call searchPublicChat with the given manager bot username. If the chat is found, the chat is a chat with a bot and the bot has can_manage_bots == true, then show bot creation confirmation dialog with the given suggested_bot_username and suggested_bot_name. If user agrees, call createBot with via_link == true to create the bot\n    case internalLinkTypeRequestManagedBot(InternalLinkTypeRequestManagedBot)\n\n    /// The link forces restore of App Store purchases when opened. For official iOS application only\n    case internalLinkTypeRestorePurchases\n\n    /// The link is a link to the Saved Messages chat. Call createPrivateChat with getOption(\"my_id\") and open the chat\n    case internalLinkTypeSavedMessages\n\n    /// The link is a link to the global chat and messages search field\n    case internalLinkTypeSearch\n\n    /// The link is a link to application settings\n    case internalLinkTypeSettings(InternalLinkTypeSettings)\n\n    /// The link is a link to the Telegram Star purchase section of the application\n    case internalLinkTypeStarPurchase(InternalLinkTypeStarPurchase)\n\n    /// The link is a link to a sticker set. Call searchStickerSet with the given sticker set name to process the link and show the sticker set. If the sticker set is found and the user wants to add it, then call changeStickerSet\n    case internalLinkTypeStickerSet(InternalLinkTypeStickerSet)\n\n    /// The link is a link to a story. Call searchPublicChat with the given poster username, then call getStory with the received chat identifier and the given story identifier, then show the story if received\n    case internalLinkTypeStory(InternalLinkTypeStory)\n\n    /// The link is a link to an album of stories. Call searchPublicChat with the given username, then call getStoryAlbumStories with the received chat identifier and the given story album identifier, then show the story album if received\n    case internalLinkTypeStoryAlbum(InternalLinkTypeStoryAlbum)\n\n    /// The link is a link to a text composition style. Call searchTextCompositionStyle with the given style name to get information about the style. If the style is found and the user wants to add it, then call addTextCompositionStyle\n    case internalLinkTypeTextCompositionStyle(InternalLinkTypeTextCompositionStyle)\n\n    /// The link is a link to a cloud theme. TDLib has no theme support yet\n    case internalLinkTypeTheme(InternalLinkTypeTheme)\n\n    /// The link is an unknown tg: link. Call getDeepLinkInfo to process the link\n    case internalLinkTypeUnknownDeepLink(InternalLinkTypeUnknownDeepLink)\n\n    /// The link is a link to an upgraded gift. Call getUpgradedGift with the given name to process the link\n    case internalLinkTypeUpgradedGift(InternalLinkTypeUpgradedGift)\n\n    /// The link is a link to a user by its phone number. Call searchUserByPhoneNumber with the given phone number to process the link. If the user is found, then call createPrivateChat and open user's profile information screen or the chat itself. If draft text isn't empty, then put the draft text in the input field\n    case internalLinkTypeUserPhoneNumber(InternalLinkTypeUserPhoneNumber)\n\n    /// The link is a link to a user by a temporary token. Call searchUserByToken with the given token to process the link. If the user is found, then call createPrivateChat and open the chat\n    case internalLinkTypeUserToken(InternalLinkTypeUserToken)\n\n    /// The link is a link to a video chat. Call searchPublicChat with the given chat username, and then joinVideoChat with the given invite hash to process the link\n    case internalLinkTypeVideoChat(InternalLinkTypeVideoChat)\n\n    /// The link is a link to a Web App. Call searchPublicChat with the given bot username, check that the user is a bot. If the bot is restricted for the current user, then show an error message. Otherwise, call searchWebApp with the received bot and the given web_app_short_name. Process received foundWebApp by showing a confirmation dialog if needed. If the bot can be added to attachment or side menu, but isn't added yet, then show a disclaimer about Mini Apps being third-party applications instead of the dialog and ask the user to accept their Terms of service. If the user accept the terms and confirms adding, then use toggleBotIsAddedToAttachmentMenu to add the bot. Then, call getWebAppLinkUrl and open the returned URL as a Web App\n    case internalLinkTypeWebApp(InternalLinkTypeWebApp)\n\n\n    private enum Kind: String, Codable {\n        case internalLinkTypeAttachmentMenuBot\n        case internalLinkTypeAuthenticationCode\n        case internalLinkTypeBackground\n        case internalLinkTypeBotAddToChannel\n        case internalLinkTypeBotStart\n        case internalLinkTypeBotStartInGroup\n        case internalLinkTypeBusinessChat\n        case internalLinkTypeCallsPage\n        case internalLinkTypeChatAffiliateProgram\n        case internalLinkTypeChatBoost\n        case internalLinkTypeChatFolderInvite\n        case internalLinkTypeChatInvite\n        case internalLinkTypeChatSelection\n        case internalLinkTypeContactsPage\n        case internalLinkTypeDirectMessagesChat\n        case internalLinkTypeGame\n        case internalLinkTypeGiftAuction\n        case internalLinkTypeGiftCollection\n        case internalLinkTypeGroupCall\n        case internalLinkTypeInstantView\n        case internalLinkTypeInvoice\n        case internalLinkTypeLanguagePack\n        case internalLinkTypeLiveStory\n        case internalLinkTypeMainWebApp\n        case internalLinkTypeMessage\n        case internalLinkTypeMessageDraft\n        case internalLinkTypeMyProfilePage\n        case internalLinkTypeNewChannelChat\n        case internalLinkTypeNewGroupChat\n        case internalLinkTypeNewPrivateChat\n        case internalLinkTypeNewStory\n        case internalLinkTypeOauth\n        case internalLinkTypePassportDataRequest\n        case internalLinkTypePhoneNumberConfirmation\n        case internalLinkTypePremiumFeaturesPage\n        case internalLinkTypePremiumGiftCode\n        case internalLinkTypePremiumGiftPurchase\n        case internalLinkTypeProxy\n        case internalLinkTypePublicChat\n        case internalLinkTypeQrCodeAuthentication\n        case internalLinkTypeRequestManagedBot\n        case internalLinkTypeRestorePurchases\n        case internalLinkTypeSavedMessages\n        case internalLinkTypeSearch\n        case internalLinkTypeSettings\n        case internalLinkTypeStarPurchase\n        case internalLinkTypeStickerSet\n        case internalLinkTypeStory\n        case internalLinkTypeStoryAlbum\n        case internalLinkTypeTextCompositionStyle\n        case internalLinkTypeTheme\n        case internalLinkTypeUnknownDeepLink\n        case internalLinkTypeUpgradedGift\n        case internalLinkTypeUserPhoneNumber\n        case internalLinkTypeUserToken\n        case internalLinkTypeVideoChat\n        case internalLinkTypeWebApp\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .internalLinkTypeAttachmentMenuBot:\n            let value = try InternalLinkTypeAttachmentMenuBot(from: decoder)\n            self = .internalLinkTypeAttachmentMenuBot(value)\n        case .internalLinkTypeAuthenticationCode:\n            let value = try InternalLinkTypeAuthenticationCode(from: decoder)\n            self = .internalLinkTypeAuthenticationCode(value)\n        case .internalLinkTypeBackground:\n            let value = try InternalLinkTypeBackground(from: decoder)\n            self = .internalLinkTypeBackground(value)\n        case .internalLinkTypeBotAddToChannel:\n            let value = try InternalLinkTypeBotAddToChannel(from: decoder)\n            self = .internalLinkTypeBotAddToChannel(value)\n        case .internalLinkTypeBotStart:\n            let value = try InternalLinkTypeBotStart(from: decoder)\n            self = .internalLinkTypeBotStart(value)\n        case .internalLinkTypeBotStartInGroup:\n            let value = try InternalLinkTypeBotStartInGroup(from: decoder)\n            self = .internalLinkTypeBotStartInGroup(value)\n        case .internalLinkTypeBusinessChat:\n            let value = try InternalLinkTypeBusinessChat(from: decoder)\n            self = .internalLinkTypeBusinessChat(value)\n        case .internalLinkTypeCallsPage:\n            let value = try InternalLinkTypeCallsPage(from: decoder)\n            self = .internalLinkTypeCallsPage(value)\n        case .internalLinkTypeChatAffiliateProgram:\n            let value = try InternalLinkTypeChatAffiliateProgram(from: decoder)\n            self = .internalLinkTypeChatAffiliateProgram(value)\n        case .internalLinkTypeChatBoost:\n            let value = try InternalLinkTypeChatBoost(from: decoder)\n            self = .internalLinkTypeChatBoost(value)\n        case .internalLinkTypeChatFolderInvite:\n            let value = try InternalLinkTypeChatFolderInvite(from: decoder)\n            self = .internalLinkTypeChatFolderInvite(value)\n        case .internalLinkTypeChatInvite:\n            let value = try InternalLinkTypeChatInvite(from: decoder)\n            self = .internalLinkTypeChatInvite(value)\n        case .internalLinkTypeChatSelection:\n            self = .internalLinkTypeChatSelection\n        case .internalLinkTypeContactsPage:\n            let value = try InternalLinkTypeContactsPage(from: decoder)\n            self = .internalLinkTypeContactsPage(value)\n        case .internalLinkTypeDirectMessagesChat:\n            let value = try InternalLinkTypeDirectMessagesChat(from: decoder)\n            self = .internalLinkTypeDirectMessagesChat(value)\n        case .internalLinkTypeGame:\n            let value = try InternalLinkTypeGame(from: decoder)\n            self = .internalLinkTypeGame(value)\n        case .internalLinkTypeGiftAuction:\n            let value = try InternalLinkTypeGiftAuction(from: decoder)\n            self = .internalLinkTypeGiftAuction(value)\n        case .internalLinkTypeGiftCollection:\n            let value = try InternalLinkTypeGiftCollection(from: decoder)\n            self = .internalLinkTypeGiftCollection(value)\n        case .internalLinkTypeGroupCall:\n            let value = try InternalLinkTypeGroupCall(from: decoder)\n            self = .internalLinkTypeGroupCall(value)\n        case .internalLinkTypeInstantView:\n            let value = try InternalLinkTypeInstantView(from: decoder)\n            self = .internalLinkTypeInstantView(value)\n        case .internalLinkTypeInvoice:\n            let value = try InternalLinkTypeInvoice(from: decoder)\n            self = .internalLinkTypeInvoice(value)\n        case .internalLinkTypeLanguagePack:\n            let value = try InternalLinkTypeLanguagePack(from: decoder)\n            self = .internalLinkTypeLanguagePack(value)\n        case .internalLinkTypeLiveStory:\n            let value = try InternalLinkTypeLiveStory(from: decoder)\n            self = .internalLinkTypeLiveStory(value)\n        case .internalLinkTypeMainWebApp:\n            let value = try InternalLinkTypeMainWebApp(from: decoder)\n            self = .internalLinkTypeMainWebApp(value)\n        case .internalLinkTypeMessage:\n            let value = try InternalLinkTypeMessage(from: decoder)\n            self = .internalLinkTypeMessage(value)\n        case .internalLinkTypeMessageDraft:\n            let value = try InternalLinkTypeMessageDraft(from: decoder)\n            self = .internalLinkTypeMessageDraft(value)\n        case .internalLinkTypeMyProfilePage:\n            let value = try InternalLinkTypeMyProfilePage(from: decoder)\n            self = .internalLinkTypeMyProfilePage(value)\n        case .internalLinkTypeNewChannelChat:\n            self = .internalLinkTypeNewChannelChat\n        case .internalLinkTypeNewGroupChat:\n            self = .internalLinkTypeNewGroupChat\n        case .internalLinkTypeNewPrivateChat:\n            self = .internalLinkTypeNewPrivateChat\n        case .internalLinkTypeNewStory:\n            let value = try InternalLinkTypeNewStory(from: decoder)\n            self = .internalLinkTypeNewStory(value)\n        case .internalLinkTypeOauth:\n            let value = try InternalLinkTypeOauth(from: decoder)\n            self = .internalLinkTypeOauth(value)\n        case .internalLinkTypePassportDataRequest:\n            let value = try InternalLinkTypePassportDataRequest(from: decoder)\n            self = .internalLinkTypePassportDataRequest(value)\n        case .internalLinkTypePhoneNumberConfirmation:\n            let value = try InternalLinkTypePhoneNumberConfirmation(from: decoder)\n            self = .internalLinkTypePhoneNumberConfirmation(value)\n        case .internalLinkTypePremiumFeaturesPage:\n            let value = try InternalLinkTypePremiumFeaturesPage(from: decoder)\n            self = .internalLinkTypePremiumFeaturesPage(value)\n        case .internalLinkTypePremiumGiftCode:\n            let value = try InternalLinkTypePremiumGiftCode(from: decoder)\n            self = .internalLinkTypePremiumGiftCode(value)\n        case .internalLinkTypePremiumGiftPurchase:\n            let value = try InternalLinkTypePremiumGiftPurchase(from: decoder)\n            self = .internalLinkTypePremiumGiftPurchase(value)\n        case .internalLinkTypeProxy:\n            let value = try InternalLinkTypeProxy(from: decoder)\n            self = .internalLinkTypeProxy(value)\n        case .internalLinkTypePublicChat:\n            let value = try InternalLinkTypePublicChat(from: decoder)\n            self = .internalLinkTypePublicChat(value)\n        case .internalLinkTypeQrCodeAuthentication:\n            self = .internalLinkTypeQrCodeAuthentication\n        case .internalLinkTypeRequestManagedBot:\n            let value = try InternalLinkTypeRequestManagedBot(from: decoder)\n            self = .internalLinkTypeRequestManagedBot(value)\n        case .internalLinkTypeRestorePurchases:\n            self = .internalLinkTypeRestorePurchases\n        case .internalLinkTypeSavedMessages:\n            self = .internalLinkTypeSavedMessages\n        case .internalLinkTypeSearch:\n            self = .internalLinkTypeSearch\n        case .internalLinkTypeSettings:\n            let value = try InternalLinkTypeSettings(from: decoder)\n            self = .internalLinkTypeSettings(value)\n        case .internalLinkTypeStarPurchase:\n            let value = try InternalLinkTypeStarPurchase(from: decoder)\n            self = .internalLinkTypeStarPurchase(value)\n        case .internalLinkTypeStickerSet:\n            let value = try InternalLinkTypeStickerSet(from: decoder)\n            self = .internalLinkTypeStickerSet(value)\n        case .internalLinkTypeStory:\n            let value = try InternalLinkTypeStory(from: decoder)\n            self = .internalLinkTypeStory(value)\n        case .internalLinkTypeStoryAlbum:\n            let value = try InternalLinkTypeStoryAlbum(from: decoder)\n            self = .internalLinkTypeStoryAlbum(value)\n        case .internalLinkTypeTextCompositionStyle:\n            let value = try InternalLinkTypeTextCompositionStyle(from: decoder)\n            self = .internalLinkTypeTextCompositionStyle(value)\n        case .internalLinkTypeTheme:\n            let value = try InternalLinkTypeTheme(from: decoder)\n            self = .internalLinkTypeTheme(value)\n        case .internalLinkTypeUnknownDeepLink:\n            let value = try InternalLinkTypeUnknownDeepLink(from: decoder)\n            self = .internalLinkTypeUnknownDeepLink(value)\n        case .internalLinkTypeUpgradedGift:\n            let value = try InternalLinkTypeUpgradedGift(from: decoder)\n            self = .internalLinkTypeUpgradedGift(value)\n        case .internalLinkTypeUserPhoneNumber:\n            let value = try InternalLinkTypeUserPhoneNumber(from: decoder)\n            self = .internalLinkTypeUserPhoneNumber(value)\n        case .internalLinkTypeUserToken:\n            let value = try InternalLinkTypeUserToken(from: decoder)\n            self = .internalLinkTypeUserToken(value)\n        case .internalLinkTypeVideoChat:\n            let value = try InternalLinkTypeVideoChat(from: decoder)\n            self = .internalLinkTypeVideoChat(value)\n        case .internalLinkTypeWebApp:\n            let value = try InternalLinkTypeWebApp(from: decoder)\n            self = .internalLinkTypeWebApp(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .internalLinkTypeAttachmentMenuBot(let value):\n            try container.encode(Kind.internalLinkTypeAttachmentMenuBot, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeAuthenticationCode(let value):\n            try container.encode(Kind.internalLinkTypeAuthenticationCode, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeBackground(let value):\n            try container.encode(Kind.internalLinkTypeBackground, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeBotAddToChannel(let value):\n            try container.encode(Kind.internalLinkTypeBotAddToChannel, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeBotStart(let value):\n            try container.encode(Kind.internalLinkTypeBotStart, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeBotStartInGroup(let value):\n            try container.encode(Kind.internalLinkTypeBotStartInGroup, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeBusinessChat(let value):\n            try container.encode(Kind.internalLinkTypeBusinessChat, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeCallsPage(let value):\n            try container.encode(Kind.internalLinkTypeCallsPage, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeChatAffiliateProgram(let value):\n            try container.encode(Kind.internalLinkTypeChatAffiliateProgram, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeChatBoost(let value):\n            try container.encode(Kind.internalLinkTypeChatBoost, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeChatFolderInvite(let value):\n            try container.encode(Kind.internalLinkTypeChatFolderInvite, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeChatInvite(let value):\n            try container.encode(Kind.internalLinkTypeChatInvite, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeChatSelection:\n            try container.encode(Kind.internalLinkTypeChatSelection, forKey: .type)\n        case .internalLinkTypeContactsPage(let value):\n            try container.encode(Kind.internalLinkTypeContactsPage, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeDirectMessagesChat(let value):\n            try container.encode(Kind.internalLinkTypeDirectMessagesChat, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeGame(let value):\n            try container.encode(Kind.internalLinkTypeGame, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeGiftAuction(let value):\n            try container.encode(Kind.internalLinkTypeGiftAuction, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeGiftCollection(let value):\n            try container.encode(Kind.internalLinkTypeGiftCollection, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeGroupCall(let value):\n            try container.encode(Kind.internalLinkTypeGroupCall, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeInstantView(let value):\n            try container.encode(Kind.internalLinkTypeInstantView, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeInvoice(let value):\n            try container.encode(Kind.internalLinkTypeInvoice, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeLanguagePack(let value):\n            try container.encode(Kind.internalLinkTypeLanguagePack, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeLiveStory(let value):\n            try container.encode(Kind.internalLinkTypeLiveStory, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeMainWebApp(let value):\n            try container.encode(Kind.internalLinkTypeMainWebApp, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeMessage(let value):\n            try container.encode(Kind.internalLinkTypeMessage, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeMessageDraft(let value):\n            try container.encode(Kind.internalLinkTypeMessageDraft, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeMyProfilePage(let value):\n            try container.encode(Kind.internalLinkTypeMyProfilePage, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeNewChannelChat:\n            try container.encode(Kind.internalLinkTypeNewChannelChat, forKey: .type)\n        case .internalLinkTypeNewGroupChat:\n            try container.encode(Kind.internalLinkTypeNewGroupChat, forKey: .type)\n        case .internalLinkTypeNewPrivateChat:\n            try container.encode(Kind.internalLinkTypeNewPrivateChat, forKey: .type)\n        case .internalLinkTypeNewStory(let value):\n            try container.encode(Kind.internalLinkTypeNewStory, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeOauth(let value):\n            try container.encode(Kind.internalLinkTypeOauth, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypePassportDataRequest(let value):\n            try container.encode(Kind.internalLinkTypePassportDataRequest, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypePhoneNumberConfirmation(let value):\n            try container.encode(Kind.internalLinkTypePhoneNumberConfirmation, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypePremiumFeaturesPage(let value):\n            try container.encode(Kind.internalLinkTypePremiumFeaturesPage, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypePremiumGiftCode(let value):\n            try container.encode(Kind.internalLinkTypePremiumGiftCode, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypePremiumGiftPurchase(let value):\n            try container.encode(Kind.internalLinkTypePremiumGiftPurchase, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeProxy(let value):\n            try container.encode(Kind.internalLinkTypeProxy, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypePublicChat(let value):\n            try container.encode(Kind.internalLinkTypePublicChat, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeQrCodeAuthentication:\n            try container.encode(Kind.internalLinkTypeQrCodeAuthentication, forKey: .type)\n        case .internalLinkTypeRequestManagedBot(let value):\n            try container.encode(Kind.internalLinkTypeRequestManagedBot, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeRestorePurchases:\n            try container.encode(Kind.internalLinkTypeRestorePurchases, forKey: .type)\n        case .internalLinkTypeSavedMessages:\n            try container.encode(Kind.internalLinkTypeSavedMessages, forKey: .type)\n        case .internalLinkTypeSearch:\n            try container.encode(Kind.internalLinkTypeSearch, forKey: .type)\n        case .internalLinkTypeSettings(let value):\n            try container.encode(Kind.internalLinkTypeSettings, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeStarPurchase(let value):\n            try container.encode(Kind.internalLinkTypeStarPurchase, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeStickerSet(let value):\n            try container.encode(Kind.internalLinkTypeStickerSet, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeStory(let value):\n            try container.encode(Kind.internalLinkTypeStory, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeStoryAlbum(let value):\n            try container.encode(Kind.internalLinkTypeStoryAlbum, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeTextCompositionStyle(let value):\n            try container.encode(Kind.internalLinkTypeTextCompositionStyle, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeTheme(let value):\n            try container.encode(Kind.internalLinkTypeTheme, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeUnknownDeepLink(let value):\n            try container.encode(Kind.internalLinkTypeUnknownDeepLink, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeUpgradedGift(let value):\n            try container.encode(Kind.internalLinkTypeUpgradedGift, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeUserPhoneNumber(let value):\n            try container.encode(Kind.internalLinkTypeUserPhoneNumber, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeUserToken(let value):\n            try container.encode(Kind.internalLinkTypeUserToken, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeVideoChat(let value):\n            try container.encode(Kind.internalLinkTypeVideoChat, forKey: .type)\n            try value.encode(to: encoder)\n        case .internalLinkTypeWebApp(let value):\n            try container.encode(Kind.internalLinkTypeWebApp, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The link is a link to an attachment menu bot to be opened in the specified or a chosen chat. Process given target_chat to open the chat. Then, call searchPublicChat with the given bot username, check that the user is a bot and can be added to attachment menu. Then, use getAttachmentMenuBot to receive information about the bot. If the bot isn't added to attachment menu, then show a disclaimer about Mini Apps being third-party applications, ask the user to accept their Terms of service and confirm adding the bot to side and attachment menu. If the user accept the terms and confirms adding, then use toggleBotIsAddedToAttachmentMenu to add the bot. If the attachment menu bot can't be used in the opened chat, show an error to the user. If the bot is added to attachment menu and can be used in the chat, then use openWebApp with the given URL\npublic struct InternalLinkTypeAttachmentMenuBot: Codable, Equatable, Hashable {\n\n    /// Username of the bot\n    public let botUsername: String\n\n    /// Target chat to be opened\n    public let targetChat: TargetChat\n\n    /// URL to be passed to openWebApp\n    public let url: String\n\n\n    public init(\n        botUsername: String,\n        targetChat: TargetChat,\n        url: String\n    ) {\n        self.botUsername = botUsername\n        self.targetChat = targetChat\n        self.url = url\n    }\n}\n\n/// The link contains an authentication code. Call checkAuthenticationCode with the code if the current authorization state is authorizationStateWaitCode\npublic struct InternalLinkTypeAuthenticationCode: Codable, Equatable, Hashable {\n\n    /// The authentication code\n    public let code: String\n\n\n    public init(code: String) {\n        self.code = code\n    }\n}\n\n/// The link is a link to a background. Call searchBackground with the given background name to process the link. If background is found and the user wants to apply it, then call setDefaultBackground\npublic struct InternalLinkTypeBackground: Codable, Equatable, Hashable {\n\n    /// Name of the background\n    public let backgroundName: String\n\n\n    public init(backgroundName: String) {\n        self.backgroundName = backgroundName\n    }\n}\n\n/// The link is a link to a Telegram bot, which is expected to be added to a channel chat as an administrator. Call searchPublicChat with the given bot username and check that the user is a bot, ask the current user to select a channel chat to add the bot to as an administrator. Then, call getChatMember to receive the current bot rights in the chat and if the bot already is an administrator, check that the current user can edit its administrator rights and combine received rights with the requested administrator rights. Then, show confirmation box to the user, and call setChatMemberStatus with the chosen chat and confirmed rights\npublic struct InternalLinkTypeBotAddToChannel: Codable, Equatable, Hashable {\n\n    /// Expected administrator rights for the bot\n    public let administratorRights: ChatAdministratorRights\n\n    /// Username of the bot\n    public let botUsername: String\n\n\n    public init(\n        administratorRights: ChatAdministratorRights,\n        botUsername: String\n    ) {\n        self.administratorRights = administratorRights\n        self.botUsername = botUsername\n    }\n}\n\n/// The link is a link to a chat with a Telegram bot. Call searchPublicChat with the given bot username, check that the user is a bot, show START button in the chat with the bot, and then call sendBotStartMessage with the given start parameter after the button is pressed\npublic struct InternalLinkTypeBotStart: Codable, Equatable, Hashable {\n\n    /// True, if sendBotStartMessage must be called automatically without showing the START button\n    public let autostart: Bool\n\n    /// Username of the bot\n    public let botUsername: String\n\n    /// The parameter to be passed to sendBotStartMessage\n    public let startParameter: String\n\n\n    public init(\n        autostart: Bool,\n        botUsername: String,\n        startParameter: String\n    ) {\n        self.autostart = autostart\n        self.botUsername = botUsername\n        self.startParameter = startParameter\n    }\n}\n\n/// The link is a link to a Telegram bot, which is expected to be added to a group chat. Call searchPublicChat with the given bot username, check that the user is a bot and can be added to groups, ask the current user to select a basic group or a supergroup chat to add the bot to, taking into account that bots can be added to a public supergroup only by administrators of the supergroup. If administrator rights are provided by the link, call getChatMember to receive the current bot rights in the chat and if the bot already is an administrator, check that the current user can edit its administrator rights, combine received rights with the requested administrator rights, show confirmation box to the user, and call setChatMemberStatus with the chosen chat and confirmed administrator rights. Before call to setChatMemberStatus it may be required to upgrade the chosen basic group chat to a supergroup chat. Then, if start_parameter isn't empty, call sendBotStartMessage with the given start parameter and the chosen chat; otherwise, just send /start message with bot's username added to the chat\npublic struct InternalLinkTypeBotStartInGroup: Codable, Equatable, Hashable {\n\n    /// Expected administrator rights for the bot; may be null\n    public let administratorRights: ChatAdministratorRights?\n\n    /// Username of the bot\n    public let botUsername: String\n\n    /// The parameter to be passed to sendBotStartMessage\n    public let startParameter: String\n\n\n    public init(\n        administratorRights: ChatAdministratorRights?,\n        botUsername: String,\n        startParameter: String\n    ) {\n        self.administratorRights = administratorRights\n        self.botUsername = botUsername\n        self.startParameter = startParameter\n    }\n}\n\n/// The link is a link to a business chat. Use getBusinessChatLinkInfo with the provided link name to get information about the link, then open received private chat and replace chat draft with the provided text\npublic struct InternalLinkTypeBusinessChat: Codable, Equatable, Hashable {\n\n    /// Name of the link\n    public let linkName: String\n\n\n    public init(linkName: String) {\n        self.linkName = linkName\n    }\n}\n\n/// The link is a link to the Call tab or page\npublic struct InternalLinkTypeCallsPage: Codable, Equatable, Hashable {\n\n    /// Section of the page; may be one of \"\", \"all\", \"missed\", \"edit\", \"show-tab\", \"start-call\"\n    public let section: String\n\n\n    public init(section: String) {\n        self.section = section\n    }\n}\n\n/// The link is an affiliate program link. Call searchChatAffiliateProgram with the given username and referrer to process the link\npublic struct InternalLinkTypeChatAffiliateProgram: Codable, Equatable, Hashable {\n\n    /// Referrer to be passed to searchChatAffiliateProgram\n    public let referrer: String\n\n    /// Username to be passed to searchChatAffiliateProgram\n    public let username: String\n\n\n    public init(\n        referrer: String,\n        username: String\n    ) {\n        self.referrer = referrer\n        self.username = username\n    }\n}\n\n/// The link is a link to boost a Telegram chat. Call getChatBoostLinkInfo with the given URL to process the link. If the chat is found, then call getChatBoostStatus and getAvailableChatBoostSlots to get the current boost status and check whether the chat can be boosted. If the user wants to boost the chat and the chat can be boosted, then call boostChat\npublic struct InternalLinkTypeChatBoost: Codable, Equatable, Hashable {\n\n    /// URL to be passed to getChatBoostLinkInfo\n    public let url: String\n\n\n    public init(url: String) {\n        self.url = url\n    }\n}\n\n/// The link is an invite link to a chat folder. Call checkChatFolderInviteLink with the given invite link to process the link. If the link is valid and the user wants to join the chat folder, then call addChatFolderByInviteLink\npublic struct InternalLinkTypeChatFolderInvite: Codable, Equatable, Hashable {\n\n    /// Internal representation of the invite link\n    public let inviteLink: String\n\n\n    public init(inviteLink: String) {\n        self.inviteLink = inviteLink\n    }\n}\n\n/// The link is a chat invite link. Call checkChatInviteLink with the given invite link to process the link. If the link is valid and the user wants to join the chat, then call joinChatByInviteLink\npublic struct InternalLinkTypeChatInvite: Codable, Equatable, Hashable {\n\n    /// Internal representation of the invite link\n    public let inviteLink: String\n\n\n    public init(inviteLink: String) {\n        self.inviteLink = inviteLink\n    }\n}\n\n/// The link is a link to the Contacts tab or page\npublic struct InternalLinkTypeContactsPage: Codable, Equatable, Hashable {\n\n    /// Section of the page; may be one of \"\", \"search\", \"sort\", \"new\", \"invite\", \"manage\"\n    public let section: String\n\n\n    public init(section: String) {\n        self.section = section\n    }\n}\n\n/// The link is a link to a channel direct messages chat by username of the channel. Call searchPublicChat with the given chat username to process the link. If the chat is found and is channel, open the direct messages chat of the channel\npublic struct InternalLinkTypeDirectMessagesChat: Codable, Equatable, Hashable {\n\n    /// Username of the channel\n    public let channelUsername: String\n\n\n    public init(channelUsername: String) {\n        self.channelUsername = channelUsername\n    }\n}\n\n/// The link is a link to a game. Call searchPublicChat with the given bot username, check that the user is a bot, ask the current user to select a chat to send the game, and then call sendMessage with inputMessageGame\npublic struct InternalLinkTypeGame: Codable, Equatable, Hashable {\n\n    /// Username of the bot that owns the game\n    public let botUsername: String\n\n    /// Short name of the game\n    public let gameShortName: String\n\n\n    public init(\n        botUsername: String,\n        gameShortName: String\n    ) {\n        self.botUsername = botUsername\n        self.gameShortName = gameShortName\n    }\n}\n\n/// The link is a link to a gift auction. Call getGiftAuctionState with the given auction identifier to process the link\npublic struct InternalLinkTypeGiftAuction: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the auction\n    public let auctionId: String\n\n\n    public init(auctionId: String) {\n        self.auctionId = auctionId\n    }\n}\n\n/// The link is a link to a gift collection. Call searchPublicChat with the given username, then call getReceivedGifts with the received gift owner identifier and the given collection identifier, then show the collection if received\npublic struct InternalLinkTypeGiftCollection: Codable, Equatable, Hashable {\n\n    /// Gift collection identifier\n    public let collectionId: Int\n\n    /// Username of the owner of the gift collection\n    public let giftOwnerUsername: String\n\n\n    public init(\n        collectionId: Int,\n        giftOwnerUsername: String\n    ) {\n        self.collectionId = collectionId\n        self.giftOwnerUsername = giftOwnerUsername\n    }\n}\n\n/// The link is a link to a group call that isn't bound to a chat. Use getGroupCallParticipants to get the list of group call participants and show them on the join group call screen. Call joinGroupCall with the given invite_link to join the call\npublic struct InternalLinkTypeGroupCall: Codable, Equatable, Hashable {\n\n    /// Internal representation of the invite link\n    public let inviteLink: String\n\n\n    public init(inviteLink: String) {\n        self.inviteLink = inviteLink\n    }\n}\n\n/// The link must be opened in an Instant View. Call getWebPageInstantView with the given URL to process the link. If Instant View is found, then show it, otherwise, open the fallback URL in an external browser\npublic struct InternalLinkTypeInstantView: Codable, Equatable, Hashable {\n\n    /// An URL to open if getWebPageInstantView fails\n    public let fallbackUrl: String\n\n    /// URL to be passed to getWebPageInstantView\n    public let url: String\n\n\n    public init(\n        fallbackUrl: String,\n        url: String\n    ) {\n        self.fallbackUrl = fallbackUrl\n        self.url = url\n    }\n}\n\n/// The link is a link to an invoice. Call getPaymentForm with the given invoice name to process the link\npublic struct InternalLinkTypeInvoice: Codable, Equatable, Hashable {\n\n    /// Name of the invoice\n    public let invoiceName: String\n\n\n    public init(invoiceName: String) {\n        self.invoiceName = invoiceName\n    }\n}\n\n/// The link is a link to a language pack. Call getLanguagePackInfo with the given language pack identifier to process the link. If the language pack is found and the user wants to apply it, then call setOption for the option \"language_pack_id\"\npublic struct InternalLinkTypeLanguagePack: Codable, Equatable, Hashable {\n\n    /// Language pack identifier\n    public let languagePackId: String\n\n\n    public init(languagePackId: String) {\n        self.languagePackId = languagePackId\n    }\n}\n\n/// The link is a link to a live story. Call searchPublicChat with the given chat username, then getChatActiveStories to get active stories in the chat, then find a live story among active stories of the chat, and then joinLiveStory to join the live story\npublic struct InternalLinkTypeLiveStory: Codable, Equatable, Hashable {\n\n    /// Username of the poster of the story\n    public let storyPosterUsername: String\n\n\n    public init(storyPosterUsername: String) {\n        self.storyPosterUsername = storyPosterUsername\n    }\n}\n\n/// The link is a link to the main Web App of a bot. Call searchPublicChat with the given bot username, check that the user is a bot and has the main Web App. If the bot can be added to attachment menu, then use getAttachmentMenuBot to receive information about the bot, then if the bot isn't added to side menu, show a disclaimer about Mini Apps being third-party applications, ask the user to accept their Terms of service and confirm adding the bot to side and attachment menu, then if the user accepts the terms and confirms adding, use toggleBotIsAddedToAttachmentMenu to add the bot. Then, use getMainWebApp with the given start parameter and mode and open the returned URL as a Web App\npublic struct InternalLinkTypeMainWebApp: Codable, Equatable, Hashable {\n\n    /// Username of the bot\n    public let botUsername: String\n\n    /// The mode to be passed to getMainWebApp\n    public let mode: WebAppOpenMode\n\n    /// Start parameter to be passed to getMainWebApp\n    public let startParameter: String\n\n\n    public init(\n        botUsername: String,\n        mode: WebAppOpenMode,\n        startParameter: String\n    ) {\n        self.botUsername = botUsername\n        self.mode = mode\n        self.startParameter = startParameter\n    }\n}\n\n/// The link is a link to a Telegram message or a forum topic. Call getMessageLinkInfo with the given URL to process the link, and then open received forum topic or chat and show the message there\npublic struct InternalLinkTypeMessage: Codable, Equatable, Hashable {\n\n    /// URL to be passed to getMessageLinkInfo\n    public let url: String\n\n\n    public init(url: String) {\n        self.url = url\n    }\n}\n\n/// The link contains a message draft text. A share screen needs to be shown to the user, then the chosen chat must be opened and the text is added to the input field\npublic struct InternalLinkTypeMessageDraft: Codable, Equatable, Hashable {\n\n    /// True, if the first line of the text contains a link. If true, the input field needs to be focused and the text after the link must be selected\n    public let containsLink: Bool\n\n    /// Message draft text\n    public let text: FormattedText\n\n\n    public init(\n        containsLink: Bool,\n        text: FormattedText\n    ) {\n        self.containsLink = containsLink\n        self.text = text\n    }\n}\n\n/// The link is a link to the My Profile application page\npublic struct InternalLinkTypeMyProfilePage: Codable, Equatable, Hashable {\n\n    /// Section of the page; may be one of \"\", \"posts\", \"posts/all-stories\", \"posts/add-album\", \"gifts\", \"archived-posts\"\n    public let section: String\n\n\n    public init(section: String) {\n        self.section = section\n    }\n}\n\n/// The link is a link to open the story posting interface\npublic struct InternalLinkTypeNewStory: Codable, Equatable, Hashable {\n\n    /// The type of the content of the story to post; may be null if unspecified\n    public let contentType: StoryContentType?\n\n\n    public init(contentType: StoryContentType?) {\n        self.contentType = contentType\n    }\n}\n\n/// The link is an OAuth link. Call getOauthLinkInfo with the given URL to process the link if the link was received from outside of the application; otherwise, ignore it. After getOauthLinkInfo, show the user confirmation dialog and process it with checkOauthRequestMatchCode, acceptOauthRequest or declineOauthRequest\npublic struct InternalLinkTypeOauth: Codable, Equatable, Hashable {\n\n    /// URL to be passed to getOauthLinkInfo\n    public let url: String\n\n\n    public init(url: String) {\n        self.url = url\n    }\n}\n\n/// The link contains a request of Telegram passport data. Call getPassportAuthorizationForm with the given parameters to process the link if the link was received from outside of the application; otherwise, ignore it\npublic struct InternalLinkTypePassportDataRequest: Codable, Equatable, Hashable {\n\n    /// User identifier of the service's bot; the corresponding user may be unknown yet\n    public let botUserId: Int64\n\n    /// An HTTP URL to open once the request is finished, canceled, or failed with the parameters tg_passport=success, tg_passport=cancel, or tg_passport=error&error=... respectively. If empty, then onActivityResult method must be used to return response on Android, or the link tgbot{bot_user_id}://passport/success or tgbot{bot_user_id}://passport/cancel must be opened otherwise\n    public let callbackUrl: String\n\n    /// Unique request identifier provided by the service\n    public let nonce: String\n\n    /// Service's public key\n    public let publicKey: String\n\n    /// Telegram Passport element types requested by the service\n    public let scope: String\n\n\n    public init(\n        botUserId: Int64,\n        callbackUrl: String,\n        nonce: String,\n        publicKey: String,\n        scope: String\n    ) {\n        self.botUserId = botUserId\n        self.callbackUrl = callbackUrl\n        self.nonce = nonce\n        self.publicKey = publicKey\n        self.scope = scope\n    }\n}\n\n/// The link can be used to confirm ownership of a phone number to prevent account deletion. Call sendPhoneNumberCode with the given phone number and with phoneNumberCodeTypeConfirmOwnership with the given hash to process the link. If succeeded, call checkPhoneNumberCode to check entered by the user code, or resendPhoneNumberCode to resend it\npublic struct InternalLinkTypePhoneNumberConfirmation: Codable, Equatable, Hashable {\n\n    /// Hash value from the link\n    public let hash: String\n\n    /// Phone number value from the link\n    public let phoneNumber: String\n\n\n    public init(\n        hash: String,\n        phoneNumber: String\n    ) {\n        self.hash = hash\n        self.phoneNumber = phoneNumber\n    }\n}\n\n/// The link is a link to the Premium features screen of the application from which the user can subscribe to Telegram Premium. Call getPremiumFeatures with the given referrer to process the link\npublic struct InternalLinkTypePremiumFeaturesPage: Codable, Equatable, Hashable {\n\n    /// Referrer specified in the link\n    public let referrer: String\n\n\n    public init(referrer: String) {\n        self.referrer = referrer\n    }\n}\n\n/// The link is a link with a Telegram Premium gift code. Call checkPremiumGiftCode with the given code to process the link. If the code is valid and the user wants to apply it, then call applyPremiumGiftCode\npublic struct InternalLinkTypePremiumGiftCode: Codable, Equatable, Hashable {\n\n    /// The Telegram Premium gift code\n    public let code: String\n\n\n    public init(code: String) {\n        self.code = code\n    }\n}\n\n/// The link is a link to the screen for gifting Telegram Premium subscriptions to friends via inputInvoiceTelegram with telegramPaymentPurposePremiumGift payments or in-store purchases\npublic struct InternalLinkTypePremiumGiftPurchase: Codable, Equatable, Hashable {\n\n    /// Referrer specified in the link\n    public let referrer: String\n\n\n    public init(referrer: String) {\n        self.referrer = referrer\n    }\n}\n\n/// The link is a link to a proxy. Call addProxy with the given parameters to process the link and add the proxy\npublic struct InternalLinkTypeProxy: Codable, Equatable, Hashable {\n\n    /// The proxy; may be null if the proxy is unsupported, in which case an alert can be shown to the user\n    public let proxy: Proxy?\n\n\n    public init(proxy: Proxy?) {\n        self.proxy = proxy\n    }\n}\n\n/// The link is a link to a chat by its username. Call searchPublicChat with the given chat username to process the link. If the chat is found, open its profile information screen or the chat itself. If draft text isn't empty and the chat is a private chat with a regular user, then put the draft text in the input field\npublic struct InternalLinkTypePublicChat: Codable, Equatable, Hashable {\n\n    /// Username of the chat\n    public let chatUsername: String\n\n    /// Draft text for message to send in the chat\n    public let draftText: String\n\n    /// True, if chat profile information screen must be opened; otherwise, the chat itself must be opened\n    public let openProfile: Bool\n\n\n    public init(\n        chatUsername: String,\n        draftText: String,\n        openProfile: Bool\n    ) {\n        self.chatUsername = chatUsername\n        self.draftText = draftText\n        self.openProfile = openProfile\n    }\n}\n\n/// The link is a link to a dialog for creating of a managed bot. Call searchPublicChat with the given manager bot username. If the chat is found, the chat is a chat with a bot and the bot has can_manage_bots == true, then show bot creation confirmation dialog with the given suggested_bot_username and suggested_bot_name. If user agrees, call createBot with via_link == true to create the bot\npublic struct InternalLinkTypeRequestManagedBot: Codable, Equatable, Hashable {\n\n    /// Username of the bot which will manage the new bot\n    public let managerBotUsername: String\n\n    /// Suggested name for the bot; may be empty if not specified\n    public let suggestedBotName: String\n\n    /// Suggested username for the bot; always ends with \"bot\" case-insensitive\n    public let suggestedBotUsername: String\n\n\n    public init(\n        managerBotUsername: String,\n        suggestedBotName: String,\n        suggestedBotUsername: String\n    ) {\n        self.managerBotUsername = managerBotUsername\n        self.suggestedBotName = suggestedBotName\n        self.suggestedBotUsername = suggestedBotUsername\n    }\n}\n\n/// The link is a link to application settings\npublic struct InternalLinkTypeSettings: Codable, Equatable, Hashable {\n\n    /// Section of the application settings to open; may be null if none\n    public let section: SettingsSection?\n\n\n    public init(section: SettingsSection?) {\n        self.section = section\n    }\n}\n\n/// The link is a link to the Telegram Star purchase section of the application\npublic struct InternalLinkTypeStarPurchase: Codable, Equatable, Hashable {\n\n    /// Purpose of Telegram Star purchase. Arbitrary string specified by the server, for example, \"subs\" if the Telegram Stars are required to extend channel subscriptions\n    public let purpose: String\n\n    /// The number of Telegram Stars that must be owned by the user\n    public let starCount: Int64\n\n\n    public init(\n        purpose: String,\n        starCount: Int64\n    ) {\n        self.purpose = purpose\n        self.starCount = starCount\n    }\n}\n\n/// The link is a link to a sticker set. Call searchStickerSet with the given sticker set name to process the link and show the sticker set. If the sticker set is found and the user wants to add it, then call changeStickerSet\npublic struct InternalLinkTypeStickerSet: Codable, Equatable, Hashable {\n\n    /// True, if the sticker set is expected to contain custom emoji\n    public let expectCustomEmoji: Bool\n\n    /// Name of the sticker set\n    public let stickerSetName: String\n\n\n    public init(\n        expectCustomEmoji: Bool,\n        stickerSetName: String\n    ) {\n        self.expectCustomEmoji = expectCustomEmoji\n        self.stickerSetName = stickerSetName\n    }\n}\n\n/// The link is a link to a story. Call searchPublicChat with the given poster username, then call getStory with the received chat identifier and the given story identifier, then show the story if received\npublic struct InternalLinkTypeStory: Codable, Equatable, Hashable {\n\n    /// Story identifier\n    public let storyId: Int\n\n    /// Username of the poster of the story\n    public let storyPosterUsername: String\n\n\n    public init(\n        storyId: Int,\n        storyPosterUsername: String\n    ) {\n        self.storyId = storyId\n        self.storyPosterUsername = storyPosterUsername\n    }\n}\n\n/// The link is a link to an album of stories. Call searchPublicChat with the given username, then call getStoryAlbumStories with the received chat identifier and the given story album identifier, then show the story album if received\npublic struct InternalLinkTypeStoryAlbum: Codable, Equatable, Hashable {\n\n    /// Story album identifier\n    public let storyAlbumId: Int\n\n    /// Username of the owner of the story album\n    public let storyAlbumOwnerUsername: String\n\n\n    public init(\n        storyAlbumId: Int,\n        storyAlbumOwnerUsername: String\n    ) {\n        self.storyAlbumId = storyAlbumId\n        self.storyAlbumOwnerUsername = storyAlbumOwnerUsername\n    }\n}\n\n/// The link is a link to a text composition style. Call searchTextCompositionStyle with the given style name to get information about the style. If the style is found and the user wants to add it, then call addTextCompositionStyle\npublic struct InternalLinkTypeTextCompositionStyle: Codable, Equatable, Hashable {\n\n    /// Name of the style\n    public let styleName: String\n\n\n    public init(styleName: String) {\n        self.styleName = styleName\n    }\n}\n\n/// The link is a link to a cloud theme. TDLib has no theme support yet\npublic struct InternalLinkTypeTheme: Codable, Equatable, Hashable {\n\n    /// Name of the theme\n    public let themeName: String\n\n\n    public init(themeName: String) {\n        self.themeName = themeName\n    }\n}\n\n/// The link is an unknown tg: link. Call getDeepLinkInfo to process the link\npublic struct InternalLinkTypeUnknownDeepLink: Codable, Equatable, Hashable {\n\n    /// Link to be passed to getDeepLinkInfo\n    public let link: String\n\n\n    public init(link: String) {\n        self.link = link\n    }\n}\n\n/// The link is a link to an upgraded gift. Call getUpgradedGift with the given name to process the link\npublic struct InternalLinkTypeUpgradedGift: Codable, Equatable, Hashable {\n\n    /// Name of the unique gift\n    public let name: String\n\n\n    public init(name: String) {\n        self.name = name\n    }\n}\n\n/// The link is a link to a user by its phone number. Call searchUserByPhoneNumber with the given phone number to process the link. If the user is found, then call createPrivateChat and open user's profile information screen or the chat itself. If draft text isn't empty, then put the draft text in the input field\npublic struct InternalLinkTypeUserPhoneNumber: Codable, Equatable, Hashable {\n\n    /// Draft text for message to send in the chat\n    public let draftText: String\n\n    /// True, if user's profile information screen must be opened; otherwise, the chat itself must be opened\n    public let openProfile: Bool\n\n    /// Phone number of the user\n    public let phoneNumber: String\n\n\n    public init(\n        draftText: String,\n        openProfile: Bool,\n        phoneNumber: String\n    ) {\n        self.draftText = draftText\n        self.openProfile = openProfile\n        self.phoneNumber = phoneNumber\n    }\n}\n\n/// The link is a link to a user by a temporary token. Call searchUserByToken with the given token to process the link. If the user is found, then call createPrivateChat and open the chat\npublic struct InternalLinkTypeUserToken: Codable, Equatable, Hashable {\n\n    /// The token\n    public let token: String\n\n\n    public init(token: String) {\n        self.token = token\n    }\n}\n\n/// The link is a link to a video chat. Call searchPublicChat with the given chat username, and then joinVideoChat with the given invite hash to process the link\npublic struct InternalLinkTypeVideoChat: Codable, Equatable, Hashable {\n\n    /// Username of the chat with the video chat\n    public let chatUsername: String\n\n    /// If non-empty, invite hash to be used to join the video chat without being muted by administrators\n    public let inviteHash: String\n\n    /// True, if the video chat is expected to be a live stream in a channel or a broadcast group\n    public let isLiveStream: Bool\n\n\n    public init(\n        chatUsername: String,\n        inviteHash: String,\n        isLiveStream: Bool\n    ) {\n        self.chatUsername = chatUsername\n        self.inviteHash = inviteHash\n        self.isLiveStream = isLiveStream\n    }\n}\n\n/// The link is a link to a Web App. Call searchPublicChat with the given bot username, check that the user is a bot. If the bot is restricted for the current user, then show an error message. Otherwise, call searchWebApp with the received bot and the given web_app_short_name. Process received foundWebApp by showing a confirmation dialog if needed. If the bot can be added to attachment or side menu, but isn't added yet, then show a disclaimer about Mini Apps being third-party applications instead of the dialog and ask the user to accept their Terms of service. If the user accept the terms and confirms adding, then use toggleBotIsAddedToAttachmentMenu to add the bot. Then, call getWebAppLinkUrl and open the returned URL as a Web App\npublic struct InternalLinkTypeWebApp: Codable, Equatable, Hashable {\n\n    /// Username of the bot that owns the Web App\n    public let botUsername: String\n\n    /// The mode in which the Web App must be opened\n    public let mode: WebAppOpenMode\n\n    /// Start parameter to be passed to getWebAppLinkUrl\n    public let startParameter: String\n\n    /// Short name of the Web App\n    public let webAppShortName: String\n\n\n    public init(\n        botUsername: String,\n        mode: WebAppOpenMode,\n        startParameter: String,\n        webAppShortName: String\n    ) {\n        self.botUsername = botUsername\n        self.mode = mode\n        self.startParameter = startParameter\n        self.webAppShortName = webAppShortName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InviteGroupCallParticipant.swift",
    "content": "//\n//  InviteGroupCallParticipant.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Invites a user to an active group call; for group calls not bound to a chat only. Sends a service message of the type messageGroupCall. The group call can have at most getOption(\"group_call_participant_count_max\") participants\npublic struct InviteGroupCallParticipant: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// Pass true if the group call is a video call\n    public let isVideo: Bool?\n\n    /// User identifier\n    public let userId: Int64?\n\n\n    public init(\n        groupCallId: Int?,\n        isVideo: Bool?,\n        userId: Int64?\n    ) {\n        self.groupCallId = groupCallId\n        self.isVideo = isVideo\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InviteGroupCallParticipantResult.swift",
    "content": "//\n//  InviteGroupCallParticipantResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes result of group call participant invitation\npublic indirect enum InviteGroupCallParticipantResult: Codable, Equatable, Hashable {\n\n    /// The user can't be invited due to their privacy settings\n    case inviteGroupCallParticipantResultUserPrivacyRestricted\n\n    /// The user can't be invited because they are already a participant of the call\n    case inviteGroupCallParticipantResultUserAlreadyParticipant\n\n    /// The user can't be invited because they were banned by the owner of the call and can be invited back only by the owner of the group call\n    case inviteGroupCallParticipantResultUserWasBanned\n\n    /// The user was invited and a service message of the type messageGroupCall was sent which can be used in declineGroupCallInvitation to cancel the invitation\n    case inviteGroupCallParticipantResultSuccess(InviteGroupCallParticipantResultSuccess)\n\n\n    private enum Kind: String, Codable {\n        case inviteGroupCallParticipantResultUserPrivacyRestricted\n        case inviteGroupCallParticipantResultUserAlreadyParticipant\n        case inviteGroupCallParticipantResultUserWasBanned\n        case inviteGroupCallParticipantResultSuccess\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inviteGroupCallParticipantResultUserPrivacyRestricted:\n            self = .inviteGroupCallParticipantResultUserPrivacyRestricted\n        case .inviteGroupCallParticipantResultUserAlreadyParticipant:\n            self = .inviteGroupCallParticipantResultUserAlreadyParticipant\n        case .inviteGroupCallParticipantResultUserWasBanned:\n            self = .inviteGroupCallParticipantResultUserWasBanned\n        case .inviteGroupCallParticipantResultSuccess:\n            let value = try InviteGroupCallParticipantResultSuccess(from: decoder)\n            self = .inviteGroupCallParticipantResultSuccess(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inviteGroupCallParticipantResultUserPrivacyRestricted:\n            try container.encode(Kind.inviteGroupCallParticipantResultUserPrivacyRestricted, forKey: .type)\n        case .inviteGroupCallParticipantResultUserAlreadyParticipant:\n            try container.encode(Kind.inviteGroupCallParticipantResultUserAlreadyParticipant, forKey: .type)\n        case .inviteGroupCallParticipantResultUserWasBanned:\n            try container.encode(Kind.inviteGroupCallParticipantResultUserWasBanned, forKey: .type)\n        case .inviteGroupCallParticipantResultSuccess(let value):\n            try container.encode(Kind.inviteGroupCallParticipantResultSuccess, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The user was invited and a service message of the type messageGroupCall was sent which can be used in declineGroupCallInvitation to cancel the invitation\npublic struct InviteGroupCallParticipantResultSuccess: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat with the invitation message\n    public let chatId: Int64\n\n    /// Identifier of the message\n    public let messageId: Int64\n\n\n    public init(\n        chatId: Int64,\n        messageId: Int64\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InviteGroupCallParticipants.swift",
    "content": "//\n//  InviteGroupCallParticipants.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.47-971684a3\n//  https://github.com/tdlib/td/tree/971684a3\n//\n\nimport Foundation\n\n\n/// Invites users to an active group call. Sends a service message of type messageInviteVideoChatParticipants for video chats\npublic struct InviteGroupCallParticipants: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// User identifiers. At most 10 users can be invited simultaneously\n    public let userIds: [Int64]?\n\n\n    public init(\n        groupCallId: Int?,\n        userIds: [Int64]?\n    ) {\n        self.groupCallId = groupCallId\n        self.userIds = userIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InviteLinkChatType.swift",
    "content": "//\n//  InviteLinkChatType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the type of chat to which points an invite link\npublic indirect enum InviteLinkChatType: Codable, Equatable, Hashable {\n\n    /// The link is an invite link for a basic group\n    case inviteLinkChatTypeBasicGroup\n\n    /// The link is an invite link for a supergroup\n    case inviteLinkChatTypeSupergroup\n\n    /// The link is an invite link for a channel\n    case inviteLinkChatTypeChannel\n\n\n    private enum Kind: String, Codable {\n        case inviteLinkChatTypeBasicGroup\n        case inviteLinkChatTypeSupergroup\n        case inviteLinkChatTypeChannel\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .inviteLinkChatTypeBasicGroup:\n            self = .inviteLinkChatTypeBasicGroup\n        case .inviteLinkChatTypeSupergroup:\n            self = .inviteLinkChatTypeSupergroup\n        case .inviteLinkChatTypeChannel:\n            self = .inviteLinkChatTypeChannel\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .inviteLinkChatTypeBasicGroup:\n            try container.encode(Kind.inviteLinkChatTypeBasicGroup, forKey: .type)\n        case .inviteLinkChatTypeSupergroup:\n            try container.encode(Kind.inviteLinkChatTypeSupergroup, forKey: .type)\n        case .inviteLinkChatTypeChannel:\n            try container.encode(Kind.inviteLinkChatTypeChannel, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/InviteVideoChatParticipants.swift",
    "content": "//\n//  InviteVideoChatParticipants.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Invites users to an active video chat. Sends a service message of the type messageInviteVideoChatParticipants to the chat bound to the group call\npublic struct InviteVideoChatParticipants: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// User identifiers. At most 10 users can be invited simultaneously\n    public let userIds: [Int64]?\n\n\n    public init(\n        groupCallId: Int?,\n        userIds: [Int64]?\n    ) {\n        self.groupCallId = groupCallId\n        self.userIds = userIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Invoice.swift",
    "content": "//\n//  Invoice.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Product invoice\npublic struct Invoice: Codable, Equatable, Hashable {\n\n    /// ISO 4217 currency code\n    public let currency: String\n\n    /// True, if the total price depends on the shipping method\n    public let isFlexible: Bool\n\n    /// True, if the payment is a test payment\n    public let isTest: Bool\n\n    /// The maximum allowed amount of tip in the smallest units of the currency\n    public let maxTipAmount: Int64\n\n    /// True, if the user's email address is needed for payment\n    public let needEmailAddress: Bool\n\n    /// True, if the user's name is needed for payment\n    public let needName: Bool\n\n    /// True, if the user's phone number is needed for payment\n    public let needPhoneNumber: Bool\n\n    /// True, if the user's shipping address is needed for payment\n    public let needShippingAddress: Bool\n\n    /// A list of objects used to calculate the total price of the product\n    public let priceParts: [LabeledPricePart]\n\n    /// An HTTP URL with terms of service for recurring payments. If non-empty, the invoice payment will result in recurring payments and the user must accept the terms of service before allowed to pay\n    public let recurringPaymentTermsOfServiceUrl: String\n\n    /// True, if the user's email address will be sent to the provider\n    public let sendEmailAddressToProvider: Bool\n\n    /// True, if the user's phone number will be sent to the provider\n    public let sendPhoneNumberToProvider: Bool\n\n    /// The number of seconds between consecutive Telegram Star debiting for subscription invoices; 0 if the invoice doesn't create subscription\n    public let subscriptionPeriod: Int\n\n    /// Suggested amounts of tip in the smallest units of the currency\n    public let suggestedTipAmounts: [Int64]\n\n    /// An HTTP URL with terms of service for non-recurring payments. If non-empty, then the user must accept the terms of service before allowed to pay\n    public let termsOfServiceUrl: String\n\n\n    public init(\n        currency: String,\n        isFlexible: Bool,\n        isTest: Bool,\n        maxTipAmount: Int64,\n        needEmailAddress: Bool,\n        needName: Bool,\n        needPhoneNumber: Bool,\n        needShippingAddress: Bool,\n        priceParts: [LabeledPricePart],\n        recurringPaymentTermsOfServiceUrl: String,\n        sendEmailAddressToProvider: Bool,\n        sendPhoneNumberToProvider: Bool,\n        subscriptionPeriod: Int,\n        suggestedTipAmounts: [Int64],\n        termsOfServiceUrl: String\n    ) {\n        self.currency = currency\n        self.isFlexible = isFlexible\n        self.isTest = isTest\n        self.maxTipAmount = maxTipAmount\n        self.needEmailAddress = needEmailAddress\n        self.needName = needName\n        self.needPhoneNumber = needPhoneNumber\n        self.needShippingAddress = needShippingAddress\n        self.priceParts = priceParts\n        self.recurringPaymentTermsOfServiceUrl = recurringPaymentTermsOfServiceUrl\n        self.sendEmailAddressToProvider = sendEmailAddressToProvider\n        self.sendPhoneNumberToProvider = sendPhoneNumberToProvider\n        self.subscriptionPeriod = subscriptionPeriod\n        self.suggestedTipAmounts = suggestedTipAmounts\n        self.termsOfServiceUrl = termsOfServiceUrl\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/IsLoginEmailAddressRequired.swift",
    "content": "//\n//  IsLoginEmailAddressRequired.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks whether the current user is required to set login email address\npublic struct IsLoginEmailAddressRequired: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/IsProfileAudio.swift",
    "content": "//\n//  IsProfileAudio.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Checks whether a file is in the profile audio files of the current user. Returns a 404 error if it isn't\npublic struct IsProfileAudio: Codable, Equatable, Hashable {\n\n    /// Identifier of the audio file to check\n    public let fileId: Int?\n\n\n    public init(fileId: Int?) {\n        self.fileId = fileId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/JoinChat.swift",
    "content": "//\n//  JoinChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds the current user as a new member to a chat. Private and secret chats can't be joined using this method. May return an error with a message \"INVITE_REQUEST_SENT\" if only a join request was created\npublic struct JoinChat: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/JoinChatByInviteLink.swift",
    "content": "//\n//  JoinChatByInviteLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Uses an invite link to add the current user to the chat if possible. May return an error with a message \"INVITE_REQUEST_SENT\" if only a join request was created\npublic struct JoinChatByInviteLink: Codable, Equatable, Hashable {\n\n    /// Invite link to use\n    public let inviteLink: String?\n\n\n    public init(inviteLink: String?) {\n        self.inviteLink = inviteLink\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/JoinGroupCall.swift",
    "content": "//\n//  JoinGroupCall.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Joins a regular group call that is not bound to a chat\npublic struct JoinGroupCall: Codable, Equatable, Hashable {\n\n    /// The group call to join\n    public let inputGroupCall: InputGroupCall?\n\n    /// Parameters to join the call\n    public let joinParameters: GroupCallJoinParameters?\n\n\n    public init(\n        inputGroupCall: InputGroupCall?,\n        joinParameters: GroupCallJoinParameters?\n    ) {\n        self.inputGroupCall = inputGroupCall\n        self.joinParameters = joinParameters\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/JoinLiveStory.swift",
    "content": "//\n//  JoinLiveStory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Joins a group call of an active live story. Returns join response payload for tgcalls\npublic struct JoinLiveStory: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// Parameters to join the call\n    public let joinParameters: GroupCallJoinParameters?\n\n\n    public init(\n        groupCallId: Int?,\n        joinParameters: GroupCallJoinParameters?\n    ) {\n        self.groupCallId = groupCallId\n        self.joinParameters = joinParameters\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/JoinVideoChat.swift",
    "content": "//\n//  JoinVideoChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Joins an active video chat. Returns join response payload for tgcalls\npublic struct JoinVideoChat: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// Invite hash as received from internalLinkTypeVideoChat\n    public let inviteHash: String?\n\n    /// Parameters to join the call\n    public let joinParameters: GroupCallJoinParameters?\n\n    /// Identifier of a group call participant, which will be used to join the call; pass null to join as self\n    public let participantId: MessageSender?\n\n\n    public init(\n        groupCallId: Int?,\n        inviteHash: String?,\n        joinParameters: GroupCallJoinParameters?,\n        participantId: MessageSender?\n    ) {\n        self.groupCallId = groupCallId\n        self.inviteHash = inviteHash\n        self.joinParameters = joinParameters\n        self.participantId = participantId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/JsonObjectMember.swift",
    "content": "//\n//  JsonObjectMember.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents one member of a JSON object\npublic struct JsonObjectMember: Codable, Equatable, Hashable {\n\n    /// Member's key\n    public let key: String\n\n    /// Member's value\n    public let value: JsonValue\n\n\n    public init(\n        key: String,\n        value: JsonValue\n    ) {\n        self.key = key\n        self.value = value\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/JsonValue.swift",
    "content": "//\n//  JsonValue.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a JSON value\npublic indirect enum JsonValue: Codable, Equatable, Hashable {\n\n    /// Represents a null JSON value\n    case jsonValueNull\n\n    /// Represents a boolean JSON value\n    case jsonValueBoolean(JsonValueBoolean)\n\n    /// Represents a numeric JSON value\n    case jsonValueNumber(JsonValueNumber)\n\n    /// Represents a string JSON value\n    case jsonValueString(JsonValueString)\n\n    /// Represents a JSON array\n    case jsonValueArray(JsonValueArray)\n\n    /// Represents a JSON object\n    case jsonValueObject(JsonValueObject)\n\n\n    private enum Kind: String, Codable {\n        case jsonValueNull\n        case jsonValueBoolean\n        case jsonValueNumber\n        case jsonValueString\n        case jsonValueArray\n        case jsonValueObject\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .jsonValueNull:\n            self = .jsonValueNull\n        case .jsonValueBoolean:\n            let value = try JsonValueBoolean(from: decoder)\n            self = .jsonValueBoolean(value)\n        case .jsonValueNumber:\n            let value = try JsonValueNumber(from: decoder)\n            self = .jsonValueNumber(value)\n        case .jsonValueString:\n            let value = try JsonValueString(from: decoder)\n            self = .jsonValueString(value)\n        case .jsonValueArray:\n            let value = try JsonValueArray(from: decoder)\n            self = .jsonValueArray(value)\n        case .jsonValueObject:\n            let value = try JsonValueObject(from: decoder)\n            self = .jsonValueObject(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .jsonValueNull:\n            try container.encode(Kind.jsonValueNull, forKey: .type)\n        case .jsonValueBoolean(let value):\n            try container.encode(Kind.jsonValueBoolean, forKey: .type)\n            try value.encode(to: encoder)\n        case .jsonValueNumber(let value):\n            try container.encode(Kind.jsonValueNumber, forKey: .type)\n            try value.encode(to: encoder)\n        case .jsonValueString(let value):\n            try container.encode(Kind.jsonValueString, forKey: .type)\n            try value.encode(to: encoder)\n        case .jsonValueArray(let value):\n            try container.encode(Kind.jsonValueArray, forKey: .type)\n            try value.encode(to: encoder)\n        case .jsonValueObject(let value):\n            try container.encode(Kind.jsonValueObject, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Represents a boolean JSON value\npublic struct JsonValueBoolean: Codable, Equatable, Hashable {\n\n    /// The value\n    public let value: Bool\n\n\n    public init(value: Bool) {\n        self.value = value\n    }\n}\n\n/// Represents a numeric JSON value\npublic struct JsonValueNumber: Codable, Equatable, Hashable {\n\n    /// The value\n    public let value: Double\n\n\n    public init(value: Double) {\n        self.value = value\n    }\n}\n\n/// Represents a string JSON value\npublic struct JsonValueString: Codable, Equatable, Hashable {\n\n    /// The value\n    public let value: String\n\n\n    public init(value: String) {\n        self.value = value\n    }\n}\n\n/// Represents a JSON array\npublic struct JsonValueArray: Codable, Equatable, Hashable {\n\n    /// The list of array elements\n    public let values: [JsonValue]\n\n\n    public init(values: [JsonValue]) {\n        self.values = values\n    }\n}\n\n/// Represents a JSON object\npublic struct JsonValueObject: Codable, Equatable, Hashable {\n\n    /// The list of object members\n    public let members: [JsonObjectMember]\n\n\n    public init(members: [JsonObjectMember]) {\n        self.members = members\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/KeyboardButton.swift",
    "content": "//\n//  KeyboardButton.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a single button in a bot keyboard\npublic struct KeyboardButton: Codable, Equatable, Hashable {\n\n    /// Identifier of the custom emoji that must be shown on the button; 0 if none\n    public let iconCustomEmojiId: TdInt64\n\n    /// Style of the button\n    public let style: ButtonStyle\n\n    /// Text of the button\n    public let text: String\n\n    /// Type of the button\n    public let type: KeyboardButtonType\n\n\n    public init(\n        iconCustomEmojiId: TdInt64,\n        style: ButtonStyle,\n        text: String,\n        type: KeyboardButtonType\n    ) {\n        self.iconCustomEmojiId = iconCustomEmojiId\n        self.style = style\n        self.text = text\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/KeyboardButtonSource.swift",
    "content": "//\n//  KeyboardButtonSource.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes source of a keyboard button\npublic indirect enum KeyboardButtonSource: Codable, Equatable, Hashable {\n\n    /// The button is from a bot's message\n    case keyboardButtonSourceMessage(KeyboardButtonSourceMessage)\n\n    /// The button is a prepared keyboard button from a Mini App received via getPreparedKeyboardButton\n    case keyboardButtonSourceWebApp(KeyboardButtonSourceWebApp)\n\n\n    private enum Kind: String, Codable {\n        case keyboardButtonSourceMessage\n        case keyboardButtonSourceWebApp\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .keyboardButtonSourceMessage:\n            let value = try KeyboardButtonSourceMessage(from: decoder)\n            self = .keyboardButtonSourceMessage(value)\n        case .keyboardButtonSourceWebApp:\n            let value = try KeyboardButtonSourceWebApp(from: decoder)\n            self = .keyboardButtonSourceWebApp(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .keyboardButtonSourceMessage(let value):\n            try container.encode(Kind.keyboardButtonSourceMessage, forKey: .type)\n            try value.encode(to: encoder)\n        case .keyboardButtonSourceWebApp(let value):\n            try container.encode(Kind.keyboardButtonSourceWebApp, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The button is from a bot's message\npublic struct KeyboardButtonSourceMessage: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat with the message\n    public let chatId: Int64\n\n    /// Identifier of the message with the button\n    public let messageId: Int64\n\n\n    public init(\n        chatId: Int64,\n        messageId: Int64\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n/// The button is a prepared keyboard button from a Mini App received via getPreparedKeyboardButton\npublic struct KeyboardButtonSourceWebApp: Codable, Equatable, Hashable {\n\n    /// Identifier of the bot that created the button\n    public let botUserId: Int64\n\n    /// Identifier of the prepared button\n    public let preparedButtonId: String\n\n\n    public init(\n        botUserId: Int64,\n        preparedButtonId: String\n    ) {\n        self.botUserId = botUserId\n        self.preparedButtonId = preparedButtonId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/KeyboardButtonType.swift",
    "content": "//\n//  KeyboardButtonType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a keyboard button type\npublic indirect enum KeyboardButtonType: Codable, Equatable, Hashable {\n\n    /// A simple button, with text that must be sent when the button is pressed\n    case keyboardButtonTypeText\n\n    /// A button that sends the user's phone number when pressed; available only in private chats\n    case keyboardButtonTypeRequestPhoneNumber\n\n    /// A button that sends the user's location when pressed; available only in private chats\n    case keyboardButtonTypeRequestLocation\n\n    /// A button that allows the user to create and send a poll when pressed; available only in private chats\n    case keyboardButtonTypeRequestPoll(KeyboardButtonTypeRequestPoll)\n\n    /// A button that requests users to be shared by the current user; available only in private chats. Use the method shareUsersWithBot to complete the request\n    case keyboardButtonTypeRequestUsers(KeyboardButtonTypeRequestUsers)\n\n    /// A button that requests a chat to be shared by the current user; available only in private chats. Use the method shareChatWithBot to complete the request\n    case keyboardButtonTypeRequestChat(KeyboardButtonTypeRequestChat)\n\n    /// A button that requests creation of a managed bot by the current user; available only in private chats. Use the method createBot to complete the request\n    case keyboardButtonTypeRequestManagedBot(KeyboardButtonTypeRequestManagedBot)\n\n    /// A button that opens a Web App by calling getWebAppUrl\n    case keyboardButtonTypeWebApp(KeyboardButtonTypeWebApp)\n\n\n    private enum Kind: String, Codable {\n        case keyboardButtonTypeText\n        case keyboardButtonTypeRequestPhoneNumber\n        case keyboardButtonTypeRequestLocation\n        case keyboardButtonTypeRequestPoll\n        case keyboardButtonTypeRequestUsers\n        case keyboardButtonTypeRequestChat\n        case keyboardButtonTypeRequestManagedBot\n        case keyboardButtonTypeWebApp\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .keyboardButtonTypeText:\n            self = .keyboardButtonTypeText\n        case .keyboardButtonTypeRequestPhoneNumber:\n            self = .keyboardButtonTypeRequestPhoneNumber\n        case .keyboardButtonTypeRequestLocation:\n            self = .keyboardButtonTypeRequestLocation\n        case .keyboardButtonTypeRequestPoll:\n            let value = try KeyboardButtonTypeRequestPoll(from: decoder)\n            self = .keyboardButtonTypeRequestPoll(value)\n        case .keyboardButtonTypeRequestUsers:\n            let value = try KeyboardButtonTypeRequestUsers(from: decoder)\n            self = .keyboardButtonTypeRequestUsers(value)\n        case .keyboardButtonTypeRequestChat:\n            let value = try KeyboardButtonTypeRequestChat(from: decoder)\n            self = .keyboardButtonTypeRequestChat(value)\n        case .keyboardButtonTypeRequestManagedBot:\n            let value = try KeyboardButtonTypeRequestManagedBot(from: decoder)\n            self = .keyboardButtonTypeRequestManagedBot(value)\n        case .keyboardButtonTypeWebApp:\n            let value = try KeyboardButtonTypeWebApp(from: decoder)\n            self = .keyboardButtonTypeWebApp(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .keyboardButtonTypeText:\n            try container.encode(Kind.keyboardButtonTypeText, forKey: .type)\n        case .keyboardButtonTypeRequestPhoneNumber:\n            try container.encode(Kind.keyboardButtonTypeRequestPhoneNumber, forKey: .type)\n        case .keyboardButtonTypeRequestLocation:\n            try container.encode(Kind.keyboardButtonTypeRequestLocation, forKey: .type)\n        case .keyboardButtonTypeRequestPoll(let value):\n            try container.encode(Kind.keyboardButtonTypeRequestPoll, forKey: .type)\n            try value.encode(to: encoder)\n        case .keyboardButtonTypeRequestUsers(let value):\n            try container.encode(Kind.keyboardButtonTypeRequestUsers, forKey: .type)\n            try value.encode(to: encoder)\n        case .keyboardButtonTypeRequestChat(let value):\n            try container.encode(Kind.keyboardButtonTypeRequestChat, forKey: .type)\n            try value.encode(to: encoder)\n        case .keyboardButtonTypeRequestManagedBot(let value):\n            try container.encode(Kind.keyboardButtonTypeRequestManagedBot, forKey: .type)\n            try value.encode(to: encoder)\n        case .keyboardButtonTypeWebApp(let value):\n            try container.encode(Kind.keyboardButtonTypeWebApp, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A button that allows the user to create and send a poll when pressed; available only in private chats\npublic struct KeyboardButtonTypeRequestPoll: Codable, Equatable, Hashable {\n\n    /// If true, only polls in quiz mode must be allowed to create\n    public let forceQuiz: Bool\n\n    /// If true, only regular polls must be allowed to create\n    public let forceRegular: Bool\n\n\n    public init(\n        forceQuiz: Bool,\n        forceRegular: Bool\n    ) {\n        self.forceQuiz = forceQuiz\n        self.forceRegular = forceRegular\n    }\n}\n\n/// A button that requests users to be shared by the current user; available only in private chats. Use the method shareUsersWithBot to complete the request\npublic struct KeyboardButtonTypeRequestUsers: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique button identifier\n    public let id: Int\n\n    /// The maximum number of users to share\n    public let maxQuantity: Int\n\n    /// Pass true to request name of the users; bots only\n    public let requestName: Bool\n\n    /// Pass true to request photo of the users; bots only\n    public let requestPhoto: Bool\n\n    /// Pass true to request username of the users; bots only\n    public let requestUsername: Bool\n\n    /// True, if the shared users must or must not be bots\n    public let restrictUserIsBot: Bool\n\n    /// True, if the shared users must or must not be Telegram Premium users\n    public let restrictUserIsPremium: Bool\n\n    /// True, if the shared users must be bots; otherwise, the shared users must not be bots. Ignored if restrict_user_is_bot is false\n    public let userIsBot: Bool\n\n    /// True, if the shared users must be Telegram Premium users; otherwise, the shared users must not be Telegram Premium users. Ignored if restrict_user_is_premium is false\n    public let userIsPremium: Bool\n\n\n    public init(\n        id: Int,\n        maxQuantity: Int,\n        requestName: Bool,\n        requestPhoto: Bool,\n        requestUsername: Bool,\n        restrictUserIsBot: Bool,\n        restrictUserIsPremium: Bool,\n        userIsBot: Bool,\n        userIsPremium: Bool\n    ) {\n        self.id = id\n        self.maxQuantity = maxQuantity\n        self.requestName = requestName\n        self.requestPhoto = requestPhoto\n        self.requestUsername = requestUsername\n        self.restrictUserIsBot = restrictUserIsBot\n        self.restrictUserIsPremium = restrictUserIsPremium\n        self.userIsBot = userIsBot\n        self.userIsPremium = userIsPremium\n    }\n}\n\n/// A button that requests a chat to be shared by the current user; available only in private chats. Use the method shareChatWithBot to complete the request\npublic struct KeyboardButtonTypeRequestChat: Codable, Equatable, Hashable, Identifiable {\n\n    /// Expected bot administrator rights in the chat; may be null if they aren't restricted\n    public let botAdministratorRights: ChatAdministratorRights?\n\n    /// True, if the bot must be a member of the chat; for basic group and supergroup chats only\n    public let botIsMember: Bool\n\n    /// True, if the chat must have a username; otherwise, the chat must not have a username. Ignored if restrict_chat_has_username is false\n    public let chatHasUsername: Bool\n\n    /// True, if the chat must be a channel; otherwise, a basic group or a supergroup chat is shared\n    public let chatIsChannel: Bool\n\n    /// True, if the chat must be created by the current user\n    public let chatIsCreated: Bool\n\n    /// True, if the chat must be a forum supergroup; otherwise, the chat must not be a forum supergroup. Ignored if restrict_chat_is_forum is false\n    public let chatIsForum: Bool\n\n    /// Unique button identifier\n    public let id: Int\n\n    /// Pass true to request photo of the chat; bots only\n    public let requestPhoto: Bool\n\n    /// Pass true to request title of the chat; bots only\n    public let requestTitle: Bool\n\n    /// Pass true to request username of the chat; bots only\n    public let requestUsername: Bool\n\n    /// True, if the chat must or must not have a username\n    public let restrictChatHasUsername: Bool\n\n    /// True, if the chat must or must not be a forum supergroup\n    public let restrictChatIsForum: Bool\n\n    /// Expected user administrator rights in the chat; may be null if they aren't restricted\n    public let userAdministratorRights: ChatAdministratorRights?\n\n\n    public init(\n        botAdministratorRights: ChatAdministratorRights?,\n        botIsMember: Bool,\n        chatHasUsername: Bool,\n        chatIsChannel: Bool,\n        chatIsCreated: Bool,\n        chatIsForum: Bool,\n        id: Int,\n        requestPhoto: Bool,\n        requestTitle: Bool,\n        requestUsername: Bool,\n        restrictChatHasUsername: Bool,\n        restrictChatIsForum: Bool,\n        userAdministratorRights: ChatAdministratorRights?\n    ) {\n        self.botAdministratorRights = botAdministratorRights\n        self.botIsMember = botIsMember\n        self.chatHasUsername = chatHasUsername\n        self.chatIsChannel = chatIsChannel\n        self.chatIsCreated = chatIsCreated\n        self.chatIsForum = chatIsForum\n        self.id = id\n        self.requestPhoto = requestPhoto\n        self.requestTitle = requestTitle\n        self.requestUsername = requestUsername\n        self.restrictChatHasUsername = restrictChatHasUsername\n        self.restrictChatIsForum = restrictChatIsForum\n        self.userAdministratorRights = userAdministratorRights\n    }\n}\n\n/// A button that requests creation of a managed bot by the current user; available only in private chats. Use the method createBot to complete the request\npublic struct KeyboardButtonTypeRequestManagedBot: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique button identifier\n    public let id: Int\n\n    /// Suggested name for the bot; may be empty if not specified\n    public let suggestedName: String\n\n    /// Suggested username for the bot; may be empty if not specified\n    public let suggestedUsername: String\n\n\n    public init(\n        id: Int,\n        suggestedName: String,\n        suggestedUsername: String\n    ) {\n        self.id = id\n        self.suggestedName = suggestedName\n        self.suggestedUsername = suggestedUsername\n    }\n}\n\n/// A button that opens a Web App by calling getWebAppUrl\npublic struct KeyboardButtonTypeWebApp: Codable, Equatable, Hashable {\n\n    /// An HTTP URL to pass to getWebAppUrl\n    public let url: String\n\n\n    public init(url: String) {\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LabeledPricePart.swift",
    "content": "//\n//  LabeledPricePart.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Portion of the price of a product (e.g., \"delivery cost\", \"tax amount\")\npublic struct LabeledPricePart: Codable, Equatable, Hashable {\n\n    /// Currency amount in the smallest units of the currency\n    public let amount: Int64\n\n    /// Label for this portion of the product price\n    public let label: String\n\n\n    public init(\n        amount: Int64,\n        label: String\n    ) {\n        self.amount = amount\n        self.label = label\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LanguagePackInfo.swift",
    "content": "//\n//  LanguagePackInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a language pack\npublic struct LanguagePackInfo: Codable, Equatable, Hashable, Identifiable {\n\n    /// Identifier of a base language pack; may be empty. If a string is missed in the language pack, then it must be fetched from base language pack. Unsupported in custom language packs\n    public let baseLanguagePackId: String\n\n    /// Unique language pack identifier\n    public let id: String\n\n    /// True, if the language pack is a beta language pack\n    public let isBeta: Bool\n\n    /// True, if the language pack is installed by the current user\n    public let isInstalled: Bool\n\n    /// True, if the language pack is official\n    public let isOfficial: Bool\n\n    /// True, if the language pack strings are RTL\n    public let isRtl: Bool\n\n    /// Total number of non-deleted strings from the language pack available locally\n    public let localStringCount: Int\n\n    /// Language name\n    public let name: String\n\n    /// Name of the language in that language\n    public let nativeName: String\n\n    /// A language code to be used to apply plural forms. See https://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html for more information\n    public let pluralCode: String\n\n    /// Total number of non-deleted strings from the language pack\n    public let totalStringCount: Int\n\n    /// Total number of translated strings from the language pack\n    public let translatedStringCount: Int\n\n    /// Link to language translation interface; empty for custom local language packs\n    public let translationUrl: String\n\n\n    public init(\n        baseLanguagePackId: String,\n        id: String,\n        isBeta: Bool,\n        isInstalled: Bool,\n        isOfficial: Bool,\n        isRtl: Bool,\n        localStringCount: Int,\n        name: String,\n        nativeName: String,\n        pluralCode: String,\n        totalStringCount: Int,\n        translatedStringCount: Int,\n        translationUrl: String\n    ) {\n        self.baseLanguagePackId = baseLanguagePackId\n        self.id = id\n        self.isBeta = isBeta\n        self.isInstalled = isInstalled\n        self.isOfficial = isOfficial\n        self.isRtl = isRtl\n        self.localStringCount = localStringCount\n        self.name = name\n        self.nativeName = nativeName\n        self.pluralCode = pluralCode\n        self.totalStringCount = totalStringCount\n        self.translatedStringCount = translatedStringCount\n        self.translationUrl = translationUrl\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LanguagePackString.swift",
    "content": "//\n//  LanguagePackString.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents one language pack string\npublic struct LanguagePackString: Codable, Equatable, Hashable {\n\n    /// String key\n    public let key: String\n\n    /// String value; pass null if the string needs to be taken from the built-in English language pack\n    public let value: LanguagePackStringValue?\n\n\n    public init(\n        key: String,\n        value: LanguagePackStringValue?\n    ) {\n        self.key = key\n        self.value = value\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LanguagePackStringValue.swift",
    "content": "//\n//  LanguagePackStringValue.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents the value of a string in a language pack\npublic indirect enum LanguagePackStringValue: Codable, Equatable, Hashable {\n\n    /// An ordinary language pack string\n    case languagePackStringValueOrdinary(LanguagePackStringValueOrdinary)\n\n    /// A language pack string which has different forms based on the number of some object it mentions. See https://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html for more information\n    case languagePackStringValuePluralized(LanguagePackStringValuePluralized)\n\n    /// A deleted language pack string, the value must be taken from the built-in English language pack\n    case languagePackStringValueDeleted\n\n\n    private enum Kind: String, Codable {\n        case languagePackStringValueOrdinary\n        case languagePackStringValuePluralized\n        case languagePackStringValueDeleted\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .languagePackStringValueOrdinary:\n            let value = try LanguagePackStringValueOrdinary(from: decoder)\n            self = .languagePackStringValueOrdinary(value)\n        case .languagePackStringValuePluralized:\n            let value = try LanguagePackStringValuePluralized(from: decoder)\n            self = .languagePackStringValuePluralized(value)\n        case .languagePackStringValueDeleted:\n            self = .languagePackStringValueDeleted\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .languagePackStringValueOrdinary(let value):\n            try container.encode(Kind.languagePackStringValueOrdinary, forKey: .type)\n            try value.encode(to: encoder)\n        case .languagePackStringValuePluralized(let value):\n            try container.encode(Kind.languagePackStringValuePluralized, forKey: .type)\n            try value.encode(to: encoder)\n        case .languagePackStringValueDeleted:\n            try container.encode(Kind.languagePackStringValueDeleted, forKey: .type)\n        }\n    }\n}\n\n/// An ordinary language pack string\npublic struct LanguagePackStringValueOrdinary: Codable, Equatable, Hashable {\n\n    /// String value\n    public let value: String\n\n\n    public init(value: String) {\n        self.value = value\n    }\n}\n\n/// A language pack string which has different forms based on the number of some object it mentions. See https://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html for more information\npublic struct LanguagePackStringValuePluralized: Codable, Equatable, Hashable {\n\n    /// Value for few objects\n    public let fewValue: String\n\n    /// Value for many objects\n    public let manyValue: String\n\n    /// Value for one object\n    public let oneValue: String\n\n    /// Default value\n    public let otherValue: String\n\n    /// Value for two objects\n    public let twoValue: String\n\n    /// Value for zero objects\n    public let zeroValue: String\n\n\n    public init(\n        fewValue: String,\n        manyValue: String,\n        oneValue: String,\n        otherValue: String,\n        twoValue: String,\n        zeroValue: String\n    ) {\n        self.fewValue = fewValue\n        self.manyValue = manyValue\n        self.oneValue = oneValue\n        self.otherValue = otherValue\n        self.twoValue = twoValue\n        self.zeroValue = zeroValue\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LanguagePackStrings.swift",
    "content": "//\n//  LanguagePackStrings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of language pack strings\npublic struct LanguagePackStrings: Codable, Equatable, Hashable {\n\n    /// A list of language pack strings\n    public let strings: [LanguagePackString]\n\n\n    public init(strings: [LanguagePackString]) {\n        self.strings = strings\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LaunchPrepaidGiveaway.swift",
    "content": "//\n//  LaunchPrepaidGiveaway.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Launches a prepaid giveaway\npublic struct LaunchPrepaidGiveaway: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the prepaid giveaway\n    public let giveawayId: TdInt64?\n\n    /// Giveaway parameters\n    public let parameters: GiveawayParameters?\n\n    /// The number of Telegram Stars to be distributed through the giveaway; pass 0 for Telegram Premium giveaways\n    public let starCount: Int64?\n\n    /// The number of users to receive giveaway prize\n    public let winnerCount: Int?\n\n\n    public init(\n        giveawayId: TdInt64?,\n        parameters: GiveawayParameters?,\n        starCount: Int64?,\n        winnerCount: Int?\n    ) {\n        self.giveawayId = giveawayId\n        self.parameters = parameters\n        self.starCount = starCount\n        self.winnerCount = winnerCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LaunchPrepaidPremiumGiveaway.swift",
    "content": "//\n//  LaunchPrepaidPremiumGiveaway.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.35-9b6ff586\n//  https://github.com/tdlib/td/tree/9b6ff586\n//\n\nimport Foundation\n\n\n/// Launches a prepaid Telegram Premium giveaway\npublic struct LaunchPrepaidPremiumGiveaway: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the prepaid giveaway\n    public let giveawayId: TdInt64?\n\n    /// Giveaway parameters\n    public let parameters: PremiumGiveawayParameters?\n\n\n    public init(\n        giveawayId: TdInt64?,\n        parameters: PremiumGiveawayParameters?\n    ) {\n        self.giveawayId = giveawayId\n        self.parameters = parameters\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LeaveChat.swift",
    "content": "//\n//  LeaveChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes the current user from chat members. Private and secret chats can't be left using this method\npublic struct LeaveChat: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LeaveGroupCall.swift",
    "content": "//\n//  LeaveGroupCall.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Leaves a group call\npublic struct LeaveGroupCall: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n\n    public init(groupCallId: Int?) {\n        self.groupCallId = groupCallId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LinkPreview.swift",
    "content": "//\n//  LinkPreview.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a link preview\npublic struct LinkPreview: Codable, Equatable, Hashable {\n\n    /// Author of the content\n    public let author: String\n\n    public let description: FormattedText\n\n    /// URL to display\n    public let displayUrl: String\n\n    /// True, if size of media in the preview can be changed\n    public let hasLargeMedia: Bool\n\n    /// Version of instant view (currently, can be 1 or 2) for the web page; 0 if none\n    public let instantViewVersion: Int\n\n    /// True, if the link preview must be shown above message text; otherwise, the link preview must be shown below the message text\n    public let showAboveText: Bool\n\n    /// True, if large media preview must be shown; otherwise, the media preview must be shown small and only the first frame must be shown for videos\n    public let showLargeMedia: Bool\n\n    /// True, if media must be shown above link preview description; otherwise, the media must be shown below the description\n    public let showMediaAboveDescription: Bool\n\n    /// Short name of the site (e.g., Google Docs, App Store)\n    public let siteName: String\n\n    /// True, if there is no need to show an ordinary open URL confirmation, when opening the URL from the preview, because the URL is shown in the message text in clear\n    public let skipConfirmation: Bool\n\n    /// Title of the content\n    public let title: String\n\n    /// Type of the link preview\n    public let type: LinkPreviewType\n\n    /// Original URL of the link\n    public let url: String\n\n\n    public init(\n        author: String,\n        description: FormattedText,\n        displayUrl: String,\n        hasLargeMedia: Bool,\n        instantViewVersion: Int,\n        showAboveText: Bool,\n        showLargeMedia: Bool,\n        showMediaAboveDescription: Bool,\n        siteName: String,\n        skipConfirmation: Bool,\n        title: String,\n        type: LinkPreviewType,\n        url: String\n    ) {\n        self.author = author\n        self.description = description\n        self.displayUrl = displayUrl\n        self.hasLargeMedia = hasLargeMedia\n        self.instantViewVersion = instantViewVersion\n        self.showAboveText = showAboveText\n        self.showLargeMedia = showLargeMedia\n        self.showMediaAboveDescription = showMediaAboveDescription\n        self.siteName = siteName\n        self.skipConfirmation = skipConfirmation\n        self.title = title\n        self.type = type\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LinkPreviewAlbumMedia.swift",
    "content": "//\n//  LinkPreviewAlbumMedia.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a media from a link preview album\npublic indirect enum LinkPreviewAlbumMedia: Codable, Equatable, Hashable {\n\n    /// The media is a photo\n    case linkPreviewAlbumMediaPhoto(LinkPreviewAlbumMediaPhoto)\n\n    /// The media is a video\n    case linkPreviewAlbumMediaVideo(LinkPreviewAlbumMediaVideo)\n\n\n    private enum Kind: String, Codable {\n        case linkPreviewAlbumMediaPhoto\n        case linkPreviewAlbumMediaVideo\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .linkPreviewAlbumMediaPhoto:\n            let value = try LinkPreviewAlbumMediaPhoto(from: decoder)\n            self = .linkPreviewAlbumMediaPhoto(value)\n        case .linkPreviewAlbumMediaVideo:\n            let value = try LinkPreviewAlbumMediaVideo(from: decoder)\n            self = .linkPreviewAlbumMediaVideo(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .linkPreviewAlbumMediaPhoto(let value):\n            try container.encode(Kind.linkPreviewAlbumMediaPhoto, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewAlbumMediaVideo(let value):\n            try container.encode(Kind.linkPreviewAlbumMediaVideo, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The media is a photo\npublic struct LinkPreviewAlbumMediaPhoto: Codable, Equatable, Hashable {\n\n    /// Photo description\n    public let photo: Photo\n\n\n    public init(photo: Photo) {\n        self.photo = photo\n    }\n}\n\n/// The media is a video\npublic struct LinkPreviewAlbumMediaVideo: Codable, Equatable, Hashable {\n\n    /// Video description\n    public let video: Video\n\n\n    public init(video: Video) {\n        self.video = video\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LinkPreviewOptions.swift",
    "content": "//\n//  LinkPreviewOptions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Options to be used for generation of a link preview\npublic struct LinkPreviewOptions: Codable, Equatable, Hashable {\n\n    /// True, if shown media preview must be large; ignored in secret chats or if the URL isn't explicitly specified\n    public let forceLargeMedia: Bool\n\n    /// True, if shown media preview must be small; ignored in secret chats or if the URL isn't explicitly specified\n    public let forceSmallMedia: Bool\n\n    /// True, if link preview must be disabled\n    public let isDisabled: Bool\n\n    /// True, if link preview must be shown above message text; otherwise, the link preview will be shown below the message text; ignored in secret chats\n    public let showAboveText: Bool\n\n    /// URL to use for link preview. If empty, then the first URL found in the message text will be used\n    public let url: String\n\n\n    public init(\n        forceLargeMedia: Bool,\n        forceSmallMedia: Bool,\n        isDisabled: Bool,\n        showAboveText: Bool,\n        url: String\n    ) {\n        self.forceLargeMedia = forceLargeMedia\n        self.forceSmallMedia = forceSmallMedia\n        self.isDisabled = isDisabled\n        self.showAboveText = showAboveText\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LinkPreviewType.swift",
    "content": "//\n//  LinkPreviewType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of link preview\npublic indirect enum LinkPreviewType: Codable, Equatable, Hashable {\n\n    /// The link is a link to a media album consisting of photos and videos\n    case linkPreviewTypeAlbum(LinkPreviewTypeAlbum)\n\n    /// The link is a link to an animation\n    case linkPreviewTypeAnimation(LinkPreviewTypeAnimation)\n\n    /// The link is a link to an app at App Store or Google Play\n    case linkPreviewTypeApp(LinkPreviewTypeApp)\n\n    /// The link is a link to a web site\n    case linkPreviewTypeArticle(LinkPreviewTypeArticle)\n\n    /// The link is a link to an audio\n    case linkPreviewTypeAudio(LinkPreviewTypeAudio)\n\n    /// The link is a link to a background. Link preview title and description are available only for filled backgrounds\n    case linkPreviewTypeBackground(LinkPreviewTypeBackground)\n\n    /// The link is a link to boost a channel chat\n    case linkPreviewTypeChannelBoost(LinkPreviewTypeChannelBoost)\n\n    /// The link is a link to a chat\n    case linkPreviewTypeChat(LinkPreviewTypeChat)\n\n    /// The link is a link to a direct messages chat of a channel\n    case linkPreviewTypeDirectMessagesChat(LinkPreviewTypeDirectMessagesChat)\n\n    /// The link is a link to a general file\n    case linkPreviewTypeDocument(LinkPreviewTypeDocument)\n\n    /// The link is a link to an animation player\n    case linkPreviewTypeEmbeddedAnimationPlayer(LinkPreviewTypeEmbeddedAnimationPlayer)\n\n    /// The link is a link to an audio player\n    case linkPreviewTypeEmbeddedAudioPlayer(LinkPreviewTypeEmbeddedAudioPlayer)\n\n    /// The link is a link to a video player\n    case linkPreviewTypeEmbeddedVideoPlayer(LinkPreviewTypeEmbeddedVideoPlayer)\n\n    /// The link is a link to an audio file\n    case linkPreviewTypeExternalAudio(LinkPreviewTypeExternalAudio)\n\n    /// The link is a link to a video file\n    case linkPreviewTypeExternalVideo(LinkPreviewTypeExternalVideo)\n\n    /// The link is a link to a gift auction\n    case linkPreviewTypeGiftAuction(LinkPreviewTypeGiftAuction)\n\n    /// The link is a link to a gift collection\n    case linkPreviewTypeGiftCollection(LinkPreviewTypeGiftCollection)\n\n    /// The link is a link to a group call that isn't bound to a chat\n    case linkPreviewTypeGroupCall\n\n    /// The link is a link to an invoice\n    case linkPreviewTypeInvoice\n\n    /// The link is a link to a live story group call\n    case linkPreviewTypeLiveStory(LinkPreviewTypeLiveStory)\n\n    /// The link is a link to a text or a poll Telegram message\n    case linkPreviewTypeMessage\n\n    /// The link is a link to a photo\n    case linkPreviewTypePhoto(LinkPreviewTypePhoto)\n\n    /// The link is a link to a Telegram Premium gift code\n    case linkPreviewTypePremiumGiftCode\n\n    /// The link is a link to a dialog for creating of a managed bot\n    case linkPreviewTypeRequestManagedBot\n\n    /// The link is a link to a shareable chat folder\n    case linkPreviewTypeShareableChatFolder\n\n    /// The link is a link to a sticker\n    case linkPreviewTypeSticker(LinkPreviewTypeSticker)\n\n    /// The link is a link to a sticker set\n    case linkPreviewTypeStickerSet(LinkPreviewTypeStickerSet)\n\n    /// The link is a link to a story. Link preview description is unavailable\n    case linkPreviewTypeStory(LinkPreviewTypeStory)\n\n    /// The link is a link to an album of stories\n    case linkPreviewTypeStoryAlbum(LinkPreviewTypeStoryAlbum)\n\n    /// The link is a link to boost a supergroup chat\n    case linkPreviewTypeSupergroupBoost(LinkPreviewTypeSupergroupBoost)\n\n    /// The link is a link to a text composition style\n    case linkPreviewTypeTextCompositionStyle(LinkPreviewTypeTextCompositionStyle)\n\n    /// The link is a link to a cloud theme. TDLib has no theme support yet\n    case linkPreviewTypeTheme(LinkPreviewTypeTheme)\n\n    /// The link preview type is unsupported yet\n    case linkPreviewTypeUnsupported\n\n    /// The link is a link to an upgraded gift\n    case linkPreviewTypeUpgradedGift(LinkPreviewTypeUpgradedGift)\n\n    /// The link is a link to a user\n    case linkPreviewTypeUser(LinkPreviewTypeUser)\n\n    /// The link is a link to a video\n    case linkPreviewTypeVideo(LinkPreviewTypeVideo)\n\n    /// The link is a link to a video chat\n    case linkPreviewTypeVideoChat(LinkPreviewTypeVideoChat)\n\n    /// The link is a link to a video note message\n    case linkPreviewTypeVideoNote(LinkPreviewTypeVideoNote)\n\n    /// The link is a link to a voice note message\n    case linkPreviewTypeVoiceNote(LinkPreviewTypeVoiceNote)\n\n    /// The link is a link to a Web App\n    case linkPreviewTypeWebApp(LinkPreviewTypeWebApp)\n\n\n    private enum Kind: String, Codable {\n        case linkPreviewTypeAlbum\n        case linkPreviewTypeAnimation\n        case linkPreviewTypeApp\n        case linkPreviewTypeArticle\n        case linkPreviewTypeAudio\n        case linkPreviewTypeBackground\n        case linkPreviewTypeChannelBoost\n        case linkPreviewTypeChat\n        case linkPreviewTypeDirectMessagesChat\n        case linkPreviewTypeDocument\n        case linkPreviewTypeEmbeddedAnimationPlayer\n        case linkPreviewTypeEmbeddedAudioPlayer\n        case linkPreviewTypeEmbeddedVideoPlayer\n        case linkPreviewTypeExternalAudio\n        case linkPreviewTypeExternalVideo\n        case linkPreviewTypeGiftAuction\n        case linkPreviewTypeGiftCollection\n        case linkPreviewTypeGroupCall\n        case linkPreviewTypeInvoice\n        case linkPreviewTypeLiveStory\n        case linkPreviewTypeMessage\n        case linkPreviewTypePhoto\n        case linkPreviewTypePremiumGiftCode\n        case linkPreviewTypeRequestManagedBot\n        case linkPreviewTypeShareableChatFolder\n        case linkPreviewTypeSticker\n        case linkPreviewTypeStickerSet\n        case linkPreviewTypeStory\n        case linkPreviewTypeStoryAlbum\n        case linkPreviewTypeSupergroupBoost\n        case linkPreviewTypeTextCompositionStyle\n        case linkPreviewTypeTheme\n        case linkPreviewTypeUnsupported\n        case linkPreviewTypeUpgradedGift\n        case linkPreviewTypeUser\n        case linkPreviewTypeVideo\n        case linkPreviewTypeVideoChat\n        case linkPreviewTypeVideoNote\n        case linkPreviewTypeVoiceNote\n        case linkPreviewTypeWebApp\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .linkPreviewTypeAlbum:\n            let value = try LinkPreviewTypeAlbum(from: decoder)\n            self = .linkPreviewTypeAlbum(value)\n        case .linkPreviewTypeAnimation:\n            let value = try LinkPreviewTypeAnimation(from: decoder)\n            self = .linkPreviewTypeAnimation(value)\n        case .linkPreviewTypeApp:\n            let value = try LinkPreviewTypeApp(from: decoder)\n            self = .linkPreviewTypeApp(value)\n        case .linkPreviewTypeArticle:\n            let value = try LinkPreviewTypeArticle(from: decoder)\n            self = .linkPreviewTypeArticle(value)\n        case .linkPreviewTypeAudio:\n            let value = try LinkPreviewTypeAudio(from: decoder)\n            self = .linkPreviewTypeAudio(value)\n        case .linkPreviewTypeBackground:\n            let value = try LinkPreviewTypeBackground(from: decoder)\n            self = .linkPreviewTypeBackground(value)\n        case .linkPreviewTypeChannelBoost:\n            let value = try LinkPreviewTypeChannelBoost(from: decoder)\n            self = .linkPreviewTypeChannelBoost(value)\n        case .linkPreviewTypeChat:\n            let value = try LinkPreviewTypeChat(from: decoder)\n            self = .linkPreviewTypeChat(value)\n        case .linkPreviewTypeDirectMessagesChat:\n            let value = try LinkPreviewTypeDirectMessagesChat(from: decoder)\n            self = .linkPreviewTypeDirectMessagesChat(value)\n        case .linkPreviewTypeDocument:\n            let value = try LinkPreviewTypeDocument(from: decoder)\n            self = .linkPreviewTypeDocument(value)\n        case .linkPreviewTypeEmbeddedAnimationPlayer:\n            let value = try LinkPreviewTypeEmbeddedAnimationPlayer(from: decoder)\n            self = .linkPreviewTypeEmbeddedAnimationPlayer(value)\n        case .linkPreviewTypeEmbeddedAudioPlayer:\n            let value = try LinkPreviewTypeEmbeddedAudioPlayer(from: decoder)\n            self = .linkPreviewTypeEmbeddedAudioPlayer(value)\n        case .linkPreviewTypeEmbeddedVideoPlayer:\n            let value = try LinkPreviewTypeEmbeddedVideoPlayer(from: decoder)\n            self = .linkPreviewTypeEmbeddedVideoPlayer(value)\n        case .linkPreviewTypeExternalAudio:\n            let value = try LinkPreviewTypeExternalAudio(from: decoder)\n            self = .linkPreviewTypeExternalAudio(value)\n        case .linkPreviewTypeExternalVideo:\n            let value = try LinkPreviewTypeExternalVideo(from: decoder)\n            self = .linkPreviewTypeExternalVideo(value)\n        case .linkPreviewTypeGiftAuction:\n            let value = try LinkPreviewTypeGiftAuction(from: decoder)\n            self = .linkPreviewTypeGiftAuction(value)\n        case .linkPreviewTypeGiftCollection:\n            let value = try LinkPreviewTypeGiftCollection(from: decoder)\n            self = .linkPreviewTypeGiftCollection(value)\n        case .linkPreviewTypeGroupCall:\n            self = .linkPreviewTypeGroupCall\n        case .linkPreviewTypeInvoice:\n            self = .linkPreviewTypeInvoice\n        case .linkPreviewTypeLiveStory:\n            let value = try LinkPreviewTypeLiveStory(from: decoder)\n            self = .linkPreviewTypeLiveStory(value)\n        case .linkPreviewTypeMessage:\n            self = .linkPreviewTypeMessage\n        case .linkPreviewTypePhoto:\n            let value = try LinkPreviewTypePhoto(from: decoder)\n            self = .linkPreviewTypePhoto(value)\n        case .linkPreviewTypePremiumGiftCode:\n            self = .linkPreviewTypePremiumGiftCode\n        case .linkPreviewTypeRequestManagedBot:\n            self = .linkPreviewTypeRequestManagedBot\n        case .linkPreviewTypeShareableChatFolder:\n            self = .linkPreviewTypeShareableChatFolder\n        case .linkPreviewTypeSticker:\n            let value = try LinkPreviewTypeSticker(from: decoder)\n            self = .linkPreviewTypeSticker(value)\n        case .linkPreviewTypeStickerSet:\n            let value = try LinkPreviewTypeStickerSet(from: decoder)\n            self = .linkPreviewTypeStickerSet(value)\n        case .linkPreviewTypeStory:\n            let value = try LinkPreviewTypeStory(from: decoder)\n            self = .linkPreviewTypeStory(value)\n        case .linkPreviewTypeStoryAlbum:\n            let value = try LinkPreviewTypeStoryAlbum(from: decoder)\n            self = .linkPreviewTypeStoryAlbum(value)\n        case .linkPreviewTypeSupergroupBoost:\n            let value = try LinkPreviewTypeSupergroupBoost(from: decoder)\n            self = .linkPreviewTypeSupergroupBoost(value)\n        case .linkPreviewTypeTextCompositionStyle:\n            let value = try LinkPreviewTypeTextCompositionStyle(from: decoder)\n            self = .linkPreviewTypeTextCompositionStyle(value)\n        case .linkPreviewTypeTheme:\n            let value = try LinkPreviewTypeTheme(from: decoder)\n            self = .linkPreviewTypeTheme(value)\n        case .linkPreviewTypeUnsupported:\n            self = .linkPreviewTypeUnsupported\n        case .linkPreviewTypeUpgradedGift:\n            let value = try LinkPreviewTypeUpgradedGift(from: decoder)\n            self = .linkPreviewTypeUpgradedGift(value)\n        case .linkPreviewTypeUser:\n            let value = try LinkPreviewTypeUser(from: decoder)\n            self = .linkPreviewTypeUser(value)\n        case .linkPreviewTypeVideo:\n            let value = try LinkPreviewTypeVideo(from: decoder)\n            self = .linkPreviewTypeVideo(value)\n        case .linkPreviewTypeVideoChat:\n            let value = try LinkPreviewTypeVideoChat(from: decoder)\n            self = .linkPreviewTypeVideoChat(value)\n        case .linkPreviewTypeVideoNote:\n            let value = try LinkPreviewTypeVideoNote(from: decoder)\n            self = .linkPreviewTypeVideoNote(value)\n        case .linkPreviewTypeVoiceNote:\n            let value = try LinkPreviewTypeVoiceNote(from: decoder)\n            self = .linkPreviewTypeVoiceNote(value)\n        case .linkPreviewTypeWebApp:\n            let value = try LinkPreviewTypeWebApp(from: decoder)\n            self = .linkPreviewTypeWebApp(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .linkPreviewTypeAlbum(let value):\n            try container.encode(Kind.linkPreviewTypeAlbum, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeAnimation(let value):\n            try container.encode(Kind.linkPreviewTypeAnimation, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeApp(let value):\n            try container.encode(Kind.linkPreviewTypeApp, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeArticle(let value):\n            try container.encode(Kind.linkPreviewTypeArticle, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeAudio(let value):\n            try container.encode(Kind.linkPreviewTypeAudio, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeBackground(let value):\n            try container.encode(Kind.linkPreviewTypeBackground, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeChannelBoost(let value):\n            try container.encode(Kind.linkPreviewTypeChannelBoost, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeChat(let value):\n            try container.encode(Kind.linkPreviewTypeChat, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeDirectMessagesChat(let value):\n            try container.encode(Kind.linkPreviewTypeDirectMessagesChat, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeDocument(let value):\n            try container.encode(Kind.linkPreviewTypeDocument, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeEmbeddedAnimationPlayer(let value):\n            try container.encode(Kind.linkPreviewTypeEmbeddedAnimationPlayer, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeEmbeddedAudioPlayer(let value):\n            try container.encode(Kind.linkPreviewTypeEmbeddedAudioPlayer, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeEmbeddedVideoPlayer(let value):\n            try container.encode(Kind.linkPreviewTypeEmbeddedVideoPlayer, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeExternalAudio(let value):\n            try container.encode(Kind.linkPreviewTypeExternalAudio, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeExternalVideo(let value):\n            try container.encode(Kind.linkPreviewTypeExternalVideo, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeGiftAuction(let value):\n            try container.encode(Kind.linkPreviewTypeGiftAuction, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeGiftCollection(let value):\n            try container.encode(Kind.linkPreviewTypeGiftCollection, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeGroupCall:\n            try container.encode(Kind.linkPreviewTypeGroupCall, forKey: .type)\n        case .linkPreviewTypeInvoice:\n            try container.encode(Kind.linkPreviewTypeInvoice, forKey: .type)\n        case .linkPreviewTypeLiveStory(let value):\n            try container.encode(Kind.linkPreviewTypeLiveStory, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeMessage:\n            try container.encode(Kind.linkPreviewTypeMessage, forKey: .type)\n        case .linkPreviewTypePhoto(let value):\n            try container.encode(Kind.linkPreviewTypePhoto, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypePremiumGiftCode:\n            try container.encode(Kind.linkPreviewTypePremiumGiftCode, forKey: .type)\n        case .linkPreviewTypeRequestManagedBot:\n            try container.encode(Kind.linkPreviewTypeRequestManagedBot, forKey: .type)\n        case .linkPreviewTypeShareableChatFolder:\n            try container.encode(Kind.linkPreviewTypeShareableChatFolder, forKey: .type)\n        case .linkPreviewTypeSticker(let value):\n            try container.encode(Kind.linkPreviewTypeSticker, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeStickerSet(let value):\n            try container.encode(Kind.linkPreviewTypeStickerSet, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeStory(let value):\n            try container.encode(Kind.linkPreviewTypeStory, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeStoryAlbum(let value):\n            try container.encode(Kind.linkPreviewTypeStoryAlbum, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeSupergroupBoost(let value):\n            try container.encode(Kind.linkPreviewTypeSupergroupBoost, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeTextCompositionStyle(let value):\n            try container.encode(Kind.linkPreviewTypeTextCompositionStyle, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeTheme(let value):\n            try container.encode(Kind.linkPreviewTypeTheme, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeUnsupported:\n            try container.encode(Kind.linkPreviewTypeUnsupported, forKey: .type)\n        case .linkPreviewTypeUpgradedGift(let value):\n            try container.encode(Kind.linkPreviewTypeUpgradedGift, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeUser(let value):\n            try container.encode(Kind.linkPreviewTypeUser, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeVideo(let value):\n            try container.encode(Kind.linkPreviewTypeVideo, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeVideoChat(let value):\n            try container.encode(Kind.linkPreviewTypeVideoChat, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeVideoNote(let value):\n            try container.encode(Kind.linkPreviewTypeVideoNote, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeVoiceNote(let value):\n            try container.encode(Kind.linkPreviewTypeVoiceNote, forKey: .type)\n            try value.encode(to: encoder)\n        case .linkPreviewTypeWebApp(let value):\n            try container.encode(Kind.linkPreviewTypeWebApp, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The link is a link to a media album consisting of photos and videos\npublic struct LinkPreviewTypeAlbum: Codable, Equatable, Hashable {\n\n    /// Album caption\n    public let caption: String\n\n    /// The list of album media\n    public let media: [LinkPreviewAlbumMedia]\n\n\n    public init(\n        caption: String,\n        media: [LinkPreviewAlbumMedia]\n    ) {\n        self.caption = caption\n        self.media = media\n    }\n}\n\n/// The link is a link to an animation\npublic struct LinkPreviewTypeAnimation: Codable, Equatable, Hashable {\n\n    /// The animation\n    public let animation: Animation\n\n\n    public init(animation: Animation) {\n        self.animation = animation\n    }\n}\n\n/// The link is a link to an app at App Store or Google Play\npublic struct LinkPreviewTypeApp: Codable, Equatable, Hashable {\n\n    /// Photo for the app\n    public let photo: Photo\n\n\n    public init(photo: Photo) {\n        self.photo = photo\n    }\n}\n\n/// The link is a link to a web site\npublic struct LinkPreviewTypeArticle: Codable, Equatable, Hashable {\n\n    /// Article's main photo; may be null\n    public let photo: Photo?\n\n\n    public init(photo: Photo?) {\n        self.photo = photo\n    }\n}\n\n/// The link is a link to an audio\npublic struct LinkPreviewTypeAudio: Codable, Equatable, Hashable {\n\n    /// The audio description\n    public let audio: Audio\n\n\n    public init(audio: Audio) {\n        self.audio = audio\n    }\n}\n\n/// The link is a link to a background. Link preview title and description are available only for filled backgrounds\npublic struct LinkPreviewTypeBackground: Codable, Equatable, Hashable {\n\n    /// Type of the background; may be null if unknown\n    public let backgroundType: BackgroundType?\n\n    /// Document with the background; may be null for filled backgrounds\n    public let document: Document?\n\n\n    public init(\n        backgroundType: BackgroundType?,\n        document: Document?\n    ) {\n        self.backgroundType = backgroundType\n        self.document = document\n    }\n}\n\n/// The link is a link to boost a channel chat\npublic struct LinkPreviewTypeChannelBoost: Codable, Equatable, Hashable {\n\n    /// Photo of the chat; may be null\n    public let photo: ChatPhoto?\n\n\n    public init(photo: ChatPhoto?) {\n        self.photo = photo\n    }\n}\n\n/// The link is a link to a chat\npublic struct LinkPreviewTypeChat: Codable, Equatable, Hashable {\n\n    /// True, if the link only creates join request\n    public let createsJoinRequest: Bool\n\n    /// Photo of the chat; may be null\n    public let photo: ChatPhoto?\n\n    /// Type of the chat\n    public let type: InviteLinkChatType\n\n\n    public init(\n        createsJoinRequest: Bool,\n        photo: ChatPhoto?,\n        type: InviteLinkChatType\n    ) {\n        self.createsJoinRequest = createsJoinRequest\n        self.photo = photo\n        self.type = type\n    }\n}\n\n/// The link is a link to a direct messages chat of a channel\npublic struct LinkPreviewTypeDirectMessagesChat: Codable, Equatable, Hashable {\n\n    /// Photo of the channel chat; may be null\n    public let photo: ChatPhoto?\n\n\n    public init(photo: ChatPhoto?) {\n        self.photo = photo\n    }\n}\n\n/// The link is a link to a general file\npublic struct LinkPreviewTypeDocument: Codable, Equatable, Hashable {\n\n    /// The document description\n    public let document: Document\n\n\n    public init(document: Document) {\n        self.document = document\n    }\n}\n\n/// The link is a link to an animation player\npublic struct LinkPreviewTypeEmbeddedAnimationPlayer: Codable, Equatable, Hashable {\n\n    /// The cached animation; may be null if unknown\n    public let animation: Animation?\n\n    /// Duration of the animation, in seconds\n    public let duration: Int\n\n    /// Expected height of the embedded player\n    public let height: Int\n\n    /// Thumbnail of the animation; may be null if unknown\n    public let thumbnail: Photo?\n\n    /// URL of the external animation player\n    public let url: String\n\n    /// Expected width of the embedded player\n    public let width: Int\n\n\n    public init(\n        animation: Animation?,\n        duration: Int,\n        height: Int,\n        thumbnail: Photo?,\n        url: String,\n        width: Int\n    ) {\n        self.animation = animation\n        self.duration = duration\n        self.height = height\n        self.thumbnail = thumbnail\n        self.url = url\n        self.width = width\n    }\n}\n\n/// The link is a link to an audio player\npublic struct LinkPreviewTypeEmbeddedAudioPlayer: Codable, Equatable, Hashable {\n\n    /// The cached audio; may be null if unknown\n    public let audio: Audio?\n\n    /// Duration of the audio, in seconds\n    public let duration: Int\n\n    /// Expected height of the embedded player\n    public let height: Int\n\n    /// Thumbnail of the audio; may be null if unknown\n    public let thumbnail: Photo?\n\n    /// URL of the external audio player\n    public let url: String\n\n    /// Expected width of the embedded player\n    public let width: Int\n\n\n    public init(\n        audio: Audio?,\n        duration: Int,\n        height: Int,\n        thumbnail: Photo?,\n        url: String,\n        width: Int\n    ) {\n        self.audio = audio\n        self.duration = duration\n        self.height = height\n        self.thumbnail = thumbnail\n        self.url = url\n        self.width = width\n    }\n}\n\n/// The link is a link to a video player\npublic struct LinkPreviewTypeEmbeddedVideoPlayer: Codable, Equatable, Hashable {\n\n    /// Duration of the video, in seconds\n    public let duration: Int\n\n    /// Expected height of the embedded player\n    public let height: Int\n\n    /// Thumbnail of the video; may be null if unknown\n    public let thumbnail: Photo?\n\n    /// URL of the external video player\n    public let url: String\n\n    /// The cached video; may be null if unknown\n    public let video: Video?\n\n    /// Expected width of the embedded player\n    public let width: Int\n\n\n    public init(\n        duration: Int,\n        height: Int,\n        thumbnail: Photo?,\n        url: String,\n        video: Video?,\n        width: Int\n    ) {\n        self.duration = duration\n        self.height = height\n        self.thumbnail = thumbnail\n        self.url = url\n        self.video = video\n        self.width = width\n    }\n}\n\n/// The link is a link to an audio file\npublic struct LinkPreviewTypeExternalAudio: Codable, Equatable, Hashable {\n\n    /// Duration of the audio, in seconds; 0 if unknown\n    public let duration: Int\n\n    /// MIME type of the audio file\n    public let mimeType: String\n\n    /// URL of the audio file\n    public let url: String\n\n\n    public init(\n        duration: Int,\n        mimeType: String,\n        url: String\n    ) {\n        self.duration = duration\n        self.mimeType = mimeType\n        self.url = url\n    }\n}\n\n/// The link is a link to a video file\npublic struct LinkPreviewTypeExternalVideo: Codable, Equatable, Hashable {\n\n    /// Duration of the video, in seconds; 0 if unknown\n    public let duration: Int\n\n    /// Expected height of the video preview; 0 if unknown\n    public let height: Int\n\n    /// MIME type of the video file\n    public let mimeType: String\n\n    /// URL of the video file\n    public let url: String\n\n    /// Expected width of the video preview; 0 if unknown\n    public let width: Int\n\n\n    public init(\n        duration: Int,\n        height: Int,\n        mimeType: String,\n        url: String,\n        width: Int\n    ) {\n        self.duration = duration\n        self.height = height\n        self.mimeType = mimeType\n        self.url = url\n        self.width = width\n    }\n}\n\n/// The link is a link to a gift auction\npublic struct LinkPreviewTypeGiftAuction: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the auction will be ended\n    public let auctionEndDate: Int\n\n    /// The gift\n    public let gift: Gift\n\n\n    public init(\n        auctionEndDate: Int,\n        gift: Gift\n    ) {\n        self.auctionEndDate = auctionEndDate\n        self.gift = gift\n    }\n}\n\n/// The link is a link to a gift collection\npublic struct LinkPreviewTypeGiftCollection: Codable, Equatable, Hashable {\n\n    /// Icons for some gifts from the collection; may be empty\n    public let icons: [Sticker]\n\n\n    public init(icons: [Sticker]) {\n        self.icons = icons\n    }\n}\n\n/// The link is a link to a live story group call\npublic struct LinkPreviewTypeLiveStory: Codable, Equatable, Hashable {\n\n    /// Story identifier\n    public let storyId: Int\n\n    /// The identifier of the chat that posted the story\n    public let storyPosterChatId: Int64\n\n\n    public init(\n        storyId: Int,\n        storyPosterChatId: Int64\n    ) {\n        self.storyId = storyId\n        self.storyPosterChatId = storyPosterChatId\n    }\n}\n\n/// The link is a link to a photo\npublic struct LinkPreviewTypePhoto: Codable, Equatable, Hashable {\n\n    /// The photo\n    public let photo: Photo\n\n\n    public init(photo: Photo) {\n        self.photo = photo\n    }\n}\n\n/// The link is a link to a sticker\npublic struct LinkPreviewTypeSticker: Codable, Equatable, Hashable {\n\n    /// The sticker. It can be an arbitrary WEBP image and can have dimensions bigger than 512\n    public let sticker: Sticker\n\n\n    public init(sticker: Sticker) {\n        self.sticker = sticker\n    }\n}\n\n/// The link is a link to a sticker set\npublic struct LinkPreviewTypeStickerSet: Codable, Equatable, Hashable {\n\n    /// Up to 4 stickers from the sticker set\n    public let stickers: [Sticker]\n\n\n    public init(stickers: [Sticker]) {\n        self.stickers = stickers\n    }\n}\n\n/// The link is a link to a story. Link preview description is unavailable\npublic struct LinkPreviewTypeStory: Codable, Equatable, Hashable {\n\n    /// Story identifier\n    public let storyId: Int\n\n    /// The identifier of the chat that posted the story\n    public let storyPosterChatId: Int64\n\n\n    public init(\n        storyId: Int,\n        storyPosterChatId: Int64\n    ) {\n        self.storyId = storyId\n        self.storyPosterChatId = storyPosterChatId\n    }\n}\n\n/// The link is a link to an album of stories\npublic struct LinkPreviewTypeStoryAlbum: Codable, Equatable, Hashable {\n\n    /// Icon of the album; may be null if none\n    public let photoIcon: Photo?\n\n    /// Video icon of the album; may be null if none\n    public let videoIcon: Video?\n\n\n    public init(\n        photoIcon: Photo?,\n        videoIcon: Video?\n    ) {\n        self.photoIcon = photoIcon\n        self.videoIcon = videoIcon\n    }\n}\n\n/// The link is a link to boost a supergroup chat\npublic struct LinkPreviewTypeSupergroupBoost: Codable, Equatable, Hashable {\n\n    /// Photo of the chat; may be null\n    public let photo: ChatPhoto?\n\n\n    public init(photo: ChatPhoto?) {\n        self.photo = photo\n    }\n}\n\n/// The link is a link to a text composition style\npublic struct LinkPreviewTypeTextCompositionStyle: Codable, Equatable, Hashable {\n\n    /// Identifier of the custom emoji corresponding to the style; 0 if none\n    public let customEmojiId: TdInt64\n\n\n    public init(customEmojiId: TdInt64) {\n        self.customEmojiId = customEmojiId\n    }\n}\n\n/// The link is a link to a cloud theme. TDLib has no theme support yet\npublic struct LinkPreviewTypeTheme: Codable, Equatable, Hashable {\n\n    /// The list of files with theme description\n    public let documents: [Document]\n\n    /// Settings for the cloud theme; may be null if unknown\n    public let settings: ThemeSettings?\n\n\n    public init(\n        documents: [Document],\n        settings: ThemeSettings?\n    ) {\n        self.documents = documents\n        self.settings = settings\n    }\n}\n\n/// The link is a link to an upgraded gift\npublic struct LinkPreviewTypeUpgradedGift: Codable, Equatable, Hashable {\n\n    /// The gift\n    public let gift: UpgradedGift\n\n\n    public init(gift: UpgradedGift) {\n        self.gift = gift\n    }\n}\n\n/// The link is a link to a user\npublic struct LinkPreviewTypeUser: Codable, Equatable, Hashable {\n\n    /// True, if the user is a bot\n    public let isBot: Bool\n\n    /// Photo of the user; may be null if none\n    public let photo: ChatPhoto?\n\n\n    public init(\n        isBot: Bool,\n        photo: ChatPhoto?\n    ) {\n        self.isBot = isBot\n        self.photo = photo\n    }\n}\n\n/// The link is a link to a video\npublic struct LinkPreviewTypeVideo: Codable, Equatable, Hashable {\n\n    /// Cover of the video; may be null if none\n    public let cover: Photo?\n\n    /// Timestamp from which the video playing must start, in seconds\n    public let startTimestamp: Int\n\n    /// The video description\n    public let video: Video\n\n\n    public init(\n        cover: Photo?,\n        startTimestamp: Int,\n        video: Video\n    ) {\n        self.cover = cover\n        self.startTimestamp = startTimestamp\n        self.video = video\n    }\n}\n\n/// The link is a link to a video chat\npublic struct LinkPreviewTypeVideoChat: Codable, Equatable, Hashable {\n\n    /// True, if the video chat is expected to be a live stream in a channel or a broadcast group\n    public let isLiveStream: Bool\n\n    /// True, if the user can use the link to join the video chat without being muted by administrators\n    public let joinsAsSpeaker: Bool\n\n    /// Photo of the chat with the video chat; may be null if none\n    public let photo: ChatPhoto?\n\n\n    public init(\n        isLiveStream: Bool,\n        joinsAsSpeaker: Bool,\n        photo: ChatPhoto?\n    ) {\n        self.isLiveStream = isLiveStream\n        self.joinsAsSpeaker = joinsAsSpeaker\n        self.photo = photo\n    }\n}\n\n/// The link is a link to a video note message\npublic struct LinkPreviewTypeVideoNote: Codable, Equatable, Hashable {\n\n    /// The video note\n    public let videoNote: VideoNote\n\n\n    public init(videoNote: VideoNote) {\n        self.videoNote = videoNote\n    }\n}\n\n/// The link is a link to a voice note message\npublic struct LinkPreviewTypeVoiceNote: Codable, Equatable, Hashable {\n\n    /// The voice note\n    public let voiceNote: VoiceNote\n\n\n    public init(voiceNote: VoiceNote) {\n        self.voiceNote = voiceNote\n    }\n}\n\n/// The link is a link to a Web App\npublic struct LinkPreviewTypeWebApp: Codable, Equatable, Hashable {\n\n    /// Web App photo; may be null if none\n    public let photo: Photo?\n\n\n    public init(photo: Photo?) {\n        self.photo = photo\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ListenToAudio.swift",
    "content": "//\n//  ListenToAudio.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that an audio was listened by the user\npublic struct ListenToAudio: Codable, Equatable, Hashable {\n\n    /// Identifier of the file with an audio\n    public let audioFileId: Int?\n\n    /// Duration of the listening to the audio, in seconds\n    public let duration: Int?\n\n\n    public init(\n        audioFileId: Int?,\n        duration: Int?\n    ) {\n        self.audioFileId = audioFileId\n        self.duration = duration\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LiveStoryDonors.swift",
    "content": "//\n//  LiveStoryDonors.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of users and chats that spend most money on paid messages and reactions in a live story\npublic struct LiveStoryDonors: Codable, Equatable, Hashable {\n\n    /// List of top donors in the live story\n    public let topDonors: [PaidReactor]\n\n    /// Total amount of spend Telegram Stars\n    public let totalStarCount: Int64\n\n\n    public init(\n        topDonors: [PaidReactor],\n        totalStarCount: Int64\n    ) {\n        self.topDonors = topDonors\n        self.totalStarCount = totalStarCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LoadActiveStories.swift",
    "content": "//\n//  LoadActiveStories.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Loads more active stories from a story list. The loaded stories will be sent through updates. Active stories are sorted by the pair (active_stories.order, active_stories.story_poster_chat_id) in descending order. Returns a 404 error if all active stories have been loaded\npublic struct LoadActiveStories: Codable, Equatable, Hashable {\n\n    /// The story list in which to load active stories\n    public let storyList: StoryList?\n\n\n    public init(storyList: StoryList?) {\n        self.storyList = storyList\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LoadChats.swift",
    "content": "//\n//  LoadChats.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Loads more chats from a chat list. The loaded chats and their positions in the chat list will be sent through updates. Chats are sorted by the pair (chat.position.order, chat.id) in descending order. Returns a 404 error if all chats have been loaded\npublic struct LoadChats: Codable, Equatable, Hashable {\n\n    /// The chat list in which to load chats; pass null to load chats from the main chat list\n    public let chatList: ChatList?\n\n    /// The maximum number of chats to be loaded. For optimal performance, the number of loaded chats is chosen by TDLib and can be smaller than the specified limit, even if the end of the list is not reached\n    public let limit: Int?\n\n\n    public init(\n        chatList: ChatList?,\n        limit: Int?\n    ) {\n        self.chatList = chatList\n        self.limit = limit\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LoadDirectMessagesChatTopics.swift",
    "content": "//\n//  LoadDirectMessagesChatTopics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Loads more topics in a channel direct messages chat administered by the current user. The loaded topics will be sent through updateDirectMessagesChatTopic. Topics are sorted by their topic.order in descending order. Returns a 404 error if all topics have been loaded\npublic struct LoadDirectMessagesChatTopics: Codable, Equatable, Hashable {\n\n    /// Chat identifier of the channel direct messages chat\n    public let chatId: Int64?\n\n    /// The maximum number of topics to be loaded. For optimal performance, the number of loaded topics is chosen by TDLib and can be smaller than the specified limit, even if the end of the list is not reached\n    public let limit: Int?\n\n\n    public init(\n        chatId: Int64?,\n        limit: Int?\n    ) {\n        self.chatId = chatId\n        self.limit = limit\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LoadGroupCallParticipants.swift",
    "content": "//\n//  LoadGroupCallParticipants.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Loads more participants of a group call; not supported in live stories. The loaded participants will be received through updates. Use the field groupCall.loaded_all_participants to check whether all participants have already been loaded\npublic struct LoadGroupCallParticipants: Codable, Equatable, Hashable {\n\n    /// Group call identifier. The group call must be previously received through getGroupCall and must be joined or being joined\n    public let groupCallId: Int?\n\n    /// The maximum number of participants to load; up to 100\n    public let limit: Int?\n\n\n    public init(\n        groupCallId: Int?,\n        limit: Int?\n    ) {\n        self.groupCallId = groupCallId\n        self.limit = limit\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LoadQuickReplyShortcutMessages.swift",
    "content": "//\n//  LoadQuickReplyShortcutMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Loads quick reply messages that can be sent by a given quick reply shortcut. The loaded messages will be sent through updateQuickReplyShortcutMessages\npublic struct LoadQuickReplyShortcutMessages: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the quick reply shortcut\n    public let shortcutId: Int?\n\n\n    public init(shortcutId: Int?) {\n        self.shortcutId = shortcutId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LoadQuickReplyShortcuts.swift",
    "content": "//\n//  LoadQuickReplyShortcuts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Loads quick reply shortcuts created by the current user. The loaded data will be sent through updateQuickReplyShortcut and updateQuickReplyShortcuts\npublic struct LoadQuickReplyShortcuts: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LoadSavedMessagesTopics.swift",
    "content": "//\n//  LoadSavedMessagesTopics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Loads more Saved Messages topics. The loaded topics will be sent through updateSavedMessagesTopic. Topics are sorted by their topic.order in descending order. Returns a 404 error if all topics have been loaded\npublic struct LoadSavedMessagesTopics: Codable, Equatable, Hashable {\n\n    /// The maximum number of topics to be loaded. For optimal performance, the number of loaded topics is chosen by TDLib and can be smaller than the specified limit, even if the end of the list is not reached\n    public let limit: Int?\n\n\n    public init(limit: Int?) {\n        self.limit = limit\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LocalFile.swift",
    "content": "//\n//  LocalFile.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a local file\npublic struct LocalFile: Codable, Equatable, Hashable {\n\n    /// True, if the file can be deleted\n    public let canBeDeleted: Bool\n\n    /// True, if it is possible to download or generate the file\n    public let canBeDownloaded: Bool\n\n    /// Download will be started from this offset. downloaded_prefix_size is calculated from this offset\n    public let downloadOffset: Int64\n\n    /// If is_downloading_completed is false, then only some prefix of the file starting from download_offset is ready to be read. downloaded_prefix_size is the size of that prefix in bytes\n    public let downloadedPrefixSize: Int64\n\n    /// Total downloaded file size, in bytes. Can be used only for calculating download progress. The actual file size may be bigger, and some parts of it may contain garbage\n    public let downloadedSize: Int64\n\n    /// True, if the file is currently being downloaded (or a local copy is being generated by some other means)\n    public let isDownloadingActive: Bool\n\n    /// True, if the local copy is fully available\n    public let isDownloadingCompleted: Bool\n\n    /// Local path to the locally available file part; may be empty\n    public let path: String\n\n\n    public init(\n        canBeDeleted: Bool,\n        canBeDownloaded: Bool,\n        downloadOffset: Int64,\n        downloadedPrefixSize: Int64,\n        downloadedSize: Int64,\n        isDownloadingActive: Bool,\n        isDownloadingCompleted: Bool,\n        path: String\n    ) {\n        self.canBeDeleted = canBeDeleted\n        self.canBeDownloaded = canBeDownloaded\n        self.downloadOffset = downloadOffset\n        self.downloadedPrefixSize = downloadedPrefixSize\n        self.downloadedSize = downloadedSize\n        self.isDownloadingActive = isDownloadingActive\n        self.isDownloadingCompleted = isDownloadingCompleted\n        self.path = path\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LocalizationTargetInfo.swift",
    "content": "//\n//  LocalizationTargetInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about the current localization target\npublic struct LocalizationTargetInfo: Codable, Equatable, Hashable {\n\n    /// List of available language packs for this application\n    public let languagePacks: [LanguagePackInfo]\n\n\n    public init(languagePacks: [LanguagePackInfo]) {\n        self.languagePacks = languagePacks\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Location.swift",
    "content": "//\n//  Location.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a location on planet Earth\npublic struct Location: Codable, Equatable, Hashable {\n\n    /// The estimated horizontal accuracy of the location, in meters; as defined by the sender. 0 if unknown\n    public let horizontalAccuracy: Double\n\n    /// Latitude of the location in degrees; as defined by the sender\n    public let latitude: Double\n\n    /// Longitude of the location, in degrees; as defined by the sender\n    public let longitude: Double\n\n\n    public init(\n        horizontalAccuracy: Double,\n        latitude: Double,\n        longitude: Double\n    ) {\n        self.horizontalAccuracy = horizontalAccuracy\n        self.latitude = latitude\n        self.longitude = longitude\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LocationAddress.swift",
    "content": "//\n//  LocationAddress.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an address of a location\npublic struct LocationAddress: Codable, Equatable, Hashable {\n\n    /// City; empty if unknown\n    public let city: String\n\n    /// A two-letter ISO 3166-1 alpha-2 country code\n    public let countryCode: String\n\n    /// State, if applicable; empty if unknown\n    public let state: String\n\n    /// The address; empty if unknown\n    public let street: String\n\n\n    public init(\n        city: String,\n        countryCode: String,\n        state: String,\n        street: String\n    ) {\n        self.city = city\n        self.countryCode = countryCode\n        self.state = state\n        self.street = street\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LogOut.swift",
    "content": "//\n//  LogOut.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Closes the TDLib instance after a proper logout. Requires an available network connection. All local data will be destroyed. After the logout completes, updateAuthorizationState with authorizationStateClosed will be sent\npublic struct LogOut: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LogStream.swift",
    "content": "//\n//  LogStream.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a stream to which TDLib internal log is written\npublic indirect enum LogStream: Codable, Equatable, Hashable {\n\n    /// The log is written to stderr or an OS specific log\n    case logStreamDefault\n\n    /// The log is written to a file\n    case logStreamFile(LogStreamFile)\n\n    /// The log is written nowhere\n    case logStreamEmpty\n\n\n    private enum Kind: String, Codable {\n        case logStreamDefault\n        case logStreamFile\n        case logStreamEmpty\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .logStreamDefault:\n            self = .logStreamDefault\n        case .logStreamFile:\n            let value = try LogStreamFile(from: decoder)\n            self = .logStreamFile(value)\n        case .logStreamEmpty:\n            self = .logStreamEmpty\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .logStreamDefault:\n            try container.encode(Kind.logStreamDefault, forKey: .type)\n        case .logStreamFile(let value):\n            try container.encode(Kind.logStreamFile, forKey: .type)\n            try value.encode(to: encoder)\n        case .logStreamEmpty:\n            try container.encode(Kind.logStreamEmpty, forKey: .type)\n        }\n    }\n}\n\n/// The log is written to a file\npublic struct LogStreamFile: Codable, Equatable, Hashable {\n\n    /// The maximum size of the file to where the internal TDLib log is written before the file will automatically be rotated, in bytes\n    public let maxFileSize: Int64\n\n    /// Path to the file to where the internal TDLib log will be written\n    public let path: String\n\n    /// Pass true to additionally redirect stderr to the log file. Ignored on Windows\n    public let redirectStderr: Bool\n\n\n    public init(\n        maxFileSize: Int64,\n        path: String,\n        redirectStderr: Bool\n    ) {\n        self.maxFileSize = maxFileSize\n        self.path = path\n        self.redirectStderr = redirectStderr\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LogTags.swift",
    "content": "//\n//  LogTags.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of available TDLib internal log tags\npublic struct LogTags: Codable, Equatable, Hashable {\n\n    /// List of log tags\n    public let tags: [String]\n\n\n    public init(tags: [String]) {\n        self.tags = tags\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LogVerbosityLevel.swift",
    "content": "//\n//  LogVerbosityLevel.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a TDLib internal log verbosity level\npublic struct LogVerbosityLevel: Codable, Equatable, Hashable {\n\n    /// Log verbosity level\n    public let verbosityLevel: Int\n\n\n    public init(verbosityLevel: Int) {\n        self.verbosityLevel = verbosityLevel\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/LoginUrlInfo.swift",
    "content": "//\n//  LoginUrlInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about an inline button of type inlineKeyboardButtonTypeLoginUrl or an external link\npublic indirect enum LoginUrlInfo: Codable, Equatable, Hashable {\n\n    /// An HTTP URL needs to be open\n    case loginUrlInfoOpen(LoginUrlInfoOpen)\n\n    /// An authorization confirmation dialog needs to be shown to the user\n    case loginUrlInfoRequestConfirmation(LoginUrlInfoRequestConfirmation)\n\n\n    private enum Kind: String, Codable {\n        case loginUrlInfoOpen\n        case loginUrlInfoRequestConfirmation\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .loginUrlInfoOpen:\n            let value = try LoginUrlInfoOpen(from: decoder)\n            self = .loginUrlInfoOpen(value)\n        case .loginUrlInfoRequestConfirmation:\n            let value = try LoginUrlInfoRequestConfirmation(from: decoder)\n            self = .loginUrlInfoRequestConfirmation(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .loginUrlInfoOpen(let value):\n            try container.encode(Kind.loginUrlInfoOpen, forKey: .type)\n            try value.encode(to: encoder)\n        case .loginUrlInfoRequestConfirmation(let value):\n            try container.encode(Kind.loginUrlInfoRequestConfirmation, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// An HTTP URL needs to be open\npublic struct LoginUrlInfoOpen: Codable, Equatable, Hashable {\n\n    /// True, if there is no need to show an ordinary open URL confirmation\n    public let skipConfirmation: Bool\n\n    /// The URL to open\n    public let url: String\n\n\n    public init(\n        skipConfirmation: Bool,\n        url: String\n    ) {\n        self.skipConfirmation = skipConfirmation\n        self.url = url\n    }\n}\n\n/// An authorization confirmation dialog needs to be shown to the user\npublic struct LoginUrlInfoRequestConfirmation: Codable, Equatable, Hashable {\n\n    /// User identifier of a bot linked with the website\n    public let botUserId: Int64\n\n    /// A domain of the URL\n    public let domain: String\n\n    /// True, if the user must be asked for the permission to the bot to send them messages\n    public let requestWriteAccess: Bool\n\n    /// An HTTP URL to be opened\n    public let url: String\n\n\n    public init(\n        botUserId: Int64,\n        domain: String,\n        requestWriteAccess: Bool,\n        url: String\n    ) {\n        self.botUserId = botUserId\n        self.domain = domain\n        self.requestWriteAccess = requestWriteAccess\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MainWebApp.swift",
    "content": "//\n//  MainWebApp.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about the main Web App of a bot\npublic struct MainWebApp: Codable, Equatable, Hashable {\n\n    /// The mode in which the Web App must be opened\n    public let mode: WebAppOpenMode\n\n    /// URL of the Web App to open\n    public let url: String\n\n\n    public init(\n        mode: WebAppOpenMode,\n        url: String\n    ) {\n        self.mode = mode\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MarkChecklistTasksAsDone.swift",
    "content": "//\n//  MarkChecklistTasksAsDone.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds tasks of a checklist in a message as done or not done\npublic struct MarkChecklistTasksAsDone: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat with the message\n    public let chatId: Int64?\n\n    /// Identifiers of tasks that were marked as done\n    public let markedAsDoneTaskIds: [Int]?\n\n    /// Identifiers of tasks that were marked as not done\n    public let markedAsNotDoneTaskIds: [Int]?\n\n    /// Identifier of the message containing the checklist. Use messageProperties.can_mark_tasks_as_done to check whether the tasks can be marked as done or not done\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        markedAsDoneTaskIds: [Int]?,\n        markedAsNotDoneTaskIds: [Int]?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.markedAsDoneTaskIds = markedAsDoneTaskIds\n        self.markedAsNotDoneTaskIds = markedAsNotDoneTaskIds\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MaskPoint.swift",
    "content": "//\n//  MaskPoint.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Part of the face, relative to which a mask is placed\npublic indirect enum MaskPoint: Codable, Equatable, Hashable {\n\n    /// The mask is placed relatively to the forehead\n    case maskPointForehead\n\n    /// The mask is placed relatively to the eyes\n    case maskPointEyes\n\n    /// The mask is placed relatively to the mouth\n    case maskPointMouth\n\n    /// The mask is placed relatively to the chin\n    case maskPointChin\n\n\n    private enum Kind: String, Codable {\n        case maskPointForehead\n        case maskPointEyes\n        case maskPointMouth\n        case maskPointChin\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .maskPointForehead:\n            self = .maskPointForehead\n        case .maskPointEyes:\n            self = .maskPointEyes\n        case .maskPointMouth:\n            self = .maskPointMouth\n        case .maskPointChin:\n            self = .maskPointChin\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .maskPointForehead:\n            try container.encode(Kind.maskPointForehead, forKey: .type)\n        case .maskPointEyes:\n            try container.encode(Kind.maskPointEyes, forKey: .type)\n        case .maskPointMouth:\n            try container.encode(Kind.maskPointMouth, forKey: .type)\n        case .maskPointChin:\n            try container.encode(Kind.maskPointChin, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MaskPosition.swift",
    "content": "//\n//  MaskPosition.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Position on a photo where a mask is placed\npublic struct MaskPosition: Codable, Equatable, Hashable {\n\n    /// Part of the face, relative to which the mask is placed\n    public let point: MaskPoint\n\n    /// Mask scaling coefficient. (For example, 2.0 means a doubled size)\n    public let scale: Double\n\n    /// Shift by X-axis measured in widths of the mask scaled to the face size, from left to right. (For example, -1.0 will place the mask just to the left of the default mask position)\n    public let xShift: Double\n\n    /// Shift by Y-axis measured in heights of the mask scaled to the face size, from top to bottom. (For example, 1.0 will place the mask just below the default mask position)\n    public let yShift: Double\n\n\n    public init(\n        point: MaskPoint,\n        scale: Double,\n        xShift: Double,\n        yShift: Double\n    ) {\n        self.point = point\n        self.scale = scale\n        self.xShift = xShift\n        self.yShift = yShift\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Message.swift",
    "content": "//\n//  Message.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a message\npublic struct Message: Codable, Equatable, Hashable, Identifiable {\n\n    /// For channel posts and anonymous group messages, optional author signature\n    public let authorSignature: String\n\n    /// Time left before the message will be automatically deleted by message_auto_delete_time setting of the chat, in seconds; 0 if never\n    public let autoDeleteIn: Double\n\n    /// True, if content of the message can be saved locally\n    public let canBeSaved: Bool\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// True, if the message contains an unread mention for the current user\n    public let containsUnreadMention: Bool\n\n    /// True, if the message is a poll message with unread votes\n    public let containsUnreadPollVotes: Bool\n\n    /// Content of the message\n    public let content: MessageContent\n\n    /// Point in time (Unix timestamp) when the message was sent; 0 for scheduled messages\n    public let date: Int\n\n    /// Point in time (Unix timestamp) when the message was last edited; 0 for scheduled messages\n    public let editDate: Int\n\n    /// Unique identifier of the effect added to the message; 0 if none\n    public let effectId: TdInt64\n\n    /// Information about fact-check added to the message; may be null if none\n    public let factCheck: FactCheck?\n\n    /// Information about the initial message sender; may be null if none or unknown\n    public let forwardInfo: MessageForwardInfo?\n\n    /// The identifier of the user or chat which used a guest bot to send the message; may be null if none\n    public let guestBotCallerId: MessageSender?\n\n    /// True, if media timestamp entities refers to a media in this message as opposed to a media in the replied message\n    public let hasTimestampedMedia: Bool\n\n    /// Message identifier; unique for the chat to which the message belongs\n    public let id: Int64\n\n    /// Information about the initial message for messages created with importMessages; may be null if the message isn't imported\n    public let importInfo: MessageImportInfo?\n\n    /// Information about interactions with the message; may be null if none\n    public let interactionInfo: MessageInteractionInfo?\n\n    /// True, if the message is a channel post. All messages to channels are channel posts, all other messages are not channel posts\n    public let isChannelPost: Bool\n\n    /// True, if the message was sent because of a scheduled action by the message sender, for example, as away, or greeting service message\n    public let isFromOffline: Bool\n\n    /// True, if the message is outgoing\n    public let isOutgoing: Bool\n\n    /// True, if the message is a suggested channel post which was paid in Telegram Stars; a warning must be shown if the message is deleted in less than getOption(\"suggested_post_lifetime_min\") seconds after sending\n    public let isPaidStarSuggestedPost: Bool\n\n    /// True, if the message is a suggested channel post which was paid in Toncoins; a warning must be shown if the message is deleted in less than getOption(\"suggested_post_lifetime_min\") seconds after sending\n    public let isPaidTonSuggestedPost: Bool\n\n    /// True, if the message is pinned\n    public let isPinned: Bool\n\n    /// Unique identifier of an album this message belongs to; 0 if none. Only audios, documents, photos and videos can be grouped together in albums\n    public let mediaAlbumId: TdInt64\n\n    /// The number of Telegram Stars the sender paid to send the message\n    public let paidMessageStarCount: Int64\n\n    /// Reply markup for the message; may be null if none\n    public let replyMarkup: ReplyMarkup?\n\n    /// Information about the message or the story this message is replying to; may be null if none\n    public let replyTo: MessageReplyTo?\n\n    /// Information about the restrictions that must be applied to the message content; may be null if none\n    public let restrictionInfo: RestrictionInfo?\n\n    /// The scheduling state of the message; may be null if the message isn't scheduled\n    public let schedulingState: MessageSchedulingState?\n\n    /// Time left before the message self-destruct timer expires, in seconds; 0 if self-destruction isn't scheduled yet\n    public let selfDestructIn: Double\n\n    /// The message's self-destruct type; may be null if none\n    public let selfDestructType: MessageSelfDestructType?\n\n    /// Number of times the sender of the message boosted the supergroup at the time the message was sent; 0 if none or unknown. For messages sent by the current user, supergroupFullInfo.my_boost_count must be used instead\n    public let senderBoostCount: Int\n\n    /// If non-zero, the user identifier of the business bot that sent this message\n    public let senderBusinessBotUserId: Int64\n\n    /// Identifier of the sender of the message\n    public let senderId: MessageSender\n\n    /// Tag of the sender of the message in the supergroup at the time the message was sent; may be empty if none or unknown. For messages sent in basic groups or supergroup administrators, the current custom title or tag must be used instead\n    public let senderTag: String\n\n    /// The sending state of the message; may be null if the message isn't being sent and didn't fail to be sent\n    public let sendingState: MessageSendingState?\n\n    /// Information about the suggested post; may be null if the message isn't a suggested post\n    public let suggestedPostInfo: SuggestedPostInfo?\n\n    /// IETF language tag of the message language on which it can be summarized; empty if summary isn't available for the message\n    public let summaryLanguageCode: String\n\n    /// Identifier of the topic within the chat to which the message belongs; may be null if none; may change when the chat is converted to a forum or back\n    public let topicId: MessageTopic?\n\n    /// Information about unread reactions added to the message\n    public let unreadReactions: [UnreadReaction]\n\n    /// If non-zero, the user identifier of the inline bot through which this message was sent\n    public let viaBotUserId: Int64\n\n\n    public init(\n        authorSignature: String,\n        autoDeleteIn: Double,\n        canBeSaved: Bool,\n        chatId: Int64,\n        containsUnreadMention: Bool,\n        containsUnreadPollVotes: Bool,\n        content: MessageContent,\n        date: Int,\n        editDate: Int,\n        effectId: TdInt64,\n        factCheck: FactCheck?,\n        forwardInfo: MessageForwardInfo?,\n        guestBotCallerId: MessageSender?,\n        hasTimestampedMedia: Bool,\n        id: Int64,\n        importInfo: MessageImportInfo?,\n        interactionInfo: MessageInteractionInfo?,\n        isChannelPost: Bool,\n        isFromOffline: Bool,\n        isOutgoing: Bool,\n        isPaidStarSuggestedPost: Bool,\n        isPaidTonSuggestedPost: Bool,\n        isPinned: Bool,\n        mediaAlbumId: TdInt64,\n        paidMessageStarCount: Int64,\n        replyMarkup: ReplyMarkup?,\n        replyTo: MessageReplyTo?,\n        restrictionInfo: RestrictionInfo?,\n        schedulingState: MessageSchedulingState?,\n        selfDestructIn: Double,\n        selfDestructType: MessageSelfDestructType?,\n        senderBoostCount: Int,\n        senderBusinessBotUserId: Int64,\n        senderId: MessageSender,\n        senderTag: String,\n        sendingState: MessageSendingState?,\n        suggestedPostInfo: SuggestedPostInfo?,\n        summaryLanguageCode: String,\n        topicId: MessageTopic?,\n        unreadReactions: [UnreadReaction],\n        viaBotUserId: Int64\n    ) {\n        self.authorSignature = authorSignature\n        self.autoDeleteIn = autoDeleteIn\n        self.canBeSaved = canBeSaved\n        self.chatId = chatId\n        self.containsUnreadMention = containsUnreadMention\n        self.containsUnreadPollVotes = containsUnreadPollVotes\n        self.content = content\n        self.date = date\n        self.editDate = editDate\n        self.effectId = effectId\n        self.factCheck = factCheck\n        self.forwardInfo = forwardInfo\n        self.guestBotCallerId = guestBotCallerId\n        self.hasTimestampedMedia = hasTimestampedMedia\n        self.id = id\n        self.importInfo = importInfo\n        self.interactionInfo = interactionInfo\n        self.isChannelPost = isChannelPost\n        self.isFromOffline = isFromOffline\n        self.isOutgoing = isOutgoing\n        self.isPaidStarSuggestedPost = isPaidStarSuggestedPost\n        self.isPaidTonSuggestedPost = isPaidTonSuggestedPost\n        self.isPinned = isPinned\n        self.mediaAlbumId = mediaAlbumId\n        self.paidMessageStarCount = paidMessageStarCount\n        self.replyMarkup = replyMarkup\n        self.replyTo = replyTo\n        self.restrictionInfo = restrictionInfo\n        self.schedulingState = schedulingState\n        self.selfDestructIn = selfDestructIn\n        self.selfDestructType = selfDestructType\n        self.senderBoostCount = senderBoostCount\n        self.senderBusinessBotUserId = senderBusinessBotUserId\n        self.senderId = senderId\n        self.senderTag = senderTag\n        self.sendingState = sendingState\n        self.suggestedPostInfo = suggestedPostInfo\n        self.summaryLanguageCode = summaryLanguageCode\n        self.topicId = topicId\n        self.unreadReactions = unreadReactions\n        self.viaBotUserId = viaBotUserId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageAutoDeleteTime.swift",
    "content": "//\n//  MessageAutoDeleteTime.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains default auto-delete timer setting for new chats\npublic struct MessageAutoDeleteTime: Codable, Equatable, Hashable {\n\n    /// Message auto-delete time, in seconds. If 0, then messages aren't deleted automatically\n    public let time: Int\n\n\n    public init(time: Int) {\n        self.time = time\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageCalendar.swift",
    "content": "//\n//  MessageCalendar.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about found messages, split by days according to the option \"utc_time_offset\"\npublic struct MessageCalendar: Codable, Equatable, Hashable {\n\n    /// Information about messages sent\n    public let days: [MessageCalendarDay]\n\n    /// Total number of found messages\n    public let totalCount: Int\n\n\n    public init(\n        days: [MessageCalendarDay],\n        totalCount: Int\n    ) {\n        self.days = days\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageCalendarDay.swift",
    "content": "//\n//  MessageCalendarDay.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about found messages sent on a specific day\npublic struct MessageCalendarDay: Codable, Equatable, Hashable {\n\n    /// First message sent on the day\n    public let message: Message\n\n    /// Total number of found messages sent on the day\n    public let totalCount: Int\n\n\n    public init(\n        message: Message,\n        totalCount: Int\n    ) {\n        self.message = message\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageContent.swift",
    "content": "//\n//  MessageContent.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains the content of a message\npublic indirect enum MessageContent: Codable, Equatable, Hashable {\n\n    /// A text message\n    case messageText(MessageText)\n\n    /// An animation message (GIF-style).\n    case messageAnimation(MessageAnimation)\n\n    /// An audio message\n    case messageAudio(MessageAudio)\n\n    /// A document message (general file)\n    case messageDocument(MessageDocument)\n\n    /// A message with paid media\n    case messagePaidMedia(MessagePaidMedia)\n\n    /// A photo message\n    case messagePhoto(MessagePhoto)\n\n    /// A sticker message\n    case messageSticker(MessageSticker)\n\n    /// A video message\n    case messageVideo(MessageVideo)\n\n    /// A video note message\n    case messageVideoNote(MessageVideoNote)\n\n    /// A voice note message\n    case messageVoiceNote(MessageVoiceNote)\n\n    /// A self-destructed photo message\n    case messageExpiredPhoto\n\n    /// A self-destructed video message\n    case messageExpiredVideo\n\n    /// A self-destructed video note message\n    case messageExpiredVideoNote\n\n    /// A self-destructed voice note message\n    case messageExpiredVoiceNote\n\n    /// A message with a location\n    case messageLocation(MessageLocation)\n\n    /// A message with information about a venue\n    case messageVenue(MessageVenue)\n\n    /// A message with a user contact\n    case messageContact(MessageContact)\n\n    /// A message with an animated emoji\n    case messageAnimatedEmoji(MessageAnimatedEmoji)\n\n    /// A dice message. The dice value is randomly generated by the server\n    case messageDice(MessageDice)\n\n    /// A message with a game\n    case messageGame(MessageGame)\n\n    /// A message with a poll\n    case messagePoll(MessagePoll)\n\n    /// A stake dice message. The dice value is randomly generated by the server\n    case messageStakeDice(MessageStakeDice)\n\n    /// A message with a forwarded story\n    case messageStory(MessageStory)\n\n    /// A message with a checklist\n    case messageChecklist(MessageChecklist)\n\n    /// A message with an invoice from a bot. Use getInternalLink with internalLinkTypeBotStart to share the invoice\n    case messageInvoice(MessageInvoice)\n\n    /// A message with information about an ended call\n    case messageCall(MessageCall)\n\n    /// A message with information about a group call not bound to a chat. If the message is incoming, the call isn't active, isn't missed, and has no duration, and getOption(\"can_accept_calls\") is true, then incoming call screen must be shown to the user. Use getGroupCallParticipants to show current group call participants on the screen. Use joinGroupCall to accept the call or declineGroupCallInvitation to decline it. If the call become active or missed, then the call screen must be hidden\n    case messageGroupCall(MessageGroupCall)\n\n    /// A new video chat was scheduled\n    case messageVideoChatScheduled(MessageVideoChatScheduled)\n\n    /// A newly created video chat\n    case messageVideoChatStarted(MessageVideoChatStarted)\n\n    /// A message with information about an ended video chat\n    case messageVideoChatEnded(MessageVideoChatEnded)\n\n    /// A message with information about an invitation to a video chat\n    case messageInviteVideoChatParticipants(MessageInviteVideoChatParticipants)\n\n    /// A message with information about an added poll option\n    case messagePollOptionAdded(MessagePollOptionAdded)\n\n    /// A message with information about a deleted poll option\n    case messagePollOptionDeleted(MessagePollOptionDeleted)\n\n    /// A newly created basic group\n    case messageBasicGroupChatCreate(MessageBasicGroupChatCreate)\n\n    /// A newly created supergroup or channel\n    case messageSupergroupChatCreate(MessageSupergroupChatCreate)\n\n    /// An updated chat title\n    case messageChatChangeTitle(MessageChatChangeTitle)\n\n    /// An updated chat photo\n    case messageChatChangePhoto(MessageChatChangePhoto)\n\n    /// A deleted chat photo\n    case messageChatDeletePhoto\n\n    /// The owner of the chat has left\n    case messageChatOwnerLeft(MessageChatOwnerLeft)\n\n    /// The owner of the chat has changed\n    case messageChatOwnerChanged(MessageChatOwnerChanged)\n\n    /// Chat has_protected_content setting was changed or request to change it was rejected\n    case messageChatHasProtectedContentToggled(MessageChatHasProtectedContentToggled)\n\n    /// Chat has_protected_content setting was requested to be disabled\n    case messageChatHasProtectedContentDisableRequested(MessageChatHasProtectedContentDisableRequested)\n\n    /// New chat members were added\n    case messageChatAddMembers(MessageChatAddMembers)\n\n    /// A new member joined the chat via an invite link\n    case messageChatJoinByLink\n\n    /// A new member was accepted to the chat by an administrator\n    case messageChatJoinByRequest\n\n    /// A chat member was deleted\n    case messageChatDeleteMember(MessageChatDeleteMember)\n\n    /// A basic group was upgraded to a supergroup and was deactivated as the result\n    case messageChatUpgradeTo(MessageChatUpgradeTo)\n\n    /// A supergroup has been created from a basic group\n    case messageChatUpgradeFrom(MessageChatUpgradeFrom)\n\n    /// A message has been pinned\n    case messagePinMessage(MessagePinMessage)\n\n    /// A screenshot of a message in the chat has been taken\n    case messageScreenshotTaken\n\n    /// A new background was set in the chat\n    case messageChatSetBackground(MessageChatSetBackground)\n\n    /// A theme in the chat has been changed\n    case messageChatSetTheme(MessageChatSetTheme)\n\n    /// The auto-delete or self-destruct timer for messages in the chat has been changed\n    case messageChatSetMessageAutoDeleteTime(MessageChatSetMessageAutoDeleteTime)\n\n    /// The chat was boosted by the sender of the message\n    case messageChatBoost(MessageChatBoost)\n\n    /// A forum topic has been created\n    case messageForumTopicCreated(MessageForumTopicCreated)\n\n    /// A forum topic has been edited\n    case messageForumTopicEdited(MessageForumTopicEdited)\n\n    /// A forum topic has been closed or opened\n    case messageForumTopicIsClosedToggled(MessageForumTopicIsClosedToggled)\n\n    /// A General forum topic has been hidden or unhidden\n    case messageForumTopicIsHiddenToggled(MessageForumTopicIsHiddenToggled)\n\n    /// A profile photo was suggested to a user in a private chat\n    case messageSuggestProfilePhoto(MessageSuggestProfilePhoto)\n\n    /// A birthdate was suggested to be set\n    case messageSuggestBirthdate(MessageSuggestBirthdate)\n\n    /// A non-standard action has happened in the chat\n    case messageCustomServiceAction(MessageCustomServiceAction)\n\n    /// A new high score was achieved in a game\n    case messageGameScore(MessageGameScore)\n\n    /// A bot managed by another bot was created by the user\n    case messageManagedBotCreated(MessageManagedBotCreated)\n\n    /// A payment has been sent to a bot or a business account\n    case messagePaymentSuccessful(MessagePaymentSuccessful)\n\n    /// A payment has been received by the bot or the business account\n    case messagePaymentSuccessfulBot(MessagePaymentSuccessfulBot)\n\n    /// A payment has been refunded\n    case messagePaymentRefunded(MessagePaymentRefunded)\n\n    /// Telegram Premium was gifted to a user\n    case messageGiftedPremium(MessageGiftedPremium)\n\n    /// A Telegram Premium gift code was created for the user\n    case messagePremiumGiftCode(MessagePremiumGiftCode)\n\n    /// A giveaway was created for the chat. Use telegramPaymentPurposePremiumGiveaway, storePaymentPurposePremiumGiveaway, telegramPaymentPurposeStarGiveaway, or storePaymentPurposeStarGiveaway to create a giveaway\n    case messageGiveawayCreated(MessageGiveawayCreated)\n\n    /// A giveaway\n    case messageGiveaway(MessageGiveaway)\n\n    /// A giveaway without public winners has been completed for the chat\n    case messageGiveawayCompleted(MessageGiveawayCompleted)\n\n    /// A giveaway with public winners has been completed for the chat\n    case messageGiveawayWinners(MessageGiveawayWinners)\n\n    /// Telegram Stars were gifted to a user\n    case messageGiftedStars(MessageGiftedStars)\n\n    /// Toncoins were gifted to a user\n    case messageGiftedTon(MessageGiftedTon)\n\n    /// A Telegram Stars were received by the current user from a giveaway\n    case messageGiveawayPrizeStars(MessageGiveawayPrizeStars)\n\n    /// A regular gift was received or sent by the current user, or the current user was notified about a channel gift\n    case messageGift(MessageGift)\n\n    /// An upgraded gift was received or sent by the current user, or the current user was notified about a channel gift\n    case messageUpgradedGift(MessageUpgradedGift)\n\n    /// A gift which purchase, upgrade or transfer were refunded\n    case messageRefundedUpgradedGift(MessageRefundedUpgradedGift)\n\n    /// An offer to purchase an upgraded gift was sent or received\n    case messageUpgradedGiftPurchaseOffer(MessageUpgradedGiftPurchaseOffer)\n\n    /// An offer to purchase a gift was rejected or expired\n    case messageUpgradedGiftPurchaseOfferRejected(MessageUpgradedGiftPurchaseOfferRejected)\n\n    /// Paid messages were refunded\n    case messagePaidMessagesRefunded(MessagePaidMessagesRefunded)\n\n    /// A price for paid messages was changed in the supergroup chat\n    case messagePaidMessagePriceChanged(MessagePaidMessagePriceChanged)\n\n    /// A price for direct messages was changed in the channel chat\n    case messageDirectMessagePriceChanged(MessageDirectMessagePriceChanged)\n\n    /// Some tasks from a checklist were marked as done or not done\n    case messageChecklistTasksDone(MessageChecklistTasksDone)\n\n    /// Some tasks were added to a checklist\n    case messageChecklistTasksAdded(MessageChecklistTasksAdded)\n\n    /// Approval of suggested post has failed, because the user which proposed the post had no enough funds\n    case messageSuggestedPostApprovalFailed(MessageSuggestedPostApprovalFailed)\n\n    /// A suggested post was approved\n    case messageSuggestedPostApproved(MessageSuggestedPostApproved)\n\n    /// A suggested post was declined\n    case messageSuggestedPostDeclined(MessageSuggestedPostDeclined)\n\n    /// A suggested post was published for getOption(\"suggested_post_lifetime_min\") seconds and payment for the post was received\n    case messageSuggestedPostPaid(MessageSuggestedPostPaid)\n\n    /// A suggested post was refunded\n    case messageSuggestedPostRefunded(MessageSuggestedPostRefunded)\n\n    /// A contact has registered with Telegram\n    case messageContactRegistered\n\n    /// The current user shared users, which were requested by the bot\n    case messageUsersShared(MessageUsersShared)\n\n    /// The current user shared a chat, which was requested by the bot\n    case messageChatShared(MessageChatShared)\n\n    /// The user allowed the bot to send messages\n    case messageBotWriteAccessAllowed(MessageBotWriteAccessAllowed)\n\n    /// Data from a Web App has been sent to a bot\n    case messageWebAppDataSent(MessageWebAppDataSent)\n\n    /// Data from a Web App has been received; for bots only\n    case messageWebAppDataReceived(MessageWebAppDataReceived)\n\n    /// Telegram Passport data has been sent to a bot\n    case messagePassportDataSent(MessagePassportDataSent)\n\n    /// Telegram Passport data has been received; for bots only\n    case messagePassportDataReceived(MessagePassportDataReceived)\n\n    /// A user in the chat came within proximity alert range\n    case messageProximityAlertTriggered(MessageProximityAlertTriggered)\n\n    /// A message content that is not supported in the current TDLib version\n    case messageUnsupported\n\n\n    private enum Kind: String, Codable {\n        case messageText\n        case messageAnimation\n        case messageAudio\n        case messageDocument\n        case messagePaidMedia\n        case messagePhoto\n        case messageSticker\n        case messageVideo\n        case messageVideoNote\n        case messageVoiceNote\n        case messageExpiredPhoto\n        case messageExpiredVideo\n        case messageExpiredVideoNote\n        case messageExpiredVoiceNote\n        case messageLocation\n        case messageVenue\n        case messageContact\n        case messageAnimatedEmoji\n        case messageDice\n        case messageGame\n        case messagePoll\n        case messageStakeDice\n        case messageStory\n        case messageChecklist\n        case messageInvoice\n        case messageCall\n        case messageGroupCall\n        case messageVideoChatScheduled\n        case messageVideoChatStarted\n        case messageVideoChatEnded\n        case messageInviteVideoChatParticipants\n        case messagePollOptionAdded\n        case messagePollOptionDeleted\n        case messageBasicGroupChatCreate\n        case messageSupergroupChatCreate\n        case messageChatChangeTitle\n        case messageChatChangePhoto\n        case messageChatDeletePhoto\n        case messageChatOwnerLeft\n        case messageChatOwnerChanged\n        case messageChatHasProtectedContentToggled\n        case messageChatHasProtectedContentDisableRequested\n        case messageChatAddMembers\n        case messageChatJoinByLink\n        case messageChatJoinByRequest\n        case messageChatDeleteMember\n        case messageChatUpgradeTo\n        case messageChatUpgradeFrom\n        case messagePinMessage\n        case messageScreenshotTaken\n        case messageChatSetBackground\n        case messageChatSetTheme\n        case messageChatSetMessageAutoDeleteTime\n        case messageChatBoost\n        case messageForumTopicCreated\n        case messageForumTopicEdited\n        case messageForumTopicIsClosedToggled\n        case messageForumTopicIsHiddenToggled\n        case messageSuggestProfilePhoto\n        case messageSuggestBirthdate\n        case messageCustomServiceAction\n        case messageGameScore\n        case messageManagedBotCreated\n        case messagePaymentSuccessful\n        case messagePaymentSuccessfulBot\n        case messagePaymentRefunded\n        case messageGiftedPremium\n        case messagePremiumGiftCode\n        case messageGiveawayCreated\n        case messageGiveaway\n        case messageGiveawayCompleted\n        case messageGiveawayWinners\n        case messageGiftedStars\n        case messageGiftedTon\n        case messageGiveawayPrizeStars\n        case messageGift\n        case messageUpgradedGift\n        case messageRefundedUpgradedGift\n        case messageUpgradedGiftPurchaseOffer\n        case messageUpgradedGiftPurchaseOfferRejected\n        case messagePaidMessagesRefunded\n        case messagePaidMessagePriceChanged\n        case messageDirectMessagePriceChanged\n        case messageChecklistTasksDone\n        case messageChecklistTasksAdded\n        case messageSuggestedPostApprovalFailed\n        case messageSuggestedPostApproved\n        case messageSuggestedPostDeclined\n        case messageSuggestedPostPaid\n        case messageSuggestedPostRefunded\n        case messageContactRegistered\n        case messageUsersShared\n        case messageChatShared\n        case messageBotWriteAccessAllowed\n        case messageWebAppDataSent\n        case messageWebAppDataReceived\n        case messagePassportDataSent\n        case messagePassportDataReceived\n        case messageProximityAlertTriggered\n        case messageUnsupported\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .messageText:\n            let value = try MessageText(from: decoder)\n            self = .messageText(value)\n        case .messageAnimation:\n            let value = try MessageAnimation(from: decoder)\n            self = .messageAnimation(value)\n        case .messageAudio:\n            let value = try MessageAudio(from: decoder)\n            self = .messageAudio(value)\n        case .messageDocument:\n            let value = try MessageDocument(from: decoder)\n            self = .messageDocument(value)\n        case .messagePaidMedia:\n            let value = try MessagePaidMedia(from: decoder)\n            self = .messagePaidMedia(value)\n        case .messagePhoto:\n            let value = try MessagePhoto(from: decoder)\n            self = .messagePhoto(value)\n        case .messageSticker:\n            let value = try MessageSticker(from: decoder)\n            self = .messageSticker(value)\n        case .messageVideo:\n            let value = try MessageVideo(from: decoder)\n            self = .messageVideo(value)\n        case .messageVideoNote:\n            let value = try MessageVideoNote(from: decoder)\n            self = .messageVideoNote(value)\n        case .messageVoiceNote:\n            let value = try MessageVoiceNote(from: decoder)\n            self = .messageVoiceNote(value)\n        case .messageExpiredPhoto:\n            self = .messageExpiredPhoto\n        case .messageExpiredVideo:\n            self = .messageExpiredVideo\n        case .messageExpiredVideoNote:\n            self = .messageExpiredVideoNote\n        case .messageExpiredVoiceNote:\n            self = .messageExpiredVoiceNote\n        case .messageLocation:\n            let value = try MessageLocation(from: decoder)\n            self = .messageLocation(value)\n        case .messageVenue:\n            let value = try MessageVenue(from: decoder)\n            self = .messageVenue(value)\n        case .messageContact:\n            let value = try MessageContact(from: decoder)\n            self = .messageContact(value)\n        case .messageAnimatedEmoji:\n            let value = try MessageAnimatedEmoji(from: decoder)\n            self = .messageAnimatedEmoji(value)\n        case .messageDice:\n            let value = try MessageDice(from: decoder)\n            self = .messageDice(value)\n        case .messageGame:\n            let value = try MessageGame(from: decoder)\n            self = .messageGame(value)\n        case .messagePoll:\n            let value = try MessagePoll(from: decoder)\n            self = .messagePoll(value)\n        case .messageStakeDice:\n            let value = try MessageStakeDice(from: decoder)\n            self = .messageStakeDice(value)\n        case .messageStory:\n            let value = try MessageStory(from: decoder)\n            self = .messageStory(value)\n        case .messageChecklist:\n            let value = try MessageChecklist(from: decoder)\n            self = .messageChecklist(value)\n        case .messageInvoice:\n            let value = try MessageInvoice(from: decoder)\n            self = .messageInvoice(value)\n        case .messageCall:\n            let value = try MessageCall(from: decoder)\n            self = .messageCall(value)\n        case .messageGroupCall:\n            let value = try MessageGroupCall(from: decoder)\n            self = .messageGroupCall(value)\n        case .messageVideoChatScheduled:\n            let value = try MessageVideoChatScheduled(from: decoder)\n            self = .messageVideoChatScheduled(value)\n        case .messageVideoChatStarted:\n            let value = try MessageVideoChatStarted(from: decoder)\n            self = .messageVideoChatStarted(value)\n        case .messageVideoChatEnded:\n            let value = try MessageVideoChatEnded(from: decoder)\n            self = .messageVideoChatEnded(value)\n        case .messageInviteVideoChatParticipants:\n            let value = try MessageInviteVideoChatParticipants(from: decoder)\n            self = .messageInviteVideoChatParticipants(value)\n        case .messagePollOptionAdded:\n            let value = try MessagePollOptionAdded(from: decoder)\n            self = .messagePollOptionAdded(value)\n        case .messagePollOptionDeleted:\n            let value = try MessagePollOptionDeleted(from: decoder)\n            self = .messagePollOptionDeleted(value)\n        case .messageBasicGroupChatCreate:\n            let value = try MessageBasicGroupChatCreate(from: decoder)\n            self = .messageBasicGroupChatCreate(value)\n        case .messageSupergroupChatCreate:\n            let value = try MessageSupergroupChatCreate(from: decoder)\n            self = .messageSupergroupChatCreate(value)\n        case .messageChatChangeTitle:\n            let value = try MessageChatChangeTitle(from: decoder)\n            self = .messageChatChangeTitle(value)\n        case .messageChatChangePhoto:\n            let value = try MessageChatChangePhoto(from: decoder)\n            self = .messageChatChangePhoto(value)\n        case .messageChatDeletePhoto:\n            self = .messageChatDeletePhoto\n        case .messageChatOwnerLeft:\n            let value = try MessageChatOwnerLeft(from: decoder)\n            self = .messageChatOwnerLeft(value)\n        case .messageChatOwnerChanged:\n            let value = try MessageChatOwnerChanged(from: decoder)\n            self = .messageChatOwnerChanged(value)\n        case .messageChatHasProtectedContentToggled:\n            let value = try MessageChatHasProtectedContentToggled(from: decoder)\n            self = .messageChatHasProtectedContentToggled(value)\n        case .messageChatHasProtectedContentDisableRequested:\n            let value = try MessageChatHasProtectedContentDisableRequested(from: decoder)\n            self = .messageChatHasProtectedContentDisableRequested(value)\n        case .messageChatAddMembers:\n            let value = try MessageChatAddMembers(from: decoder)\n            self = .messageChatAddMembers(value)\n        case .messageChatJoinByLink:\n            self = .messageChatJoinByLink\n        case .messageChatJoinByRequest:\n            self = .messageChatJoinByRequest\n        case .messageChatDeleteMember:\n            let value = try MessageChatDeleteMember(from: decoder)\n            self = .messageChatDeleteMember(value)\n        case .messageChatUpgradeTo:\n            let value = try MessageChatUpgradeTo(from: decoder)\n            self = .messageChatUpgradeTo(value)\n        case .messageChatUpgradeFrom:\n            let value = try MessageChatUpgradeFrom(from: decoder)\n            self = .messageChatUpgradeFrom(value)\n        case .messagePinMessage:\n            let value = try MessagePinMessage(from: decoder)\n            self = .messagePinMessage(value)\n        case .messageScreenshotTaken:\n            self = .messageScreenshotTaken\n        case .messageChatSetBackground:\n            let value = try MessageChatSetBackground(from: decoder)\n            self = .messageChatSetBackground(value)\n        case .messageChatSetTheme:\n            let value = try MessageChatSetTheme(from: decoder)\n            self = .messageChatSetTheme(value)\n        case .messageChatSetMessageAutoDeleteTime:\n            let value = try MessageChatSetMessageAutoDeleteTime(from: decoder)\n            self = .messageChatSetMessageAutoDeleteTime(value)\n        case .messageChatBoost:\n            let value = try MessageChatBoost(from: decoder)\n            self = .messageChatBoost(value)\n        case .messageForumTopicCreated:\n            let value = try MessageForumTopicCreated(from: decoder)\n            self = .messageForumTopicCreated(value)\n        case .messageForumTopicEdited:\n            let value = try MessageForumTopicEdited(from: decoder)\n            self = .messageForumTopicEdited(value)\n        case .messageForumTopicIsClosedToggled:\n            let value = try MessageForumTopicIsClosedToggled(from: decoder)\n            self = .messageForumTopicIsClosedToggled(value)\n        case .messageForumTopicIsHiddenToggled:\n            let value = try MessageForumTopicIsHiddenToggled(from: decoder)\n            self = .messageForumTopicIsHiddenToggled(value)\n        case .messageSuggestProfilePhoto:\n            let value = try MessageSuggestProfilePhoto(from: decoder)\n            self = .messageSuggestProfilePhoto(value)\n        case .messageSuggestBirthdate:\n            let value = try MessageSuggestBirthdate(from: decoder)\n            self = .messageSuggestBirthdate(value)\n        case .messageCustomServiceAction:\n            let value = try MessageCustomServiceAction(from: decoder)\n            self = .messageCustomServiceAction(value)\n        case .messageGameScore:\n            let value = try MessageGameScore(from: decoder)\n            self = .messageGameScore(value)\n        case .messageManagedBotCreated:\n            let value = try MessageManagedBotCreated(from: decoder)\n            self = .messageManagedBotCreated(value)\n        case .messagePaymentSuccessful:\n            let value = try MessagePaymentSuccessful(from: decoder)\n            self = .messagePaymentSuccessful(value)\n        case .messagePaymentSuccessfulBot:\n            let value = try MessagePaymentSuccessfulBot(from: decoder)\n            self = .messagePaymentSuccessfulBot(value)\n        case .messagePaymentRefunded:\n            let value = try MessagePaymentRefunded(from: decoder)\n            self = .messagePaymentRefunded(value)\n        case .messageGiftedPremium:\n            let value = try MessageGiftedPremium(from: decoder)\n            self = .messageGiftedPremium(value)\n        case .messagePremiumGiftCode:\n            let value = try MessagePremiumGiftCode(from: decoder)\n            self = .messagePremiumGiftCode(value)\n        case .messageGiveawayCreated:\n            let value = try MessageGiveawayCreated(from: decoder)\n            self = .messageGiveawayCreated(value)\n        case .messageGiveaway:\n            let value = try MessageGiveaway(from: decoder)\n            self = .messageGiveaway(value)\n        case .messageGiveawayCompleted:\n            let value = try MessageGiveawayCompleted(from: decoder)\n            self = .messageGiveawayCompleted(value)\n        case .messageGiveawayWinners:\n            let value = try MessageGiveawayWinners(from: decoder)\n            self = .messageGiveawayWinners(value)\n        case .messageGiftedStars:\n            let value = try MessageGiftedStars(from: decoder)\n            self = .messageGiftedStars(value)\n        case .messageGiftedTon:\n            let value = try MessageGiftedTon(from: decoder)\n            self = .messageGiftedTon(value)\n        case .messageGiveawayPrizeStars:\n            let value = try MessageGiveawayPrizeStars(from: decoder)\n            self = .messageGiveawayPrizeStars(value)\n        case .messageGift:\n            let value = try MessageGift(from: decoder)\n            self = .messageGift(value)\n        case .messageUpgradedGift:\n            let value = try MessageUpgradedGift(from: decoder)\n            self = .messageUpgradedGift(value)\n        case .messageRefundedUpgradedGift:\n            let value = try MessageRefundedUpgradedGift(from: decoder)\n            self = .messageRefundedUpgradedGift(value)\n        case .messageUpgradedGiftPurchaseOffer:\n            let value = try MessageUpgradedGiftPurchaseOffer(from: decoder)\n            self = .messageUpgradedGiftPurchaseOffer(value)\n        case .messageUpgradedGiftPurchaseOfferRejected:\n            let value = try MessageUpgradedGiftPurchaseOfferRejected(from: decoder)\n            self = .messageUpgradedGiftPurchaseOfferRejected(value)\n        case .messagePaidMessagesRefunded:\n            let value = try MessagePaidMessagesRefunded(from: decoder)\n            self = .messagePaidMessagesRefunded(value)\n        case .messagePaidMessagePriceChanged:\n            let value = try MessagePaidMessagePriceChanged(from: decoder)\n            self = .messagePaidMessagePriceChanged(value)\n        case .messageDirectMessagePriceChanged:\n            let value = try MessageDirectMessagePriceChanged(from: decoder)\n            self = .messageDirectMessagePriceChanged(value)\n        case .messageChecklistTasksDone:\n            let value = try MessageChecklistTasksDone(from: decoder)\n            self = .messageChecklistTasksDone(value)\n        case .messageChecklistTasksAdded:\n            let value = try MessageChecklistTasksAdded(from: decoder)\n            self = .messageChecklistTasksAdded(value)\n        case .messageSuggestedPostApprovalFailed:\n            let value = try MessageSuggestedPostApprovalFailed(from: decoder)\n            self = .messageSuggestedPostApprovalFailed(value)\n        case .messageSuggestedPostApproved:\n            let value = try MessageSuggestedPostApproved(from: decoder)\n            self = .messageSuggestedPostApproved(value)\n        case .messageSuggestedPostDeclined:\n            let value = try MessageSuggestedPostDeclined(from: decoder)\n            self = .messageSuggestedPostDeclined(value)\n        case .messageSuggestedPostPaid:\n            let value = try MessageSuggestedPostPaid(from: decoder)\n            self = .messageSuggestedPostPaid(value)\n        case .messageSuggestedPostRefunded:\n            let value = try MessageSuggestedPostRefunded(from: decoder)\n            self = .messageSuggestedPostRefunded(value)\n        case .messageContactRegistered:\n            self = .messageContactRegistered\n        case .messageUsersShared:\n            let value = try MessageUsersShared(from: decoder)\n            self = .messageUsersShared(value)\n        case .messageChatShared:\n            let value = try MessageChatShared(from: decoder)\n            self = .messageChatShared(value)\n        case .messageBotWriteAccessAllowed:\n            let value = try MessageBotWriteAccessAllowed(from: decoder)\n            self = .messageBotWriteAccessAllowed(value)\n        case .messageWebAppDataSent:\n            let value = try MessageWebAppDataSent(from: decoder)\n            self = .messageWebAppDataSent(value)\n        case .messageWebAppDataReceived:\n            let value = try MessageWebAppDataReceived(from: decoder)\n            self = .messageWebAppDataReceived(value)\n        case .messagePassportDataSent:\n            let value = try MessagePassportDataSent(from: decoder)\n            self = .messagePassportDataSent(value)\n        case .messagePassportDataReceived:\n            let value = try MessagePassportDataReceived(from: decoder)\n            self = .messagePassportDataReceived(value)\n        case .messageProximityAlertTriggered:\n            let value = try MessageProximityAlertTriggered(from: decoder)\n            self = .messageProximityAlertTriggered(value)\n        case .messageUnsupported:\n            self = .messageUnsupported\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .messageText(let value):\n            try container.encode(Kind.messageText, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageAnimation(let value):\n            try container.encode(Kind.messageAnimation, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageAudio(let value):\n            try container.encode(Kind.messageAudio, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageDocument(let value):\n            try container.encode(Kind.messageDocument, forKey: .type)\n            try value.encode(to: encoder)\n        case .messagePaidMedia(let value):\n            try container.encode(Kind.messagePaidMedia, forKey: .type)\n            try value.encode(to: encoder)\n        case .messagePhoto(let value):\n            try container.encode(Kind.messagePhoto, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageSticker(let value):\n            try container.encode(Kind.messageSticker, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageVideo(let value):\n            try container.encode(Kind.messageVideo, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageVideoNote(let value):\n            try container.encode(Kind.messageVideoNote, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageVoiceNote(let value):\n            try container.encode(Kind.messageVoiceNote, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageExpiredPhoto:\n            try container.encode(Kind.messageExpiredPhoto, forKey: .type)\n        case .messageExpiredVideo:\n            try container.encode(Kind.messageExpiredVideo, forKey: .type)\n        case .messageExpiredVideoNote:\n            try container.encode(Kind.messageExpiredVideoNote, forKey: .type)\n        case .messageExpiredVoiceNote:\n            try container.encode(Kind.messageExpiredVoiceNote, forKey: .type)\n        case .messageLocation(let value):\n            try container.encode(Kind.messageLocation, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageVenue(let value):\n            try container.encode(Kind.messageVenue, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageContact(let value):\n            try container.encode(Kind.messageContact, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageAnimatedEmoji(let value):\n            try container.encode(Kind.messageAnimatedEmoji, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageDice(let value):\n            try container.encode(Kind.messageDice, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageGame(let value):\n            try container.encode(Kind.messageGame, forKey: .type)\n            try value.encode(to: encoder)\n        case .messagePoll(let value):\n            try container.encode(Kind.messagePoll, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageStakeDice(let value):\n            try container.encode(Kind.messageStakeDice, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageStory(let value):\n            try container.encode(Kind.messageStory, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageChecklist(let value):\n            try container.encode(Kind.messageChecklist, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageInvoice(let value):\n            try container.encode(Kind.messageInvoice, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageCall(let value):\n            try container.encode(Kind.messageCall, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageGroupCall(let value):\n            try container.encode(Kind.messageGroupCall, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageVideoChatScheduled(let value):\n            try container.encode(Kind.messageVideoChatScheduled, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageVideoChatStarted(let value):\n            try container.encode(Kind.messageVideoChatStarted, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageVideoChatEnded(let value):\n            try container.encode(Kind.messageVideoChatEnded, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageInviteVideoChatParticipants(let value):\n            try container.encode(Kind.messageInviteVideoChatParticipants, forKey: .type)\n            try value.encode(to: encoder)\n        case .messagePollOptionAdded(let value):\n            try container.encode(Kind.messagePollOptionAdded, forKey: .type)\n            try value.encode(to: encoder)\n        case .messagePollOptionDeleted(let value):\n            try container.encode(Kind.messagePollOptionDeleted, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageBasicGroupChatCreate(let value):\n            try container.encode(Kind.messageBasicGroupChatCreate, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageSupergroupChatCreate(let value):\n            try container.encode(Kind.messageSupergroupChatCreate, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageChatChangeTitle(let value):\n            try container.encode(Kind.messageChatChangeTitle, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageChatChangePhoto(let value):\n            try container.encode(Kind.messageChatChangePhoto, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageChatDeletePhoto:\n            try container.encode(Kind.messageChatDeletePhoto, forKey: .type)\n        case .messageChatOwnerLeft(let value):\n            try container.encode(Kind.messageChatOwnerLeft, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageChatOwnerChanged(let value):\n            try container.encode(Kind.messageChatOwnerChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageChatHasProtectedContentToggled(let value):\n            try container.encode(Kind.messageChatHasProtectedContentToggled, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageChatHasProtectedContentDisableRequested(let value):\n            try container.encode(Kind.messageChatHasProtectedContentDisableRequested, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageChatAddMembers(let value):\n            try container.encode(Kind.messageChatAddMembers, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageChatJoinByLink:\n            try container.encode(Kind.messageChatJoinByLink, forKey: .type)\n        case .messageChatJoinByRequest:\n            try container.encode(Kind.messageChatJoinByRequest, forKey: .type)\n        case .messageChatDeleteMember(let value):\n            try container.encode(Kind.messageChatDeleteMember, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageChatUpgradeTo(let value):\n            try container.encode(Kind.messageChatUpgradeTo, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageChatUpgradeFrom(let value):\n            try container.encode(Kind.messageChatUpgradeFrom, forKey: .type)\n            try value.encode(to: encoder)\n        case .messagePinMessage(let value):\n            try container.encode(Kind.messagePinMessage, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageScreenshotTaken:\n            try container.encode(Kind.messageScreenshotTaken, forKey: .type)\n        case .messageChatSetBackground(let value):\n            try container.encode(Kind.messageChatSetBackground, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageChatSetTheme(let value):\n            try container.encode(Kind.messageChatSetTheme, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageChatSetMessageAutoDeleteTime(let value):\n            try container.encode(Kind.messageChatSetMessageAutoDeleteTime, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageChatBoost(let value):\n            try container.encode(Kind.messageChatBoost, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageForumTopicCreated(let value):\n            try container.encode(Kind.messageForumTopicCreated, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageForumTopicEdited(let value):\n            try container.encode(Kind.messageForumTopicEdited, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageForumTopicIsClosedToggled(let value):\n            try container.encode(Kind.messageForumTopicIsClosedToggled, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageForumTopicIsHiddenToggled(let value):\n            try container.encode(Kind.messageForumTopicIsHiddenToggled, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageSuggestProfilePhoto(let value):\n            try container.encode(Kind.messageSuggestProfilePhoto, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageSuggestBirthdate(let value):\n            try container.encode(Kind.messageSuggestBirthdate, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageCustomServiceAction(let value):\n            try container.encode(Kind.messageCustomServiceAction, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageGameScore(let value):\n            try container.encode(Kind.messageGameScore, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageManagedBotCreated(let value):\n            try container.encode(Kind.messageManagedBotCreated, forKey: .type)\n            try value.encode(to: encoder)\n        case .messagePaymentSuccessful(let value):\n            try container.encode(Kind.messagePaymentSuccessful, forKey: .type)\n            try value.encode(to: encoder)\n        case .messagePaymentSuccessfulBot(let value):\n            try container.encode(Kind.messagePaymentSuccessfulBot, forKey: .type)\n            try value.encode(to: encoder)\n        case .messagePaymentRefunded(let value):\n            try container.encode(Kind.messagePaymentRefunded, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageGiftedPremium(let value):\n            try container.encode(Kind.messageGiftedPremium, forKey: .type)\n            try value.encode(to: encoder)\n        case .messagePremiumGiftCode(let value):\n            try container.encode(Kind.messagePremiumGiftCode, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageGiveawayCreated(let value):\n            try container.encode(Kind.messageGiveawayCreated, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageGiveaway(let value):\n            try container.encode(Kind.messageGiveaway, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageGiveawayCompleted(let value):\n            try container.encode(Kind.messageGiveawayCompleted, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageGiveawayWinners(let value):\n            try container.encode(Kind.messageGiveawayWinners, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageGiftedStars(let value):\n            try container.encode(Kind.messageGiftedStars, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageGiftedTon(let value):\n            try container.encode(Kind.messageGiftedTon, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageGiveawayPrizeStars(let value):\n            try container.encode(Kind.messageGiveawayPrizeStars, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageGift(let value):\n            try container.encode(Kind.messageGift, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageUpgradedGift(let value):\n            try container.encode(Kind.messageUpgradedGift, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageRefundedUpgradedGift(let value):\n            try container.encode(Kind.messageRefundedUpgradedGift, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageUpgradedGiftPurchaseOffer(let value):\n            try container.encode(Kind.messageUpgradedGiftPurchaseOffer, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageUpgradedGiftPurchaseOfferRejected(let value):\n            try container.encode(Kind.messageUpgradedGiftPurchaseOfferRejected, forKey: .type)\n            try value.encode(to: encoder)\n        case .messagePaidMessagesRefunded(let value):\n            try container.encode(Kind.messagePaidMessagesRefunded, forKey: .type)\n            try value.encode(to: encoder)\n        case .messagePaidMessagePriceChanged(let value):\n            try container.encode(Kind.messagePaidMessagePriceChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageDirectMessagePriceChanged(let value):\n            try container.encode(Kind.messageDirectMessagePriceChanged, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageChecklistTasksDone(let value):\n            try container.encode(Kind.messageChecklistTasksDone, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageChecklistTasksAdded(let value):\n            try container.encode(Kind.messageChecklistTasksAdded, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageSuggestedPostApprovalFailed(let value):\n            try container.encode(Kind.messageSuggestedPostApprovalFailed, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageSuggestedPostApproved(let value):\n            try container.encode(Kind.messageSuggestedPostApproved, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageSuggestedPostDeclined(let value):\n            try container.encode(Kind.messageSuggestedPostDeclined, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageSuggestedPostPaid(let value):\n            try container.encode(Kind.messageSuggestedPostPaid, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageSuggestedPostRefunded(let value):\n            try container.encode(Kind.messageSuggestedPostRefunded, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageContactRegistered:\n            try container.encode(Kind.messageContactRegistered, forKey: .type)\n        case .messageUsersShared(let value):\n            try container.encode(Kind.messageUsersShared, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageChatShared(let value):\n            try container.encode(Kind.messageChatShared, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageBotWriteAccessAllowed(let value):\n            try container.encode(Kind.messageBotWriteAccessAllowed, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageWebAppDataSent(let value):\n            try container.encode(Kind.messageWebAppDataSent, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageWebAppDataReceived(let value):\n            try container.encode(Kind.messageWebAppDataReceived, forKey: .type)\n            try value.encode(to: encoder)\n        case .messagePassportDataSent(let value):\n            try container.encode(Kind.messagePassportDataSent, forKey: .type)\n            try value.encode(to: encoder)\n        case .messagePassportDataReceived(let value):\n            try container.encode(Kind.messagePassportDataReceived, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageProximityAlertTriggered(let value):\n            try container.encode(Kind.messageProximityAlertTriggered, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageUnsupported:\n            try container.encode(Kind.messageUnsupported, forKey: .type)\n        }\n    }\n}\n\n/// A text message\npublic struct MessageText: Codable, Equatable, Hashable {\n\n    /// A link preview attached to the message; may be null\n    public let linkPreview: LinkPreview?\n\n    /// Options which were used for generation of the link preview; may be null if default options were used\n    public let linkPreviewOptions: LinkPreviewOptions?\n\n    /// Text of the message\n    public let text: FormattedText\n\n\n    public init(\n        linkPreview: LinkPreview?,\n        linkPreviewOptions: LinkPreviewOptions?,\n        text: FormattedText\n    ) {\n        self.linkPreview = linkPreview\n        self.linkPreviewOptions = linkPreviewOptions\n        self.text = text\n    }\n}\n\n/// An animation message (GIF-style).\npublic struct MessageAnimation: Codable, Equatable, Hashable {\n\n    /// The animation description\n    public let animation: Animation\n\n    /// Animation caption\n    public let caption: FormattedText\n\n    /// True, if the animation preview must be covered by a spoiler animation\n    public let hasSpoiler: Bool\n\n    /// True, if the animation thumbnail must be blurred and the animation must be shown only while tapped\n    public let isSecret: Bool\n\n    /// True, if the caption must be shown above the animation; otherwise, the caption must be shown below the animation\n    public let showCaptionAboveMedia: Bool\n\n\n    public init(\n        animation: Animation,\n        caption: FormattedText,\n        hasSpoiler: Bool,\n        isSecret: Bool,\n        showCaptionAboveMedia: Bool\n    ) {\n        self.animation = animation\n        self.caption = caption\n        self.hasSpoiler = hasSpoiler\n        self.isSecret = isSecret\n        self.showCaptionAboveMedia = showCaptionAboveMedia\n    }\n}\n\n/// An audio message\npublic struct MessageAudio: Codable, Equatable, Hashable {\n\n    /// The audio description\n    public let audio: Audio\n\n    /// Audio caption\n    public let caption: FormattedText\n\n\n    public init(\n        audio: Audio,\n        caption: FormattedText\n    ) {\n        self.audio = audio\n        self.caption = caption\n    }\n}\n\n/// A document message (general file)\npublic struct MessageDocument: Codable, Equatable, Hashable {\n\n    /// Document caption\n    public let caption: FormattedText\n\n    /// The document description\n    public let document: Document\n\n\n    public init(\n        caption: FormattedText,\n        document: Document\n    ) {\n        self.caption = caption\n        self.document = document\n    }\n}\n\n/// A message with paid media\npublic struct MessagePaidMedia: Codable, Equatable, Hashable {\n\n    /// Media caption\n    public let caption: FormattedText\n\n    /// Information about the media\n    public let media: [PaidMedia]\n\n    /// True, if the caption must be shown above the media; otherwise, the caption must be shown below the media\n    public let showCaptionAboveMedia: Bool\n\n    /// Number of Telegram Stars needed to buy access to the media in the message\n    public let starCount: Int64\n\n\n    public init(\n        caption: FormattedText,\n        media: [PaidMedia],\n        showCaptionAboveMedia: Bool,\n        starCount: Int64\n    ) {\n        self.caption = caption\n        self.media = media\n        self.showCaptionAboveMedia = showCaptionAboveMedia\n        self.starCount = starCount\n    }\n}\n\n/// A photo message\npublic struct MessagePhoto: Codable, Equatable, Hashable {\n\n    /// Photo caption\n    public let caption: FormattedText\n\n    /// True, if the photo preview must be covered by a spoiler animation\n    public let hasSpoiler: Bool\n\n    /// True, if the photo must be blurred and must be shown only while tapped\n    public let isSecret: Bool\n\n    /// The photo\n    public let photo: Photo\n\n    /// True, if the caption must be shown above the photo; otherwise, the caption must be shown below the photo\n    public let showCaptionAboveMedia: Bool\n\n    /// The video representing the live photo; may be null if the photo is static\n    public let video: Video?\n\n\n    public init(\n        caption: FormattedText,\n        hasSpoiler: Bool,\n        isSecret: Bool,\n        photo: Photo,\n        showCaptionAboveMedia: Bool,\n        video: Video?\n    ) {\n        self.caption = caption\n        self.hasSpoiler = hasSpoiler\n        self.isSecret = isSecret\n        self.photo = photo\n        self.showCaptionAboveMedia = showCaptionAboveMedia\n        self.video = video\n    }\n}\n\n/// A sticker message\npublic struct MessageSticker: Codable, Equatable, Hashable {\n\n    /// True, if premium animation of the sticker must be played\n    public let isPremium: Bool\n\n    /// The sticker description\n    public let sticker: Sticker\n\n\n    public init(\n        isPremium: Bool,\n        sticker: Sticker\n    ) {\n        self.isPremium = isPremium\n        self.sticker = sticker\n    }\n}\n\n/// A video message\npublic struct MessageVideo: Codable, Equatable, Hashable {\n\n    /// Alternative qualities of the video\n    public let alternativeVideos: [AlternativeVideo]\n\n    /// Video caption\n    public let caption: FormattedText\n\n    /// Cover of the video; may be null if none\n    public let cover: Photo?\n\n    /// True, if the video preview must be covered by a spoiler animation\n    public let hasSpoiler: Bool\n\n    /// True, if the video thumbnail must be blurred and the video must be shown only while tapped\n    public let isSecret: Bool\n\n    /// True, if the caption must be shown above the video; otherwise, the caption must be shown below the video\n    public let showCaptionAboveMedia: Bool\n\n    /// Timestamp from which the video playing must start, in seconds\n    public let startTimestamp: Int\n\n    /// Available storyboards for the video\n    public let storyboards: [VideoStoryboard]\n\n    /// The video description\n    public let video: Video\n\n\n    public init(\n        alternativeVideos: [AlternativeVideo],\n        caption: FormattedText,\n        cover: Photo?,\n        hasSpoiler: Bool,\n        isSecret: Bool,\n        showCaptionAboveMedia: Bool,\n        startTimestamp: Int,\n        storyboards: [VideoStoryboard],\n        video: Video\n    ) {\n        self.alternativeVideos = alternativeVideos\n        self.caption = caption\n        self.cover = cover\n        self.hasSpoiler = hasSpoiler\n        self.isSecret = isSecret\n        self.showCaptionAboveMedia = showCaptionAboveMedia\n        self.startTimestamp = startTimestamp\n        self.storyboards = storyboards\n        self.video = video\n    }\n}\n\n/// A video note message\npublic struct MessageVideoNote: Codable, Equatable, Hashable {\n\n    /// True, if the video note thumbnail must be blurred and the video note must be shown only while tapped\n    public let isSecret: Bool\n\n    /// True, if at least one of the recipients has viewed the video note\n    public let isViewed: Bool\n\n    /// The video note description\n    public let videoNote: VideoNote\n\n\n    public init(\n        isSecret: Bool,\n        isViewed: Bool,\n        videoNote: VideoNote\n    ) {\n        self.isSecret = isSecret\n        self.isViewed = isViewed\n        self.videoNote = videoNote\n    }\n}\n\n/// A voice note message\npublic struct MessageVoiceNote: Codable, Equatable, Hashable {\n\n    /// Voice note caption\n    public let caption: FormattedText\n\n    /// True, if at least one of the recipients has listened to the voice note\n    public let isListened: Bool\n\n    /// The voice note description\n    public let voiceNote: VoiceNote\n\n\n    public init(\n        caption: FormattedText,\n        isListened: Bool,\n        voiceNote: VoiceNote\n    ) {\n        self.caption = caption\n        self.isListened = isListened\n        self.voiceNote = voiceNote\n    }\n}\n\n/// A message with a location\npublic struct MessageLocation: Codable, Equatable, Hashable {\n\n    /// Left time for which the location can be updated, in seconds. If 0, then the location can't be updated anymore. The update updateMessageContent is not sent when this field changes\n    public let expiresIn: Int\n\n    /// For live locations, a direction in which the location moves, in degrees; 1-360. If 0 the direction is unknown\n    public let heading: Int\n\n    /// Time relative to the message send date, for which the location can be updated, in seconds; if 0x7FFFFFFF, then location can be updated forever\n    public let livePeriod: Int\n\n    /// The location description\n    public let location: Location\n\n    /// For live locations, a maximum distance to another chat member for proximity alerts, in meters (0-100000). 0 if the notification is disabled. Available only to the message sender\n    public let proximityAlertRadius: Int\n\n\n    public init(\n        expiresIn: Int,\n        heading: Int,\n        livePeriod: Int,\n        location: Location,\n        proximityAlertRadius: Int\n    ) {\n        self.expiresIn = expiresIn\n        self.heading = heading\n        self.livePeriod = livePeriod\n        self.location = location\n        self.proximityAlertRadius = proximityAlertRadius\n    }\n}\n\n/// A message with information about a venue\npublic struct MessageVenue: Codable, Equatable, Hashable {\n\n    /// The venue description\n    public let venue: Venue\n\n\n    public init(venue: Venue) {\n        self.venue = venue\n    }\n}\n\n/// A message with a user contact\npublic struct MessageContact: Codable, Equatable, Hashable {\n\n    /// The contact description\n    public let contact: Contact\n\n\n    public init(contact: Contact) {\n        self.contact = contact\n    }\n}\n\n/// A message with an animated emoji\npublic struct MessageAnimatedEmoji: Codable, Equatable, Hashable {\n\n    /// The animated emoji\n    public let animatedEmoji: AnimatedEmoji\n\n    /// The corresponding emoji\n    public let emoji: String\n\n\n    public init(\n        animatedEmoji: AnimatedEmoji,\n        emoji: String\n    ) {\n        self.animatedEmoji = animatedEmoji\n        self.emoji = emoji\n    }\n}\n\n/// A dice message. The dice value is randomly generated by the server\npublic struct MessageDice: Codable, Equatable, Hashable {\n\n    /// Emoji on which the dice throw animation is based\n    public let emoji: String\n\n    /// The animated stickers with the final dice animation; may be null if unknown. The update updateMessageContent will be sent when the sticker became known\n    public let finalState: DiceStickers?\n\n    /// The animated stickers with the initial dice animation; may be null if unknown. The update updateMessageContent will be sent when the sticker became known\n    public let initialState: DiceStickers?\n\n    /// Number of frame after which a success animation like a shower of confetti needs to be shown on updateMessageSendSucceeded\n    public let successAnimationFrameNumber: Int\n\n    /// The dice value. If the value is 0, then the dice don't have final state yet\n    public let value: Int\n\n\n    public init(\n        emoji: String,\n        finalState: DiceStickers?,\n        initialState: DiceStickers?,\n        successAnimationFrameNumber: Int,\n        value: Int\n    ) {\n        self.emoji = emoji\n        self.finalState = finalState\n        self.initialState = initialState\n        self.successAnimationFrameNumber = successAnimationFrameNumber\n        self.value = value\n    }\n}\n\n/// A message with a game\npublic struct MessageGame: Codable, Equatable, Hashable {\n\n    /// The game description\n    public let game: Game\n\n\n    public init(game: Game) {\n        self.game = game\n    }\n}\n\n/// A message with a poll\npublic struct MessagePoll: Codable, Equatable, Hashable {\n\n    /// True, if an option can be added to the poll using addPollOption\n    public let canAddOption: Bool\n\n    public let description: FormattedText\n\n    /// Media attached to the poll; may be null if none. If present, currently, can be only of the types messageAnimation, messageAudio, messageDocument, messageLocation, messagePhoto, messageVenue, or messageVideo without caption\n    public let media: MessageContent?\n\n    /// Information about the poll\n    public let poll: Poll\n\n\n    public init(\n        canAddOption: Bool,\n        description: FormattedText,\n        media: MessageContent?,\n        poll: Poll\n    ) {\n        self.canAddOption = canAddOption\n        self.description = description\n        self.media = media\n        self.poll = poll\n    }\n}\n\n/// A stake dice message. The dice value is randomly generated by the server\npublic struct MessageStakeDice: Codable, Equatable, Hashable {\n\n    /// The animated stickers with the final dice animation; may be null if unknown. The update updateMessageContent will be sent when the sticker became known\n    public let finalState: DiceStickers?\n\n    /// The animated stickers with the initial dice animation; may be null if unknown. The update updateMessageContent will be sent when the sticker became known\n    public let initialState: DiceStickers?\n\n    /// The Toncoin amount that was gained from the roll; in the smallest units of the currency; -1 if the dice don't have final state yet\n    public let prizeToncoinAmount: Int64\n\n    /// The Toncoin amount that was staked; in the smallest units of the currency\n    public let stakeToncoinAmount: Int64\n\n    /// The dice value. If the value is 0, then the dice don't have final state yet\n    public let value: Int\n\n\n    public init(\n        finalState: DiceStickers?,\n        initialState: DiceStickers?,\n        prizeToncoinAmount: Int64,\n        stakeToncoinAmount: Int64,\n        value: Int\n    ) {\n        self.finalState = finalState\n        self.initialState = initialState\n        self.prizeToncoinAmount = prizeToncoinAmount\n        self.stakeToncoinAmount = stakeToncoinAmount\n        self.value = value\n    }\n}\n\n/// A message with a forwarded story\npublic struct MessageStory: Codable, Equatable, Hashable {\n\n    /// Story identifier\n    public let storyId: Int\n\n    /// Identifier of the chat that posted the story\n    public let storyPosterChatId: Int64\n\n    /// True, if the story was automatically forwarded because of a mention of the user\n    public let viaMention: Bool\n\n\n    public init(\n        storyId: Int,\n        storyPosterChatId: Int64,\n        viaMention: Bool\n    ) {\n        self.storyId = storyId\n        self.storyPosterChatId = storyPosterChatId\n        self.viaMention = viaMention\n    }\n}\n\n/// A message with a checklist\npublic struct MessageChecklist: Codable, Equatable, Hashable {\n\n    /// The checklist description\n    public let list: Checklist\n\n\n    public init(list: Checklist) {\n        self.list = list\n    }\n}\n\n/// A message with an invoice from a bot. Use getInternalLink with internalLinkTypeBotStart to share the invoice\npublic struct MessageInvoice: Codable, Equatable, Hashable {\n\n    /// Currency for the product price\n    public let currency: String\n\n    /// True, if the invoice is a test invoice\n    public let isTest: Bool\n\n    /// True, if the shipping address must be specified\n    public let needShippingAddress: Bool\n\n    /// Extended media attached to the invoice; may be null if none\n    public let paidMedia: PaidMedia?\n\n    /// Extended media caption; may be null if none\n    public let paidMediaCaption: FormattedText?\n\n    /// Information about the product\n    public let productInfo: ProductInfo\n\n    /// The identifier of the message with the receipt, after the product has been purchased\n    public let receiptMessageId: Int64\n\n    /// Unique invoice bot start_parameter to be passed to getInternalLink\n    public let startParameter: String\n\n    /// Product total price in the smallest units of the currency\n    public let totalAmount: Int64\n\n\n    public init(\n        currency: String,\n        isTest: Bool,\n        needShippingAddress: Bool,\n        paidMedia: PaidMedia?,\n        paidMediaCaption: FormattedText?,\n        productInfo: ProductInfo,\n        receiptMessageId: Int64,\n        startParameter: String,\n        totalAmount: Int64\n    ) {\n        self.currency = currency\n        self.isTest = isTest\n        self.needShippingAddress = needShippingAddress\n        self.paidMedia = paidMedia\n        self.paidMediaCaption = paidMediaCaption\n        self.productInfo = productInfo\n        self.receiptMessageId = receiptMessageId\n        self.startParameter = startParameter\n        self.totalAmount = totalAmount\n    }\n}\n\n/// A message with information about an ended call\npublic struct MessageCall: Codable, Equatable, Hashable {\n\n    /// Reason why the call was discarded\n    public let discardReason: CallDiscardReason\n\n    /// Call duration, in seconds\n    public let duration: Int\n\n    /// True, if the call was a video call\n    public let isVideo: Bool\n\n    /// Persistent unique call identifier; 0 for calls from other devices, which can't be passed as inputCallFromMessage\n    public let uniqueId: TdInt64\n\n\n    public init(\n        discardReason: CallDiscardReason,\n        duration: Int,\n        isVideo: Bool,\n        uniqueId: TdInt64\n    ) {\n        self.discardReason = discardReason\n        self.duration = duration\n        self.isVideo = isVideo\n        self.uniqueId = uniqueId\n    }\n}\n\n/// A message with information about a group call not bound to a chat. If the message is incoming, the call isn't active, isn't missed, and has no duration, and getOption(\"can_accept_calls\") is true, then incoming call screen must be shown to the user. Use getGroupCallParticipants to show current group call participants on the screen. Use joinGroupCall to accept the call or declineGroupCallInvitation to decline it. If the call become active or missed, then the call screen must be hidden\npublic struct MessageGroupCall: Codable, Equatable, Hashable {\n\n    /// Call duration, in seconds; for left calls only\n    public let duration: Int\n\n    /// True, if the call is active, i.e. the called user joined the call\n    public let isActive: Bool\n\n    /// True, if the call is a video call\n    public let isVideo: Bool\n\n    /// Identifiers of some other call participants\n    public let otherParticipantIds: [MessageSender]\n\n    /// Persistent unique group call identifier\n    public let uniqueId: TdInt64\n\n    /// True, if the called user missed or declined the call\n    public let wasMissed: Bool\n\n\n    public init(\n        duration: Int,\n        isActive: Bool,\n        isVideo: Bool,\n        otherParticipantIds: [MessageSender],\n        uniqueId: TdInt64,\n        wasMissed: Bool\n    ) {\n        self.duration = duration\n        self.isActive = isActive\n        self.isVideo = isVideo\n        self.otherParticipantIds = otherParticipantIds\n        self.uniqueId = uniqueId\n        self.wasMissed = wasMissed\n    }\n}\n\n/// A new video chat was scheduled\npublic struct MessageVideoChatScheduled: Codable, Equatable, Hashable {\n\n    /// Identifier of the video chat. The video chat can be received through the method getGroupCall\n    public let groupCallId: Int\n\n    /// Point in time (Unix timestamp) when the group call is expected to be started by an administrator\n    public let startDate: Int\n\n\n    public init(\n        groupCallId: Int,\n        startDate: Int\n    ) {\n        self.groupCallId = groupCallId\n        self.startDate = startDate\n    }\n}\n\n/// A newly created video chat\npublic struct MessageVideoChatStarted: Codable, Equatable, Hashable {\n\n    /// Identifier of the video chat. The video chat can be received through the method getGroupCall\n    public let groupCallId: Int\n\n\n    public init(groupCallId: Int) {\n        self.groupCallId = groupCallId\n    }\n}\n\n/// A message with information about an ended video chat\npublic struct MessageVideoChatEnded: Codable, Equatable, Hashable {\n\n    /// Call duration, in seconds\n    public let duration: Int\n\n\n    public init(duration: Int) {\n        self.duration = duration\n    }\n}\n\n/// A message with information about an invitation to a video chat\npublic struct MessageInviteVideoChatParticipants: Codable, Equatable, Hashable {\n\n    /// Identifier of the video chat. The video chat can be received through the method getGroupCall\n    public let groupCallId: Int\n\n    /// Invited user identifiers\n    public let userIds: [Int64]\n\n\n    public init(\n        groupCallId: Int,\n        userIds: [Int64]\n    ) {\n        self.groupCallId = groupCallId\n        self.userIds = userIds\n    }\n}\n\n/// A message with information about an added poll option\npublic struct MessagePollOptionAdded: Codable, Equatable, Hashable {\n\n    /// Identifier of the added option in the poll\n    public let optionId: String\n\n    /// Identifier of the message with the poll; can be an identifier of a deleted message or 0\n    public let pollMessageId: Int64\n\n    /// Text of the option; 1-100 characters; may contain only custom emoji entities\n    public let text: FormattedText\n\n\n    public init(\n        optionId: String,\n        pollMessageId: Int64,\n        text: FormattedText\n    ) {\n        self.optionId = optionId\n        self.pollMessageId = pollMessageId\n        self.text = text\n    }\n}\n\n/// A message with information about a deleted poll option\npublic struct MessagePollOptionDeleted: Codable, Equatable, Hashable {\n\n    /// Identifier of the deleted option in the poll\n    public let optionId: String\n\n    /// Identifier of the message with the poll; can be an identifier of a deleted message or 0\n    public let pollMessageId: Int64\n\n    /// Text of the option; 1-100 characters; may contain only custom emoji entities\n    public let text: FormattedText\n\n\n    public init(\n        optionId: String,\n        pollMessageId: Int64,\n        text: FormattedText\n    ) {\n        self.optionId = optionId\n        self.pollMessageId = pollMessageId\n        self.text = text\n    }\n}\n\n/// A newly created basic group\npublic struct MessageBasicGroupChatCreate: Codable, Equatable, Hashable {\n\n    /// User identifiers of members in the basic group\n    public let memberUserIds: [Int64]\n\n    /// Title of the basic group\n    public let title: String\n\n\n    public init(\n        memberUserIds: [Int64],\n        title: String\n    ) {\n        self.memberUserIds = memberUserIds\n        self.title = title\n    }\n}\n\n/// A newly created supergroup or channel\npublic struct MessageSupergroupChatCreate: Codable, Equatable, Hashable {\n\n    /// Title of the supergroup or channel\n    public let title: String\n\n\n    public init(title: String) {\n        self.title = title\n    }\n}\n\n/// An updated chat title\npublic struct MessageChatChangeTitle: Codable, Equatable, Hashable {\n\n    /// New chat title\n    public let title: String\n\n\n    public init(title: String) {\n        self.title = title\n    }\n}\n\n/// An updated chat photo\npublic struct MessageChatChangePhoto: Codable, Equatable, Hashable {\n\n    /// New chat photo\n    public let photo: ChatPhoto\n\n\n    public init(photo: ChatPhoto) {\n        self.photo = photo\n    }\n}\n\n/// The owner of the chat has left\npublic struct MessageChatOwnerLeft: Codable, Equatable, Hashable {\n\n    /// Identifier of the user who will become the new owner of the chat if the previous owner isn't return; 0 if none\n    public let newOwnerUserId: Int64\n\n\n    public init(newOwnerUserId: Int64) {\n        self.newOwnerUserId = newOwnerUserId\n    }\n}\n\n/// The owner of the chat has changed\npublic struct MessageChatOwnerChanged: Codable, Equatable, Hashable {\n\n    /// Identifier of the user who is the new owner of the chat\n    public let newOwnerUserId: Int64\n\n\n    public init(newOwnerUserId: Int64) {\n        self.newOwnerUserId = newOwnerUserId\n    }\n}\n\n/// Chat has_protected_content setting was changed or request to change it was rejected\npublic struct MessageChatHasProtectedContentToggled: Codable, Equatable, Hashable {\n\n    /// New value of the setting\n    public let newHasProtectedContent: Bool\n\n    /// Previous value of the setting\n    public let oldHasProtectedContent: Bool\n\n    /// Identifier of the message with the request to change the setting; can be an identifier of a deleted message or 0\n    public let requestMessageId: Int64\n\n\n    public init(\n        newHasProtectedContent: Bool,\n        oldHasProtectedContent: Bool,\n        requestMessageId: Int64\n    ) {\n        self.newHasProtectedContent = newHasProtectedContent\n        self.oldHasProtectedContent = oldHasProtectedContent\n        self.requestMessageId = requestMessageId\n    }\n}\n\n/// Chat has_protected_content setting was requested to be disabled\npublic struct MessageChatHasProtectedContentDisableRequested: Codable, Equatable, Hashable {\n\n    /// True, if the request has expired\n    public let isExpired: Bool\n\n\n    public init(isExpired: Bool) {\n        self.isExpired = isExpired\n    }\n}\n\n/// New chat members were added\npublic struct MessageChatAddMembers: Codable, Equatable, Hashable {\n\n    /// User identifiers of the new members\n    public let memberUserIds: [Int64]\n\n\n    public init(memberUserIds: [Int64]) {\n        self.memberUserIds = memberUserIds\n    }\n}\n\n/// A chat member was deleted\npublic struct MessageChatDeleteMember: Codable, Equatable, Hashable {\n\n    /// User identifier of the deleted chat member\n    public let userId: Int64\n\n\n    public init(userId: Int64) {\n        self.userId = userId\n    }\n}\n\n/// A basic group was upgraded to a supergroup and was deactivated as the result\npublic struct MessageChatUpgradeTo: Codable, Equatable, Hashable {\n\n    /// Identifier of the supergroup to which the basic group was upgraded\n    public let supergroupId: Int64\n\n\n    public init(supergroupId: Int64) {\n        self.supergroupId = supergroupId\n    }\n}\n\n/// A supergroup has been created from a basic group\npublic struct MessageChatUpgradeFrom: Codable, Equatable, Hashable {\n\n    /// The identifier of the original basic group\n    public let basicGroupId: Int64\n\n    /// Title of the newly created supergroup\n    public let title: String\n\n\n    public init(\n        basicGroupId: Int64,\n        title: String\n    ) {\n        self.basicGroupId = basicGroupId\n        self.title = title\n    }\n}\n\n/// A message has been pinned\npublic struct MessagePinMessage: Codable, Equatable, Hashable {\n\n    /// Identifier of the pinned message, can be an identifier of a deleted message or 0\n    public let messageId: Int64\n\n\n    public init(messageId: Int64) {\n        self.messageId = messageId\n    }\n}\n\n/// A new background was set in the chat\npublic struct MessageChatSetBackground: Codable, Equatable, Hashable {\n\n    /// The new background\n    public let background: ChatBackground\n\n    /// Identifier of the message with a previously set same background; 0 if none. Can be an identifier of a deleted message\n    public let oldBackgroundMessageId: Int64\n\n    /// True, if the background was set only for self\n    public let onlyForSelf: Bool\n\n\n    public init(\n        background: ChatBackground,\n        oldBackgroundMessageId: Int64,\n        onlyForSelf: Bool\n    ) {\n        self.background = background\n        self.oldBackgroundMessageId = oldBackgroundMessageId\n        self.onlyForSelf = onlyForSelf\n    }\n}\n\n/// A theme in the chat has been changed\npublic struct MessageChatSetTheme: Codable, Equatable, Hashable {\n\n    /// New theme for the chat; may be null if chat theme was reset to the default one\n    public let theme: ChatTheme?\n\n\n    public init(theme: ChatTheme?) {\n        self.theme = theme\n    }\n}\n\n/// The auto-delete or self-destruct timer for messages in the chat has been changed\npublic struct MessageChatSetMessageAutoDeleteTime: Codable, Equatable, Hashable {\n\n    /// If not 0, a user identifier, which default setting was automatically applied\n    public let fromUserId: Int64\n\n    /// New value auto-delete or self-destruct time, in seconds; 0 if disabled\n    public let messageAutoDeleteTime: Int\n\n\n    public init(\n        fromUserId: Int64,\n        messageAutoDeleteTime: Int\n    ) {\n        self.fromUserId = fromUserId\n        self.messageAutoDeleteTime = messageAutoDeleteTime\n    }\n}\n\n/// The chat was boosted by the sender of the message\npublic struct MessageChatBoost: Codable, Equatable, Hashable {\n\n    /// Number of times the chat was boosted\n    public let boostCount: Int\n\n\n    public init(boostCount: Int) {\n        self.boostCount = boostCount\n    }\n}\n\n/// A forum topic has been created\npublic struct MessageForumTopicCreated: Codable, Equatable, Hashable {\n\n    /// Icon of the topic\n    public let icon: ForumTopicIcon\n\n    /// True, if the name of the topic wasn't added explicitly\n    public let isNameImplicit: Bool\n\n    /// Name of the topic\n    public let name: String\n\n\n    public init(\n        icon: ForumTopicIcon,\n        isNameImplicit: Bool,\n        name: String\n    ) {\n        self.icon = icon\n        self.isNameImplicit = isNameImplicit\n        self.name = name\n    }\n}\n\n/// A forum topic has been edited\npublic struct MessageForumTopicEdited: Codable, Equatable, Hashable {\n\n    /// True, if icon's custom_emoji_id is changed\n    public let editIconCustomEmojiId: Bool\n\n    /// New unique identifier of the custom emoji shown on the topic icon; 0 if none. Must be ignored if edit_icon_custom_emoji_id is false\n    public let iconCustomEmojiId: TdInt64\n\n    /// If non-empty, the new name of the topic\n    public let name: String\n\n\n    public init(\n        editIconCustomEmojiId: Bool,\n        iconCustomEmojiId: TdInt64,\n        name: String\n    ) {\n        self.editIconCustomEmojiId = editIconCustomEmojiId\n        self.iconCustomEmojiId = iconCustomEmojiId\n        self.name = name\n    }\n}\n\n/// A forum topic has been closed or opened\npublic struct MessageForumTopicIsClosedToggled: Codable, Equatable, Hashable {\n\n    /// True, if the topic was closed; otherwise, the topic was reopened\n    public let isClosed: Bool\n\n\n    public init(isClosed: Bool) {\n        self.isClosed = isClosed\n    }\n}\n\n/// A General forum topic has been hidden or unhidden\npublic struct MessageForumTopicIsHiddenToggled: Codable, Equatable, Hashable {\n\n    /// True, if the topic was hidden; otherwise, the topic was unhidden\n    public let isHidden: Bool\n\n\n    public init(isHidden: Bool) {\n        self.isHidden = isHidden\n    }\n}\n\n/// A profile photo was suggested to a user in a private chat\npublic struct MessageSuggestProfilePhoto: Codable, Equatable, Hashable {\n\n    /// The suggested chat photo. Use the method setProfilePhoto with inputChatPhotoPrevious to apply the photo\n    public let photo: ChatPhoto\n\n\n    public init(photo: ChatPhoto) {\n        self.photo = photo\n    }\n}\n\n/// A birthdate was suggested to be set\npublic struct MessageSuggestBirthdate: Codable, Equatable, Hashable {\n\n    /// The suggested birthdate. Use the method setBirthdate to apply the birthdate\n    public let birthdate: Birthdate\n\n\n    public init(birthdate: Birthdate) {\n        self.birthdate = birthdate\n    }\n}\n\n/// A non-standard action has happened in the chat\npublic struct MessageCustomServiceAction: Codable, Equatable, Hashable {\n\n    /// Message text to be shown in the chat\n    public let text: String\n\n\n    public init(text: String) {\n        self.text = text\n    }\n}\n\n/// A new high score was achieved in a game\npublic struct MessageGameScore: Codable, Equatable, Hashable {\n\n    /// Identifier of the game; may be different from the games presented in the message with the game\n    public let gameId: TdInt64\n\n    /// Identifier of the message with the game, can be an identifier of a deleted message\n    public let gameMessageId: Int64\n\n    /// New score\n    public let score: Int\n\n\n    public init(\n        gameId: TdInt64,\n        gameMessageId: Int64,\n        score: Int\n    ) {\n        self.gameId = gameId\n        self.gameMessageId = gameMessageId\n        self.score = score\n    }\n}\n\n/// A bot managed by another bot was created by the user\npublic struct MessageManagedBotCreated: Codable, Equatable, Hashable {\n\n    /// User identifier of the created bot\n    public let botUserId: Int64\n\n\n    public init(botUserId: Int64) {\n        self.botUserId = botUserId\n    }\n}\n\n/// A payment has been sent to a bot or a business account\npublic struct MessagePaymentSuccessful: Codable, Equatable, Hashable {\n\n    /// Currency for the price of the product\n    public let currency: String\n\n    /// Identifier of the chat, containing the corresponding invoice message\n    public let invoiceChatId: Int64\n\n    /// Identifier of the message with the corresponding invoice; may be 0 or an identifier of a deleted message\n    public let invoiceMessageId: Int64\n\n    /// Name of the invoice; may be empty if unknown\n    public let invoiceName: String\n\n    /// True, if this is the first recurring payment\n    public let isFirstRecurring: Bool\n\n    /// True, if this is a recurring payment\n    public let isRecurring: Bool\n\n    /// Point in time (Unix timestamp) when the subscription will expire; 0 if unknown or the payment isn't recurring\n    public let subscriptionUntilDate: Int\n\n    /// Total price for the product, in the smallest units of the currency\n    public let totalAmount: Int64\n\n\n    public init(\n        currency: String,\n        invoiceChatId: Int64,\n        invoiceMessageId: Int64,\n        invoiceName: String,\n        isFirstRecurring: Bool,\n        isRecurring: Bool,\n        subscriptionUntilDate: Int,\n        totalAmount: Int64\n    ) {\n        self.currency = currency\n        self.invoiceChatId = invoiceChatId\n        self.invoiceMessageId = invoiceMessageId\n        self.invoiceName = invoiceName\n        self.isFirstRecurring = isFirstRecurring\n        self.isRecurring = isRecurring\n        self.subscriptionUntilDate = subscriptionUntilDate\n        self.totalAmount = totalAmount\n    }\n}\n\n/// A payment has been received by the bot or the business account\npublic struct MessagePaymentSuccessfulBot: Codable, Equatable, Hashable {\n\n    /// Currency for price of the product\n    public let currency: String\n\n    /// Invoice payload\n    public let invoicePayload: Data\n\n    /// True, if this is the first recurring payment\n    public let isFirstRecurring: Bool\n\n    /// True, if this is a recurring payment\n    public let isRecurring: Bool\n\n    /// Information about the order; may be null; for bots only\n    public let orderInfo: OrderInfo?\n\n    /// Provider payment identifier\n    public let providerPaymentChargeId: String\n\n    /// Identifier of the shipping option chosen by the user; may be empty if not applicable; for bots only\n    public let shippingOptionId: String\n\n    /// Point in time (Unix timestamp) when the subscription will expire; 0 if unknown or the payment isn't recurring\n    public let subscriptionUntilDate: Int\n\n    /// Telegram payment identifier\n    public let telegramPaymentChargeId: String\n\n    /// Total price for the product, in the smallest units of the currency\n    public let totalAmount: Int64\n\n\n    public init(\n        currency: String,\n        invoicePayload: Data,\n        isFirstRecurring: Bool,\n        isRecurring: Bool,\n        orderInfo: OrderInfo?,\n        providerPaymentChargeId: String,\n        shippingOptionId: String,\n        subscriptionUntilDate: Int,\n        telegramPaymentChargeId: String,\n        totalAmount: Int64\n    ) {\n        self.currency = currency\n        self.invoicePayload = invoicePayload\n        self.isFirstRecurring = isFirstRecurring\n        self.isRecurring = isRecurring\n        self.orderInfo = orderInfo\n        self.providerPaymentChargeId = providerPaymentChargeId\n        self.shippingOptionId = shippingOptionId\n        self.subscriptionUntilDate = subscriptionUntilDate\n        self.telegramPaymentChargeId = telegramPaymentChargeId\n        self.totalAmount = totalAmount\n    }\n}\n\n/// A payment has been refunded\npublic struct MessagePaymentRefunded: Codable, Equatable, Hashable {\n\n    /// Currency for the price of the product\n    public let currency: String\n\n    /// Invoice payload; only for bots\n    public let invoicePayload: Data\n\n    /// Identifier of the previous owner of the Telegram Stars that refunds them\n    public let ownerId: MessageSender\n\n    /// Provider payment identifier\n    public let providerPaymentChargeId: String\n\n    /// Telegram payment identifier\n    public let telegramPaymentChargeId: String\n\n    /// Total price for the product, in the smallest units of the currency\n    public let totalAmount: Int64\n\n\n    public init(\n        currency: String,\n        invoicePayload: Data,\n        ownerId: MessageSender,\n        providerPaymentChargeId: String,\n        telegramPaymentChargeId: String,\n        totalAmount: Int64\n    ) {\n        self.currency = currency\n        self.invoicePayload = invoicePayload\n        self.ownerId = ownerId\n        self.providerPaymentChargeId = providerPaymentChargeId\n        self.telegramPaymentChargeId = telegramPaymentChargeId\n        self.totalAmount = totalAmount\n    }\n}\n\n/// Telegram Premium was gifted to a user\npublic struct MessageGiftedPremium: Codable, Equatable, Hashable {\n\n    /// The paid amount, in the smallest units of the currency\n    public let amount: Int64\n\n    /// Cryptocurrency used to pay for the gift; may be empty if none\n    public let cryptocurrency: String\n\n    /// The paid amount, in the smallest units of the cryptocurrency; 0 if none\n    public let cryptocurrencyAmount: TdInt64\n\n    /// Currency for the paid amount\n    public let currency: String\n\n    /// Number of days the Telegram Premium subscription will be active\n    public let dayCount: Int\n\n    /// The identifier of a user who gifted Telegram Premium; 0 if the gift was anonymous or is outgoing\n    public let gifterUserId: Int64\n\n    /// Number of months the Telegram Premium subscription will be active after code activation; 0 if the number of months isn't integer\n    public let monthCount: Int\n\n    /// The identifier of a user who received Telegram Premium; 0 if the gift is incoming\n    public let receiverUserId: Int64\n\n    /// A sticker to be shown in the message; may be null if unknown\n    public let sticker: Sticker?\n\n    /// Message added to the gifted Telegram Premium by the sender\n    public let text: FormattedText\n\n\n    public init(\n        amount: Int64,\n        cryptocurrency: String,\n        cryptocurrencyAmount: TdInt64,\n        currency: String,\n        dayCount: Int,\n        gifterUserId: Int64,\n        monthCount: Int,\n        receiverUserId: Int64,\n        sticker: Sticker?,\n        text: FormattedText\n    ) {\n        self.amount = amount\n        self.cryptocurrency = cryptocurrency\n        self.cryptocurrencyAmount = cryptocurrencyAmount\n        self.currency = currency\n        self.dayCount = dayCount\n        self.gifterUserId = gifterUserId\n        self.monthCount = monthCount\n        self.receiverUserId = receiverUserId\n        self.sticker = sticker\n        self.text = text\n    }\n}\n\n/// A Telegram Premium gift code was created for the user\npublic struct MessagePremiumGiftCode: Codable, Equatable, Hashable {\n\n    /// The paid amount, in the smallest units of the currency; 0 if unknown\n    public let amount: Int64\n\n    /// The gift code\n    public let code: String\n\n    /// Identifier of a chat or a user who created the gift code; may be null if unknown\n    public let creatorId: MessageSender?\n\n    /// Cryptocurrency used to pay for the gift; may be empty if none or unknown\n    public let cryptocurrency: String\n\n    /// The paid amount, in the smallest units of the cryptocurrency; 0 if unknown\n    public let cryptocurrencyAmount: TdInt64\n\n    /// Currency for the paid amount; empty if unknown\n    public let currency: String\n\n    /// Number of days the Telegram Premium subscription will be active after code activation\n    public let dayCount: Int\n\n    /// True, if the gift code was created for a giveaway\n    public let isFromGiveaway: Bool\n\n    /// True, if the winner for the corresponding Telegram Premium subscription wasn't chosen\n    public let isUnclaimed: Bool\n\n    /// Number of months the Telegram Premium subscription will be active after code activation; 0 if the number of months isn't integer\n    public let monthCount: Int\n\n    /// A sticker to be shown in the message; may be null if unknown\n    public let sticker: Sticker?\n\n    /// Message added to the gift\n    public let text: FormattedText\n\n\n    public init(\n        amount: Int64,\n        code: String,\n        creatorId: MessageSender?,\n        cryptocurrency: String,\n        cryptocurrencyAmount: TdInt64,\n        currency: String,\n        dayCount: Int,\n        isFromGiveaway: Bool,\n        isUnclaimed: Bool,\n        monthCount: Int,\n        sticker: Sticker?,\n        text: FormattedText\n    ) {\n        self.amount = amount\n        self.code = code\n        self.creatorId = creatorId\n        self.cryptocurrency = cryptocurrency\n        self.cryptocurrencyAmount = cryptocurrencyAmount\n        self.currency = currency\n        self.dayCount = dayCount\n        self.isFromGiveaway = isFromGiveaway\n        self.isUnclaimed = isUnclaimed\n        self.monthCount = monthCount\n        self.sticker = sticker\n        self.text = text\n    }\n}\n\n/// A giveaway was created for the chat. Use telegramPaymentPurposePremiumGiveaway, storePaymentPurposePremiumGiveaway, telegramPaymentPurposeStarGiveaway, or storePaymentPurposeStarGiveaway to create a giveaway\npublic struct MessageGiveawayCreated: Codable, Equatable, Hashable {\n\n    /// Number of Telegram Stars that will be shared by winners of the giveaway; 0 for Telegram Premium giveaways\n    public let starCount: Int64\n\n\n    public init(starCount: Int64) {\n        self.starCount = starCount\n    }\n}\n\n/// A giveaway\npublic struct MessageGiveaway: Codable, Equatable, Hashable {\n\n    /// Giveaway parameters\n    public let parameters: GiveawayParameters\n\n    /// Prize of the giveaway\n    public let prize: GiveawayPrize\n\n    /// A sticker to be shown in the message; may be null if unknown\n    public let sticker: Sticker?\n\n    /// Number of users which will receive Telegram Premium subscription gift codes\n    public let winnerCount: Int\n\n\n    public init(\n        parameters: GiveawayParameters,\n        prize: GiveawayPrize,\n        sticker: Sticker?,\n        winnerCount: Int\n    ) {\n        self.parameters = parameters\n        self.prize = prize\n        self.sticker = sticker\n        self.winnerCount = winnerCount\n    }\n}\n\n/// A giveaway without public winners has been completed for the chat\npublic struct MessageGiveawayCompleted: Codable, Equatable, Hashable {\n\n    /// Identifier of the message with the giveaway; may be 0 or an identifier of a deleted message\n    public let giveawayMessageId: Int64\n\n    /// True, if the giveaway is a Telegram Star giveaway\n    public let isStarGiveaway: Bool\n\n    /// Number of undistributed prizes; for Telegram Premium giveaways only\n    public let unclaimedPrizeCount: Int\n\n    /// Number of winners in the giveaway\n    public let winnerCount: Int\n\n\n    public init(\n        giveawayMessageId: Int64,\n        isStarGiveaway: Bool,\n        unclaimedPrizeCount: Int,\n        winnerCount: Int\n    ) {\n        self.giveawayMessageId = giveawayMessageId\n        self.isStarGiveaway = isStarGiveaway\n        self.unclaimedPrizeCount = unclaimedPrizeCount\n        self.winnerCount = winnerCount\n    }\n}\n\n/// A giveaway with public winners has been completed for the chat\npublic struct MessageGiveawayWinners: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the winners were selected. May be bigger than winners selection date specified in parameters of the giveaway\n    public let actualWinnersSelectionDate: Int\n\n    /// Number of other chats that participated in the giveaway\n    public let additionalChatCount: Int\n\n    /// Identifier of the supergroup or channel chat, which was automatically boosted by the winners of the giveaway\n    public let boostedChatId: Int64\n\n    /// Identifier of the message with the giveaway in the boosted chat\n    public let giveawayMessageId: Int64\n\n    /// True, if only new members of the chats were eligible for the giveaway\n    public let onlyNewMembers: Bool\n\n    /// Prize of the giveaway\n    public let prize: GiveawayPrize\n\n    /// Additional description of the giveaway prize\n    public let prizeDescription: String\n\n    /// Number of undistributed prizes; for Telegram Premium giveaways only\n    public let unclaimedPrizeCount: Int\n\n    /// True, if the giveaway was canceled and was fully refunded\n    public let wasRefunded: Bool\n\n    /// Total number of winners in the giveaway\n    public let winnerCount: Int\n\n    /// Up to 100 user identifiers of the winners of the giveaway\n    public let winnerUserIds: [Int64]\n\n\n    public init(\n        actualWinnersSelectionDate: Int,\n        additionalChatCount: Int,\n        boostedChatId: Int64,\n        giveawayMessageId: Int64,\n        onlyNewMembers: Bool,\n        prize: GiveawayPrize,\n        prizeDescription: String,\n        unclaimedPrizeCount: Int,\n        wasRefunded: Bool,\n        winnerCount: Int,\n        winnerUserIds: [Int64]\n    ) {\n        self.actualWinnersSelectionDate = actualWinnersSelectionDate\n        self.additionalChatCount = additionalChatCount\n        self.boostedChatId = boostedChatId\n        self.giveawayMessageId = giveawayMessageId\n        self.onlyNewMembers = onlyNewMembers\n        self.prize = prize\n        self.prizeDescription = prizeDescription\n        self.unclaimedPrizeCount = unclaimedPrizeCount\n        self.wasRefunded = wasRefunded\n        self.winnerCount = winnerCount\n        self.winnerUserIds = winnerUserIds\n    }\n}\n\n/// Telegram Stars were gifted to a user\npublic struct MessageGiftedStars: Codable, Equatable, Hashable {\n\n    /// The paid amount, in the smallest units of the currency\n    public let amount: Int64\n\n    /// Cryptocurrency used to pay for the gift; may be empty if none\n    public let cryptocurrency: String\n\n    /// The paid amount, in the smallest units of the cryptocurrency; 0 if none\n    public let cryptocurrencyAmount: TdInt64\n\n    /// Currency for the paid amount\n    public let currency: String\n\n    /// The identifier of a user who gifted Telegram Stars; 0 if the gift was anonymous or is outgoing\n    public let gifterUserId: Int64\n\n    /// The identifier of a user who received Telegram Stars; 0 if the gift is incoming\n    public let receiverUserId: Int64\n\n    /// Number of Telegram Stars that were gifted\n    public let starCount: Int64\n\n    /// A sticker to be shown in the message; may be null if unknown\n    public let sticker: Sticker?\n\n    /// Identifier of the transaction for Telegram Stars purchase; for receiver only\n    public let transactionId: String\n\n\n    public init(\n        amount: Int64,\n        cryptocurrency: String,\n        cryptocurrencyAmount: TdInt64,\n        currency: String,\n        gifterUserId: Int64,\n        receiverUserId: Int64,\n        starCount: Int64,\n        sticker: Sticker?,\n        transactionId: String\n    ) {\n        self.amount = amount\n        self.cryptocurrency = cryptocurrency\n        self.cryptocurrencyAmount = cryptocurrencyAmount\n        self.currency = currency\n        self.gifterUserId = gifterUserId\n        self.receiverUserId = receiverUserId\n        self.starCount = starCount\n        self.sticker = sticker\n        self.transactionId = transactionId\n    }\n}\n\n/// Toncoins were gifted to a user\npublic struct MessageGiftedTon: Codable, Equatable, Hashable {\n\n    /// The identifier of a user who gifted Toncoins; 0 if the gift was anonymous or is outgoing\n    public let gifterUserId: Int64\n\n    /// The identifier of a user who received Toncoins; 0 if the gift is incoming\n    public let receiverUserId: Int64\n\n    /// A sticker to be shown in the message; may be null if unknown\n    public let sticker: Sticker?\n\n    /// The received Toncoin amount, in the smallest units of the cryptocurrency\n    public let tonAmount: Int64\n\n    /// Identifier of the transaction for Toncoin credit; for receiver only\n    public let transactionId: String\n\n\n    public init(\n        gifterUserId: Int64,\n        receiverUserId: Int64,\n        sticker: Sticker?,\n        tonAmount: Int64,\n        transactionId: String\n    ) {\n        self.gifterUserId = gifterUserId\n        self.receiverUserId = receiverUserId\n        self.sticker = sticker\n        self.tonAmount = tonAmount\n        self.transactionId = transactionId\n    }\n}\n\n/// A Telegram Stars were received by the current user from a giveaway\npublic struct MessageGiveawayPrizeStars: Codable, Equatable, Hashable {\n\n    /// Identifier of the supergroup or channel chat, which was automatically boosted by the winners of the giveaway\n    public let boostedChatId: Int64\n\n    /// Identifier of the message with the giveaway in the boosted chat; may be 0 or an identifier of a deleted message\n    public let giveawayMessageId: Int64\n\n    /// True, if the corresponding winner wasn't chosen and the Telegram Stars were received by the owner of the boosted chat\n    public let isUnclaimed: Bool\n\n    /// Number of Telegram Stars that were received\n    public let starCount: Int64\n\n    /// A sticker to be shown in the message; may be null if unknown\n    public let sticker: Sticker?\n\n    /// Identifier of the transaction for Telegram Stars credit\n    public let transactionId: String\n\n\n    public init(\n        boostedChatId: Int64,\n        giveawayMessageId: Int64,\n        isUnclaimed: Bool,\n        starCount: Int64,\n        sticker: Sticker?,\n        transactionId: String\n    ) {\n        self.boostedChatId = boostedChatId\n        self.giveawayMessageId = giveawayMessageId\n        self.isUnclaimed = isUnclaimed\n        self.starCount = starCount\n        self.sticker = sticker\n        self.transactionId = transactionId\n    }\n}\n\n/// A regular gift was received or sent by the current user, or the current user was notified about a channel gift\npublic struct MessageGift: Codable, Equatable, Hashable {\n\n    /// True, if the gift can be upgraded to a unique gift; only for the receiver of the gift\n    public let canBeUpgraded: Bool\n\n    /// The gift\n    public let gift: Gift\n\n    /// True, if the message is a notification about a gift won on an auction\n    public let isFromAuction: Bool\n\n    /// True, if the message is about prepaid upgrade of the gift by another user\n    public let isPrepaidUpgrade: Bool\n\n    /// True, if the sender and gift text are shown only to the gift receiver; otherwise, everyone will be able to see them\n    public let isPrivate: Bool\n\n    /// True, if the gift is displayed on the user's or the channel's profile page; only for the receiver of the gift\n    public let isSaved: Bool\n\n    /// True, if the upgrade was bought after the gift was sent. In this case, prepaid upgrade cost must not be added to the gift cost\n    public let isUpgradeSeparate: Bool\n\n    /// If non-empty, then the user can pay for an upgrade of the gift using buyGiftUpgrade\n    public let prepaidUpgradeHash: String\n\n    /// Number of Telegram Stars that were paid by the sender for the ability to upgrade the gift\n    public let prepaidUpgradeStarCount: Int64\n\n    /// Unique identifier of the received gift for the current user; only for the receiver of the gift\n    public let receivedGiftId: String\n\n    /// Receiver of the gift\n    public let receiverId: MessageSender\n\n    /// Number of Telegram Stars that can be claimed by the receiver instead of the regular gift; 0 if the gift can't be sold by the receiver\n    public let sellStarCount: Int64\n\n    /// Sender of the gift; may be null for outgoing messages about prepaid upgrade of gifts from unknown users\n    public let senderId: MessageSender?\n\n    /// Message added to the gift\n    public let text: FormattedText\n\n    /// Unique number of the gift among gifts upgraded from the same gift after upgrade; 0 if yet unassigned\n    public let uniqueGiftNumber: Int\n\n    /// Identifier of the corresponding upgraded gift; may be empty if unknown. Use getReceivedGift to get information about the gift\n    public let upgradedReceivedGiftId: String\n\n    /// True, if the gift was converted to Telegram Stars; only for the receiver of the gift\n    public let wasConverted: Bool\n\n    /// True, if the gift was refunded and isn't available anymore\n    public let wasRefunded: Bool\n\n    /// True, if the gift was upgraded to a unique gift\n    public let wasUpgraded: Bool\n\n\n    public init(\n        canBeUpgraded: Bool,\n        gift: Gift,\n        isFromAuction: Bool,\n        isPrepaidUpgrade: Bool,\n        isPrivate: Bool,\n        isSaved: Bool,\n        isUpgradeSeparate: Bool,\n        prepaidUpgradeHash: String,\n        prepaidUpgradeStarCount: Int64,\n        receivedGiftId: String,\n        receiverId: MessageSender,\n        sellStarCount: Int64,\n        senderId: MessageSender?,\n        text: FormattedText,\n        uniqueGiftNumber: Int,\n        upgradedReceivedGiftId: String,\n        wasConverted: Bool,\n        wasRefunded: Bool,\n        wasUpgraded: Bool\n    ) {\n        self.canBeUpgraded = canBeUpgraded\n        self.gift = gift\n        self.isFromAuction = isFromAuction\n        self.isPrepaidUpgrade = isPrepaidUpgrade\n        self.isPrivate = isPrivate\n        self.isSaved = isSaved\n        self.isUpgradeSeparate = isUpgradeSeparate\n        self.prepaidUpgradeHash = prepaidUpgradeHash\n        self.prepaidUpgradeStarCount = prepaidUpgradeStarCount\n        self.receivedGiftId = receivedGiftId\n        self.receiverId = receiverId\n        self.sellStarCount = sellStarCount\n        self.senderId = senderId\n        self.text = text\n        self.uniqueGiftNumber = uniqueGiftNumber\n        self.upgradedReceivedGiftId = upgradedReceivedGiftId\n        self.wasConverted = wasConverted\n        self.wasRefunded = wasRefunded\n        self.wasUpgraded = wasUpgraded\n    }\n}\n\n/// An upgraded gift was received or sent by the current user, or the current user was notified about a channel gift\npublic struct MessageUpgradedGift: Codable, Equatable, Hashable {\n\n    /// True, if the gift can be transferred to another owner; only for the receiver of the gift\n    public let canBeTransferred: Bool\n\n    /// Point in time (Unix timestamp) when the gift can be used to craft another gift can be in the past; only for the receiver of the gift\n    public let craftDate: Int\n\n    /// Number of Telegram Stars that must be paid to drop original details of the upgraded gift; 0 if not available; only for the receiver of the gift\n    public let dropOriginalDetailsStarCount: Int64\n\n    /// Point in time (Unix timestamp) when the gift can be transferred to the TON blockchain as an NFT; can be in the past; 0 if NFT export isn't possible; only for the receiver of the gift\n    public let exportDate: Int\n\n    /// The gift\n    public let gift: UpgradedGift\n\n    /// True, if the gift is displayed on the user's or the channel's profile page; only for the receiver of the gift\n    public let isSaved: Bool\n\n    /// Point in time (Unix timestamp) when the gift can be resold to another user; can be in the past; 0 if the gift can't be resold; only for the receiver of the gift\n    public let nextResaleDate: Int\n\n    /// Point in time (Unix timestamp) when the gift can be transferred to another owner; can be in the past; 0 if the gift can be transferred immediately or transfer isn't possible; only for the receiver of the gift\n    public let nextTransferDate: Int\n\n    /// Origin of the upgraded gift\n    public let origin: UpgradedGiftOrigin\n\n    /// Unique identifier of the received gift for the current user; only for the receiver of the gift\n    public let receivedGiftId: String\n\n    /// Receiver of the gift\n    public let receiverId: MessageSender\n\n    /// Sender of the gift; may be null for anonymous gifts\n    public let senderId: MessageSender?\n\n    /// Number of Telegram Stars that must be paid to transfer the upgraded gift; only for the receiver of the gift\n    public let transferStarCount: Int64\n\n    /// True, if the gift has already been transferred to another owner; only for the receiver of the gift\n    public let wasTransferred: Bool\n\n\n    public init(\n        canBeTransferred: Bool,\n        craftDate: Int,\n        dropOriginalDetailsStarCount: Int64,\n        exportDate: Int,\n        gift: UpgradedGift,\n        isSaved: Bool,\n        nextResaleDate: Int,\n        nextTransferDate: Int,\n        origin: UpgradedGiftOrigin,\n        receivedGiftId: String,\n        receiverId: MessageSender,\n        senderId: MessageSender?,\n        transferStarCount: Int64,\n        wasTransferred: Bool\n    ) {\n        self.canBeTransferred = canBeTransferred\n        self.craftDate = craftDate\n        self.dropOriginalDetailsStarCount = dropOriginalDetailsStarCount\n        self.exportDate = exportDate\n        self.gift = gift\n        self.isSaved = isSaved\n        self.nextResaleDate = nextResaleDate\n        self.nextTransferDate = nextTransferDate\n        self.origin = origin\n        self.receivedGiftId = receivedGiftId\n        self.receiverId = receiverId\n        self.senderId = senderId\n        self.transferStarCount = transferStarCount\n        self.wasTransferred = wasTransferred\n    }\n}\n\n/// A gift which purchase, upgrade or transfer were refunded\npublic struct MessageRefundedUpgradedGift: Codable, Equatable, Hashable {\n\n    /// The gift\n    public let gift: Gift\n\n    /// Origin of the upgraded gift\n    public let origin: UpgradedGiftOrigin\n\n    /// Receiver of the gift\n    public let receiverId: MessageSender\n\n    /// Sender of the gift\n    public let senderId: MessageSender\n\n\n    public init(\n        gift: Gift,\n        origin: UpgradedGiftOrigin,\n        receiverId: MessageSender,\n        senderId: MessageSender\n    ) {\n        self.gift = gift\n        self.origin = origin\n        self.receiverId = receiverId\n        self.senderId = senderId\n    }\n}\n\n/// An offer to purchase an upgraded gift was sent or received\npublic struct MessageUpgradedGiftPurchaseOffer: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the offer will expire or has expired\n    public let expirationDate: Int\n\n    /// The gift\n    public let gift: UpgradedGift\n\n    /// The proposed price\n    public let price: GiftResalePrice\n\n    /// State of the offer\n    public let state: GiftPurchaseOfferState\n\n\n    public init(\n        expirationDate: Int,\n        gift: UpgradedGift,\n        price: GiftResalePrice,\n        state: GiftPurchaseOfferState\n    ) {\n        self.expirationDate = expirationDate\n        self.gift = gift\n        self.price = price\n        self.state = state\n    }\n}\n\n/// An offer to purchase a gift was rejected or expired\npublic struct MessageUpgradedGiftPurchaseOfferRejected: Codable, Equatable, Hashable {\n\n    /// The gift\n    public let gift: UpgradedGift\n\n    /// Identifier of the message with purchase offer which was rejected or expired; may be 0 or an identifier of a deleted message\n    public let offerMessageId: Int64\n\n    /// The proposed price\n    public let price: GiftResalePrice\n\n    /// True, if the offer has expired; otherwise, the offer was explicitly rejected\n    public let wasExpired: Bool\n\n\n    public init(\n        gift: UpgradedGift,\n        offerMessageId: Int64,\n        price: GiftResalePrice,\n        wasExpired: Bool\n    ) {\n        self.gift = gift\n        self.offerMessageId = offerMessageId\n        self.price = price\n        self.wasExpired = wasExpired\n    }\n}\n\n/// Paid messages were refunded\npublic struct MessagePaidMessagesRefunded: Codable, Equatable, Hashable {\n\n    /// The number of refunded messages\n    public let messageCount: Int\n\n    /// The number of refunded Telegram Stars\n    public let starCount: Int64\n\n\n    public init(\n        messageCount: Int,\n        starCount: Int64\n    ) {\n        self.messageCount = messageCount\n        self.starCount = starCount\n    }\n}\n\n/// A price for paid messages was changed in the supergroup chat\npublic struct MessagePaidMessagePriceChanged: Codable, Equatable, Hashable {\n\n    /// The new number of Telegram Stars that must be paid by non-administrator users of the supergroup chat for each sent message\n    public let paidMessageStarCount: Int64\n\n\n    public init(paidMessageStarCount: Int64) {\n        self.paidMessageStarCount = paidMessageStarCount\n    }\n}\n\n/// A price for direct messages was changed in the channel chat\npublic struct MessageDirectMessagePriceChanged: Codable, Equatable, Hashable {\n\n    /// True, if direct messages group was enabled for the channel; false otherwise\n    public let isEnabled: Bool\n\n    /// The new number of Telegram Stars that must be paid by non-administrator users of the channel chat for each message sent to the direct messages group; 0 if the direct messages group was disabled or the messages are free\n    public let paidMessageStarCount: Int64\n\n\n    public init(\n        isEnabled: Bool,\n        paidMessageStarCount: Int64\n    ) {\n        self.isEnabled = isEnabled\n        self.paidMessageStarCount = paidMessageStarCount\n    }\n}\n\n/// Some tasks from a checklist were marked as done or not done\npublic struct MessageChecklistTasksDone: Codable, Equatable, Hashable {\n\n    /// Identifier of the message with the checklist; may be 0 or an identifier of a deleted message\n    public let checklistMessageId: Int64\n\n    /// Identifiers of tasks that were marked as done\n    public let markedAsDoneTaskIds: [Int]\n\n    /// Identifiers of tasks that were marked as not done\n    public let markedAsNotDoneTaskIds: [Int]\n\n\n    public init(\n        checklistMessageId: Int64,\n        markedAsDoneTaskIds: [Int],\n        markedAsNotDoneTaskIds: [Int]\n    ) {\n        self.checklistMessageId = checklistMessageId\n        self.markedAsDoneTaskIds = markedAsDoneTaskIds\n        self.markedAsNotDoneTaskIds = markedAsNotDoneTaskIds\n    }\n}\n\n/// Some tasks were added to a checklist\npublic struct MessageChecklistTasksAdded: Codable, Equatable, Hashable {\n\n    /// Identifier of the message with the checklist; may be 0 or an identifier of a deleted message\n    public let checklistMessageId: Int64\n\n    /// List of tasks added to the checklist\n    public let tasks: [ChecklistTask]\n\n\n    public init(\n        checklistMessageId: Int64,\n        tasks: [ChecklistTask]\n    ) {\n        self.checklistMessageId = checklistMessageId\n        self.tasks = tasks\n    }\n}\n\n/// Approval of suggested post has failed, because the user which proposed the post had no enough funds\npublic struct MessageSuggestedPostApprovalFailed: Codable, Equatable, Hashable {\n\n    /// Price of the suggested post\n    public let price: SuggestedPostPrice\n\n    /// Identifier of the message with the suggested post; may be 0 or an identifier of a deleted message\n    public let suggestedPostMessageId: Int64\n\n\n    public init(\n        price: SuggestedPostPrice,\n        suggestedPostMessageId: Int64\n    ) {\n        self.price = price\n        self.suggestedPostMessageId = suggestedPostMessageId\n    }\n}\n\n/// A suggested post was approved\npublic struct MessageSuggestedPostApproved: Codable, Equatable, Hashable {\n\n    /// Price of the suggested post; may be null if the post is non-paid\n    public let price: SuggestedPostPrice?\n\n    /// Point in time (Unix timestamp) when the post is expected to be published\n    public let sendDate: Int\n\n    /// Identifier of the message with the suggested post; may be 0 or an identifier of a deleted message\n    public let suggestedPostMessageId: Int64\n\n\n    public init(\n        price: SuggestedPostPrice?,\n        sendDate: Int,\n        suggestedPostMessageId: Int64\n    ) {\n        self.price = price\n        self.sendDate = sendDate\n        self.suggestedPostMessageId = suggestedPostMessageId\n    }\n}\n\n/// A suggested post was declined\npublic struct MessageSuggestedPostDeclined: Codable, Equatable, Hashable {\n\n    /// Comment added by administrator of the channel when the post was declined\n    public let comment: String\n\n    /// Identifier of the message with the suggested post; may be 0 or an identifier of a deleted message\n    public let suggestedPostMessageId: Int64\n\n\n    public init(\n        comment: String,\n        suggestedPostMessageId: Int64\n    ) {\n        self.comment = comment\n        self.suggestedPostMessageId = suggestedPostMessageId\n    }\n}\n\n/// A suggested post was published for getOption(\"suggested_post_lifetime_min\") seconds and payment for the post was received\npublic struct MessageSuggestedPostPaid: Codable, Equatable, Hashable {\n\n    /// The amount of received Telegram Stars\n    public let starAmount: StarAmount\n\n    /// Identifier of the message with the suggested post; may be 0 or an identifier of a deleted message\n    public let suggestedPostMessageId: Int64\n\n    /// The amount of received Toncoins; in the smallest units of the cryptocurrency\n    public let tonAmount: Int64\n\n\n    public init(\n        starAmount: StarAmount,\n        suggestedPostMessageId: Int64,\n        tonAmount: Int64\n    ) {\n        self.starAmount = starAmount\n        self.suggestedPostMessageId = suggestedPostMessageId\n        self.tonAmount = tonAmount\n    }\n}\n\n/// A suggested post was refunded\npublic struct MessageSuggestedPostRefunded: Codable, Equatable, Hashable {\n\n    /// Reason of the refund\n    public let reason: SuggestedPostRefundReason\n\n    /// Identifier of the message with the suggested post; may be 0 or an identifier of a deleted message\n    public let suggestedPostMessageId: Int64\n\n\n    public init(\n        reason: SuggestedPostRefundReason,\n        suggestedPostMessageId: Int64\n    ) {\n        self.reason = reason\n        self.suggestedPostMessageId = suggestedPostMessageId\n    }\n}\n\n/// The current user shared users, which were requested by the bot\npublic struct MessageUsersShared: Codable, Equatable, Hashable {\n\n    /// Identifier of the keyboard button with the request\n    public let buttonId: Int\n\n    /// The shared users\n    public let users: [SharedUser]\n\n\n    public init(\n        buttonId: Int,\n        users: [SharedUser]\n    ) {\n        self.buttonId = buttonId\n        self.users = users\n    }\n}\n\n/// The current user shared a chat, which was requested by the bot\npublic struct MessageChatShared: Codable, Equatable, Hashable {\n\n    /// Identifier of the keyboard button with the request\n    public let buttonId: Int\n\n    /// The shared chat\n    public let chat: SharedChat\n\n\n    public init(\n        buttonId: Int,\n        chat: SharedChat\n    ) {\n        self.buttonId = buttonId\n        self.chat = chat\n    }\n}\n\n/// The user allowed the bot to send messages\npublic struct MessageBotWriteAccessAllowed: Codable, Equatable, Hashable {\n\n    /// The reason why the bot was allowed to write messages\n    public let reason: BotWriteAccessAllowReason\n\n\n    public init(reason: BotWriteAccessAllowReason) {\n        self.reason = reason\n    }\n}\n\n/// Data from a Web App has been sent to a bot\npublic struct MessageWebAppDataSent: Codable, Equatable, Hashable {\n\n    /// Text of the keyboardButtonTypeWebApp button, which opened the Web App\n    public let buttonText: String\n\n\n    public init(buttonText: String) {\n        self.buttonText = buttonText\n    }\n}\n\n/// Data from a Web App has been received; for bots only\npublic struct MessageWebAppDataReceived: Codable, Equatable, Hashable {\n\n    /// Text of the keyboardButtonTypeWebApp button, which opened the Web App\n    public let buttonText: String\n\n    /// The data\n    public let data: String\n\n\n    public init(\n        buttonText: String,\n        data: String\n    ) {\n        self.buttonText = buttonText\n        self.data = data\n    }\n}\n\n/// Telegram Passport data has been sent to a bot\npublic struct MessagePassportDataSent: Codable, Equatable, Hashable {\n\n    /// List of Telegram Passport element types sent\n    public let types: [PassportElementType]\n\n\n    public init(types: [PassportElementType]) {\n        self.types = types\n    }\n}\n\n/// Telegram Passport data has been received; for bots only\npublic struct MessagePassportDataReceived: Codable, Equatable, Hashable {\n\n    /// Encrypted data credentials\n    public let credentials: EncryptedCredentials\n\n    /// List of received Telegram Passport elements\n    public let elements: [EncryptedPassportElement]\n\n\n    public init(\n        credentials: EncryptedCredentials,\n        elements: [EncryptedPassportElement]\n    ) {\n        self.credentials = credentials\n        self.elements = elements\n    }\n}\n\n/// A user in the chat came within proximity alert range\npublic struct MessageProximityAlertTriggered: Codable, Equatable, Hashable {\n\n    /// The distance between the users\n    public let distance: Int\n\n    /// The identifier of a user or chat that triggered the proximity alert\n    public let travelerId: MessageSender\n\n    /// The identifier of a user or chat that subscribed for the proximity alert\n    public let watcherId: MessageSender\n\n\n    public init(\n        distance: Int,\n        travelerId: MessageSender,\n        watcherId: MessageSender\n    ) {\n        self.distance = distance\n        self.travelerId = travelerId\n        self.watcherId = watcherId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageCopyOptions.swift",
    "content": "//\n//  MessageCopyOptions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Options to be used when a message content is copied without reference to the original sender. Service messages, messages with messageInvoice, messagePaidMedia, messageGiveaway, or messageGiveawayWinners content can't be copied\npublic struct MessageCopyOptions: Codable, Equatable, Hashable {\n\n    /// New message caption; pass null to copy message without caption. Ignored if replace_caption is false\n    public let newCaption: FormattedText?\n\n    /// True, if new caption must be shown above the media; otherwise, new caption must be shown below the media; not supported in secret chats. Ignored if replace_caption is false\n    public let newShowCaptionAboveMedia: Bool\n\n    /// True, if media caption of the message copy needs to be replaced. Ignored if send_copy is false\n    public let replaceCaption: Bool\n\n    /// True, if content of the message needs to be copied without reference to the original sender. Always true if the message is forwarded to a secret chat or is local. Use messageProperties.can_be_copied and messageProperties.can_be_copied_to_secret_chat to check whether the message is suitable\n    public let sendCopy: Bool\n\n\n    public init(\n        newCaption: FormattedText?,\n        newShowCaptionAboveMedia: Bool,\n        replaceCaption: Bool,\n        sendCopy: Bool\n    ) {\n        self.newCaption = newCaption\n        self.newShowCaptionAboveMedia = newShowCaptionAboveMedia\n        self.replaceCaption = replaceCaption\n        self.sendCopy = sendCopy\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageEffect.swift",
    "content": "//\n//  MessageEffect.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about an effect added to a message\npublic struct MessageEffect: Codable, Equatable, Hashable, Identifiable {\n\n    /// Emoji corresponding to the effect that can be used if static icon isn't available\n    public let emoji: String\n\n    /// Unique identifier of the effect\n    public let id: TdInt64\n\n    /// True, if Telegram Premium subscription is required to use the effect\n    public let isPremium: Bool\n\n    /// Static icon for the effect in WEBP format; may be null if none\n    public let staticIcon: Sticker?\n\n    /// Type of the effect\n    public let type: MessageEffectType\n\n\n    public init(\n        emoji: String,\n        id: TdInt64,\n        isPremium: Bool,\n        staticIcon: Sticker?,\n        type: MessageEffectType\n    ) {\n        self.emoji = emoji\n        self.id = id\n        self.isPremium = isPremium\n        self.staticIcon = staticIcon\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageEffectType.swift",
    "content": "//\n//  MessageEffectType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of emoji effect\npublic indirect enum MessageEffectType: Codable, Equatable, Hashable {\n\n    /// An effect from an emoji reaction\n    case messageEffectTypeEmojiReaction(MessageEffectTypeEmojiReaction)\n\n    /// An effect from a premium sticker\n    case messageEffectTypePremiumSticker(MessageEffectTypePremiumSticker)\n\n\n    private enum Kind: String, Codable {\n        case messageEffectTypeEmojiReaction\n        case messageEffectTypePremiumSticker\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .messageEffectTypeEmojiReaction:\n            let value = try MessageEffectTypeEmojiReaction(from: decoder)\n            self = .messageEffectTypeEmojiReaction(value)\n        case .messageEffectTypePremiumSticker:\n            let value = try MessageEffectTypePremiumSticker(from: decoder)\n            self = .messageEffectTypePremiumSticker(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .messageEffectTypeEmojiReaction(let value):\n            try container.encode(Kind.messageEffectTypeEmojiReaction, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageEffectTypePremiumSticker(let value):\n            try container.encode(Kind.messageEffectTypePremiumSticker, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// An effect from an emoji reaction\npublic struct MessageEffectTypeEmojiReaction: Codable, Equatable, Hashable {\n\n    /// Effect animation for the effect in TGS format\n    public let effectAnimation: Sticker\n\n    /// Select animation for the effect in TGS format\n    public let selectAnimation: Sticker\n\n\n    public init(\n        effectAnimation: Sticker,\n        selectAnimation: Sticker\n    ) {\n        self.effectAnimation = effectAnimation\n        self.selectAnimation = selectAnimation\n    }\n}\n\n/// An effect from a premium sticker\npublic struct MessageEffectTypePremiumSticker: Codable, Equatable, Hashable {\n\n    /// The premium sticker. The effect can be found at sticker.full_type.premium_animation\n    public let sticker: Sticker\n\n\n    public init(sticker: Sticker) {\n        self.sticker = sticker\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageExtendedMedia.swift",
    "content": "//\n//  MessageExtendedMedia.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.31-63c7d030\n//  https://github.com/tdlib/td/tree/63c7d030\n//\n\nimport Foundation\n\n\n/// Describes a media, which is attached to an invoice\npublic indirect enum MessageExtendedMedia: Codable, Equatable, Hashable {\n\n    /// The media is hidden until the invoice is paid\n    case messageExtendedMediaPreview(MessageExtendedMediaPreview)\n\n    /// The media is a photo\n    case messageExtendedMediaPhoto(MessageExtendedMediaPhoto)\n\n    /// The media is a video\n    case messageExtendedMediaVideo(MessageExtendedMediaVideo)\n\n    /// The media is unsupported\n    case messageExtendedMediaUnsupported(MessageExtendedMediaUnsupported)\n\n\n    private enum Kind: String, Codable {\n        case messageExtendedMediaPreview\n        case messageExtendedMediaPhoto\n        case messageExtendedMediaVideo\n        case messageExtendedMediaUnsupported\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .messageExtendedMediaPreview:\n            let value = try MessageExtendedMediaPreview(from: decoder)\n            self = .messageExtendedMediaPreview(value)\n        case .messageExtendedMediaPhoto:\n            let value = try MessageExtendedMediaPhoto(from: decoder)\n            self = .messageExtendedMediaPhoto(value)\n        case .messageExtendedMediaVideo:\n            let value = try MessageExtendedMediaVideo(from: decoder)\n            self = .messageExtendedMediaVideo(value)\n        case .messageExtendedMediaUnsupported:\n            let value = try MessageExtendedMediaUnsupported(from: decoder)\n            self = .messageExtendedMediaUnsupported(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .messageExtendedMediaPreview(let value):\n            try container.encode(Kind.messageExtendedMediaPreview, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageExtendedMediaPhoto(let value):\n            try container.encode(Kind.messageExtendedMediaPhoto, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageExtendedMediaVideo(let value):\n            try container.encode(Kind.messageExtendedMediaVideo, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageExtendedMediaUnsupported(let value):\n            try container.encode(Kind.messageExtendedMediaUnsupported, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The media is hidden until the invoice is paid\npublic struct MessageExtendedMediaPreview: Codable, Equatable, Hashable {\n\n    /// Media caption\n    public let caption: FormattedText\n\n    /// Media duration, in seconds; 0 if unknown\n    public let duration: Int\n\n    /// Media height; 0 if unknown\n    public let height: Int\n\n    /// Media minithumbnail; may be null\n    public let minithumbnail: Minithumbnail?\n\n    /// Media width; 0 if unknown\n    public let width: Int\n\n\n    public init(\n        caption: FormattedText,\n        duration: Int,\n        height: Int,\n        minithumbnail: Minithumbnail?,\n        width: Int\n    ) {\n        self.caption = caption\n        self.duration = duration\n        self.height = height\n        self.minithumbnail = minithumbnail\n        self.width = width\n    }\n}\n\n/// The media is a photo\npublic struct MessageExtendedMediaPhoto: Codable, Equatable, Hashable {\n\n    /// Photo caption\n    public let caption: FormattedText\n\n    /// The photo\n    public let photo: Photo\n\n\n    public init(\n        caption: FormattedText,\n        photo: Photo\n    ) {\n        self.caption = caption\n        self.photo = photo\n    }\n}\n\n/// The media is a video\npublic struct MessageExtendedMediaVideo: Codable, Equatable, Hashable {\n\n    /// Photo caption\n    public let caption: FormattedText\n\n    /// The video\n    public let video: Video\n\n\n    public init(\n        caption: FormattedText,\n        video: Video\n    ) {\n        self.caption = caption\n        self.video = video\n    }\n}\n\n/// The media is unsupported\npublic struct MessageExtendedMediaUnsupported: Codable, Equatable, Hashable {\n\n    /// Media caption\n    public let caption: FormattedText\n\n\n    public init(caption: FormattedText) {\n        self.caption = caption\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageFileType.swift",
    "content": "//\n//  MessageFileType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a file with messages exported from another app\npublic indirect enum MessageFileType: Codable, Equatable, Hashable {\n\n    /// The messages were exported from a private chat\n    case messageFileTypePrivate(MessageFileTypePrivate)\n\n    /// The messages were exported from a group chat\n    case messageFileTypeGroup(MessageFileTypeGroup)\n\n    /// The messages were exported from a chat of unknown type\n    case messageFileTypeUnknown\n\n\n    private enum Kind: String, Codable {\n        case messageFileTypePrivate\n        case messageFileTypeGroup\n        case messageFileTypeUnknown\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .messageFileTypePrivate:\n            let value = try MessageFileTypePrivate(from: decoder)\n            self = .messageFileTypePrivate(value)\n        case .messageFileTypeGroup:\n            let value = try MessageFileTypeGroup(from: decoder)\n            self = .messageFileTypeGroup(value)\n        case .messageFileTypeUnknown:\n            self = .messageFileTypeUnknown\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .messageFileTypePrivate(let value):\n            try container.encode(Kind.messageFileTypePrivate, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageFileTypeGroup(let value):\n            try container.encode(Kind.messageFileTypeGroup, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageFileTypeUnknown:\n            try container.encode(Kind.messageFileTypeUnknown, forKey: .type)\n        }\n    }\n}\n\n/// The messages were exported from a private chat\npublic struct MessageFileTypePrivate: Codable, Equatable, Hashable {\n\n    /// Name of the other party; may be empty if unrecognized\n    public let name: String\n\n\n    public init(name: String) {\n        self.name = name\n    }\n}\n\n/// The messages were exported from a group chat\npublic struct MessageFileTypeGroup: Codable, Equatable, Hashable {\n\n    /// Title of the group chat; may be empty if unrecognized\n    public let title: String\n\n\n    public init(title: String) {\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageForwardInfo.swift",
    "content": "//\n//  MessageForwardInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a forwarded message\npublic struct MessageForwardInfo: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the message was originally sent\n    public let date: Int\n\n    /// Origin of the forwarded message\n    public let origin: MessageOrigin\n\n    /// The type of public service announcement for the forwarded message\n    public let publicServiceAnnouncementType: String\n\n    /// For messages forwarded to the chat with the current user (Saved Messages), to the Replies bot chat, or to the channel's discussion group, information about the source message from which the message was forwarded last time; may be null for other forwards or if unknown\n    public let source: ForwardSource?\n\n\n    public init(\n        date: Int,\n        origin: MessageOrigin,\n        publicServiceAnnouncementType: String,\n        source: ForwardSource?\n    ) {\n        self.date = date\n        self.origin = origin\n        self.publicServiceAnnouncementType = publicServiceAnnouncementType\n        self.source = source\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageImportInfo.swift",
    "content": "//\n//  MessageImportInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a message created with importMessages\npublic struct MessageImportInfo: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the message was originally sent\n    public let date: Int\n\n    /// Name of the original sender\n    public let senderName: String\n\n\n    public init(\n        date: Int,\n        senderName: String\n    ) {\n        self.date = date\n        self.senderName = senderName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageInteractionInfo.swift",
    "content": "//\n//  MessageInteractionInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about interactions with a message\npublic struct MessageInteractionInfo: Codable, Equatable, Hashable {\n\n    /// Number of times the message was forwarded\n    public let forwardCount: Int\n\n    /// The list of reactions or tags added to the message; may be null\n    public let reactions: MessageReactions?\n\n    /// Information about direct or indirect replies to the message; may be null. Currently, available only in channels with a discussion supergroup and discussion supergroups for messages, which are not replies itself\n    public let replyInfo: MessageReplyInfo?\n\n    /// Number of times the message was viewed\n    public let viewCount: Int\n\n\n    public init(\n        forwardCount: Int,\n        reactions: MessageReactions?,\n        replyInfo: MessageReplyInfo?,\n        viewCount: Int\n    ) {\n        self.forwardCount = forwardCount\n        self.reactions = reactions\n        self.replyInfo = replyInfo\n        self.viewCount = viewCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageLink.swift",
    "content": "//\n//  MessageLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains an HTTPS link to a message in a supergroup or channel, or a forum topic\npublic struct MessageLink: Codable, Equatable, Hashable {\n\n    /// True, if the link will work for non-members of the chat\n    public let isPublic: Bool\n\n    /// The link\n    public let link: String\n\n\n    public init(\n        isPublic: Bool,\n        link: String\n    ) {\n        self.isPublic = isPublic\n        self.link = link\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageLinkInfo.swift",
    "content": "//\n//  MessageLinkInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a link to a message or a forum topic in a chat\npublic struct MessageLinkInfo: Codable, Equatable, Hashable {\n\n    /// If found, identifier of the chat to which the link points, 0 otherwise\n    public let chatId: Int64\n\n    /// Identifier of the checklist task that is linked; 0 if none\n    public let checklistTaskId: Int\n\n    /// True, if the whole media album to which the message belongs is linked\n    public let forAlbum: Bool\n\n    /// True, if the link is a public link for a message or a forum topic in a chat\n    public let isPublic: Bool\n\n    /// Timestamp from which the video/audio/video note/voice note/story playing must start, in seconds; 0 if not specified. The media can be in the message content or in its link preview\n    public let mediaTimestamp: Int\n\n    /// If found, the linked message; may be null\n    public let message: Message?\n\n    /// Identifier of the poll option that is linked; empty if none\n    public let pollOptionId: String\n\n    /// Identifier of the specific topic in which the message must be opened, or a topic to open if the message is missing; may be null if none\n    public let topicId: MessageTopic?\n\n\n    public init(\n        chatId: Int64,\n        checklistTaskId: Int,\n        forAlbum: Bool,\n        isPublic: Bool,\n        mediaTimestamp: Int,\n        message: Message?,\n        pollOptionId: String,\n        topicId: MessageTopic?\n    ) {\n        self.chatId = chatId\n        self.checklistTaskId = checklistTaskId\n        self.forAlbum = forAlbum\n        self.isPublic = isPublic\n        self.mediaTimestamp = mediaTimestamp\n        self.message = message\n        self.pollOptionId = pollOptionId\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageOrigin.swift",
    "content": "//\n//  MessageOrigin.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about the origin of a message\npublic indirect enum MessageOrigin: Codable, Equatable, Hashable {\n\n    /// The message was originally sent by a known user\n    case messageOriginUser(MessageOriginUser)\n\n    /// The message was originally sent by a user, which is hidden by their privacy settings\n    case messageOriginHiddenUser(MessageOriginHiddenUser)\n\n    /// The message was originally sent on behalf of a chat\n    case messageOriginChat(MessageOriginChat)\n\n    /// The message was originally a post in a channel\n    case messageOriginChannel(MessageOriginChannel)\n\n\n    private enum Kind: String, Codable {\n        case messageOriginUser\n        case messageOriginHiddenUser\n        case messageOriginChat\n        case messageOriginChannel\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .messageOriginUser:\n            let value = try MessageOriginUser(from: decoder)\n            self = .messageOriginUser(value)\n        case .messageOriginHiddenUser:\n            let value = try MessageOriginHiddenUser(from: decoder)\n            self = .messageOriginHiddenUser(value)\n        case .messageOriginChat:\n            let value = try MessageOriginChat(from: decoder)\n            self = .messageOriginChat(value)\n        case .messageOriginChannel:\n            let value = try MessageOriginChannel(from: decoder)\n            self = .messageOriginChannel(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .messageOriginUser(let value):\n            try container.encode(Kind.messageOriginUser, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageOriginHiddenUser(let value):\n            try container.encode(Kind.messageOriginHiddenUser, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageOriginChat(let value):\n            try container.encode(Kind.messageOriginChat, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageOriginChannel(let value):\n            try container.encode(Kind.messageOriginChannel, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The message was originally sent by a known user\npublic struct MessageOriginUser: Codable, Equatable, Hashable {\n\n    /// Identifier of the user who originally sent the message\n    public let senderUserId: Int64\n\n\n    public init(senderUserId: Int64) {\n        self.senderUserId = senderUserId\n    }\n}\n\n/// The message was originally sent by a user, which is hidden by their privacy settings\npublic struct MessageOriginHiddenUser: Codable, Equatable, Hashable {\n\n    /// Name of the sender\n    public let senderName: String\n\n\n    public init(senderName: String) {\n        self.senderName = senderName\n    }\n}\n\n/// The message was originally sent on behalf of a chat\npublic struct MessageOriginChat: Codable, Equatable, Hashable {\n\n    /// For messages originally sent by an anonymous chat administrator, original message author signature\n    public let authorSignature: String\n\n    /// Identifier of the chat that originally sent the message\n    public let senderChatId: Int64\n\n\n    public init(\n        authorSignature: String,\n        senderChatId: Int64\n    ) {\n        self.authorSignature = authorSignature\n        self.senderChatId = senderChatId\n    }\n}\n\n/// The message was originally a post in a channel\npublic struct MessageOriginChannel: Codable, Equatable, Hashable {\n\n    /// Original post author signature\n    public let authorSignature: String\n\n    /// Identifier of the channel chat to which the message was originally sent\n    public let chatId: Int64\n\n    /// Message identifier of the original message\n    public let messageId: Int64\n\n\n    public init(\n        authorSignature: String,\n        chatId: Int64,\n        messageId: Int64\n    ) {\n        self.authorSignature = authorSignature\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessagePosition.swift",
    "content": "//\n//  MessagePosition.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a message in a specific position\npublic struct MessagePosition: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the message was sent\n    public let date: Int\n\n    /// Message identifier\n    public let messageId: Int64\n\n    /// 0-based message position in the full list of suitable messages\n    public let position: Int\n\n\n    public init(\n        date: Int,\n        messageId: Int64,\n        position: Int\n    ) {\n        self.date = date\n        self.messageId = messageId\n        self.position = position\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessagePositions.swift",
    "content": "//\n//  MessagePositions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of message positions\npublic struct MessagePositions: Codable, Equatable, Hashable {\n\n    /// List of message positions\n    public let positions: [MessagePosition]\n\n    /// Total number of messages found\n    public let totalCount: Int\n\n\n    public init(\n        positions: [MessagePosition],\n        totalCount: Int\n    ) {\n        self.positions = positions\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageProperties.swift",
    "content": "//\n//  MessageProperties.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains properties of a message and describes actions that can be done with the message right now\npublic struct MessageProperties: Codable, Equatable, Hashable {\n\n    /// True, if an offer can be added to the message using addOffer\n    public let canAddOffer: Bool\n\n    /// True, if tasks can be added to the message's checklist using addChecklistTasks if the current user has Telegram Premium subscription\n    public let canAddTasks: Bool\n\n    /// True, if the message is a suggested post that can be approved by the user using approveSuggestedPost\n    public let canBeApproved: Bool\n\n    /// True, if content of the message can be copied using inputMessageForwarded or forwardMessages with copy options\n    public let canBeCopied: Bool\n\n    /// True, if content of the message can be copied to a secret chat using inputMessageForwarded or forwardMessages with copy options\n    public let canBeCopiedToSecretChat: Bool\n\n    /// True, if the message is a suggested post that can be declined by the user using declineSuggestedPost\n    public let canBeDeclined: Bool\n\n    /// True, if the message can be deleted for all users using the method deleteMessages with revoke == true\n    public let canBeDeletedForAllUsers: Bool\n\n    /// True, if the message can be deleted only for the current user while other users will continue to see it using the method deleteMessages with revoke == false\n    public let canBeDeletedOnlyForSelf: Bool\n\n    /// True, if the message can be edited using the methods editMessageText, editMessageCaption, or editMessageReplyMarkup. For live location, poll, and checklist messages this fields shows whether editMessageLiveLocation, stopPoll, or editMessageChecklist respectively can be used with this message\n    public let canBeEdited: Bool\n\n    /// True, if the message can be forwarded using inputMessageForwarded or forwardMessages without copy options\n    public let canBeForwarded: Bool\n\n    /// True, if the message can be paid using inputInvoiceMessage\n    public let canBePaid: Bool\n\n    /// True, if the message can be pinned or unpinned in the chat using pinChatMessage or unpinChatMessage\n    public let canBePinned: Bool\n\n    /// True, if the message can be replied in the same chat and forum topic using inputMessageReplyToMessage\n    public let canBeReplied: Bool\n\n    /// True, if the message can be replied in another chat or forum topic using inputMessageReplyToExternalMessage\n    public let canBeRepliedInAnotherChat: Bool\n\n    /// True, if content of the message can be saved locally\n    public let canBeSaved: Bool\n\n    /// True, if the message can be shared in a story using inputStoryAreaTypeMessage\n    public let canBeSharedInStory: Bool\n\n    /// True, if the user can delete reactions of other users in the message using the method deleteMessageReactionsFromSender\n    public let canDeleteReactions: Bool\n\n    /// True, if the message can be edited using the method editMessageMedia\n    public let canEditMedia: Bool\n\n    /// True, if scheduling state of the message can be edited\n    public let canEditSchedulingState: Bool\n\n    /// True, if another price or post send time can be suggested using addOffer\n    public let canEditSuggestedPostInfo: Bool\n\n    /// True, if author of the message sent on behalf of a chat can be received through getMessageAuthor\n    public let canGetAuthor: Bool\n\n    /// True, if code for message embedding can be received using getMessageEmbeddingCode\n    public let canGetEmbeddingCode: Bool\n\n    /// True, if a link can be generated for the message using getMessageLink\n    public let canGetLink: Bool\n\n    /// True, if media timestamp links can be generated for media timestamp entities in the message text, caption or link preview description using getMessageLink\n    public let canGetMediaTimestampLinks: Bool\n\n    /// True, if information about the message thread is available through getMessageThread and getMessageThreadHistory\n    public let canGetMessageThread: Bool\n\n    /// True, if the message is a poll and vote statistics are available through getPollVoteStatistics\n    public let canGetPollVoteStatistics: Bool\n\n    /// True, if read date of the message can be received through getMessageReadDate\n    public let canGetReadDate: Bool\n\n    /// True, if message statistics are available through getMessageStatistics and message forwards can be received using getMessagePublicForwards\n    public let canGetStatistics: Bool\n\n    /// True, if advertisements for video of the message can be received through getVideoMessageAdvertisements\n    public let canGetVideoAdvertisements: Bool\n\n    /// True, if chat members already viewed the message can be received through getMessageViewers\n    public let canGetViewers: Bool\n\n    /// True, if tasks can be marked as done or not done in the message's checklist using markChecklistTasksAsDone if the current user has Telegram Premium subscription\n    public let canMarkTasksAsDone: Bool\n\n    /// True, if speech can be recognized for the message through recognizeSpeech\n    public let canRecognizeSpeech: Bool\n\n    /// True, if the message can be reported using reportChat\n    public let canReportChat: Bool\n\n    /// True, if reactions on the message can be reported through reportMessageReactions\n    public let canReportReactions: Bool\n\n    /// True, if the message can be reported using reportSupergroupSpam\n    public let canReportSupergroupSpam: Bool\n\n    /// True, if fact check for the message can be changed through setMessageFactCheck\n    public let canSetFactCheck: Bool\n\n    /// True, if content of the message can't be saved locally, because it is protected by the current user; if true, then can_be_saved is false\n    public let hasProtectedContentByCurrentUser: Bool\n\n    /// True, if content of the message can't be saved locally, because it is protected by the other user; if true, then can_be_saved is false\n    public let hasProtectedContentByOtherUser: Bool\n\n    /// True, if message statistics must be available from context menu of the message\n    public let needShowStatistics: Bool\n\n\n    public init(\n        canAddOffer: Bool,\n        canAddTasks: Bool,\n        canBeApproved: Bool,\n        canBeCopied: Bool,\n        canBeCopiedToSecretChat: Bool,\n        canBeDeclined: Bool,\n        canBeDeletedForAllUsers: Bool,\n        canBeDeletedOnlyForSelf: Bool,\n        canBeEdited: Bool,\n        canBeForwarded: Bool,\n        canBePaid: Bool,\n        canBePinned: Bool,\n        canBeReplied: Bool,\n        canBeRepliedInAnotherChat: Bool,\n        canBeSaved: Bool,\n        canBeSharedInStory: Bool,\n        canDeleteReactions: Bool,\n        canEditMedia: Bool,\n        canEditSchedulingState: Bool,\n        canEditSuggestedPostInfo: Bool,\n        canGetAuthor: Bool,\n        canGetEmbeddingCode: Bool,\n        canGetLink: Bool,\n        canGetMediaTimestampLinks: Bool,\n        canGetMessageThread: Bool,\n        canGetPollVoteStatistics: Bool,\n        canGetReadDate: Bool,\n        canGetStatistics: Bool,\n        canGetVideoAdvertisements: Bool,\n        canGetViewers: Bool,\n        canMarkTasksAsDone: Bool,\n        canRecognizeSpeech: Bool,\n        canReportChat: Bool,\n        canReportReactions: Bool,\n        canReportSupergroupSpam: Bool,\n        canSetFactCheck: Bool,\n        hasProtectedContentByCurrentUser: Bool,\n        hasProtectedContentByOtherUser: Bool,\n        needShowStatistics: Bool\n    ) {\n        self.canAddOffer = canAddOffer\n        self.canAddTasks = canAddTasks\n        self.canBeApproved = canBeApproved\n        self.canBeCopied = canBeCopied\n        self.canBeCopiedToSecretChat = canBeCopiedToSecretChat\n        self.canBeDeclined = canBeDeclined\n        self.canBeDeletedForAllUsers = canBeDeletedForAllUsers\n        self.canBeDeletedOnlyForSelf = canBeDeletedOnlyForSelf\n        self.canBeEdited = canBeEdited\n        self.canBeForwarded = canBeForwarded\n        self.canBePaid = canBePaid\n        self.canBePinned = canBePinned\n        self.canBeReplied = canBeReplied\n        self.canBeRepliedInAnotherChat = canBeRepliedInAnotherChat\n        self.canBeSaved = canBeSaved\n        self.canBeSharedInStory = canBeSharedInStory\n        self.canDeleteReactions = canDeleteReactions\n        self.canEditMedia = canEditMedia\n        self.canEditSchedulingState = canEditSchedulingState\n        self.canEditSuggestedPostInfo = canEditSuggestedPostInfo\n        self.canGetAuthor = canGetAuthor\n        self.canGetEmbeddingCode = canGetEmbeddingCode\n        self.canGetLink = canGetLink\n        self.canGetMediaTimestampLinks = canGetMediaTimestampLinks\n        self.canGetMessageThread = canGetMessageThread\n        self.canGetPollVoteStatistics = canGetPollVoteStatistics\n        self.canGetReadDate = canGetReadDate\n        self.canGetStatistics = canGetStatistics\n        self.canGetVideoAdvertisements = canGetVideoAdvertisements\n        self.canGetViewers = canGetViewers\n        self.canMarkTasksAsDone = canMarkTasksAsDone\n        self.canRecognizeSpeech = canRecognizeSpeech\n        self.canReportChat = canReportChat\n        self.canReportReactions = canReportReactions\n        self.canReportSupergroupSpam = canReportSupergroupSpam\n        self.canSetFactCheck = canSetFactCheck\n        self.hasProtectedContentByCurrentUser = hasProtectedContentByCurrentUser\n        self.hasProtectedContentByOtherUser = hasProtectedContentByOtherUser\n        self.needShowStatistics = needShowStatistics\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageReaction.swift",
    "content": "//\n//  MessageReaction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a reaction to a message\npublic struct MessageReaction: Codable, Equatable, Hashable {\n\n    /// True, if the reaction is chosen by the current user\n    public let isChosen: Bool\n\n    /// Identifiers of at most 3 recent message senders, added the reaction; available in private, basic group and supergroup chats\n    public let recentSenderIds: [MessageSender]\n\n    /// Number of times the reaction was added\n    public let totalCount: Int\n\n    /// Type of the reaction\n    public let type: ReactionType\n\n    /// Identifier of the message sender used by the current user to add the reaction; may be null if unknown or the reaction isn't chosen\n    public let usedSenderId: MessageSender?\n\n\n    public init(\n        isChosen: Bool,\n        recentSenderIds: [MessageSender],\n        totalCount: Int,\n        type: ReactionType,\n        usedSenderId: MessageSender?\n    ) {\n        self.isChosen = isChosen\n        self.recentSenderIds = recentSenderIds\n        self.totalCount = totalCount\n        self.type = type\n        self.usedSenderId = usedSenderId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageReactions.swift",
    "content": "//\n//  MessageReactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of reactions added to a message\npublic struct MessageReactions: Codable, Equatable, Hashable {\n\n    /// True, if the reactions are tags and Telegram Premium users can filter messages by them\n    public let areTags: Bool\n\n    /// True, if the list of added reactions is available using getMessageAddedReactions\n    public let canGetAddedReactions: Bool\n\n    /// Information about top users that added the paid reaction\n    public let paidReactors: [PaidReactor]\n\n    /// List of added reactions\n    public let reactions: [MessageReaction]\n\n\n    public init(\n        areTags: Bool,\n        canGetAddedReactions: Bool,\n        paidReactors: [PaidReactor],\n        reactions: [MessageReaction]\n    ) {\n        self.areTags = areTags\n        self.canGetAddedReactions = canGetAddedReactions\n        self.paidReactors = paidReactors\n        self.reactions = reactions\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageReadDate.swift",
    "content": "//\n//  MessageReadDate.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes read date of a recent outgoing message in a private chat\npublic indirect enum MessageReadDate: Codable, Equatable, Hashable {\n\n    /// Contains read date of the message\n    case messageReadDateRead(MessageReadDateRead)\n\n    /// The message is unread yet\n    case messageReadDateUnread\n\n    /// The message is too old to get read date\n    case messageReadDateTooOld\n\n    /// The read date is unknown due to privacy settings of the other user\n    case messageReadDateUserPrivacyRestricted\n\n    /// The read date is unknown due to privacy settings of the current user, but will be known if the user subscribes to Telegram Premium\n    case messageReadDateMyPrivacyRestricted\n\n\n    private enum Kind: String, Codable {\n        case messageReadDateRead\n        case messageReadDateUnread\n        case messageReadDateTooOld\n        case messageReadDateUserPrivacyRestricted\n        case messageReadDateMyPrivacyRestricted\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .messageReadDateRead:\n            let value = try MessageReadDateRead(from: decoder)\n            self = .messageReadDateRead(value)\n        case .messageReadDateUnread:\n            self = .messageReadDateUnread\n        case .messageReadDateTooOld:\n            self = .messageReadDateTooOld\n        case .messageReadDateUserPrivacyRestricted:\n            self = .messageReadDateUserPrivacyRestricted\n        case .messageReadDateMyPrivacyRestricted:\n            self = .messageReadDateMyPrivacyRestricted\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .messageReadDateRead(let value):\n            try container.encode(Kind.messageReadDateRead, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageReadDateUnread:\n            try container.encode(Kind.messageReadDateUnread, forKey: .type)\n        case .messageReadDateTooOld:\n            try container.encode(Kind.messageReadDateTooOld, forKey: .type)\n        case .messageReadDateUserPrivacyRestricted:\n            try container.encode(Kind.messageReadDateUserPrivacyRestricted, forKey: .type)\n        case .messageReadDateMyPrivacyRestricted:\n            try container.encode(Kind.messageReadDateMyPrivacyRestricted, forKey: .type)\n        }\n    }\n}\n\n/// Contains read date of the message\npublic struct MessageReadDateRead: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the message was read by the other user\n    public let readDate: Int\n\n\n    public init(readDate: Int) {\n        self.readDate = readDate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageReplyInfo.swift",
    "content": "//\n//  MessageReplyInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about replies to a message\npublic struct MessageReplyInfo: Codable, Equatable, Hashable {\n\n    /// Identifier of the last reply to the message\n    public let lastMessageId: Int64\n\n    /// Identifier of the last read incoming reply to the message\n    public let lastReadInboxMessageId: Int64\n\n    /// Identifier of the last read outgoing reply to the message\n    public let lastReadOutboxMessageId: Int64\n\n    /// Identifiers of at most 3 recent repliers to the message; available in channels with a discussion supergroup. The users and chats are expected to be inaccessible: only their photo and name will be available\n    public let recentReplierIds: [MessageSender]\n\n    /// Number of times the message was directly or indirectly replied\n    public let replyCount: Int\n\n\n    public init(\n        lastMessageId: Int64,\n        lastReadInboxMessageId: Int64,\n        lastReadOutboxMessageId: Int64,\n        recentReplierIds: [MessageSender],\n        replyCount: Int\n    ) {\n        self.lastMessageId = lastMessageId\n        self.lastReadInboxMessageId = lastReadInboxMessageId\n        self.lastReadOutboxMessageId = lastReadOutboxMessageId\n        self.recentReplierIds = recentReplierIds\n        self.replyCount = replyCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageReplyTo.swift",
    "content": "//\n//  MessageReplyTo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about the message or the story a message is replying to\npublic indirect enum MessageReplyTo: Codable, Equatable, Hashable {\n\n    /// Describes a message replied by a given message\n    case messageReplyToMessage(MessageReplyToMessage)\n\n    /// Describes a story replied by a given message\n    case messageReplyToStory(MessageReplyToStory)\n\n\n    private enum Kind: String, Codable {\n        case messageReplyToMessage\n        case messageReplyToStory\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .messageReplyToMessage:\n            let value = try MessageReplyToMessage(from: decoder)\n            self = .messageReplyToMessage(value)\n        case .messageReplyToStory:\n            let value = try MessageReplyToStory(from: decoder)\n            self = .messageReplyToStory(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .messageReplyToMessage(let value):\n            try container.encode(Kind.messageReplyToMessage, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageReplyToStory(let value):\n            try container.encode(Kind.messageReplyToStory, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Describes a message replied by a given message\npublic struct MessageReplyToMessage: Codable, Equatable, Hashable {\n\n    /// The identifier of the chat to which the message belongs; may be 0 if the replied message is in unknown chat\n    public let chatId: Int64\n\n    /// Identifier of the checklist task in the original message that was replied; 0 if none\n    public let checklistTaskId: Int\n\n    /// Media content of the message if the message was from another chat or topic; may be null for messages from the same chat and messages without media. Can be only one of the following types: messageAnimation, messageAudio, messageChecklist, messageContact, messageDice, messageDocument, messageGame, messageGiveaway, messageGiveawayWinners, messageInvoice, messageLocation, messagePaidMedia, messagePhoto, messagePoll, messageStakeDice, messageSticker, messageStory, messageText (for link preview), messageVenue, messageVideo, messageVideoNote, or messageVoiceNote\n    public let content: MessageContent?\n\n    /// The identifier of the message; may be 0 if the replied message is in unknown chat\n    public let messageId: Int64\n\n    /// Information about origin of the message if the message was from another chat or topic; may be null for messages from the same chat\n    public let origin: MessageOrigin?\n\n    /// Point in time (Unix timestamp) when the message was sent if the message was from another chat or topic; 0 for messages from the same chat\n    public let originSendDate: Int\n\n    /// Identifier of the poll option in the original message that was replied; empty if none\n    public let pollOptionId: String\n\n    /// Chosen quote from the replied message; may be null if none\n    public let quote: TextQuote?\n\n\n    public init(\n        chatId: Int64,\n        checklistTaskId: Int,\n        content: MessageContent?,\n        messageId: Int64,\n        origin: MessageOrigin?,\n        originSendDate: Int,\n        pollOptionId: String,\n        quote: TextQuote?\n    ) {\n        self.chatId = chatId\n        self.checklistTaskId = checklistTaskId\n        self.content = content\n        self.messageId = messageId\n        self.origin = origin\n        self.originSendDate = originSendDate\n        self.pollOptionId = pollOptionId\n        self.quote = quote\n    }\n}\n\n/// Describes a story replied by a given message\npublic struct MessageReplyToStory: Codable, Equatable, Hashable {\n\n    /// The identifier of the story\n    public let storyId: Int\n\n    /// The identifier of the poster of the story\n    public let storyPosterChatId: Int64\n\n\n    public init(\n        storyId: Int,\n        storyPosterChatId: Int64\n    ) {\n        self.storyId = storyId\n        self.storyPosterChatId = storyPosterChatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageSchedulingState.swift",
    "content": "//\n//  MessageSchedulingState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about the time when a scheduled message will be sent\npublic indirect enum MessageSchedulingState: Codable, Equatable, Hashable {\n\n    /// The message will be sent at the specified date\n    case messageSchedulingStateSendAtDate(MessageSchedulingStateSendAtDate)\n\n    /// The message will be sent when the other user is online. Applicable to private chats only and when the exact online status of the other user is known\n    case messageSchedulingStateSendWhenOnline\n\n    /// The message will be sent when the video in the message is converted and optimized; can be used only by the server\n    case messageSchedulingStateSendWhenVideoProcessed(MessageSchedulingStateSendWhenVideoProcessed)\n\n\n    private enum Kind: String, Codable {\n        case messageSchedulingStateSendAtDate\n        case messageSchedulingStateSendWhenOnline\n        case messageSchedulingStateSendWhenVideoProcessed\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .messageSchedulingStateSendAtDate:\n            let value = try MessageSchedulingStateSendAtDate(from: decoder)\n            self = .messageSchedulingStateSendAtDate(value)\n        case .messageSchedulingStateSendWhenOnline:\n            self = .messageSchedulingStateSendWhenOnline\n        case .messageSchedulingStateSendWhenVideoProcessed:\n            let value = try MessageSchedulingStateSendWhenVideoProcessed(from: decoder)\n            self = .messageSchedulingStateSendWhenVideoProcessed(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .messageSchedulingStateSendAtDate(let value):\n            try container.encode(Kind.messageSchedulingStateSendAtDate, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageSchedulingStateSendWhenOnline:\n            try container.encode(Kind.messageSchedulingStateSendWhenOnline, forKey: .type)\n        case .messageSchedulingStateSendWhenVideoProcessed(let value):\n            try container.encode(Kind.messageSchedulingStateSendWhenVideoProcessed, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The message will be sent at the specified date\npublic struct MessageSchedulingStateSendAtDate: Codable, Equatable, Hashable {\n\n    /// Period after which the message will be sent again; in seconds; 0 if never; for Telegram Premium users only; may be non-zero only in sendMessage and forwardMessages with one message requests; must be one of 0, 86400, 7 * 86400, 14 * 86400, 30 * 86400, 91 * 86400, 182 * 86400, 365 * 86400, or additionally 60, or 300 in the Test DC\n    public let repeatPeriod: Int\n\n    /// Point in time (Unix timestamp) when the message will be sent. The date must be within 367 days in the future\n    public let sendDate: Int\n\n\n    public init(\n        repeatPeriod: Int,\n        sendDate: Int\n    ) {\n        self.repeatPeriod = repeatPeriod\n        self.sendDate = sendDate\n    }\n}\n\n/// The message will be sent when the video in the message is converted and optimized; can be used only by the server\npublic struct MessageSchedulingStateSendWhenVideoProcessed: Codable, Equatable, Hashable {\n\n    /// Approximate point in time (Unix timestamp) when the message is expected to be sent\n    public let sendDate: Int\n\n\n    public init(sendDate: Int) {\n        self.sendDate = sendDate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageSelfDestructType.swift",
    "content": "//\n//  MessageSelfDestructType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes when a message will be self-destructed\npublic indirect enum MessageSelfDestructType: Codable, Equatable, Hashable {\n\n    /// The message will be self-destructed in the specified time after its content was opened\n    case messageSelfDestructTypeTimer(MessageSelfDestructTypeTimer)\n\n    /// The message can be opened only once and will be self-destructed once closed\n    case messageSelfDestructTypeImmediately\n\n\n    private enum Kind: String, Codable {\n        case messageSelfDestructTypeTimer\n        case messageSelfDestructTypeImmediately\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .messageSelfDestructTypeTimer:\n            let value = try MessageSelfDestructTypeTimer(from: decoder)\n            self = .messageSelfDestructTypeTimer(value)\n        case .messageSelfDestructTypeImmediately:\n            self = .messageSelfDestructTypeImmediately\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .messageSelfDestructTypeTimer(let value):\n            try container.encode(Kind.messageSelfDestructTypeTimer, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageSelfDestructTypeImmediately:\n            try container.encode(Kind.messageSelfDestructTypeImmediately, forKey: .type)\n        }\n    }\n}\n\n/// The message will be self-destructed in the specified time after its content was opened\npublic struct MessageSelfDestructTypeTimer: Codable, Equatable, Hashable {\n\n    /// The message's self-destruct time, in seconds; must be between 0 and 60 in private chats\n    public let selfDestructTime: Int\n\n\n    public init(selfDestructTime: Int) {\n        self.selfDestructTime = selfDestructTime\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageSendOptions.swift",
    "content": "//\n//  MessageSendOptions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Options to be used when a message is sent\npublic struct MessageSendOptions: Codable, Equatable, Hashable {\n\n    /// Pass true to allow the message to ignore regular broadcast limits for a small fee; for bots only\n    public let allowPaidBroadcast: Bool\n\n    /// Pass true to disable notification for the message\n    public let disableNotification: Bool\n\n    /// Identifier of the effect to apply to the message; pass 0 if none; applicable only to sendMessage, sendMessageAlbum in private chats and forwardMessages with one message to private chats\n    public let effectId: TdInt64\n\n    /// Pass true if the message is sent from the background\n    public let fromBackground: Bool\n\n    /// Pass true to get a fake message instead of actually sending them\n    public let onlyPreview: Bool\n\n    /// The number of Telegram Stars the user agreed to pay to send the messages\n    public let paidMessageStarCount: Int64\n\n    /// Pass true if the content of the message must be protected from forwarding and saving; for bots only\n    public let protectContent: Bool\n\n    /// Message scheduling state; pass null to send message immediately. Messages sent to a secret chat, to a chat with paid messages, to a channel direct messages chat, live location messages and self-destructing messages can't be scheduled\n    public let schedulingState: MessageSchedulingState?\n\n    /// Non-persistent identifier, which will be returned back in messageSendingStatePending object and can be used to match sent messages and corresponding updateNewMessage updates\n    public let sendingId: Int\n\n    /// Information about the suggested post; pass null if none. For messages to channel direct messages chat only. Applicable only to sendMessage and addOffer\n    public let suggestedPostInfo: InputSuggestedPostInfo?\n\n    /// Pass true if the user explicitly chosen a sticker or a custom emoji from an installed sticker set; applicable only to sendMessage and sendMessageAlbum\n    public let updateOrderOfInstalledStickerSets: Bool\n\n\n    public init(\n        allowPaidBroadcast: Bool,\n        disableNotification: Bool,\n        effectId: TdInt64,\n        fromBackground: Bool,\n        onlyPreview: Bool,\n        paidMessageStarCount: Int64,\n        protectContent: Bool,\n        schedulingState: MessageSchedulingState?,\n        sendingId: Int,\n        suggestedPostInfo: InputSuggestedPostInfo?,\n        updateOrderOfInstalledStickerSets: Bool\n    ) {\n        self.allowPaidBroadcast = allowPaidBroadcast\n        self.disableNotification = disableNotification\n        self.effectId = effectId\n        self.fromBackground = fromBackground\n        self.onlyPreview = onlyPreview\n        self.paidMessageStarCount = paidMessageStarCount\n        self.protectContent = protectContent\n        self.schedulingState = schedulingState\n        self.sendingId = sendingId\n        self.suggestedPostInfo = suggestedPostInfo\n        self.updateOrderOfInstalledStickerSets = updateOrderOfInstalledStickerSets\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageSender.swift",
    "content": "//\n//  MessageSender.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about the sender of a message\npublic indirect enum MessageSender: Codable, Equatable, Hashable {\n\n    /// The message was sent by a known user\n    case messageSenderUser(MessageSenderUser)\n\n    /// The message was sent on behalf of a chat\n    case messageSenderChat(MessageSenderChat)\n\n\n    private enum Kind: String, Codable {\n        case messageSenderUser\n        case messageSenderChat\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .messageSenderUser:\n            let value = try MessageSenderUser(from: decoder)\n            self = .messageSenderUser(value)\n        case .messageSenderChat:\n            let value = try MessageSenderChat(from: decoder)\n            self = .messageSenderChat(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .messageSenderUser(let value):\n            try container.encode(Kind.messageSenderUser, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageSenderChat(let value):\n            try container.encode(Kind.messageSenderChat, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The message was sent by a known user\npublic struct MessageSenderUser: Codable, Equatable, Hashable {\n\n    /// Identifier of the user who sent the message\n    public let userId: Int64\n\n\n    public init(userId: Int64) {\n        self.userId = userId\n    }\n}\n\n/// The message was sent on behalf of a chat\npublic struct MessageSenderChat: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat that sent the message\n    public let chatId: Int64\n\n\n    public init(chatId: Int64) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageSenders.swift",
    "content": "//\n//  MessageSenders.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of message senders\npublic struct MessageSenders: Codable, Equatable, Hashable {\n\n    /// List of message senders\n    public let senders: [MessageSender]\n\n    /// Approximate total number of message senders found\n    public let totalCount: Int\n\n\n    public init(\n        senders: [MessageSender],\n        totalCount: Int\n    ) {\n        self.senders = senders\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageSendingState.swift",
    "content": "//\n//  MessageSendingState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about the sending state of the message\npublic indirect enum MessageSendingState: Codable, Equatable, Hashable {\n\n    /// The message is being sent now, but has not yet been delivered to the server\n    case messageSendingStatePending(MessageSendingStatePending)\n\n    /// The message failed to be sent\n    case messageSendingStateFailed(MessageSendingStateFailed)\n\n\n    private enum Kind: String, Codable {\n        case messageSendingStatePending\n        case messageSendingStateFailed\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .messageSendingStatePending:\n            let value = try MessageSendingStatePending(from: decoder)\n            self = .messageSendingStatePending(value)\n        case .messageSendingStateFailed:\n            let value = try MessageSendingStateFailed(from: decoder)\n            self = .messageSendingStateFailed(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .messageSendingStatePending(let value):\n            try container.encode(Kind.messageSendingStatePending, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageSendingStateFailed(let value):\n            try container.encode(Kind.messageSendingStateFailed, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The message is being sent now, but has not yet been delivered to the server\npublic struct MessageSendingStatePending: Codable, Equatable, Hashable {\n\n    /// Non-persistent message sending identifier, specified by the application\n    public let sendingId: Int\n\n\n    public init(sendingId: Int) {\n        self.sendingId = sendingId\n    }\n}\n\n/// The message failed to be sent\npublic struct MessageSendingStateFailed: Codable, Equatable, Hashable {\n\n    /// True, if the message can be re-sent using resendMessages or readdQuickReplyShortcutMessages\n    public let canRetry: Bool\n\n    /// The cause of the message sending failure\n    public let error: Error\n\n    /// True, if the message can be re-sent only if another quote is chosen in the message that is replied by the given message\n    public let needAnotherReplyQuote: Bool\n\n    /// True, if the message can be re-sent only on behalf of a different sender\n    public let needAnotherSender: Bool\n\n    /// True, if the message can be re-sent only if the message to be replied is removed. This will be done automatically by resendMessages\n    public let needDropReply: Bool\n\n    /// The number of Telegram Stars that must be paid to send the message; 0 if the current amount is correct\n    public let requiredPaidMessageStarCount: Int64\n\n    /// Time left before the message can be re-sent, in seconds. No update is sent when this field changes\n    public let retryAfter: Double\n\n\n    public init(\n        canRetry: Bool,\n        error: Error,\n        needAnotherReplyQuote: Bool,\n        needAnotherSender: Bool,\n        needDropReply: Bool,\n        requiredPaidMessageStarCount: Int64,\n        retryAfter: Double\n    ) {\n        self.canRetry = canRetry\n        self.error = error\n        self.needAnotherReplyQuote = needAnotherReplyQuote\n        self.needAnotherSender = needAnotherSender\n        self.needDropReply = needDropReply\n        self.requiredPaidMessageStarCount = requiredPaidMessageStarCount\n        self.retryAfter = retryAfter\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageSource.swift",
    "content": "//\n//  MessageSource.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes source of a message\npublic indirect enum MessageSource: Codable, Equatable, Hashable {\n\n    /// The message is from a chat history\n    case messageSourceChatHistory\n\n    /// The message is from history of a message thread\n    case messageSourceMessageThreadHistory\n\n    /// The message is from history of a forum topic\n    case messageSourceForumTopicHistory\n\n    /// The message is from history of a topic in a channel direct messages chat administered by the current user\n    case messageSourceDirectMessagesChatTopicHistory\n\n    /// The message is from chat, message thread or forum topic history preview\n    case messageSourceHistoryPreview\n\n    /// The message is from a chat list or a forum topic list\n    case messageSourceChatList\n\n    /// The message is from search results, including file downloads, local file list, outgoing document messages, calendar\n    case messageSourceSearch\n\n    /// The message is from a chat event log\n    case messageSourceChatEventLog\n\n    /// The message is from a notification\n    case messageSourceNotification\n\n    /// The message was screenshotted; the source must be used only if the message content was visible during the screenshot\n    case messageSourceScreenshot\n\n    /// The message is from some other source\n    case messageSourceOther\n\n\n    private enum Kind: String, Codable {\n        case messageSourceChatHistory\n        case messageSourceMessageThreadHistory\n        case messageSourceForumTopicHistory\n        case messageSourceDirectMessagesChatTopicHistory\n        case messageSourceHistoryPreview\n        case messageSourceChatList\n        case messageSourceSearch\n        case messageSourceChatEventLog\n        case messageSourceNotification\n        case messageSourceScreenshot\n        case messageSourceOther\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .messageSourceChatHistory:\n            self = .messageSourceChatHistory\n        case .messageSourceMessageThreadHistory:\n            self = .messageSourceMessageThreadHistory\n        case .messageSourceForumTopicHistory:\n            self = .messageSourceForumTopicHistory\n        case .messageSourceDirectMessagesChatTopicHistory:\n            self = .messageSourceDirectMessagesChatTopicHistory\n        case .messageSourceHistoryPreview:\n            self = .messageSourceHistoryPreview\n        case .messageSourceChatList:\n            self = .messageSourceChatList\n        case .messageSourceSearch:\n            self = .messageSourceSearch\n        case .messageSourceChatEventLog:\n            self = .messageSourceChatEventLog\n        case .messageSourceNotification:\n            self = .messageSourceNotification\n        case .messageSourceScreenshot:\n            self = .messageSourceScreenshot\n        case .messageSourceOther:\n            self = .messageSourceOther\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .messageSourceChatHistory:\n            try container.encode(Kind.messageSourceChatHistory, forKey: .type)\n        case .messageSourceMessageThreadHistory:\n            try container.encode(Kind.messageSourceMessageThreadHistory, forKey: .type)\n        case .messageSourceForumTopicHistory:\n            try container.encode(Kind.messageSourceForumTopicHistory, forKey: .type)\n        case .messageSourceDirectMessagesChatTopicHistory:\n            try container.encode(Kind.messageSourceDirectMessagesChatTopicHistory, forKey: .type)\n        case .messageSourceHistoryPreview:\n            try container.encode(Kind.messageSourceHistoryPreview, forKey: .type)\n        case .messageSourceChatList:\n            try container.encode(Kind.messageSourceChatList, forKey: .type)\n        case .messageSourceSearch:\n            try container.encode(Kind.messageSourceSearch, forKey: .type)\n        case .messageSourceChatEventLog:\n            try container.encode(Kind.messageSourceChatEventLog, forKey: .type)\n        case .messageSourceNotification:\n            try container.encode(Kind.messageSourceNotification, forKey: .type)\n        case .messageSourceScreenshot:\n            try container.encode(Kind.messageSourceScreenshot, forKey: .type)\n        case .messageSourceOther:\n            try container.encode(Kind.messageSourceOther, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageSponsor.swift",
    "content": "//\n//  MessageSponsor.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.50-64852808\n//  https://github.com/tdlib/td/tree/64852808\n//\n\nimport Foundation\n\n\n/// Information about the sponsor of a message\npublic struct MessageSponsor: Codable, Equatable, Hashable {\n\n    /// Additional optional information about the sponsor to be shown along with the message\n    public let info: String\n\n    /// Photo of the sponsor; may be null if must not be shown\n    public let photo: Photo?\n\n    /// URL of the sponsor to be opened when the message is clicked\n    public let url: String\n\n\n    public init(\n        info: String,\n        photo: Photo?,\n        url: String\n    ) {\n        self.info = info\n        self.photo = photo\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageStatistics.swift",
    "content": "//\n//  MessageStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A detailed statistics about a message\npublic struct MessageStatistics: Codable, Equatable, Hashable {\n\n    /// A graph containing number of message views and shares\n    public let messageInteractionGraph: StatisticalGraph\n\n    /// A graph containing number of message reactions\n    public let messageReactionGraph: StatisticalGraph\n\n\n    public init(\n        messageInteractionGraph: StatisticalGraph,\n        messageReactionGraph: StatisticalGraph\n    ) {\n        self.messageInteractionGraph = messageInteractionGraph\n        self.messageReactionGraph = messageReactionGraph\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageThreadInfo.swift",
    "content": "//\n//  MessageThreadInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a message thread\npublic struct MessageThreadInfo: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the message thread belongs\n    public let chatId: Int64\n\n    /// A draft of a message in the message thread; may be null if none\n    public let draftMessage: DraftMessage?\n\n    /// Message thread identifier, unique within the chat\n    public let messageThreadId: Int64\n\n    /// The messages from which the thread starts. The messages are returned in reverse chronological order (i.e., in order of decreasing message_id)\n    public let messages: [Message]\n\n    /// Information about the message thread; may be null for forum topic threads\n    public let replyInfo: MessageReplyInfo?\n\n    /// Approximate number of unread messages in the message thread\n    public let unreadMessageCount: Int\n\n\n    public init(\n        chatId: Int64,\n        draftMessage: DraftMessage?,\n        messageThreadId: Int64,\n        messages: [Message],\n        replyInfo: MessageReplyInfo?,\n        unreadMessageCount: Int\n    ) {\n        self.chatId = chatId\n        self.draftMessage = draftMessage\n        self.messageThreadId = messageThreadId\n        self.messages = messages\n        self.replyInfo = replyInfo\n        self.unreadMessageCount = unreadMessageCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageTopic.swift",
    "content": "//\n//  MessageTopic.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a topic of messages in a chat\npublic indirect enum MessageTopic: Codable, Equatable, Hashable {\n\n    /// A topic in a non-forum supergroup chat\n    case messageTopicThread(MessageTopicThread)\n\n    /// A topic in a forum supergroup chat or a chat with a bot\n    case messageTopicForum(MessageTopicForum)\n\n    /// A topic in a channel direct messages chat administered by the current user\n    case messageTopicDirectMessages(MessageTopicDirectMessages)\n\n    /// A topic in Saved Messages chat\n    case messageTopicSavedMessages(MessageTopicSavedMessages)\n\n\n    private enum Kind: String, Codable {\n        case messageTopicThread\n        case messageTopicForum\n        case messageTopicDirectMessages\n        case messageTopicSavedMessages\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .messageTopicThread:\n            let value = try MessageTopicThread(from: decoder)\n            self = .messageTopicThread(value)\n        case .messageTopicForum:\n            let value = try MessageTopicForum(from: decoder)\n            self = .messageTopicForum(value)\n        case .messageTopicDirectMessages:\n            let value = try MessageTopicDirectMessages(from: decoder)\n            self = .messageTopicDirectMessages(value)\n        case .messageTopicSavedMessages:\n            let value = try MessageTopicSavedMessages(from: decoder)\n            self = .messageTopicSavedMessages(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .messageTopicThread(let value):\n            try container.encode(Kind.messageTopicThread, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageTopicForum(let value):\n            try container.encode(Kind.messageTopicForum, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageTopicDirectMessages(let value):\n            try container.encode(Kind.messageTopicDirectMessages, forKey: .type)\n            try value.encode(to: encoder)\n        case .messageTopicSavedMessages(let value):\n            try container.encode(Kind.messageTopicSavedMessages, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A topic in a non-forum supergroup chat\npublic struct MessageTopicThread: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the message thread\n    public let messageThreadId: Int64\n\n\n    public init(messageThreadId: Int64) {\n        self.messageThreadId = messageThreadId\n    }\n}\n\n/// A topic in a forum supergroup chat or a chat with a bot\npublic struct MessageTopicForum: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the forum topic\n    public let forumTopicId: Int\n\n\n    public init(forumTopicId: Int) {\n        self.forumTopicId = forumTopicId\n    }\n}\n\n/// A topic in a channel direct messages chat administered by the current user\npublic struct MessageTopicDirectMessages: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the topic\n    public let directMessagesChatTopicId: Int64\n\n\n    public init(directMessagesChatTopicId: Int64) {\n        self.directMessagesChatTopicId = directMessagesChatTopicId\n    }\n}\n\n/// A topic in Saved Messages chat\npublic struct MessageTopicSavedMessages: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the Saved Messages topic\n    public let savedMessagesTopicId: Int64\n\n\n    public init(savedMessagesTopicId: Int64) {\n        self.savedMessagesTopicId = savedMessagesTopicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageViewer.swift",
    "content": "//\n//  MessageViewer.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a viewer of a message\npublic struct MessageViewer: Codable, Equatable, Hashable {\n\n    /// User identifier of the viewer\n    public let userId: Int64\n\n    /// Approximate point in time (Unix timestamp) when the message was viewed\n    public let viewDate: Int\n\n\n    public init(\n        userId: Int64,\n        viewDate: Int\n    ) {\n        self.userId = userId\n        self.viewDate = viewDate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/MessageViewers.swift",
    "content": "//\n//  MessageViewers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of message viewers\npublic struct MessageViewers: Codable, Equatable, Hashable {\n\n    /// List of message viewers\n    public let viewers: [MessageViewer]\n\n\n    public init(viewers: [MessageViewer]) {\n        self.viewers = viewers\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Messages.swift",
    "content": "//\n//  Messages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of messages\npublic struct Messages: Codable, Equatable, Hashable {\n\n    /// List of messages; messages may be null\n    public let messages: [Message]?\n\n    /// Approximate total number of messages found\n    public let totalCount: Int\n\n\n    public init(\n        messages: [Message]?,\n        totalCount: Int\n    ) {\n        self.messages = messages\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Minithumbnail.swift",
    "content": "//\n//  Minithumbnail.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Thumbnail image of a very poor quality and low resolution\npublic struct Minithumbnail: Codable, Equatable, Hashable {\n\n    /// The thumbnail in JPEG format\n    public let data: Data\n\n    /// Thumbnail height, usually doesn't exceed 40\n    public let height: Int\n\n    /// Thumbnail width, usually doesn't exceed 40\n    public let width: Int\n\n\n    public init(\n        data: Data,\n        height: Int,\n        width: Int\n    ) {\n        self.data = data\n        self.height = height\n        self.width = width\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/NetworkStatistics.swift",
    "content": "//\n//  NetworkStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A full list of available network statistic entries\npublic struct NetworkStatistics: Codable, Equatable, Hashable {\n\n    /// Network statistics entries\n    public let entries: [NetworkStatisticsEntry]\n\n    /// Point in time (Unix timestamp) from which the statistics are collected\n    public let sinceDate: Int\n\n\n    public init(\n        entries: [NetworkStatisticsEntry],\n        sinceDate: Int\n    ) {\n        self.entries = entries\n        self.sinceDate = sinceDate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/NetworkStatisticsEntry.swift",
    "content": "//\n//  NetworkStatisticsEntry.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains statistics about network usage\npublic indirect enum NetworkStatisticsEntry: Codable, Equatable, Hashable {\n\n    /// Contains information about the total amount of data that was used to send and receive files\n    case networkStatisticsEntryFile(NetworkStatisticsEntryFile)\n\n    /// Contains information about the total amount of data that was used for calls\n    case networkStatisticsEntryCall(NetworkStatisticsEntryCall)\n\n\n    private enum Kind: String, Codable {\n        case networkStatisticsEntryFile\n        case networkStatisticsEntryCall\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .networkStatisticsEntryFile:\n            let value = try NetworkStatisticsEntryFile(from: decoder)\n            self = .networkStatisticsEntryFile(value)\n        case .networkStatisticsEntryCall:\n            let value = try NetworkStatisticsEntryCall(from: decoder)\n            self = .networkStatisticsEntryCall(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .networkStatisticsEntryFile(let value):\n            try container.encode(Kind.networkStatisticsEntryFile, forKey: .type)\n            try value.encode(to: encoder)\n        case .networkStatisticsEntryCall(let value):\n            try container.encode(Kind.networkStatisticsEntryCall, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Contains information about the total amount of data that was used to send and receive files\npublic struct NetworkStatisticsEntryFile: Codable, Equatable, Hashable {\n\n    /// Type of the file the data is part of; pass null if the data isn't related to files\n    public let fileType: FileType?\n\n    /// Type of the network the data was sent through. Call setNetworkType to maintain the actual network type\n    public let networkType: NetworkType\n\n    /// Total number of bytes received\n    public let receivedBytes: Int64\n\n    /// Total number of bytes sent\n    public let sentBytes: Int64\n\n\n    public init(\n        fileType: FileType?,\n        networkType: NetworkType,\n        receivedBytes: Int64,\n        sentBytes: Int64\n    ) {\n        self.fileType = fileType\n        self.networkType = networkType\n        self.receivedBytes = receivedBytes\n        self.sentBytes = sentBytes\n    }\n}\n\n/// Contains information about the total amount of data that was used for calls\npublic struct NetworkStatisticsEntryCall: Codable, Equatable, Hashable {\n\n    /// Total call duration, in seconds\n    public let duration: Double\n\n    /// Type of the network the data was sent through. Call setNetworkType to maintain the actual network type\n    public let networkType: NetworkType\n\n    /// Total number of bytes received\n    public let receivedBytes: Int64\n\n    /// Total number of bytes sent\n    public let sentBytes: Int64\n\n\n    public init(\n        duration: Double,\n        networkType: NetworkType,\n        receivedBytes: Int64,\n        sentBytes: Int64\n    ) {\n        self.duration = duration\n        self.networkType = networkType\n        self.receivedBytes = receivedBytes\n        self.sentBytes = sentBytes\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/NetworkType.swift",
    "content": "//\n//  NetworkType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents the type of network\npublic indirect enum NetworkType: Codable, Equatable, Hashable {\n\n    /// The network is not available\n    case networkTypeNone\n\n    /// A mobile network\n    case networkTypeMobile\n\n    /// A mobile roaming network\n    case networkTypeMobileRoaming\n\n    /// A Wi-Fi network\n    case networkTypeWiFi\n\n    /// A different network type (e.g., Ethernet network)\n    case networkTypeOther\n\n\n    private enum Kind: String, Codable {\n        case networkTypeNone\n        case networkTypeMobile\n        case networkTypeMobileRoaming\n        case networkTypeWiFi\n        case networkTypeOther\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .networkTypeNone:\n            self = .networkTypeNone\n        case .networkTypeMobile:\n            self = .networkTypeMobile\n        case .networkTypeMobileRoaming:\n            self = .networkTypeMobileRoaming\n        case .networkTypeWiFi:\n            self = .networkTypeWiFi\n        case .networkTypeOther:\n            self = .networkTypeOther\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .networkTypeNone:\n            try container.encode(Kind.networkTypeNone, forKey: .type)\n        case .networkTypeMobile:\n            try container.encode(Kind.networkTypeMobile, forKey: .type)\n        case .networkTypeMobileRoaming:\n            try container.encode(Kind.networkTypeMobileRoaming, forKey: .type)\n        case .networkTypeWiFi:\n            try container.encode(Kind.networkTypeWiFi, forKey: .type)\n        case .networkTypeOther:\n            try container.encode(Kind.networkTypeOther, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/NewChatPrivacySettings.swift",
    "content": "//\n//  NewChatPrivacySettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains privacy settings for chats with non-contacts\npublic struct NewChatPrivacySettings: Codable, Equatable, Hashable {\n\n    /// True, if non-contacts users are able to write first to the current user. Telegram Premium subscribers are able to write first regardless of this setting\n    public let allowNewChatsFromUnknownUsers: Bool\n\n    /// Number of Telegram Stars that must be paid for every incoming private message by non-contacts; 0-getOption(\"paid_message_star_count_max\"). If positive, then allow_new_chats_from_unknown_users must be true. The current user will receive getOption(\"paid_message_earnings_per_mille\") Telegram Stars for each 1000 Telegram Stars paid for message sending. Can be positive, only if getOption(\"can_enable_paid_messages\") is true\n    public let incomingPaidMessageStarCount: Int64\n\n\n    public init(\n        allowNewChatsFromUnknownUsers: Bool,\n        incomingPaidMessageStarCount: Int64\n    ) {\n        self.allowNewChatsFromUnknownUsers = allowNewChatsFromUnknownUsers\n        self.incomingPaidMessageStarCount = incomingPaidMessageStarCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Notification.swift",
    "content": "//\n//  Notification.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a notification\npublic struct Notification: Codable, Equatable, Hashable, Identifiable {\n\n    /// Notification date\n    public let date: Int\n\n    /// Unique persistent identifier of this notification\n    public let id: Int\n\n    /// True, if the notification was explicitly sent without sound\n    public let isSilent: Bool\n\n    /// Notification type\n    public let type: NotificationType\n\n\n    public init(\n        date: Int,\n        id: Int,\n        isSilent: Bool,\n        type: NotificationType\n    ) {\n        self.date = date\n        self.id = id\n        self.isSilent = isSilent\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/NotificationGroup.swift",
    "content": "//\n//  NotificationGroup.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a group of notifications\npublic struct NotificationGroup: Codable, Equatable, Hashable, Identifiable {\n\n    /// Identifier of a chat to which all notifications in the group belong\n    public let chatId: Int64\n\n    /// Unique persistent auto-incremented from 1 identifier of the notification group\n    public let id: Int\n\n    /// The list of active notifications\n    public let notifications: [Notification]\n\n    /// Total number of active notifications in the group\n    public let totalCount: Int\n\n    /// Type of the group\n    public let type: NotificationGroupType\n\n\n    public init(\n        chatId: Int64,\n        id: Int,\n        notifications: [Notification],\n        totalCount: Int,\n        type: NotificationGroupType\n    ) {\n        self.chatId = chatId\n        self.id = id\n        self.notifications = notifications\n        self.totalCount = totalCount\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/NotificationGroupType.swift",
    "content": "//\n//  NotificationGroupType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the type of notifications in a notification group\npublic indirect enum NotificationGroupType: Codable, Equatable, Hashable {\n\n    /// A group containing notifications of type notificationTypeNewMessage and notificationTypeNewPushMessage with ordinary unread messages\n    case notificationGroupTypeMessages\n\n    /// A group containing notifications of type notificationTypeNewMessage and notificationTypeNewPushMessage with unread mentions of the current user, replies to their messages, or a pinned message\n    case notificationGroupTypeMentions\n\n    /// A group containing a notification of type notificationTypeNewSecretChat\n    case notificationGroupTypeSecretChat\n\n    /// A group containing notifications of type notificationTypeNewCall\n    case notificationGroupTypeCalls\n\n\n    private enum Kind: String, Codable {\n        case notificationGroupTypeMessages\n        case notificationGroupTypeMentions\n        case notificationGroupTypeSecretChat\n        case notificationGroupTypeCalls\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .notificationGroupTypeMessages:\n            self = .notificationGroupTypeMessages\n        case .notificationGroupTypeMentions:\n            self = .notificationGroupTypeMentions\n        case .notificationGroupTypeSecretChat:\n            self = .notificationGroupTypeSecretChat\n        case .notificationGroupTypeCalls:\n            self = .notificationGroupTypeCalls\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .notificationGroupTypeMessages:\n            try container.encode(Kind.notificationGroupTypeMessages, forKey: .type)\n        case .notificationGroupTypeMentions:\n            try container.encode(Kind.notificationGroupTypeMentions, forKey: .type)\n        case .notificationGroupTypeSecretChat:\n            try container.encode(Kind.notificationGroupTypeSecretChat, forKey: .type)\n        case .notificationGroupTypeCalls:\n            try container.encode(Kind.notificationGroupTypeCalls, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/NotificationSettingsScope.swift",
    "content": "//\n//  NotificationSettingsScope.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the types of chats to which notification settings are relevant\npublic indirect enum NotificationSettingsScope: Codable, Equatable, Hashable {\n\n    /// Notification settings applied to all private and secret chats when the corresponding chat setting has a default value\n    case notificationSettingsScopePrivateChats\n\n    /// Notification settings applied to all basic group and supergroup chats when the corresponding chat setting has a default value\n    case notificationSettingsScopeGroupChats\n\n    /// Notification settings applied to all channel chats when the corresponding chat setting has a default value\n    case notificationSettingsScopeChannelChats\n\n\n    private enum Kind: String, Codable {\n        case notificationSettingsScopePrivateChats\n        case notificationSettingsScopeGroupChats\n        case notificationSettingsScopeChannelChats\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .notificationSettingsScopePrivateChats:\n            self = .notificationSettingsScopePrivateChats\n        case .notificationSettingsScopeGroupChats:\n            self = .notificationSettingsScopeGroupChats\n        case .notificationSettingsScopeChannelChats:\n            self = .notificationSettingsScopeChannelChats\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .notificationSettingsScopePrivateChats:\n            try container.encode(Kind.notificationSettingsScopePrivateChats, forKey: .type)\n        case .notificationSettingsScopeGroupChats:\n            try container.encode(Kind.notificationSettingsScopeGroupChats, forKey: .type)\n        case .notificationSettingsScopeChannelChats:\n            try container.encode(Kind.notificationSettingsScopeChannelChats, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/NotificationSound.swift",
    "content": "//\n//  NotificationSound.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a notification sound in MP3 format\npublic struct NotificationSound: Codable, Equatable, Hashable, Identifiable {\n\n    /// Arbitrary data, defined while the sound was uploaded\n    public let data: String\n\n    /// Point in time (Unix timestamp) when the sound was created\n    public let date: Int\n\n    /// Duration of the sound, in seconds\n    public let duration: Int\n\n    /// Unique identifier of the notification sound\n    public let id: TdInt64\n\n    /// File containing the sound\n    public let sound: File\n\n    /// Title of the notification sound\n    public let title: String\n\n\n    public init(\n        data: String,\n        date: Int,\n        duration: Int,\n        id: TdInt64,\n        sound: File,\n        title: String\n    ) {\n        self.data = data\n        self.date = date\n        self.duration = duration\n        self.id = id\n        self.sound = sound\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/NotificationSounds.swift",
    "content": "//\n//  NotificationSounds.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of notification sounds\npublic struct NotificationSounds: Codable, Equatable, Hashable {\n\n    /// A list of notification sounds\n    public let notificationSounds: [NotificationSound]\n\n\n    public init(notificationSounds: [NotificationSound]) {\n        self.notificationSounds = notificationSounds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/NotificationType.swift",
    "content": "//\n//  NotificationType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains detailed information about a notification\npublic indirect enum NotificationType: Codable, Equatable, Hashable {\n\n    /// New message was received\n    case notificationTypeNewMessage(NotificationTypeNewMessage)\n\n    /// New secret chat was created\n    case notificationTypeNewSecretChat\n\n    /// New call was received\n    case notificationTypeNewCall(NotificationTypeNewCall)\n\n    /// New message was received through a push notification\n    case notificationTypeNewPushMessage(NotificationTypeNewPushMessage)\n\n\n    private enum Kind: String, Codable {\n        case notificationTypeNewMessage\n        case notificationTypeNewSecretChat\n        case notificationTypeNewCall\n        case notificationTypeNewPushMessage\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .notificationTypeNewMessage:\n            let value = try NotificationTypeNewMessage(from: decoder)\n            self = .notificationTypeNewMessage(value)\n        case .notificationTypeNewSecretChat:\n            self = .notificationTypeNewSecretChat\n        case .notificationTypeNewCall:\n            let value = try NotificationTypeNewCall(from: decoder)\n            self = .notificationTypeNewCall(value)\n        case .notificationTypeNewPushMessage:\n            let value = try NotificationTypeNewPushMessage(from: decoder)\n            self = .notificationTypeNewPushMessage(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .notificationTypeNewMessage(let value):\n            try container.encode(Kind.notificationTypeNewMessage, forKey: .type)\n            try value.encode(to: encoder)\n        case .notificationTypeNewSecretChat:\n            try container.encode(Kind.notificationTypeNewSecretChat, forKey: .type)\n        case .notificationTypeNewCall(let value):\n            try container.encode(Kind.notificationTypeNewCall, forKey: .type)\n            try value.encode(to: encoder)\n        case .notificationTypeNewPushMessage(let value):\n            try container.encode(Kind.notificationTypeNewPushMessage, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// New message was received\npublic struct NotificationTypeNewMessage: Codable, Equatable, Hashable {\n\n    /// The message\n    public let message: Message\n\n    /// True, if message content must be displayed in notifications\n    public let showPreview: Bool\n\n\n    public init(\n        message: Message,\n        showPreview: Bool\n    ) {\n        self.message = message\n        self.showPreview = showPreview\n    }\n}\n\n/// New call was received\npublic struct NotificationTypeNewCall: Codable, Equatable, Hashable {\n\n    /// Call identifier\n    public let callId: Int\n\n\n    public init(callId: Int) {\n        self.callId = callId\n    }\n}\n\n/// New message was received through a push notification\npublic struct NotificationTypeNewPushMessage: Codable, Equatable, Hashable {\n\n    /// Push message content\n    public let content: PushMessageContent\n\n    /// True, if the message is outgoing\n    public let isOutgoing: Bool\n\n    /// The message identifier. The message will not be available in the chat history, but the identifier can be used in viewMessages, or as a message to be replied in the same chat\n    public let messageId: Int64\n\n    /// Identifier of the sender of the message. Corresponding user or chat may be inaccessible\n    public let senderId: MessageSender\n\n    /// Name of the sender\n    public let senderName: String\n\n\n    public init(\n        content: PushMessageContent,\n        isOutgoing: Bool,\n        messageId: Int64,\n        senderId: MessageSender,\n        senderName: String\n    ) {\n        self.content = content\n        self.isOutgoing = isOutgoing\n        self.messageId = messageId\n        self.senderId = senderId\n        self.senderName = senderName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/OauthLinkInfo.swift",
    "content": "//\n//  OauthLinkInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Information about the OAuth authorization\npublic struct OauthLinkInfo: Codable, Equatable, Hashable {\n\n    /// User identifier of a bot linked with the website\n    public let botUserId: Int64\n\n    /// The version of a browser used for the authorization\n    public let browser: String\n\n    /// A domain of the URL\n    public let domain: String\n\n    /// True, if the authorization originates from an application\n    public let fromApp: Bool\n\n    /// IP address from which the authorization is performed, in human-readable format\n    public let ipAddress: String\n\n    /// Human-readable description of a country and a region from which the authorization is performed, based on the IP address\n    public let location: String\n\n    /// True, if code matching dialog must be shown first and checkOauthRequestMatchCode must be called before acceptOauthRequest. Otherwise, checkOauthRequestMatchCode must not be called\n    public let matchCodeFirst: Bool\n\n    /// The list of codes to match; may be empty if irrelevant\n    public let matchCodes: [String]\n\n    /// Operating system the browser is running on\n    public let platform: String\n\n    /// True, if the user must be asked for the permission to share their phone number\n    public let requestPhoneNumberAccess: Bool\n\n    /// True, if the user must be asked for the permission to the bot to send them messages\n    public let requestWriteAccess: Bool\n\n    /// An HTTP URL where the user authorizes\n    public let url: String\n\n    /// Identifier of the user for which the link was generated; may be 0 if unknown. The corresponding user may be unknown. If the user is logged in the application, then they must be chosen for authorization by default\n    public let userId: Int64\n\n    /// Verified name of the application; if empty, then \"Unverified App\" must be shown instead\n    public let verifiedAppName: String\n\n\n    public init(\n        botUserId: Int64,\n        browser: String,\n        domain: String,\n        fromApp: Bool,\n        ipAddress: String,\n        location: String,\n        matchCodeFirst: Bool,\n        matchCodes: [String],\n        platform: String,\n        requestPhoneNumberAccess: Bool,\n        requestWriteAccess: Bool,\n        url: String,\n        userId: Int64,\n        verifiedAppName: String\n    ) {\n        self.botUserId = botUserId\n        self.browser = browser\n        self.domain = domain\n        self.fromApp = fromApp\n        self.ipAddress = ipAddress\n        self.location = location\n        self.matchCodeFirst = matchCodeFirst\n        self.matchCodes = matchCodes\n        self.platform = platform\n        self.requestPhoneNumberAccess = requestPhoneNumberAccess\n        self.requestWriteAccess = requestWriteAccess\n        self.url = url\n        self.userId = userId\n        self.verifiedAppName = verifiedAppName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Ok.swift",
    "content": "//\n//  Ok.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// An object of this type is returned on a successful function call for certain functions\npublic struct Ok: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/OpenBotSimilarBot.swift",
    "content": "//\n//  OpenBotSimilarBot.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that a bot was opened from the list of similar bots\npublic struct OpenBotSimilarBot: Codable, Equatable, Hashable {\n\n    /// Identifier of the original bot, which similar bots were requested\n    public let botUserId: Int64?\n\n    /// Identifier of the opened bot\n    public let openedBotUserId: Int64?\n\n\n    public init(\n        botUserId: Int64?,\n        openedBotUserId: Int64?\n    ) {\n        self.botUserId = botUserId\n        self.openedBotUserId = openedBotUserId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/OpenChat.swift",
    "content": "//\n//  OpenChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that the chat is opened by the user. Many useful activities depend on the chat being opened or closed (e.g., in supergroups and channels all updates are received only for opened chats)\npublic struct OpenChat: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/OpenChatSimilarChat.swift",
    "content": "//\n//  OpenChatSimilarChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that a chat was opened from the list of similar chats. The method is independent of openChat and closeChat methods\npublic struct OpenChatSimilarChat: Codable, Equatable, Hashable {\n\n    /// Identifier of the original chat, which similar chats were requested\n    public let chatId: Int64?\n\n    /// Identifier of the opened chat\n    public let openedChatId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        openedChatId: Int64?\n    ) {\n        self.chatId = chatId\n        self.openedChatId = openedChatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/OpenGiftAuction.swift",
    "content": "//\n//  OpenGiftAuction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that a gift auction was opened by the user\npublic struct OpenGiftAuction: Codable, Equatable, Hashable {\n\n    /// Identifier of the gift, which auction was opened\n    public let giftId: TdInt64?\n\n\n    public init(giftId: TdInt64?) {\n        self.giftId = giftId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/OpenMessageContent.swift",
    "content": "//\n//  OpenMessageContent.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that the message content has been opened (e.g., the user has opened a photo, video, document, location or venue, or has listened to an audio file or voice note message). An updateMessageContentOpened update will be generated if something has changed\npublic struct OpenMessageContent: Codable, Equatable, Hashable {\n\n    /// Chat identifier of the message\n    public let chatId: Int64?\n\n    /// Identifier of the message with the opened content\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/OpenSponsoredChat.swift",
    "content": "//\n//  OpenSponsoredChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that the user opened a sponsored chat\npublic struct OpenSponsoredChat: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the sponsored chat\n    public let sponsoredChatUniqueId: Int64?\n\n\n    public init(sponsoredChatUniqueId: Int64?) {\n        self.sponsoredChatUniqueId = sponsoredChatUniqueId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/OpenStory.swift",
    "content": "//\n//  OpenStory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that a story is opened and is being viewed by the user\npublic struct OpenStory: Codable, Equatable, Hashable {\n\n    /// The identifier of the story\n    public let storyId: Int?\n\n    /// The identifier of the chat that posted the opened story\n    public let storyPosterChatId: Int64?\n\n\n    public init(\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) {\n        self.storyId = storyId\n        self.storyPosterChatId = storyPosterChatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/OpenWebApp.swift",
    "content": "//\n//  OpenWebApp.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that a Web App is being opened from the attachment menu, a botMenuButton button, an internalLinkTypeAttachmentMenuBot link, or an inlineKeyboardButtonTypeWebApp button. For each bot, a confirmation alert about data sent to the bot must be shown once\npublic struct OpenWebApp: Codable, Equatable, Hashable {\n\n    /// Identifier of the bot, providing the Web App. If the bot is restricted for the current user, then show an error instead of calling the method\n    public let botUserId: Int64?\n\n    /// Identifier of the chat in which the Web App is opened. The Web App can't be opened in secret chats\n    public let chatId: Int64?\n\n    /// Parameters to use to open the Web App\n    public let parameters: WebAppOpenParameters?\n\n    /// Information about the message or story to be replied in the message sent by the Web App; pass null if none\n    public let replyTo: InputMessageReplyTo?\n\n    /// Topic in which the message will be sent; pass null if none\n    public let topicId: MessageTopic?\n\n    /// The URL from an inlineKeyboardButtonTypeWebApp button, a botMenuButton button, an internalLinkTypeAttachmentMenuBot link, or an empty string otherwise\n    public let url: String?\n\n\n    public init(\n        botUserId: Int64?,\n        chatId: Int64?,\n        parameters: WebAppOpenParameters?,\n        replyTo: InputMessageReplyTo?,\n        topicId: MessageTopic?,\n        url: String?\n    ) {\n        self.botUserId = botUserId\n        self.chatId = chatId\n        self.parameters = parameters\n        self.replyTo = replyTo\n        self.topicId = topicId\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/OptimizeStorage.swift",
    "content": "//\n//  OptimizeStorage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Optimizes storage usage, i.e. deletes some files and returns new storage usage statistics. Secret thumbnails can't be deleted\npublic struct OptimizeStorage: Codable, Equatable, Hashable {\n\n    /// If non-empty, only files from the given chats are considered. Use 0 as chat identifier to delete files not belonging to any chat (e.g., profile photos)\n    public let chatIds: [Int64]?\n\n    /// Same as in getStorageStatistics. Affects only returned statistics\n    public let chatLimit: Int?\n\n    /// Limit on the total number of files after deletion. Pass -1 to use the default limit\n    public let count: Int?\n\n    /// If non-empty, files from the given chats are excluded. Use 0 as chat identifier to exclude all files not belonging to any chat (e.g., profile photos)\n    public let excludeChatIds: [Int64]?\n\n    /// If non-empty, only files with the given types are considered. By default, all types except thumbnails, profile photos, stickers and wallpapers are deleted\n    public let fileTypes: [FileType]?\n\n    /// The amount of time after the creation of a file during which it can't be deleted, in seconds. Pass -1 to use the default value\n    public let immunityDelay: Int?\n\n    /// Pass true if statistics about the files that were deleted must be returned instead of the whole storage usage statistics. Affects only returned statistics\n    public let returnDeletedFileStatistics: Bool?\n\n    /// Limit on the total size of files after deletion, in bytes. Pass -1 to use the default limit\n    public let size: Int64?\n\n    /// Limit on the time that has passed since the last time a file was accessed (or creation time for some filesystems). Pass -1 to use the default limit\n    public let ttl: Int?\n\n\n    public init(\n        chatIds: [Int64]?,\n        chatLimit: Int?,\n        count: Int?,\n        excludeChatIds: [Int64]?,\n        fileTypes: [FileType]?,\n        immunityDelay: Int?,\n        returnDeletedFileStatistics: Bool?,\n        size: Int64?,\n        ttl: Int?\n    ) {\n        self.chatIds = chatIds\n        self.chatLimit = chatLimit\n        self.count = count\n        self.excludeChatIds = excludeChatIds\n        self.fileTypes = fileTypes\n        self.immunityDelay = immunityDelay\n        self.returnDeletedFileStatistics = returnDeletedFileStatistics\n        self.size = size\n        self.ttl = ttl\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/OptionValue.swift",
    "content": "//\n//  OptionValue.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents the value of an option\npublic indirect enum OptionValue: Codable, Equatable, Hashable {\n\n    /// Represents a boolean option\n    case optionValueBoolean(OptionValueBoolean)\n\n    /// Represents an unknown option or an option which has a default value\n    case optionValueEmpty\n\n    /// Represents an integer option\n    case optionValueInteger(OptionValueInteger)\n\n    /// Represents a string option\n    case optionValueString(OptionValueString)\n\n\n    private enum Kind: String, Codable {\n        case optionValueBoolean\n        case optionValueEmpty\n        case optionValueInteger\n        case optionValueString\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .optionValueBoolean:\n            let value = try OptionValueBoolean(from: decoder)\n            self = .optionValueBoolean(value)\n        case .optionValueEmpty:\n            self = .optionValueEmpty\n        case .optionValueInteger:\n            let value = try OptionValueInteger(from: decoder)\n            self = .optionValueInteger(value)\n        case .optionValueString:\n            let value = try OptionValueString(from: decoder)\n            self = .optionValueString(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .optionValueBoolean(let value):\n            try container.encode(Kind.optionValueBoolean, forKey: .type)\n            try value.encode(to: encoder)\n        case .optionValueEmpty:\n            try container.encode(Kind.optionValueEmpty, forKey: .type)\n        case .optionValueInteger(let value):\n            try container.encode(Kind.optionValueInteger, forKey: .type)\n            try value.encode(to: encoder)\n        case .optionValueString(let value):\n            try container.encode(Kind.optionValueString, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Represents a boolean option\npublic struct OptionValueBoolean: Codable, Equatable, Hashable {\n\n    /// The value of the option\n    public let value: Bool\n\n\n    public init(value: Bool) {\n        self.value = value\n    }\n}\n\n/// Represents an integer option\npublic struct OptionValueInteger: Codable, Equatable, Hashable {\n\n    /// The value of the option\n    public let value: TdInt64\n\n\n    public init(value: TdInt64) {\n        self.value = value\n    }\n}\n\n/// Represents a string option\npublic struct OptionValueString: Codable, Equatable, Hashable {\n\n    /// The value of the option\n    public let value: String\n\n\n    public init(value: String) {\n        self.value = value\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/OrderInfo.swift",
    "content": "//\n//  OrderInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Order information\npublic struct OrderInfo: Codable, Equatable, Hashable {\n\n    /// Email address of the user\n    public let emailAddress: String\n\n    /// Name of the user\n    public let name: String\n\n    /// Phone number of the user\n    public let phoneNumber: String\n\n    /// Shipping address for this order; may be null\n    public let shippingAddress: Address?\n\n\n    public init(\n        emailAddress: String,\n        name: String,\n        phoneNumber: String,\n        shippingAddress: Address?\n    ) {\n        self.emailAddress = emailAddress\n        self.name = name\n        self.phoneNumber = phoneNumber\n        self.shippingAddress = shippingAddress\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Outline.swift",
    "content": "//\n//  Outline.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents outline of an image\npublic struct Outline: Codable, Equatable, Hashable {\n\n    /// The list of closed vector paths\n    public let paths: [ClosedVectorPath]\n\n\n    public init(paths: [ClosedVectorPath]) {\n        self.paths = paths\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PageBlock.swift",
    "content": "//\n//  PageBlock.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a block of an instant view for a web page\n/// This Swift enum is recursive.\npublic indirect enum PageBlock: Codable, Equatable, Hashable {\n\n    /// The title of a page\n    case pageBlockTitle(PageBlockTitle)\n\n    /// The subtitle of a page\n    case pageBlockSubtitle(PageBlockSubtitle)\n\n    /// The author and publishing date of a page\n    case pageBlockAuthorDate(PageBlockAuthorDate)\n\n    /// A header\n    case pageBlockHeader(PageBlockHeader)\n\n    /// A subheader\n    case pageBlockSubheader(PageBlockSubheader)\n\n    /// A kicker\n    case pageBlockKicker(PageBlockKicker)\n\n    /// A text paragraph\n    case pageBlockParagraph(PageBlockParagraph)\n\n    /// A preformatted text paragraph\n    case pageBlockPreformatted(PageBlockPreformatted)\n\n    /// The footer of a page\n    case pageBlockFooter(PageBlockFooter)\n\n    /// An empty block separating a page\n    case pageBlockDivider\n\n    /// An invisible anchor on a page, which can be used in a URL to open the page from the specified anchor\n    case pageBlockAnchor(PageBlockAnchor)\n\n    /// A list of data blocks\n    case pageBlockList(PageBlockList)\n\n    /// A block quote\n    case pageBlockBlockQuote(PageBlockBlockQuote)\n\n    /// A pull quote\n    case pageBlockPullQuote(PageBlockPullQuote)\n\n    /// An animation\n    case pageBlockAnimation(PageBlockAnimation)\n\n    /// An audio file\n    case pageBlockAudio(PageBlockAudio)\n\n    /// A photo\n    case pageBlockPhoto(PageBlockPhoto)\n\n    /// A video\n    case pageBlockVideo(PageBlockVideo)\n\n    /// A voice note\n    case pageBlockVoiceNote(PageBlockVoiceNote)\n\n    /// A page cover\n    case pageBlockCover(PageBlockCover)\n\n    /// An embedded web page\n    case pageBlockEmbedded(PageBlockEmbedded)\n\n    /// An embedded post\n    case pageBlockEmbeddedPost(PageBlockEmbeddedPost)\n\n    /// A collage\n    case pageBlockCollage(PageBlockCollage)\n\n    /// A slideshow\n    case pageBlockSlideshow(PageBlockSlideshow)\n\n    /// A link to a chat\n    case pageBlockChatLink(PageBlockChatLink)\n\n    /// A table\n    case pageBlockTable(PageBlockTable)\n\n    /// A collapsible block\n    case pageBlockDetails(PageBlockDetails)\n\n    /// Related articles\n    case pageBlockRelatedArticles(PageBlockRelatedArticles)\n\n    /// A map\n    case pageBlockMap(PageBlockMap)\n\n\n    private enum Kind: String, Codable {\n        case pageBlockTitle\n        case pageBlockSubtitle\n        case pageBlockAuthorDate\n        case pageBlockHeader\n        case pageBlockSubheader\n        case pageBlockKicker\n        case pageBlockParagraph\n        case pageBlockPreformatted\n        case pageBlockFooter\n        case pageBlockDivider\n        case pageBlockAnchor\n        case pageBlockList\n        case pageBlockBlockQuote\n        case pageBlockPullQuote\n        case pageBlockAnimation\n        case pageBlockAudio\n        case pageBlockPhoto\n        case pageBlockVideo\n        case pageBlockVoiceNote\n        case pageBlockCover\n        case pageBlockEmbedded\n        case pageBlockEmbeddedPost\n        case pageBlockCollage\n        case pageBlockSlideshow\n        case pageBlockChatLink\n        case pageBlockTable\n        case pageBlockDetails\n        case pageBlockRelatedArticles\n        case pageBlockMap\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .pageBlockTitle:\n            let value = try PageBlockTitle(from: decoder)\n            self = .pageBlockTitle(value)\n        case .pageBlockSubtitle:\n            let value = try PageBlockSubtitle(from: decoder)\n            self = .pageBlockSubtitle(value)\n        case .pageBlockAuthorDate:\n            let value = try PageBlockAuthorDate(from: decoder)\n            self = .pageBlockAuthorDate(value)\n        case .pageBlockHeader:\n            let value = try PageBlockHeader(from: decoder)\n            self = .pageBlockHeader(value)\n        case .pageBlockSubheader:\n            let value = try PageBlockSubheader(from: decoder)\n            self = .pageBlockSubheader(value)\n        case .pageBlockKicker:\n            let value = try PageBlockKicker(from: decoder)\n            self = .pageBlockKicker(value)\n        case .pageBlockParagraph:\n            let value = try PageBlockParagraph(from: decoder)\n            self = .pageBlockParagraph(value)\n        case .pageBlockPreformatted:\n            let value = try PageBlockPreformatted(from: decoder)\n            self = .pageBlockPreformatted(value)\n        case .pageBlockFooter:\n            let value = try PageBlockFooter(from: decoder)\n            self = .pageBlockFooter(value)\n        case .pageBlockDivider:\n            self = .pageBlockDivider\n        case .pageBlockAnchor:\n            let value = try PageBlockAnchor(from: decoder)\n            self = .pageBlockAnchor(value)\n        case .pageBlockList:\n            let value = try PageBlockList(from: decoder)\n            self = .pageBlockList(value)\n        case .pageBlockBlockQuote:\n            let value = try PageBlockBlockQuote(from: decoder)\n            self = .pageBlockBlockQuote(value)\n        case .pageBlockPullQuote:\n            let value = try PageBlockPullQuote(from: decoder)\n            self = .pageBlockPullQuote(value)\n        case .pageBlockAnimation:\n            let value = try PageBlockAnimation(from: decoder)\n            self = .pageBlockAnimation(value)\n        case .pageBlockAudio:\n            let value = try PageBlockAudio(from: decoder)\n            self = .pageBlockAudio(value)\n        case .pageBlockPhoto:\n            let value = try PageBlockPhoto(from: decoder)\n            self = .pageBlockPhoto(value)\n        case .pageBlockVideo:\n            let value = try PageBlockVideo(from: decoder)\n            self = .pageBlockVideo(value)\n        case .pageBlockVoiceNote:\n            let value = try PageBlockVoiceNote(from: decoder)\n            self = .pageBlockVoiceNote(value)\n        case .pageBlockCover:\n            let value = try PageBlockCover(from: decoder)\n            self = .pageBlockCover(value)\n        case .pageBlockEmbedded:\n            let value = try PageBlockEmbedded(from: decoder)\n            self = .pageBlockEmbedded(value)\n        case .pageBlockEmbeddedPost:\n            let value = try PageBlockEmbeddedPost(from: decoder)\n            self = .pageBlockEmbeddedPost(value)\n        case .pageBlockCollage:\n            let value = try PageBlockCollage(from: decoder)\n            self = .pageBlockCollage(value)\n        case .pageBlockSlideshow:\n            let value = try PageBlockSlideshow(from: decoder)\n            self = .pageBlockSlideshow(value)\n        case .pageBlockChatLink:\n            let value = try PageBlockChatLink(from: decoder)\n            self = .pageBlockChatLink(value)\n        case .pageBlockTable:\n            let value = try PageBlockTable(from: decoder)\n            self = .pageBlockTable(value)\n        case .pageBlockDetails:\n            let value = try PageBlockDetails(from: decoder)\n            self = .pageBlockDetails(value)\n        case .pageBlockRelatedArticles:\n            let value = try PageBlockRelatedArticles(from: decoder)\n            self = .pageBlockRelatedArticles(value)\n        case .pageBlockMap:\n            let value = try PageBlockMap(from: decoder)\n            self = .pageBlockMap(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .pageBlockTitle(let value):\n            try container.encode(Kind.pageBlockTitle, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockSubtitle(let value):\n            try container.encode(Kind.pageBlockSubtitle, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockAuthorDate(let value):\n            try container.encode(Kind.pageBlockAuthorDate, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockHeader(let value):\n            try container.encode(Kind.pageBlockHeader, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockSubheader(let value):\n            try container.encode(Kind.pageBlockSubheader, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockKicker(let value):\n            try container.encode(Kind.pageBlockKicker, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockParagraph(let value):\n            try container.encode(Kind.pageBlockParagraph, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockPreformatted(let value):\n            try container.encode(Kind.pageBlockPreformatted, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockFooter(let value):\n            try container.encode(Kind.pageBlockFooter, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockDivider:\n            try container.encode(Kind.pageBlockDivider, forKey: .type)\n        case .pageBlockAnchor(let value):\n            try container.encode(Kind.pageBlockAnchor, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockList(let value):\n            try container.encode(Kind.pageBlockList, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockBlockQuote(let value):\n            try container.encode(Kind.pageBlockBlockQuote, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockPullQuote(let value):\n            try container.encode(Kind.pageBlockPullQuote, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockAnimation(let value):\n            try container.encode(Kind.pageBlockAnimation, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockAudio(let value):\n            try container.encode(Kind.pageBlockAudio, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockPhoto(let value):\n            try container.encode(Kind.pageBlockPhoto, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockVideo(let value):\n            try container.encode(Kind.pageBlockVideo, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockVoiceNote(let value):\n            try container.encode(Kind.pageBlockVoiceNote, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockCover(let value):\n            try container.encode(Kind.pageBlockCover, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockEmbedded(let value):\n            try container.encode(Kind.pageBlockEmbedded, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockEmbeddedPost(let value):\n            try container.encode(Kind.pageBlockEmbeddedPost, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockCollage(let value):\n            try container.encode(Kind.pageBlockCollage, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockSlideshow(let value):\n            try container.encode(Kind.pageBlockSlideshow, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockChatLink(let value):\n            try container.encode(Kind.pageBlockChatLink, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockTable(let value):\n            try container.encode(Kind.pageBlockTable, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockDetails(let value):\n            try container.encode(Kind.pageBlockDetails, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockRelatedArticles(let value):\n            try container.encode(Kind.pageBlockRelatedArticles, forKey: .type)\n            try value.encode(to: encoder)\n        case .pageBlockMap(let value):\n            try container.encode(Kind.pageBlockMap, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The title of a page\npublic struct PageBlockTitle: Codable, Equatable, Hashable {\n\n    /// Title\n    public let title: RichText\n\n\n    public init(title: RichText) {\n        self.title = title\n    }\n}\n\n/// The subtitle of a page\npublic struct PageBlockSubtitle: Codable, Equatable, Hashable {\n\n    /// Subtitle\n    public let subtitle: RichText\n\n\n    public init(subtitle: RichText) {\n        self.subtitle = subtitle\n    }\n}\n\n/// The author and publishing date of a page\npublic struct PageBlockAuthorDate: Codable, Equatable, Hashable {\n\n    /// Author\n    public let author: RichText\n\n    /// Point in time (Unix timestamp) when the article was published; 0 if unknown\n    public let publishDate: Int\n\n\n    public init(\n        author: RichText,\n        publishDate: Int\n    ) {\n        self.author = author\n        self.publishDate = publishDate\n    }\n}\n\n/// A header\npublic struct PageBlockHeader: Codable, Equatable, Hashable {\n\n    /// Header\n    public let header: RichText\n\n\n    public init(header: RichText) {\n        self.header = header\n    }\n}\n\n/// A subheader\npublic struct PageBlockSubheader: Codable, Equatable, Hashable {\n\n    /// Subheader\n    public let subheader: RichText\n\n\n    public init(subheader: RichText) {\n        self.subheader = subheader\n    }\n}\n\n/// A kicker\npublic struct PageBlockKicker: Codable, Equatable, Hashable {\n\n    /// Kicker\n    public let kicker: RichText\n\n\n    public init(kicker: RichText) {\n        self.kicker = kicker\n    }\n}\n\n/// A text paragraph\npublic struct PageBlockParagraph: Codable, Equatable, Hashable {\n\n    /// Paragraph text\n    public let text: RichText\n\n\n    public init(text: RichText) {\n        self.text = text\n    }\n}\n\n/// A preformatted text paragraph\npublic struct PageBlockPreformatted: Codable, Equatable, Hashable {\n\n    /// Programming language for which the text needs to be formatted\n    public let language: String\n\n    /// Paragraph text\n    public let text: RichText\n\n\n    public init(\n        language: String,\n        text: RichText\n    ) {\n        self.language = language\n        self.text = text\n    }\n}\n\n/// The footer of a page\npublic struct PageBlockFooter: Codable, Equatable, Hashable {\n\n    /// Footer\n    public let footer: RichText\n\n\n    public init(footer: RichText) {\n        self.footer = footer\n    }\n}\n\n/// An invisible anchor on a page, which can be used in a URL to open the page from the specified anchor\npublic struct PageBlockAnchor: Codable, Equatable, Hashable {\n\n    /// Name of the anchor\n    public let name: String\n\n\n    public init(name: String) {\n        self.name = name\n    }\n}\n\n/// A list of data blocks\npublic struct PageBlockList: Codable, Equatable, Hashable {\n\n    /// The items of the list\n    public let items: [PageBlockListItem]\n\n\n    public init(items: [PageBlockListItem]) {\n        self.items = items\n    }\n}\n\n/// A block quote\npublic struct PageBlockBlockQuote: Codable, Equatable, Hashable {\n\n    /// Quote credit\n    public let credit: RichText\n\n    /// Quote text\n    public let text: RichText\n\n\n    public init(\n        credit: RichText,\n        text: RichText\n    ) {\n        self.credit = credit\n        self.text = text\n    }\n}\n\n/// A pull quote\npublic struct PageBlockPullQuote: Codable, Equatable, Hashable {\n\n    /// Quote credit\n    public let credit: RichText\n\n    /// Quote text\n    public let text: RichText\n\n\n    public init(\n        credit: RichText,\n        text: RichText\n    ) {\n        self.credit = credit\n        self.text = text\n    }\n}\n\n/// An animation\npublic struct PageBlockAnimation: Codable, Equatable, Hashable {\n\n    /// Animation file; may be null\n    public let animation: Animation?\n\n    /// Animation caption\n    public let caption: PageBlockCaption\n\n    /// True, if the animation must be played automatically\n    public let needAutoplay: Bool\n\n\n    public init(\n        animation: Animation?,\n        caption: PageBlockCaption,\n        needAutoplay: Bool\n    ) {\n        self.animation = animation\n        self.caption = caption\n        self.needAutoplay = needAutoplay\n    }\n}\n\n/// An audio file\npublic struct PageBlockAudio: Codable, Equatable, Hashable {\n\n    /// Audio file; may be null\n    public let audio: Audio?\n\n    /// Audio file caption\n    public let caption: PageBlockCaption\n\n\n    public init(\n        audio: Audio?,\n        caption: PageBlockCaption\n    ) {\n        self.audio = audio\n        self.caption = caption\n    }\n}\n\n/// A photo\npublic struct PageBlockPhoto: Codable, Equatable, Hashable {\n\n    /// Photo caption\n    public let caption: PageBlockCaption\n\n    /// Photo file; may be null\n    public let photo: Photo?\n\n    /// URL that needs to be opened when the photo is clicked\n    public let url: String\n\n\n    public init(\n        caption: PageBlockCaption,\n        photo: Photo?,\n        url: String\n    ) {\n        self.caption = caption\n        self.photo = photo\n        self.url = url\n    }\n}\n\n/// A video\npublic struct PageBlockVideo: Codable, Equatable, Hashable {\n\n    /// Video caption\n    public let caption: PageBlockCaption\n\n    /// True, if the video must be looped\n    public let isLooped: Bool\n\n    /// True, if the video must be played automatically\n    public let needAutoplay: Bool\n\n    /// Video file; may be null\n    public let video: Video?\n\n\n    public init(\n        caption: PageBlockCaption,\n        isLooped: Bool,\n        needAutoplay: Bool,\n        video: Video?\n    ) {\n        self.caption = caption\n        self.isLooped = isLooped\n        self.needAutoplay = needAutoplay\n        self.video = video\n    }\n}\n\n/// A voice note\npublic struct PageBlockVoiceNote: Codable, Equatable, Hashable {\n\n    /// Voice note caption\n    public let caption: PageBlockCaption\n\n    /// Voice note; may be null\n    public let voiceNote: VoiceNote?\n\n\n    public init(\n        caption: PageBlockCaption,\n        voiceNote: VoiceNote?\n    ) {\n        self.caption = caption\n        self.voiceNote = voiceNote\n    }\n}\n\n/// A page cover\npublic struct PageBlockCover: Codable, Equatable, Hashable {\n\n    /// Cover\n    public let cover: PageBlock\n\n\n    public init(cover: PageBlock) {\n        self.cover = cover\n    }\n}\n\n/// An embedded web page\npublic struct PageBlockEmbedded: Codable, Equatable, Hashable {\n\n    /// True, if scrolling needs to be allowed\n    public let allowScrolling: Bool\n\n    /// Block caption\n    public let caption: PageBlockCaption\n\n    /// Block height; 0 if unknown\n    public let height: Int\n\n    /// HTML-markup of the embedded page\n    public let html: String\n\n    /// True, if the block must be full width\n    public let isFullWidth: Bool\n\n    /// Poster photo, if available; may be null\n    public let posterPhoto: Photo?\n\n    /// URL of the embedded page, if available\n    public let url: String\n\n    /// Block width; 0 if unknown\n    public let width: Int\n\n\n    public init(\n        allowScrolling: Bool,\n        caption: PageBlockCaption,\n        height: Int,\n        html: String,\n        isFullWidth: Bool,\n        posterPhoto: Photo?,\n        url: String,\n        width: Int\n    ) {\n        self.allowScrolling = allowScrolling\n        self.caption = caption\n        self.height = height\n        self.html = html\n        self.isFullWidth = isFullWidth\n        self.posterPhoto = posterPhoto\n        self.url = url\n        self.width = width\n    }\n}\n\n/// An embedded post\npublic struct PageBlockEmbeddedPost: Codable, Equatable, Hashable {\n\n    /// Post author\n    public let author: String\n\n    /// Post author photo; may be null\n    public let authorPhoto: Photo?\n\n    /// Post caption\n    public let caption: PageBlockCaption\n\n    /// Point in time (Unix timestamp) when the post was created; 0 if unknown\n    public let date: Int\n\n    /// Post content\n    public let pageBlocks: [PageBlock]\n\n    /// URL of the embedded post\n    public let url: String\n\n\n    public init(\n        author: String,\n        authorPhoto: Photo?,\n        caption: PageBlockCaption,\n        date: Int,\n        pageBlocks: [PageBlock],\n        url: String\n    ) {\n        self.author = author\n        self.authorPhoto = authorPhoto\n        self.caption = caption\n        self.date = date\n        self.pageBlocks = pageBlocks\n        self.url = url\n    }\n}\n\n/// A collage\npublic struct PageBlockCollage: Codable, Equatable, Hashable {\n\n    /// Block caption\n    public let caption: PageBlockCaption\n\n    /// Collage item contents\n    public let pageBlocks: [PageBlock]\n\n\n    public init(\n        caption: PageBlockCaption,\n        pageBlocks: [PageBlock]\n    ) {\n        self.caption = caption\n        self.pageBlocks = pageBlocks\n    }\n}\n\n/// A slideshow\npublic struct PageBlockSlideshow: Codable, Equatable, Hashable {\n\n    /// Block caption\n    public let caption: PageBlockCaption\n\n    /// Slideshow item contents\n    public let pageBlocks: [PageBlock]\n\n\n    public init(\n        caption: PageBlockCaption,\n        pageBlocks: [PageBlock]\n    ) {\n        self.caption = caption\n        self.pageBlocks = pageBlocks\n    }\n}\n\n/// A link to a chat\npublic struct PageBlockChatLink: Codable, Equatable, Hashable {\n\n    /// Identifier of the accent color for chat title and background of chat photo\n    public let accentColorId: Int\n\n    /// Chat photo; may be null\n    public let photo: ChatPhotoInfo?\n\n    /// Chat title\n    public let title: String\n\n    /// Chat username by which all other information about the chat can be resolved\n    public let username: String\n\n\n    public init(\n        accentColorId: Int,\n        photo: ChatPhotoInfo?,\n        title: String,\n        username: String\n    ) {\n        self.accentColorId = accentColorId\n        self.photo = photo\n        self.title = title\n        self.username = username\n    }\n}\n\n/// A table\npublic struct PageBlockTable: Codable, Equatable, Hashable {\n\n    /// Table caption\n    public let caption: RichText\n\n    /// Table cells\n    public let cells: [[PageBlockTableCell]]\n\n    /// True, if the table is bordered\n    public let isBordered: Bool\n\n    /// True, if the table is striped\n    public let isStriped: Bool\n\n\n    public init(\n        caption: RichText,\n        cells: [[PageBlockTableCell]],\n        isBordered: Bool,\n        isStriped: Bool\n    ) {\n        self.caption = caption\n        self.cells = cells\n        self.isBordered = isBordered\n        self.isStriped = isStriped\n    }\n}\n\n/// A collapsible block\npublic struct PageBlockDetails: Codable, Equatable, Hashable {\n\n    /// Always visible heading for the block\n    public let header: RichText\n\n    /// True, if the block is open by default\n    public let isOpen: Bool\n\n    /// Block contents\n    public let pageBlocks: [PageBlock]\n\n\n    public init(\n        header: RichText,\n        isOpen: Bool,\n        pageBlocks: [PageBlock]\n    ) {\n        self.header = header\n        self.isOpen = isOpen\n        self.pageBlocks = pageBlocks\n    }\n}\n\n/// Related articles\npublic struct PageBlockRelatedArticles: Codable, Equatable, Hashable {\n\n    /// List of related articles\n    public let articles: [PageBlockRelatedArticle]\n\n    /// Block header\n    public let header: RichText\n\n\n    public init(\n        articles: [PageBlockRelatedArticle],\n        header: RichText\n    ) {\n        self.articles = articles\n        self.header = header\n    }\n}\n\n/// A map\npublic struct PageBlockMap: Codable, Equatable, Hashable {\n\n    /// Block caption\n    public let caption: PageBlockCaption\n\n    /// Map height\n    public let height: Int\n\n    /// Location of the map center\n    public let location: Location\n\n    /// Map width\n    public let width: Int\n\n    /// Map zoom level\n    public let zoom: Int\n\n\n    public init(\n        caption: PageBlockCaption,\n        height: Int,\n        location: Location,\n        width: Int,\n        zoom: Int\n    ) {\n        self.caption = caption\n        self.height = height\n        self.location = location\n        self.width = width\n        self.zoom = zoom\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PageBlockCaption.swift",
    "content": "//\n//  PageBlockCaption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a caption of another block\npublic struct PageBlockCaption: Codable, Equatable, Hashable {\n\n    /// Block credit (like HTML tag <cite>)\n    public let credit: RichText\n\n    /// Content of the caption\n    public let text: RichText\n\n\n    public init(\n        credit: RichText,\n        text: RichText\n    ) {\n        self.credit = credit\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PageBlockHorizontalAlignment.swift",
    "content": "//\n//  PageBlockHorizontalAlignment.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a horizontal alignment of a table cell content\npublic indirect enum PageBlockHorizontalAlignment: Codable, Equatable, Hashable {\n\n    /// The content must be left-aligned\n    case pageBlockHorizontalAlignmentLeft\n\n    /// The content must be center-aligned\n    case pageBlockHorizontalAlignmentCenter\n\n    /// The content must be right-aligned\n    case pageBlockHorizontalAlignmentRight\n\n\n    private enum Kind: String, Codable {\n        case pageBlockHorizontalAlignmentLeft\n        case pageBlockHorizontalAlignmentCenter\n        case pageBlockHorizontalAlignmentRight\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .pageBlockHorizontalAlignmentLeft:\n            self = .pageBlockHorizontalAlignmentLeft\n        case .pageBlockHorizontalAlignmentCenter:\n            self = .pageBlockHorizontalAlignmentCenter\n        case .pageBlockHorizontalAlignmentRight:\n            self = .pageBlockHorizontalAlignmentRight\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .pageBlockHorizontalAlignmentLeft:\n            try container.encode(Kind.pageBlockHorizontalAlignmentLeft, forKey: .type)\n        case .pageBlockHorizontalAlignmentCenter:\n            try container.encode(Kind.pageBlockHorizontalAlignmentCenter, forKey: .type)\n        case .pageBlockHorizontalAlignmentRight:\n            try container.encode(Kind.pageBlockHorizontalAlignmentRight, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PageBlockListItem.swift",
    "content": "//\n//  PageBlockListItem.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an item of a list page block\npublic struct PageBlockListItem: Codable, Equatable, Hashable {\n\n    /// Item label\n    public let label: String\n\n    /// Item blocks\n    public let pageBlocks: [PageBlock]\n\n\n    public init(\n        label: String,\n        pageBlocks: [PageBlock]\n    ) {\n        self.label = label\n        self.pageBlocks = pageBlocks\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PageBlockRelatedArticle.swift",
    "content": "//\n//  PageBlockRelatedArticle.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a related article\npublic struct PageBlockRelatedArticle: Codable, Equatable, Hashable {\n\n    /// Article author; may be empty\n    public let author: String\n\n    public let description: String\n\n    /// Article photo; may be null\n    public let photo: Photo?\n\n    /// Point in time (Unix timestamp) when the article was published; 0 if unknown\n    public let publishDate: Int\n\n    /// Article title; may be empty\n    public let title: String\n\n    /// Related article URL\n    public let url: String\n\n\n    public init(\n        author: String,\n        description: String,\n        photo: Photo?,\n        publishDate: Int,\n        title: String,\n        url: String\n    ) {\n        self.author = author\n        self.description = description\n        self.photo = photo\n        self.publishDate = publishDate\n        self.title = title\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PageBlockTableCell.swift",
    "content": "//\n//  PageBlockTableCell.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a cell of a table\npublic struct PageBlockTableCell: Codable, Equatable, Hashable {\n\n    /// Horizontal cell content alignment\n    public let align: PageBlockHorizontalAlignment\n\n    /// The number of columns the cell spans\n    public let colspan: Int\n\n    /// True, if it is a header cell\n    public let isHeader: Bool\n\n    /// The number of rows the cell spans\n    public let rowspan: Int\n\n    /// Cell text; may be null. If the text is null, then the cell must be invisible\n    public let text: RichText?\n\n    /// Vertical cell content alignment\n    public let valign: PageBlockVerticalAlignment\n\n\n    public init(\n        align: PageBlockHorizontalAlignment,\n        colspan: Int,\n        isHeader: Bool,\n        rowspan: Int,\n        text: RichText?,\n        valign: PageBlockVerticalAlignment\n    ) {\n        self.align = align\n        self.colspan = colspan\n        self.isHeader = isHeader\n        self.rowspan = rowspan\n        self.text = text\n        self.valign = valign\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PageBlockVerticalAlignment.swift",
    "content": "//\n//  PageBlockVerticalAlignment.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a Vertical alignment of a table cell content\npublic indirect enum PageBlockVerticalAlignment: Codable, Equatable, Hashable {\n\n    /// The content must be top-aligned\n    case pageBlockVerticalAlignmentTop\n\n    /// The content must be middle-aligned\n    case pageBlockVerticalAlignmentMiddle\n\n    /// The content must be bottom-aligned\n    case pageBlockVerticalAlignmentBottom\n\n\n    private enum Kind: String, Codable {\n        case pageBlockVerticalAlignmentTop\n        case pageBlockVerticalAlignmentMiddle\n        case pageBlockVerticalAlignmentBottom\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .pageBlockVerticalAlignmentTop:\n            self = .pageBlockVerticalAlignmentTop\n        case .pageBlockVerticalAlignmentMiddle:\n            self = .pageBlockVerticalAlignmentMiddle\n        case .pageBlockVerticalAlignmentBottom:\n            self = .pageBlockVerticalAlignmentBottom\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .pageBlockVerticalAlignmentTop:\n            try container.encode(Kind.pageBlockVerticalAlignmentTop, forKey: .type)\n        case .pageBlockVerticalAlignmentMiddle:\n            try container.encode(Kind.pageBlockVerticalAlignmentMiddle, forKey: .type)\n        case .pageBlockVerticalAlignmentBottom:\n            try container.encode(Kind.pageBlockVerticalAlignmentBottom, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PaidMedia.swift",
    "content": "//\n//  PaidMedia.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a paid media\npublic indirect enum PaidMedia: Codable, Equatable, Hashable {\n\n    /// The media is hidden until the invoice is paid\n    case paidMediaPreview(PaidMediaPreview)\n\n    /// The media is a photo\n    case paidMediaPhoto(PaidMediaPhoto)\n\n    /// The media is a video\n    case paidMediaVideo(PaidMediaVideo)\n\n    /// The media is unsupported\n    case paidMediaUnsupported\n\n\n    private enum Kind: String, Codable {\n        case paidMediaPreview\n        case paidMediaPhoto\n        case paidMediaVideo\n        case paidMediaUnsupported\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .paidMediaPreview:\n            let value = try PaidMediaPreview(from: decoder)\n            self = .paidMediaPreview(value)\n        case .paidMediaPhoto:\n            let value = try PaidMediaPhoto(from: decoder)\n            self = .paidMediaPhoto(value)\n        case .paidMediaVideo:\n            let value = try PaidMediaVideo(from: decoder)\n            self = .paidMediaVideo(value)\n        case .paidMediaUnsupported:\n            self = .paidMediaUnsupported\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .paidMediaPreview(let value):\n            try container.encode(Kind.paidMediaPreview, forKey: .type)\n            try value.encode(to: encoder)\n        case .paidMediaPhoto(let value):\n            try container.encode(Kind.paidMediaPhoto, forKey: .type)\n            try value.encode(to: encoder)\n        case .paidMediaVideo(let value):\n            try container.encode(Kind.paidMediaVideo, forKey: .type)\n            try value.encode(to: encoder)\n        case .paidMediaUnsupported:\n            try container.encode(Kind.paidMediaUnsupported, forKey: .type)\n        }\n    }\n}\n\n/// The media is hidden until the invoice is paid\npublic struct PaidMediaPreview: Codable, Equatable, Hashable {\n\n    /// Media duration, in seconds; 0 if unknown\n    public let duration: Int\n\n    /// Media height; 0 if unknown\n    public let height: Int\n\n    /// Media minithumbnail; may be null\n    public let minithumbnail: Minithumbnail?\n\n    /// Media width; 0 if unknown\n    public let width: Int\n\n\n    public init(\n        duration: Int,\n        height: Int,\n        minithumbnail: Minithumbnail?,\n        width: Int\n    ) {\n        self.duration = duration\n        self.height = height\n        self.minithumbnail = minithumbnail\n        self.width = width\n    }\n}\n\n/// The media is a photo\npublic struct PaidMediaPhoto: Codable, Equatable, Hashable {\n\n    /// The photo\n    public let photo: Photo\n\n    /// The video representing the live photo; may be null if the photo is static\n    public let video: Video?\n\n\n    public init(\n        photo: Photo,\n        video: Video?\n    ) {\n        self.photo = photo\n        self.video = video\n    }\n}\n\n/// The media is a video\npublic struct PaidMediaVideo: Codable, Equatable, Hashable {\n\n    /// Cover of the video; may be null if none\n    public let cover: Photo?\n\n    /// Timestamp from which the video playing must start, in seconds\n    public let startTimestamp: Int\n\n    /// The video\n    public let video: Video\n\n\n    public init(\n        cover: Photo?,\n        startTimestamp: Int,\n        video: Video\n    ) {\n        self.cover = cover\n        self.startTimestamp = startTimestamp\n        self.video = video\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PaidReactionType.swift",
    "content": "//\n//  PaidReactionType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of paid message reaction\npublic indirect enum PaidReactionType: Codable, Equatable, Hashable {\n\n    /// A paid reaction on behalf of the current user\n    case paidReactionTypeRegular\n\n    /// An anonymous paid reaction\n    case paidReactionTypeAnonymous\n\n    /// A paid reaction on behalf of an owned chat\n    case paidReactionTypeChat(PaidReactionTypeChat)\n\n\n    private enum Kind: String, Codable {\n        case paidReactionTypeRegular\n        case paidReactionTypeAnonymous\n        case paidReactionTypeChat\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .paidReactionTypeRegular:\n            self = .paidReactionTypeRegular\n        case .paidReactionTypeAnonymous:\n            self = .paidReactionTypeAnonymous\n        case .paidReactionTypeChat:\n            let value = try PaidReactionTypeChat(from: decoder)\n            self = .paidReactionTypeChat(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .paidReactionTypeRegular:\n            try container.encode(Kind.paidReactionTypeRegular, forKey: .type)\n        case .paidReactionTypeAnonymous:\n            try container.encode(Kind.paidReactionTypeAnonymous, forKey: .type)\n        case .paidReactionTypeChat(let value):\n            try container.encode(Kind.paidReactionTypeChat, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A paid reaction on behalf of an owned chat\npublic struct PaidReactionTypeChat: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64\n\n\n    public init(chatId: Int64) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PaidReactor.swift",
    "content": "//\n//  PaidReactor.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a user who added paid reactions\npublic struct PaidReactor: Codable, Equatable, Hashable {\n\n    /// True, if the reactor is anonymous\n    public let isAnonymous: Bool\n\n    /// True, if the paid reaction was added by the current user\n    public let isMe: Bool\n\n    /// True, if the reactor is one of the most active reactors; may be false if the reactor is the current user\n    public let isTop: Bool\n\n    /// Identifier of the user or chat that added the reactions; may be null for anonymous reactors that aren't the current user\n    public let senderId: MessageSender?\n\n    /// Number of Telegram Stars added\n    public let starCount: Int64\n\n\n    public init(\n        isAnonymous: Bool,\n        isMe: Bool,\n        isTop: Bool,\n        senderId: MessageSender?,\n        starCount: Int64\n    ) {\n        self.isAnonymous = isAnonymous\n        self.isMe = isMe\n        self.isTop = isTop\n        self.senderId = senderId\n        self.starCount = starCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ParseMarkdown.swift",
    "content": "//\n//  ParseMarkdown.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Parses Markdown entities in a human-friendly format, ignoring markup errors. Can be called synchronously\npublic struct ParseMarkdown: Codable, Equatable, Hashable {\n\n    /// The text to parse. For example, \"__italic__ ~~strikethrough~~ ||spoiler|| **bold** `code` ```pre``` __[italic__ text_url](telegram.org) __italic**bold italic__bold**\"\n    public let text: FormattedText?\n\n\n    public init(text: FormattedText?) {\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ParseTextEntities.swift",
    "content": "//\n//  ParseTextEntities.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Parses Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, BlockQuote, ExpandableBlockQuote, Code, Pre, PreCode, TextUrl, MentionName, and DateTime entities from a marked-up text. Can be called synchronously\npublic struct ParseTextEntities: Codable, Equatable, Hashable {\n\n    /// Text parse mode\n    public let parseMode: TextParseMode?\n\n    /// The text to parse\n    public let text: String?\n\n\n    public init(\n        parseMode: TextParseMode?,\n        text: String?\n    ) {\n        self.parseMode = parseMode\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Passkey.swift",
    "content": "//\n//  Passkey.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a passkey\npublic struct Passkey: Codable, Equatable, Hashable, Identifiable {\n\n    /// Point in time (Unix timestamp) when the passkey was added\n    public let additionDate: Int\n\n    /// Unique identifier of the passkey\n    public let id: String\n\n    /// Point in time (Unix timestamp) when the passkey was used last time; 0 if never\n    public let lastUsageDate: Int\n\n    /// Name of the passkey\n    public let name: String\n\n    /// Identifier of the custom emoji that is used as the icon of the software, which created the passkey; 0 if unknown\n    public let softwareIconCustomEmojiId: TdInt64\n\n\n    public init(\n        additionDate: Int,\n        id: String,\n        lastUsageDate: Int,\n        name: String,\n        softwareIconCustomEmojiId: TdInt64\n    ) {\n        self.additionDate = additionDate\n        self.id = id\n        self.lastUsageDate = lastUsageDate\n        self.name = name\n        self.softwareIconCustomEmojiId = softwareIconCustomEmojiId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Passkeys.swift",
    "content": "//\n//  Passkeys.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of passkeys\npublic struct Passkeys: Codable, Equatable, Hashable {\n\n    /// List of passkeys\n    public let passkeys: [Passkey]\n\n\n    public init(passkeys: [Passkey]) {\n        self.passkeys = passkeys\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PassportAuthorizationForm.swift",
    "content": "//\n//  PassportAuthorizationForm.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a Telegram Passport authorization form that was requested\npublic struct PassportAuthorizationForm: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique identifier of the authorization form\n    public let id: Int\n\n    /// URL for the privacy policy of the service; may be empty\n    public let privacyPolicyUrl: String\n\n    /// Telegram Passport elements that must be provided to complete the form\n    public let requiredElements: [PassportRequiredElement]\n\n\n    public init(\n        id: Int,\n        privacyPolicyUrl: String,\n        requiredElements: [PassportRequiredElement]\n    ) {\n        self.id = id\n        self.privacyPolicyUrl = privacyPolicyUrl\n        self.requiredElements = requiredElements\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PassportElement.swift",
    "content": "//\n//  PassportElement.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a Telegram Passport element\npublic indirect enum PassportElement: Codable, Equatable, Hashable {\n\n    /// A Telegram Passport element containing the user's personal details\n    case passportElementPersonalDetails(PassportElementPersonalDetails)\n\n    /// A Telegram Passport element containing the user's passport\n    case passportElementPassport(PassportElementPassport)\n\n    /// A Telegram Passport element containing the user's driver license\n    case passportElementDriverLicense(PassportElementDriverLicense)\n\n    /// A Telegram Passport element containing the user's identity card\n    case passportElementIdentityCard(PassportElementIdentityCard)\n\n    /// A Telegram Passport element containing the user's internal passport\n    case passportElementInternalPassport(PassportElementInternalPassport)\n\n    /// A Telegram Passport element containing the user's address\n    case passportElementAddress(PassportElementAddress)\n\n    /// A Telegram Passport element containing the user's utility bill\n    case passportElementUtilityBill(PassportElementUtilityBill)\n\n    /// A Telegram Passport element containing the user's bank statement\n    case passportElementBankStatement(PassportElementBankStatement)\n\n    /// A Telegram Passport element containing the user's rental agreement\n    case passportElementRentalAgreement(PassportElementRentalAgreement)\n\n    /// A Telegram Passport element containing the user's passport registration pages\n    case passportElementPassportRegistration(PassportElementPassportRegistration)\n\n    /// A Telegram Passport element containing the user's temporary registration\n    case passportElementTemporaryRegistration(PassportElementTemporaryRegistration)\n\n    /// A Telegram Passport element containing the user's phone number\n    case passportElementPhoneNumber(PassportElementPhoneNumber)\n\n    /// A Telegram Passport element containing the user's email address\n    case passportElementEmailAddress(PassportElementEmailAddress)\n\n\n    private enum Kind: String, Codable {\n        case passportElementPersonalDetails\n        case passportElementPassport\n        case passportElementDriverLicense\n        case passportElementIdentityCard\n        case passportElementInternalPassport\n        case passportElementAddress\n        case passportElementUtilityBill\n        case passportElementBankStatement\n        case passportElementRentalAgreement\n        case passportElementPassportRegistration\n        case passportElementTemporaryRegistration\n        case passportElementPhoneNumber\n        case passportElementEmailAddress\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .passportElementPersonalDetails:\n            let value = try PassportElementPersonalDetails(from: decoder)\n            self = .passportElementPersonalDetails(value)\n        case .passportElementPassport:\n            let value = try PassportElementPassport(from: decoder)\n            self = .passportElementPassport(value)\n        case .passportElementDriverLicense:\n            let value = try PassportElementDriverLicense(from: decoder)\n            self = .passportElementDriverLicense(value)\n        case .passportElementIdentityCard:\n            let value = try PassportElementIdentityCard(from: decoder)\n            self = .passportElementIdentityCard(value)\n        case .passportElementInternalPassport:\n            let value = try PassportElementInternalPassport(from: decoder)\n            self = .passportElementInternalPassport(value)\n        case .passportElementAddress:\n            let value = try PassportElementAddress(from: decoder)\n            self = .passportElementAddress(value)\n        case .passportElementUtilityBill:\n            let value = try PassportElementUtilityBill(from: decoder)\n            self = .passportElementUtilityBill(value)\n        case .passportElementBankStatement:\n            let value = try PassportElementBankStatement(from: decoder)\n            self = .passportElementBankStatement(value)\n        case .passportElementRentalAgreement:\n            let value = try PassportElementRentalAgreement(from: decoder)\n            self = .passportElementRentalAgreement(value)\n        case .passportElementPassportRegistration:\n            let value = try PassportElementPassportRegistration(from: decoder)\n            self = .passportElementPassportRegistration(value)\n        case .passportElementTemporaryRegistration:\n            let value = try PassportElementTemporaryRegistration(from: decoder)\n            self = .passportElementTemporaryRegistration(value)\n        case .passportElementPhoneNumber:\n            let value = try PassportElementPhoneNumber(from: decoder)\n            self = .passportElementPhoneNumber(value)\n        case .passportElementEmailAddress:\n            let value = try PassportElementEmailAddress(from: decoder)\n            self = .passportElementEmailAddress(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .passportElementPersonalDetails(let value):\n            try container.encode(Kind.passportElementPersonalDetails, forKey: .type)\n            try value.encode(to: encoder)\n        case .passportElementPassport(let value):\n            try container.encode(Kind.passportElementPassport, forKey: .type)\n            try value.encode(to: encoder)\n        case .passportElementDriverLicense(let value):\n            try container.encode(Kind.passportElementDriverLicense, forKey: .type)\n            try value.encode(to: encoder)\n        case .passportElementIdentityCard(let value):\n            try container.encode(Kind.passportElementIdentityCard, forKey: .type)\n            try value.encode(to: encoder)\n        case .passportElementInternalPassport(let value):\n            try container.encode(Kind.passportElementInternalPassport, forKey: .type)\n            try value.encode(to: encoder)\n        case .passportElementAddress(let value):\n            try container.encode(Kind.passportElementAddress, forKey: .type)\n            try value.encode(to: encoder)\n        case .passportElementUtilityBill(let value):\n            try container.encode(Kind.passportElementUtilityBill, forKey: .type)\n            try value.encode(to: encoder)\n        case .passportElementBankStatement(let value):\n            try container.encode(Kind.passportElementBankStatement, forKey: .type)\n            try value.encode(to: encoder)\n        case .passportElementRentalAgreement(let value):\n            try container.encode(Kind.passportElementRentalAgreement, forKey: .type)\n            try value.encode(to: encoder)\n        case .passportElementPassportRegistration(let value):\n            try container.encode(Kind.passportElementPassportRegistration, forKey: .type)\n            try value.encode(to: encoder)\n        case .passportElementTemporaryRegistration(let value):\n            try container.encode(Kind.passportElementTemporaryRegistration, forKey: .type)\n            try value.encode(to: encoder)\n        case .passportElementPhoneNumber(let value):\n            try container.encode(Kind.passportElementPhoneNumber, forKey: .type)\n            try value.encode(to: encoder)\n        case .passportElementEmailAddress(let value):\n            try container.encode(Kind.passportElementEmailAddress, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A Telegram Passport element containing the user's personal details\npublic struct PassportElementPersonalDetails: Codable, Equatable, Hashable {\n\n    /// Personal details of the user\n    public let personalDetails: PersonalDetails\n\n\n    public init(personalDetails: PersonalDetails) {\n        self.personalDetails = personalDetails\n    }\n}\n\n/// A Telegram Passport element containing the user's passport\npublic struct PassportElementPassport: Codable, Equatable, Hashable {\n\n    /// Passport\n    public let passport: IdentityDocument\n\n\n    public init(passport: IdentityDocument) {\n        self.passport = passport\n    }\n}\n\n/// A Telegram Passport element containing the user's driver license\npublic struct PassportElementDriverLicense: Codable, Equatable, Hashable {\n\n    /// Driver license\n    public let driverLicense: IdentityDocument\n\n\n    public init(driverLicense: IdentityDocument) {\n        self.driverLicense = driverLicense\n    }\n}\n\n/// A Telegram Passport element containing the user's identity card\npublic struct PassportElementIdentityCard: Codable, Equatable, Hashable {\n\n    /// Identity card\n    public let identityCard: IdentityDocument\n\n\n    public init(identityCard: IdentityDocument) {\n        self.identityCard = identityCard\n    }\n}\n\n/// A Telegram Passport element containing the user's internal passport\npublic struct PassportElementInternalPassport: Codable, Equatable, Hashable {\n\n    /// Internal passport\n    public let internalPassport: IdentityDocument\n\n\n    public init(internalPassport: IdentityDocument) {\n        self.internalPassport = internalPassport\n    }\n}\n\n/// A Telegram Passport element containing the user's address\npublic struct PassportElementAddress: Codable, Equatable, Hashable {\n\n    /// Address\n    public let address: Address\n\n\n    public init(address: Address) {\n        self.address = address\n    }\n}\n\n/// A Telegram Passport element containing the user's utility bill\npublic struct PassportElementUtilityBill: Codable, Equatable, Hashable {\n\n    /// Utility bill\n    public let utilityBill: PersonalDocument\n\n\n    public init(utilityBill: PersonalDocument) {\n        self.utilityBill = utilityBill\n    }\n}\n\n/// A Telegram Passport element containing the user's bank statement\npublic struct PassportElementBankStatement: Codable, Equatable, Hashable {\n\n    /// Bank statement\n    public let bankStatement: PersonalDocument\n\n\n    public init(bankStatement: PersonalDocument) {\n        self.bankStatement = bankStatement\n    }\n}\n\n/// A Telegram Passport element containing the user's rental agreement\npublic struct PassportElementRentalAgreement: Codable, Equatable, Hashable {\n\n    /// Rental agreement\n    public let rentalAgreement: PersonalDocument\n\n\n    public init(rentalAgreement: PersonalDocument) {\n        self.rentalAgreement = rentalAgreement\n    }\n}\n\n/// A Telegram Passport element containing the user's passport registration pages\npublic struct PassportElementPassportRegistration: Codable, Equatable, Hashable {\n\n    /// Passport registration pages\n    public let passportRegistration: PersonalDocument\n\n\n    public init(passportRegistration: PersonalDocument) {\n        self.passportRegistration = passportRegistration\n    }\n}\n\n/// A Telegram Passport element containing the user's temporary registration\npublic struct PassportElementTemporaryRegistration: Codable, Equatable, Hashable {\n\n    /// Temporary registration\n    public let temporaryRegistration: PersonalDocument\n\n\n    public init(temporaryRegistration: PersonalDocument) {\n        self.temporaryRegistration = temporaryRegistration\n    }\n}\n\n/// A Telegram Passport element containing the user's phone number\npublic struct PassportElementPhoneNumber: Codable, Equatable, Hashable {\n\n    /// Phone number\n    public let phoneNumber: String\n\n\n    public init(phoneNumber: String) {\n        self.phoneNumber = phoneNumber\n    }\n}\n\n/// A Telegram Passport element containing the user's email address\npublic struct PassportElementEmailAddress: Codable, Equatable, Hashable {\n\n    /// Email address\n    public let emailAddress: String\n\n\n    public init(emailAddress: String) {\n        self.emailAddress = emailAddress\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PassportElementError.swift",
    "content": "//\n//  PassportElementError.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains the description of an error in a Telegram Passport element\npublic struct PassportElementError: Codable, Equatable, Hashable {\n\n    /// Error message\n    public let message: String\n\n    /// Error source\n    public let source: PassportElementErrorSource\n\n    /// Type of the Telegram Passport element which has the error\n    public let type: PassportElementType\n\n\n    public init(\n        message: String,\n        source: PassportElementErrorSource,\n        type: PassportElementType\n    ) {\n        self.message = message\n        self.source = source\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PassportElementErrorSource.swift",
    "content": "//\n//  PassportElementErrorSource.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains the description of an error in a Telegram Passport element\npublic indirect enum PassportElementErrorSource: Codable, Equatable, Hashable {\n\n    /// The element contains an error in an unspecified place. The error will be considered resolved when new data is added\n    case passportElementErrorSourceUnspecified\n\n    /// One of the data fields contains an error. The error will be considered resolved when the value of the field changes\n    case passportElementErrorSourceDataField(PassportElementErrorSourceDataField)\n\n    /// The front side of the document contains an error. The error will be considered resolved when the file with the front side changes\n    case passportElementErrorSourceFrontSide\n\n    /// The reverse side of the document contains an error. The error will be considered resolved when the file with the reverse side changes\n    case passportElementErrorSourceReverseSide\n\n    /// The selfie with the document contains an error. The error will be considered resolved when the file with the selfie changes\n    case passportElementErrorSourceSelfie\n\n    /// One of files with the translation of the document contains an error. The error will be considered resolved when the file changes\n    case passportElementErrorSourceTranslationFile(PassportElementErrorSourceTranslationFile)\n\n    /// The translation of the document contains an error. The error will be considered resolved when the list of translation files changes\n    case passportElementErrorSourceTranslationFiles\n\n    /// The file contains an error. The error will be considered resolved when the file changes\n    case passportElementErrorSourceFile(PassportElementErrorSourceFile)\n\n    /// The list of attached files contains an error. The error will be considered resolved when the list of files changes\n    case passportElementErrorSourceFiles\n\n\n    private enum Kind: String, Codable {\n        case passportElementErrorSourceUnspecified\n        case passportElementErrorSourceDataField\n        case passportElementErrorSourceFrontSide\n        case passportElementErrorSourceReverseSide\n        case passportElementErrorSourceSelfie\n        case passportElementErrorSourceTranslationFile\n        case passportElementErrorSourceTranslationFiles\n        case passportElementErrorSourceFile\n        case passportElementErrorSourceFiles\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .passportElementErrorSourceUnspecified:\n            self = .passportElementErrorSourceUnspecified\n        case .passportElementErrorSourceDataField:\n            let value = try PassportElementErrorSourceDataField(from: decoder)\n            self = .passportElementErrorSourceDataField(value)\n        case .passportElementErrorSourceFrontSide:\n            self = .passportElementErrorSourceFrontSide\n        case .passportElementErrorSourceReverseSide:\n            self = .passportElementErrorSourceReverseSide\n        case .passportElementErrorSourceSelfie:\n            self = .passportElementErrorSourceSelfie\n        case .passportElementErrorSourceTranslationFile:\n            let value = try PassportElementErrorSourceTranslationFile(from: decoder)\n            self = .passportElementErrorSourceTranslationFile(value)\n        case .passportElementErrorSourceTranslationFiles:\n            self = .passportElementErrorSourceTranslationFiles\n        case .passportElementErrorSourceFile:\n            let value = try PassportElementErrorSourceFile(from: decoder)\n            self = .passportElementErrorSourceFile(value)\n        case .passportElementErrorSourceFiles:\n            self = .passportElementErrorSourceFiles\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .passportElementErrorSourceUnspecified:\n            try container.encode(Kind.passportElementErrorSourceUnspecified, forKey: .type)\n        case .passportElementErrorSourceDataField(let value):\n            try container.encode(Kind.passportElementErrorSourceDataField, forKey: .type)\n            try value.encode(to: encoder)\n        case .passportElementErrorSourceFrontSide:\n            try container.encode(Kind.passportElementErrorSourceFrontSide, forKey: .type)\n        case .passportElementErrorSourceReverseSide:\n            try container.encode(Kind.passportElementErrorSourceReverseSide, forKey: .type)\n        case .passportElementErrorSourceSelfie:\n            try container.encode(Kind.passportElementErrorSourceSelfie, forKey: .type)\n        case .passportElementErrorSourceTranslationFile(let value):\n            try container.encode(Kind.passportElementErrorSourceTranslationFile, forKey: .type)\n            try value.encode(to: encoder)\n        case .passportElementErrorSourceTranslationFiles:\n            try container.encode(Kind.passportElementErrorSourceTranslationFiles, forKey: .type)\n        case .passportElementErrorSourceFile(let value):\n            try container.encode(Kind.passportElementErrorSourceFile, forKey: .type)\n            try value.encode(to: encoder)\n        case .passportElementErrorSourceFiles:\n            try container.encode(Kind.passportElementErrorSourceFiles, forKey: .type)\n        }\n    }\n}\n\n/// One of the data fields contains an error. The error will be considered resolved when the value of the field changes\npublic struct PassportElementErrorSourceDataField: Codable, Equatable, Hashable {\n\n    /// Field name\n    public let fieldName: String\n\n\n    public init(fieldName: String) {\n        self.fieldName = fieldName\n    }\n}\n\n/// One of files with the translation of the document contains an error. The error will be considered resolved when the file changes\npublic struct PassportElementErrorSourceTranslationFile: Codable, Equatable, Hashable {\n\n    /// Index of a file with the error\n    public let fileIndex: Int\n\n\n    public init(fileIndex: Int) {\n        self.fileIndex = fileIndex\n    }\n}\n\n/// The file contains an error. The error will be considered resolved when the file changes\npublic struct PassportElementErrorSourceFile: Codable, Equatable, Hashable {\n\n    /// Index of a file with the error\n    public let fileIndex: Int\n\n\n    public init(fileIndex: Int) {\n        self.fileIndex = fileIndex\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PassportElementType.swift",
    "content": "//\n//  PassportElementType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains the type of Telegram Passport element\npublic indirect enum PassportElementType: Codable, Equatable, Hashable {\n\n    /// A Telegram Passport element containing the user's personal details\n    case passportElementTypePersonalDetails\n\n    /// A Telegram Passport element containing the user's passport\n    case passportElementTypePassport\n\n    /// A Telegram Passport element containing the user's driver license\n    case passportElementTypeDriverLicense\n\n    /// A Telegram Passport element containing the user's identity card\n    case passportElementTypeIdentityCard\n\n    /// A Telegram Passport element containing the user's internal passport\n    case passportElementTypeInternalPassport\n\n    /// A Telegram Passport element containing the user's address\n    case passportElementTypeAddress\n\n    /// A Telegram Passport element containing the user's utility bill\n    case passportElementTypeUtilityBill\n\n    /// A Telegram Passport element containing the user's bank statement\n    case passportElementTypeBankStatement\n\n    /// A Telegram Passport element containing the user's rental agreement\n    case passportElementTypeRentalAgreement\n\n    /// A Telegram Passport element containing the registration page of the user's passport\n    case passportElementTypePassportRegistration\n\n    /// A Telegram Passport element containing the user's temporary registration\n    case passportElementTypeTemporaryRegistration\n\n    /// A Telegram Passport element containing the user's phone number\n    case passportElementTypePhoneNumber\n\n    /// A Telegram Passport element containing the user's email address\n    case passportElementTypeEmailAddress\n\n\n    private enum Kind: String, Codable {\n        case passportElementTypePersonalDetails\n        case passportElementTypePassport\n        case passportElementTypeDriverLicense\n        case passportElementTypeIdentityCard\n        case passportElementTypeInternalPassport\n        case passportElementTypeAddress\n        case passportElementTypeUtilityBill\n        case passportElementTypeBankStatement\n        case passportElementTypeRentalAgreement\n        case passportElementTypePassportRegistration\n        case passportElementTypeTemporaryRegistration\n        case passportElementTypePhoneNumber\n        case passportElementTypeEmailAddress\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .passportElementTypePersonalDetails:\n            self = .passportElementTypePersonalDetails\n        case .passportElementTypePassport:\n            self = .passportElementTypePassport\n        case .passportElementTypeDriverLicense:\n            self = .passportElementTypeDriverLicense\n        case .passportElementTypeIdentityCard:\n            self = .passportElementTypeIdentityCard\n        case .passportElementTypeInternalPassport:\n            self = .passportElementTypeInternalPassport\n        case .passportElementTypeAddress:\n            self = .passportElementTypeAddress\n        case .passportElementTypeUtilityBill:\n            self = .passportElementTypeUtilityBill\n        case .passportElementTypeBankStatement:\n            self = .passportElementTypeBankStatement\n        case .passportElementTypeRentalAgreement:\n            self = .passportElementTypeRentalAgreement\n        case .passportElementTypePassportRegistration:\n            self = .passportElementTypePassportRegistration\n        case .passportElementTypeTemporaryRegistration:\n            self = .passportElementTypeTemporaryRegistration\n        case .passportElementTypePhoneNumber:\n            self = .passportElementTypePhoneNumber\n        case .passportElementTypeEmailAddress:\n            self = .passportElementTypeEmailAddress\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .passportElementTypePersonalDetails:\n            try container.encode(Kind.passportElementTypePersonalDetails, forKey: .type)\n        case .passportElementTypePassport:\n            try container.encode(Kind.passportElementTypePassport, forKey: .type)\n        case .passportElementTypeDriverLicense:\n            try container.encode(Kind.passportElementTypeDriverLicense, forKey: .type)\n        case .passportElementTypeIdentityCard:\n            try container.encode(Kind.passportElementTypeIdentityCard, forKey: .type)\n        case .passportElementTypeInternalPassport:\n            try container.encode(Kind.passportElementTypeInternalPassport, forKey: .type)\n        case .passportElementTypeAddress:\n            try container.encode(Kind.passportElementTypeAddress, forKey: .type)\n        case .passportElementTypeUtilityBill:\n            try container.encode(Kind.passportElementTypeUtilityBill, forKey: .type)\n        case .passportElementTypeBankStatement:\n            try container.encode(Kind.passportElementTypeBankStatement, forKey: .type)\n        case .passportElementTypeRentalAgreement:\n            try container.encode(Kind.passportElementTypeRentalAgreement, forKey: .type)\n        case .passportElementTypePassportRegistration:\n            try container.encode(Kind.passportElementTypePassportRegistration, forKey: .type)\n        case .passportElementTypeTemporaryRegistration:\n            try container.encode(Kind.passportElementTypeTemporaryRegistration, forKey: .type)\n        case .passportElementTypePhoneNumber:\n            try container.encode(Kind.passportElementTypePhoneNumber, forKey: .type)\n        case .passportElementTypeEmailAddress:\n            try container.encode(Kind.passportElementTypeEmailAddress, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PassportElements.swift",
    "content": "//\n//  PassportElements.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about saved Telegram Passport elements\npublic struct PassportElements: Codable, Equatable, Hashable {\n\n    /// Telegram Passport elements\n    public let elements: [PassportElement]\n\n\n    public init(elements: [PassportElement]) {\n        self.elements = elements\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PassportElementsWithErrors.swift",
    "content": "//\n//  PassportElementsWithErrors.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a Telegram Passport elements and corresponding errors\npublic struct PassportElementsWithErrors: Codable, Equatable, Hashable {\n\n    /// Telegram Passport elements\n    public let elements: [PassportElement]\n\n    /// Errors in the elements that are already available\n    public let errors: [PassportElementError]\n\n\n    public init(\n        elements: [PassportElement],\n        errors: [PassportElementError]\n    ) {\n        self.elements = elements\n        self.errors = errors\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PassportRequiredElement.swift",
    "content": "//\n//  PassportRequiredElement.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a description of the required Telegram Passport element that was requested by a service\npublic struct PassportRequiredElement: Codable, Equatable, Hashable {\n\n    /// List of Telegram Passport elements any of which is enough to provide\n    public let suitableElements: [PassportSuitableElement]\n\n\n    public init(suitableElements: [PassportSuitableElement]) {\n        self.suitableElements = suitableElements\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PassportSuitableElement.swift",
    "content": "//\n//  PassportSuitableElement.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a Telegram Passport element that was requested by a service\npublic struct PassportSuitableElement: Codable, Equatable, Hashable {\n\n    /// True, if personal details must include the user's name in the language of their country of residence\n    public let isNativeNameRequired: Bool\n\n    /// True, if a selfie is required with the identity document\n    public let isSelfieRequired: Bool\n\n    /// True, if a certified English translation is required with the document\n    public let isTranslationRequired: Bool\n\n    /// Type of the element\n    public let type: PassportElementType\n\n\n    public init(\n        isNativeNameRequired: Bool,\n        isSelfieRequired: Bool,\n        isTranslationRequired: Bool,\n        type: PassportElementType\n    ) {\n        self.isNativeNameRequired = isNativeNameRequired\n        self.isSelfieRequired = isSelfieRequired\n        self.isTranslationRequired = isTranslationRequired\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PasswordState.swift",
    "content": "//\n//  PasswordState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents the current state of 2-step verification\npublic struct PasswordState: Codable, Equatable, Hashable {\n\n    /// True, if some Telegram Passport elements were saved\n    public let hasPassportData: Bool\n\n    /// True, if a 2-step verification password is set\n    public let hasPassword: Bool\n\n    /// True, if a recovery email is set\n    public let hasRecoveryEmailAddress: Bool\n\n    /// Pattern of the email address set up for logging in\n    public let loginEmailAddressPattern: String\n\n    /// Hint for the password; may be empty\n    public let passwordHint: String\n\n    /// If not 0, point in time (Unix timestamp) after which the 2-step verification password can be reset immediately using resetPassword\n    public let pendingResetDate: Int\n\n    /// Information about the recovery email address to which the confirmation email was sent; may be null\n    public let recoveryEmailAddressCodeInfo: EmailAddressAuthenticationCodeInfo?\n\n\n    public init(\n        hasPassportData: Bool,\n        hasPassword: Bool,\n        hasRecoveryEmailAddress: Bool,\n        loginEmailAddressPattern: String,\n        passwordHint: String,\n        pendingResetDate: Int,\n        recoveryEmailAddressCodeInfo: EmailAddressAuthenticationCodeInfo?\n    ) {\n        self.hasPassportData = hasPassportData\n        self.hasPassword = hasPassword\n        self.hasRecoveryEmailAddress = hasRecoveryEmailAddress\n        self.loginEmailAddressPattern = loginEmailAddressPattern\n        self.passwordHint = passwordHint\n        self.pendingResetDate = pendingResetDate\n        self.recoveryEmailAddressCodeInfo = recoveryEmailAddressCodeInfo\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PaymentForm.swift",
    "content": "//\n//  PaymentForm.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about an invoice payment form\npublic struct PaymentForm: Codable, Equatable, Hashable, Identifiable {\n\n    /// The payment form identifier\n    public let id: TdInt64\n\n    /// Information about the product\n    public let productInfo: ProductInfo\n\n    /// User identifier of the seller bot\n    public let sellerBotUserId: Int64\n\n    /// Type of the payment form\n    public let type: PaymentFormType\n\n\n    public init(\n        id: TdInt64,\n        productInfo: ProductInfo,\n        sellerBotUserId: Int64,\n        type: PaymentFormType\n    ) {\n        self.id = id\n        self.productInfo = productInfo\n        self.sellerBotUserId = sellerBotUserId\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PaymentFormType.swift",
    "content": "//\n//  PaymentFormType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of payment form\npublic indirect enum PaymentFormType: Codable, Equatable, Hashable {\n\n    /// The payment form is for a regular payment\n    case paymentFormTypeRegular(PaymentFormTypeRegular)\n\n    /// The payment form is for a payment in Telegram Stars\n    case paymentFormTypeStars(PaymentFormTypeStars)\n\n    /// The payment form is for a payment in Telegram Stars for subscription\n    case paymentFormTypeStarSubscription(PaymentFormTypeStarSubscription)\n\n\n    private enum Kind: String, Codable {\n        case paymentFormTypeRegular\n        case paymentFormTypeStars\n        case paymentFormTypeStarSubscription\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .paymentFormTypeRegular:\n            let value = try PaymentFormTypeRegular(from: decoder)\n            self = .paymentFormTypeRegular(value)\n        case .paymentFormTypeStars:\n            let value = try PaymentFormTypeStars(from: decoder)\n            self = .paymentFormTypeStars(value)\n        case .paymentFormTypeStarSubscription:\n            let value = try PaymentFormTypeStarSubscription(from: decoder)\n            self = .paymentFormTypeStarSubscription(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .paymentFormTypeRegular(let value):\n            try container.encode(Kind.paymentFormTypeRegular, forKey: .type)\n            try value.encode(to: encoder)\n        case .paymentFormTypeStars(let value):\n            try container.encode(Kind.paymentFormTypeStars, forKey: .type)\n            try value.encode(to: encoder)\n        case .paymentFormTypeStarSubscription(let value):\n            try container.encode(Kind.paymentFormTypeStarSubscription, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The payment form is for a regular payment\npublic struct PaymentFormTypeRegular: Codable, Equatable, Hashable {\n\n    /// The list of additional payment options\n    public let additionalPaymentOptions: [PaymentOption]\n\n    /// True, if the user can choose to save credentials\n    public let canSaveCredentials: Bool\n\n    /// Full information about the invoice\n    public let invoice: Invoice\n\n    /// True, if the user will be able to save credentials, if sets up a 2-step verification password\n    public let needPassword: Bool\n\n    /// Information about the payment provider\n    public let paymentProvider: PaymentProvider\n\n    /// User identifier of the payment provider bot\n    public let paymentProviderUserId: Int64\n\n    /// The list of saved payment credentials\n    public let savedCredentials: [SavedCredentials]\n\n    /// Saved server-side order information; may be null\n    public let savedOrderInfo: OrderInfo?\n\n\n    public init(\n        additionalPaymentOptions: [PaymentOption],\n        canSaveCredentials: Bool,\n        invoice: Invoice,\n        needPassword: Bool,\n        paymentProvider: PaymentProvider,\n        paymentProviderUserId: Int64,\n        savedCredentials: [SavedCredentials],\n        savedOrderInfo: OrderInfo?\n    ) {\n        self.additionalPaymentOptions = additionalPaymentOptions\n        self.canSaveCredentials = canSaveCredentials\n        self.invoice = invoice\n        self.needPassword = needPassword\n        self.paymentProvider = paymentProvider\n        self.paymentProviderUserId = paymentProviderUserId\n        self.savedCredentials = savedCredentials\n        self.savedOrderInfo = savedOrderInfo\n    }\n}\n\n/// The payment form is for a payment in Telegram Stars\npublic struct PaymentFormTypeStars: Codable, Equatable, Hashable {\n\n    /// Number of Telegram Stars that will be paid\n    public let starCount: Int64\n\n\n    public init(starCount: Int64) {\n        self.starCount = starCount\n    }\n}\n\n/// The payment form is for a payment in Telegram Stars for subscription\npublic struct PaymentFormTypeStarSubscription: Codable, Equatable, Hashable {\n\n    /// Information about subscription plan\n    public let pricing: StarSubscriptionPricing\n\n\n    public init(pricing: StarSubscriptionPricing) {\n        self.pricing = pricing\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PaymentOption.swift",
    "content": "//\n//  PaymentOption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an additional payment option\npublic struct PaymentOption: Codable, Equatable, Hashable {\n\n    /// Title for the payment option\n    public let title: String\n\n    /// Payment form URL to be opened in a web view\n    public let url: String\n\n\n    public init(\n        title: String,\n        url: String\n    ) {\n        self.title = title\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PaymentProvider.swift",
    "content": "//\n//  PaymentProvider.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a payment provider\npublic indirect enum PaymentProvider: Codable, Equatable, Hashable {\n\n    /// Smart Glocal payment provider\n    case paymentProviderSmartGlocal(PaymentProviderSmartGlocal)\n\n    /// Stripe payment provider\n    case paymentProviderStripe(PaymentProviderStripe)\n\n    /// Some other payment provider, for which a web payment form must be shown\n    case paymentProviderOther(PaymentProviderOther)\n\n\n    private enum Kind: String, Codable {\n        case paymentProviderSmartGlocal\n        case paymentProviderStripe\n        case paymentProviderOther\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .paymentProviderSmartGlocal:\n            let value = try PaymentProviderSmartGlocal(from: decoder)\n            self = .paymentProviderSmartGlocal(value)\n        case .paymentProviderStripe:\n            let value = try PaymentProviderStripe(from: decoder)\n            self = .paymentProviderStripe(value)\n        case .paymentProviderOther:\n            let value = try PaymentProviderOther(from: decoder)\n            self = .paymentProviderOther(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .paymentProviderSmartGlocal(let value):\n            try container.encode(Kind.paymentProviderSmartGlocal, forKey: .type)\n            try value.encode(to: encoder)\n        case .paymentProviderStripe(let value):\n            try container.encode(Kind.paymentProviderStripe, forKey: .type)\n            try value.encode(to: encoder)\n        case .paymentProviderOther(let value):\n            try container.encode(Kind.paymentProviderOther, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Smart Glocal payment provider\npublic struct PaymentProviderSmartGlocal: Codable, Equatable, Hashable {\n\n    /// Public payment token\n    public let publicToken: String\n\n    /// URL for sending card tokenization requests\n    public let tokenizeUrl: String\n\n\n    public init(\n        publicToken: String,\n        tokenizeUrl: String\n    ) {\n        self.publicToken = publicToken\n        self.tokenizeUrl = tokenizeUrl\n    }\n}\n\n/// Stripe payment provider\npublic struct PaymentProviderStripe: Codable, Equatable, Hashable {\n\n    /// True, if the cardholder name must be provided\n    public let needCardholderName: Bool\n\n    /// True, if the user country must be provided\n    public let needCountry: Bool\n\n    /// True, if the user ZIP/postal code must be provided\n    public let needPostalCode: Bool\n\n    /// Stripe API publishable key\n    public let publishableKey: String\n\n\n    public init(\n        needCardholderName: Bool,\n        needCountry: Bool,\n        needPostalCode: Bool,\n        publishableKey: String\n    ) {\n        self.needCardholderName = needCardholderName\n        self.needCountry = needCountry\n        self.needPostalCode = needPostalCode\n        self.publishableKey = publishableKey\n    }\n}\n\n/// Some other payment provider, for which a web payment form must be shown\npublic struct PaymentProviderOther: Codable, Equatable, Hashable {\n\n    /// Payment form URL\n    public let url: String\n\n\n    public init(url: String) {\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PaymentReceipt.swift",
    "content": "//\n//  PaymentReceipt.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a successful payment\npublic struct PaymentReceipt: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the payment was made\n    public let date: Int\n\n    /// Information about the product\n    public let productInfo: ProductInfo\n\n    /// User identifier of the seller bot\n    public let sellerBotUserId: Int64\n\n    /// Type of the payment receipt\n    public let type: PaymentReceiptType\n\n\n    public init(\n        date: Int,\n        productInfo: ProductInfo,\n        sellerBotUserId: Int64,\n        type: PaymentReceiptType\n    ) {\n        self.date = date\n        self.productInfo = productInfo\n        self.sellerBotUserId = sellerBotUserId\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PaymentReceiptType.swift",
    "content": "//\n//  PaymentReceiptType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of successful payment\npublic indirect enum PaymentReceiptType: Codable, Equatable, Hashable {\n\n    /// The payment was done using a third-party payment provider\n    case paymentReceiptTypeRegular(PaymentReceiptTypeRegular)\n\n    /// The payment was done using Telegram Stars\n    case paymentReceiptTypeStars(PaymentReceiptTypeStars)\n\n\n    private enum Kind: String, Codable {\n        case paymentReceiptTypeRegular\n        case paymentReceiptTypeStars\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .paymentReceiptTypeRegular:\n            let value = try PaymentReceiptTypeRegular(from: decoder)\n            self = .paymentReceiptTypeRegular(value)\n        case .paymentReceiptTypeStars:\n            let value = try PaymentReceiptTypeStars(from: decoder)\n            self = .paymentReceiptTypeStars(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .paymentReceiptTypeRegular(let value):\n            try container.encode(Kind.paymentReceiptTypeRegular, forKey: .type)\n            try value.encode(to: encoder)\n        case .paymentReceiptTypeStars(let value):\n            try container.encode(Kind.paymentReceiptTypeStars, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The payment was done using a third-party payment provider\npublic struct PaymentReceiptTypeRegular: Codable, Equatable, Hashable {\n\n    /// Title of the saved credentials chosen by the buyer\n    public let credentialsTitle: String\n\n    /// Information about the invoice\n    public let invoice: Invoice\n\n    /// Order information; may be null\n    public let orderInfo: OrderInfo?\n\n    /// User identifier of the payment provider bot\n    public let paymentProviderUserId: Int64\n\n    /// Chosen shipping option; may be null\n    public let shippingOption: ShippingOption?\n\n    /// The amount of tip chosen by the buyer in the smallest units of the currency\n    public let tipAmount: Int64\n\n\n    public init(\n        credentialsTitle: String,\n        invoice: Invoice,\n        orderInfo: OrderInfo?,\n        paymentProviderUserId: Int64,\n        shippingOption: ShippingOption?,\n        tipAmount: Int64\n    ) {\n        self.credentialsTitle = credentialsTitle\n        self.invoice = invoice\n        self.orderInfo = orderInfo\n        self.paymentProviderUserId = paymentProviderUserId\n        self.shippingOption = shippingOption\n        self.tipAmount = tipAmount\n    }\n}\n\n/// The payment was done using Telegram Stars\npublic struct PaymentReceiptTypeStars: Codable, Equatable, Hashable {\n\n    /// Number of Telegram Stars that were paid\n    public let starCount: Int64\n\n    /// Unique identifier of the transaction that can be used to dispute it\n    public let transactionId: String\n\n\n    public init(\n        starCount: Int64,\n        transactionId: String\n    ) {\n        self.starCount = starCount\n        self.transactionId = transactionId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PaymentResult.swift",
    "content": "//\n//  PaymentResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains the result of a payment request\npublic struct PaymentResult: Codable, Equatable, Hashable {\n\n    /// True, if the payment request was successful; otherwise, the verification_url will be non-empty\n    public let success: Bool\n\n    /// URL for additional payment credentials verification\n    public let verificationUrl: String\n\n\n    public init(\n        success: Bool,\n        verificationUrl: String\n    ) {\n        self.success = success\n        self.verificationUrl = verificationUrl\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PersonalDetails.swift",
    "content": "//\n//  PersonalDetails.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains the user's personal details\npublic struct PersonalDetails: Codable, Equatable, Hashable {\n\n    /// Birthdate of the user\n    public let birthdate: Date\n\n    /// A two-letter ISO 3166-1 alpha-2 country code of the user's country\n    public let countryCode: String\n\n    /// First name of the user written in English; 1-255 characters\n    public let firstName: String\n\n    /// Gender of the user, \"male\" or \"female\"\n    public let gender: String\n\n    /// Last name of the user written in English; 1-255 characters\n    public let lastName: String\n\n    /// Middle name of the user written in English; 0-255 characters\n    public let middleName: String\n\n    /// Native first name of the user; 1-255 characters\n    public let nativeFirstName: String\n\n    /// Native last name of the user; 1-255 characters\n    public let nativeLastName: String\n\n    /// Native middle name of the user; 0-255 characters\n    public let nativeMiddleName: String\n\n    /// A two-letter ISO 3166-1 alpha-2 country code of the user's residence country\n    public let residenceCountryCode: String\n\n\n    public init(\n        birthdate: Date,\n        countryCode: String,\n        firstName: String,\n        gender: String,\n        lastName: String,\n        middleName: String,\n        nativeFirstName: String,\n        nativeLastName: String,\n        nativeMiddleName: String,\n        residenceCountryCode: String\n    ) {\n        self.birthdate = birthdate\n        self.countryCode = countryCode\n        self.firstName = firstName\n        self.gender = gender\n        self.lastName = lastName\n        self.middleName = middleName\n        self.nativeFirstName = nativeFirstName\n        self.nativeLastName = nativeLastName\n        self.nativeMiddleName = nativeMiddleName\n        self.residenceCountryCode = residenceCountryCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PersonalDocument.swift",
    "content": "//\n//  PersonalDocument.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A personal document, containing some information about a user\npublic struct PersonalDocument: Codable, Equatable, Hashable {\n\n    /// List of files containing the pages of the document\n    public let files: [DatedFile]\n\n    /// List of files containing a certified English translation of the document\n    public let translation: [DatedFile]\n\n\n    public init(\n        files: [DatedFile],\n        translation: [DatedFile]\n    ) {\n        self.files = files\n        self.translation = translation\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PhoneNumberAuthenticationSettings.swift",
    "content": "//\n//  PhoneNumberAuthenticationSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains settings for the authentication of the user's phone number\npublic struct PhoneNumberAuthenticationSettings: Codable, Equatable, Hashable {\n\n    /// Pass true if the authentication code may be sent via a flash call to the specified phone number\n    public let allowFlashCall: Bool\n\n    /// Pass true if the authentication code may be sent via a missed call to the specified phone number\n    public let allowMissedCall: Bool\n\n    /// For official applications only. True, if the application can use Android SMS Retriever API (requires Google Play Services >= 10.2) to automatically receive the authentication code from the SMS. See https://developers.google.com/identity/sms-retriever/ for more details\n    public let allowSmsRetrieverApi: Bool\n\n    /// List of up to 20 authentication tokens, recently received in updateOption(\"authentication_token\") in previously logged out sessions; for setAuthenticationPhoneNumber only\n    public let authenticationTokens: [String]\n\n    /// For official Android and iOS applications only; pass null otherwise. Settings for Firebase Authentication\n    public let firebaseAuthenticationSettings: FirebaseAuthenticationSettings?\n\n    /// Pass true if there is a SIM card in the current device, but it is not possible to check whether phone number matches\n    public let hasUnknownPhoneNumber: Bool\n\n    /// Pass true if the authenticated phone number is used on the current device\n    public let isCurrentPhoneNumber: Bool\n\n\n    public init(\n        allowFlashCall: Bool,\n        allowMissedCall: Bool,\n        allowSmsRetrieverApi: Bool,\n        authenticationTokens: [String],\n        firebaseAuthenticationSettings: FirebaseAuthenticationSettings?,\n        hasUnknownPhoneNumber: Bool,\n        isCurrentPhoneNumber: Bool\n    ) {\n        self.allowFlashCall = allowFlashCall\n        self.allowMissedCall = allowMissedCall\n        self.allowSmsRetrieverApi = allowSmsRetrieverApi\n        self.authenticationTokens = authenticationTokens\n        self.firebaseAuthenticationSettings = firebaseAuthenticationSettings\n        self.hasUnknownPhoneNumber = hasUnknownPhoneNumber\n        self.isCurrentPhoneNumber = isCurrentPhoneNumber\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PhoneNumberCodeType.swift",
    "content": "//\n//  PhoneNumberCodeType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of the request for which a code is sent to a phone number\npublic indirect enum PhoneNumberCodeType: Codable, Equatable, Hashable {\n\n    /// Checks ownership of a new phone number to change the user's authentication phone number; for official Android and iOS applications only\n    case phoneNumberCodeTypeChange\n\n    /// Verifies ownership of a phone number to be added to the user's Telegram Passport\n    case phoneNumberCodeTypeVerify\n\n    /// Confirms ownership of a phone number to prevent account deletion while handling links of the type internalLinkTypePhoneNumberConfirmation\n    case phoneNumberCodeTypeConfirmOwnership(PhoneNumberCodeTypeConfirmOwnership)\n\n\n    private enum Kind: String, Codable {\n        case phoneNumberCodeTypeChange\n        case phoneNumberCodeTypeVerify\n        case phoneNumberCodeTypeConfirmOwnership\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .phoneNumberCodeTypeChange:\n            self = .phoneNumberCodeTypeChange\n        case .phoneNumberCodeTypeVerify:\n            self = .phoneNumberCodeTypeVerify\n        case .phoneNumberCodeTypeConfirmOwnership:\n            let value = try PhoneNumberCodeTypeConfirmOwnership(from: decoder)\n            self = .phoneNumberCodeTypeConfirmOwnership(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .phoneNumberCodeTypeChange:\n            try container.encode(Kind.phoneNumberCodeTypeChange, forKey: .type)\n        case .phoneNumberCodeTypeVerify:\n            try container.encode(Kind.phoneNumberCodeTypeVerify, forKey: .type)\n        case .phoneNumberCodeTypeConfirmOwnership(let value):\n            try container.encode(Kind.phoneNumberCodeTypeConfirmOwnership, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Confirms ownership of a phone number to prevent account deletion while handling links of the type internalLinkTypePhoneNumberConfirmation\npublic struct PhoneNumberCodeTypeConfirmOwnership: Codable, Equatable, Hashable {\n\n    /// Hash value from the link\n    public let hash: String\n\n\n    public init(hash: String) {\n        self.hash = hash\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PhoneNumberInfo.swift",
    "content": "//\n//  PhoneNumberInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a phone number\npublic struct PhoneNumberInfo: Codable, Equatable, Hashable {\n\n    /// Information about the country to which the phone number belongs; may be null\n    public let country: CountryInfo?\n\n    /// The part of the phone number denoting country calling code or its part\n    public let countryCallingCode: String\n\n    /// The phone number without country calling code formatted accordingly to local rules. Expected digits are returned as '-', but even more digits might be entered by the user\n    public let formattedPhoneNumber: String\n\n    /// True, if the phone number was bought at https://fragment.com and isn't tied to a SIM card. Information about the phone number can be received using getCollectibleItemInfo\n    public let isAnonymous: Bool\n\n\n    public init(\n        country: CountryInfo?,\n        countryCallingCode: String,\n        formattedPhoneNumber: String,\n        isAnonymous: Bool\n    ) {\n        self.country = country\n        self.countryCallingCode = countryCallingCode\n        self.formattedPhoneNumber = formattedPhoneNumber\n        self.isAnonymous = isAnonymous\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Photo.swift",
    "content": "//\n//  Photo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a photo\npublic struct Photo: Codable, Equatable, Hashable {\n\n    /// True, if stickers were added to the photo. The list of corresponding sticker sets can be received using getAttachedStickerSets\n    public let hasStickers: Bool\n\n    /// Photo minithumbnail; may be null\n    public let minithumbnail: Minithumbnail?\n\n    /// Available variants of the photo, in different sizes\n    public let sizes: [PhotoSize]\n\n\n    public init(\n        hasStickers: Bool,\n        minithumbnail: Minithumbnail?,\n        sizes: [PhotoSize]\n    ) {\n        self.hasStickers = hasStickers\n        self.minithumbnail = minithumbnail\n        self.sizes = sizes\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PhotoSize.swift",
    "content": "//\n//  PhotoSize.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an image in JPEG format\npublic struct PhotoSize: Codable, Equatable, Hashable {\n\n    /// Image height\n    public let height: Int\n\n    /// Information about the image file\n    public let photo: File\n\n    /// Sizes of progressive JPEG file prefixes, which can be used to preliminarily show the image; in bytes\n    public let progressiveSizes: [Int]\n\n    /// Image type (see https://core.telegram.org/constructor/photoSize)\n    public let type: String\n\n    /// Image width\n    public let width: Int\n\n\n    public init(\n        height: Int,\n        photo: File,\n        progressiveSizes: [Int],\n        type: String,\n        width: Int\n    ) {\n        self.height = height\n        self.photo = photo\n        self.progressiveSizes = progressiveSizes\n        self.type = type\n        self.width = width\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PinChatMessage.swift",
    "content": "//\n//  PinChatMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Pins a message in a chat. A message can be pinned only if messageProperties.can_be_pinned\npublic struct PinChatMessage: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n    /// Pass true to disable notification about the pinned message. Notifications are always disabled in channels and private chats\n    public let disableNotification: Bool?\n\n    /// Identifier of the new pinned message\n    public let messageId: Int64?\n\n    /// Pass true to pin the message only for self; private chats only\n    public let onlyForSelf: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        disableNotification: Bool?,\n        messageId: Int64?,\n        onlyForSelf: Bool?\n    ) {\n        self.chatId = chatId\n        self.disableNotification = disableNotification\n        self.messageId = messageId\n        self.onlyForSelf = onlyForSelf\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PingProxy.swift",
    "content": "//\n//  PingProxy.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Computes time needed to receive a response from a Telegram server through a proxy. Can be called before authorization\npublic struct PingProxy: Codable, Equatable, Hashable {\n\n    /// The proxy to test; pass null to ping a Telegram server without a proxy\n    public let proxy: Proxy?\n\n\n    public init(proxy: Proxy?) {\n        self.proxy = proxy\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PlaceGiftAuctionBid.swift",
    "content": "//\n//  PlaceGiftAuctionBid.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Places a bid on an auction gift\npublic struct PlaceGiftAuctionBid: Codable, Equatable, Hashable {\n\n    /// Identifier of the gift to place the bid on\n    public let giftId: TdInt64?\n\n    /// Pass true to show gift text and sender only to the gift receiver; otherwise, everyone will be able to see them\n    public let isPrivate: Bool?\n\n    /// The number of Telegram Stars to place in the bid\n    public let starCount: Int64?\n\n    /// Text to show along with the gift; 0-getOption(\"gift_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed. Must be empty if the receiver enabled paid messages\n    public let text: FormattedText?\n\n    /// Identifier of the user who will receive the gift\n    public let userId: Int64?\n\n\n    public init(\n        giftId: TdInt64?,\n        isPrivate: Bool?,\n        starCount: Int64?,\n        text: FormattedText?,\n        userId: Int64?\n    ) {\n        self.giftId = giftId\n        self.isPrivate = isPrivate\n        self.starCount = starCount\n        self.text = text\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Point.swift",
    "content": "//\n//  Point.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A point on a Cartesian plane\npublic struct Point: Codable, Equatable, Hashable {\n\n    /// The point's first coordinate\n    public let x: Double\n\n    /// The point's second coordinate\n    public let y: Double\n\n\n    public init(\n        x: Double,\n        y: Double\n    ) {\n        self.x = x\n        self.y = y\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Poll.swift",
    "content": "//\n//  Poll.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a poll\npublic struct Poll: Codable, Equatable, Hashable, Identifiable {\n\n    /// True, if multiple answer options can be chosen simultaneously\n    public let allowsMultipleAnswers: Bool\n\n    /// True, if the poll can be answered multiple times\n    public let allowsRevoting: Bool\n\n    /// True, if the current user can get voters in the poll using getPollVoters\n    public let canGetVoters: Bool\n\n    /// Point in time (Unix timestamp) when the poll will automatically be closed\n    public let closeDate: Int\n\n    /// The list of two-letter ISO 3166-1 alpha-2 codes of countries, users from which will be able to vote. If empty, then all users can participate in the poll\n    public let countryCodes: [String]\n\n    /// Unique poll identifier\n    public let id: TdInt64\n\n    /// True, if the poll is anonymous\n    public let isAnonymous: Bool\n\n    /// True, if the poll is closed\n    public let isClosed: Bool\n\n    /// True, if only the users that are members of the chat for more than a day will be able to vote\n    public let membersOnly: Bool\n\n    /// Amount of time the poll will be active after creation, in seconds\n    public let openPeriod: Int\n\n    /// The list of 0-based poll identifiers in which the options of the poll must be shown; empty if the order of options must not be changed\n    public let optionOrder: [Int]\n\n    /// List of poll answer options\n    public let options: [PollOption]\n\n    /// Poll question; 1-300 characters; may contain only custom emoji entities\n    public let question: FormattedText\n\n    /// Identifiers of recent voters, if the poll is non-anonymous and poll results are available\n    public let recentVoterIds: [MessageSender]\n\n    /// Total number of voters, participating in the poll\n    public let totalVoterCount: Int\n\n    /// Type of the poll\n    public let type: PollType\n\n    /// The reason describing, why the current user can't vote in the poll; may be null if the user can vote in the poll\n    public let voteRestrictionReason: PollVoteRestrictionReason?\n\n\n    public init(\n        allowsMultipleAnswers: Bool,\n        allowsRevoting: Bool,\n        canGetVoters: Bool,\n        closeDate: Int,\n        countryCodes: [String],\n        id: TdInt64,\n        isAnonymous: Bool,\n        isClosed: Bool,\n        membersOnly: Bool,\n        openPeriod: Int,\n        optionOrder: [Int],\n        options: [PollOption],\n        question: FormattedText,\n        recentVoterIds: [MessageSender],\n        totalVoterCount: Int,\n        type: PollType,\n        voteRestrictionReason: PollVoteRestrictionReason?\n    ) {\n        self.allowsMultipleAnswers = allowsMultipleAnswers\n        self.allowsRevoting = allowsRevoting\n        self.canGetVoters = canGetVoters\n        self.closeDate = closeDate\n        self.countryCodes = countryCodes\n        self.id = id\n        self.isAnonymous = isAnonymous\n        self.isClosed = isClosed\n        self.membersOnly = membersOnly\n        self.openPeriod = openPeriod\n        self.optionOrder = optionOrder\n        self.options = options\n        self.question = question\n        self.recentVoterIds = recentVoterIds\n        self.totalVoterCount = totalVoterCount\n        self.type = type\n        self.voteRestrictionReason = voteRestrictionReason\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PollOption.swift",
    "content": "//\n//  PollOption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes one answer option of a poll\npublic struct PollOption: Codable, Equatable, Hashable, Identifiable {\n\n    /// Point in time (Unix timestamp) when the option was added; 0 if the option existed from creation of the poll\n    public let additionDate: Int\n\n    /// Identifier of the user or chat who added the option; may be null if the option existed from creation of the poll\n    public let author: MessageSender?\n\n    /// Unique identifier of the option in the poll; may be empty if yet unassigned\n    public let id: String\n\n    /// True, if the option is being chosen by a pending setPollAnswer request\n    public let isBeingChosen: Bool\n\n    /// True, if the option was chosen by the user\n    public let isChosen: Bool\n\n    /// Option media; may be null if none. If present, currently, can be only of the types messageAnimation, messageLocation, messagePhoto, messageSticker, messageVenue, or messageVideo without caption\n    public let media: MessageContent?\n\n    /// Identifiers of recent voters for the option, if the poll is non-anonymous and poll results are available\n    public let recentVoterIds: [MessageSender]\n\n    /// Option text; 1-100 characters; may contain only custom emoji entities\n    public let text: FormattedText\n\n    /// The percentage of votes for this option; 0-100\n    public let votePercentage: Int\n\n    /// Number of voters for this option, available only for closed or voted polls, or if the current user is the creator of the poll\n    public let voterCount: Int\n\n\n    public init(\n        additionDate: Int,\n        author: MessageSender?,\n        id: String,\n        isBeingChosen: Bool,\n        isChosen: Bool,\n        media: MessageContent?,\n        recentVoterIds: [MessageSender],\n        text: FormattedText,\n        votePercentage: Int,\n        voterCount: Int\n    ) {\n        self.additionDate = additionDate\n        self.author = author\n        self.id = id\n        self.isBeingChosen = isBeingChosen\n        self.isChosen = isChosen\n        self.media = media\n        self.recentVoterIds = recentVoterIds\n        self.text = text\n        self.votePercentage = votePercentage\n        self.voterCount = voterCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PollOptionProperties.swift",
    "content": "//\n//  PollOptionProperties.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains properties of a poll option and describes actions that can be done with the option right now\npublic struct PollOptionProperties: Codable, Equatable, Hashable {\n\n    /// True, if the option can be deleted using deletePollOption\n    public let canBeDeleted: Bool\n\n    /// True, if the poll option can be replied in the same chat and forum topic using inputMessageReplyToMessage\n    public let canBeReplied: Bool\n\n    /// True, if the poll option can be replied in another chat or forum topic using inputMessageReplyToExternalMessage\n    public let canBeRepliedInAnotherChat: Bool\n\n    /// True, if a link can be generated for the poll option using getMessageLink\n    public let canGetLink: Bool\n\n\n    public init(\n        canBeDeleted: Bool,\n        canBeReplied: Bool,\n        canBeRepliedInAnotherChat: Bool,\n        canGetLink: Bool\n    ) {\n        self.canBeDeleted = canBeDeleted\n        self.canBeReplied = canBeReplied\n        self.canBeRepliedInAnotherChat = canBeRepliedInAnotherChat\n        self.canGetLink = canGetLink\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PollType.swift",
    "content": "//\n//  PollType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the type of poll\npublic indirect enum PollType: Codable, Equatable, Hashable {\n\n    /// A regular poll\n    case pollTypeRegular\n\n    /// A poll in quiz mode, which has predefined correct answers\n    case pollTypeQuiz(PollTypeQuiz)\n\n\n    private enum Kind: String, Codable {\n        case pollTypeRegular\n        case pollTypeQuiz\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .pollTypeRegular:\n            self = .pollTypeRegular\n        case .pollTypeQuiz:\n            let value = try PollTypeQuiz(from: decoder)\n            self = .pollTypeQuiz(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .pollTypeRegular:\n            try container.encode(Kind.pollTypeRegular, forKey: .type)\n        case .pollTypeQuiz(let value):\n            try container.encode(Kind.pollTypeQuiz, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A poll in quiz mode, which has predefined correct answers\npublic struct PollTypeQuiz: Codable, Equatable, Hashable {\n\n    /// Increasing list of 0-based identifiers of the correct answer options; empty for a yet unanswered poll\n    public let correctOptionIds: [Int]\n\n    /// Text that is shown when the user chooses an incorrect answer or taps on the lamp icon; empty for a yet unanswered poll\n    public let explanation: FormattedText\n\n    /// Media that is shown when the user chooses an incorrect answer or taps on the lamp icon; may be null if none or the poll is unanswered yet. If present, currently, can be only of the types messageAnimation, messageAudio, messageDocument, messageLocation, messagePhoto, messageVenue, or messageVideo without caption\n    public let explanationMedia: MessageContent?\n\n\n    public init(\n        correctOptionIds: [Int],\n        explanation: FormattedText,\n        explanationMedia: MessageContent?\n    ) {\n        self.correctOptionIds = correctOptionIds\n        self.explanation = explanation\n        self.explanationMedia = explanationMedia\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PollVoteRestrictionReason.swift",
    "content": "//\n//  PollVoteRestrictionReason.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Reason of vote restriction in the poll for the current user\npublic indirect enum PollVoteRestrictionReason: Codable, Equatable, Hashable {\n\n    /// The poll is closed\n    case pollVoteRestrictionReasonClosed\n\n    /// The poll isn't sent yet\n    case pollVoteRestrictionReasonYetUnsent\n\n    /// The poll is from a scheduled message\n    case pollVoteRestrictionReasonScheduled\n\n    /// The user is from a country, users from which aren't allowed to vote\n    case pollVoteRestrictionReasonCountryRestricted(PollVoteRestrictionReasonCountryRestricted)\n\n    /// The user must be a member of the chat for at least a day to vote\n    case pollVoteRestrictionReasonMembershipRequired(PollVoteRestrictionReasonMembershipRequired)\n\n    /// The poll can't be voted by the user due to some other reason\n    case pollVoteRestrictionReasonOther\n\n\n    private enum Kind: String, Codable {\n        case pollVoteRestrictionReasonClosed\n        case pollVoteRestrictionReasonYetUnsent\n        case pollVoteRestrictionReasonScheduled\n        case pollVoteRestrictionReasonCountryRestricted\n        case pollVoteRestrictionReasonMembershipRequired\n        case pollVoteRestrictionReasonOther\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .pollVoteRestrictionReasonClosed:\n            self = .pollVoteRestrictionReasonClosed\n        case .pollVoteRestrictionReasonYetUnsent:\n            self = .pollVoteRestrictionReasonYetUnsent\n        case .pollVoteRestrictionReasonScheduled:\n            self = .pollVoteRestrictionReasonScheduled\n        case .pollVoteRestrictionReasonCountryRestricted:\n            let value = try PollVoteRestrictionReasonCountryRestricted(from: decoder)\n            self = .pollVoteRestrictionReasonCountryRestricted(value)\n        case .pollVoteRestrictionReasonMembershipRequired:\n            let value = try PollVoteRestrictionReasonMembershipRequired(from: decoder)\n            self = .pollVoteRestrictionReasonMembershipRequired(value)\n        case .pollVoteRestrictionReasonOther:\n            self = .pollVoteRestrictionReasonOther\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .pollVoteRestrictionReasonClosed:\n            try container.encode(Kind.pollVoteRestrictionReasonClosed, forKey: .type)\n        case .pollVoteRestrictionReasonYetUnsent:\n            try container.encode(Kind.pollVoteRestrictionReasonYetUnsent, forKey: .type)\n        case .pollVoteRestrictionReasonScheduled:\n            try container.encode(Kind.pollVoteRestrictionReasonScheduled, forKey: .type)\n        case .pollVoteRestrictionReasonCountryRestricted(let value):\n            try container.encode(Kind.pollVoteRestrictionReasonCountryRestricted, forKey: .type)\n            try value.encode(to: encoder)\n        case .pollVoteRestrictionReasonMembershipRequired(let value):\n            try container.encode(Kind.pollVoteRestrictionReasonMembershipRequired, forKey: .type)\n            try value.encode(to: encoder)\n        case .pollVoteRestrictionReasonOther:\n            try container.encode(Kind.pollVoteRestrictionReasonOther, forKey: .type)\n        }\n    }\n}\n\n/// The user is from a country, users from which aren't allowed to vote\npublic struct PollVoteRestrictionReasonCountryRestricted: Codable, Equatable, Hashable {\n\n    /// Two-letter ISO 3166-1 alpha-2 code of the current user's country\n    public let countryCode: String\n\n\n    public init(countryCode: String) {\n        self.countryCode = countryCode\n    }\n}\n\n/// The user must be a member of the chat for at least a day to vote\npublic struct PollVoteRestrictionReasonMembershipRequired: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat which must be joined for at least a day before the user can vote\n    public let chatId: Int64\n\n\n    public init(chatId: Int64) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PollVoteStatistics.swift",
    "content": "//\n//  PollVoteStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A detailed statistics about poll votes\npublic struct PollVoteStatistics: Codable, Equatable, Hashable {\n\n    /// A graph containing distribution of votes in the poll\n    public let voteGraph: StatisticalGraph\n\n\n    public init(voteGraph: StatisticalGraph) {\n        self.voteGraph = voteGraph\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PollVoter.swift",
    "content": "//\n//  PollVoter.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a poll voter\npublic struct PollVoter: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the vote was added\n    public let date: Int\n\n    /// The voter identifier\n    public let voterId: MessageSender\n\n\n    public init(\n        date: Int,\n        voterId: MessageSender\n    ) {\n        self.date = date\n        self.voterId = voterId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PollVoters.swift",
    "content": "//\n//  PollVoters.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of poll voters\npublic struct PollVoters: Codable, Equatable, Hashable {\n\n    /// Approximate total number of poll voters found\n    public let totalCount: Int\n\n    /// List of poll voters\n    public let voters: [PollVoter]\n\n\n    public init(\n        totalCount: Int,\n        voters: [PollVoter]\n    ) {\n        self.totalCount = totalCount\n        self.voters = voters\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PostStory.swift",
    "content": "//\n//  PostStory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Posts a new story on behalf of a chat; requires can_post_stories administrator right for supergroup and channel chats. Returns a temporary story\npublic struct PostStory: Codable, Equatable, Hashable {\n\n    /// Period after which the story is moved to archive, in seconds; must be one of 6 * 3600, 12 * 3600, 86400, or 2 * 86400 for Telegram Premium users, and 86400 otherwise\n    public let activePeriod: Int?\n\n    /// Identifiers of story albums to which the story will be added upon posting. An album can have up to getOption(\"story_album_size_max\") stories\n    public let albumIds: [Int]?\n\n    /// Clickable rectangle areas to be shown on the story media; pass null if none\n    public let areas: InputStoryAreas?\n\n    /// Story caption; pass null to use an empty caption; 0-getOption(\"story_caption_length_max\") characters; can have entities only if getOption(\"can_use_text_entities_in_story_caption\")\n    public let caption: FormattedText?\n\n    /// Identifier of the chat that will post the story. Pass Saved Messages chat identifier when posting a story on behalf of the current user\n    public let chatId: Int64?\n\n    /// Content of the story\n    public let content: InputStoryContent?\n\n    /// Full identifier of the original story, which content was used to create the story; pass null if the story isn't repost of another story\n    public let fromStoryFullId: StoryFullId?\n\n    /// Pass true to keep the story accessible after expiration\n    public let isPostedToChatPage: Bool?\n\n    /// The privacy settings for the story; ignored for stories posted on behalf of supergroup and channel chats\n    public let privacySettings: StoryPrivacySettings?\n\n    /// Pass true if the content of the story must be protected from forwarding and screenshotting\n    public let protectContent: Bool?\n\n\n    public init(\n        activePeriod: Int?,\n        albumIds: [Int]?,\n        areas: InputStoryAreas?,\n        caption: FormattedText?,\n        chatId: Int64?,\n        content: InputStoryContent?,\n        fromStoryFullId: StoryFullId?,\n        isPostedToChatPage: Bool?,\n        privacySettings: StoryPrivacySettings?,\n        protectContent: Bool?\n    ) {\n        self.activePeriod = activePeriod\n        self.albumIds = albumIds\n        self.areas = areas\n        self.caption = caption\n        self.chatId = chatId\n        self.content = content\n        self.fromStoryFullId = fromStoryFullId\n        self.isPostedToChatPage = isPostedToChatPage\n        self.privacySettings = privacySettings\n        self.protectContent = protectContent\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PreliminaryUploadFile.swift",
    "content": "//\n//  PreliminaryUploadFile.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Preliminarily uploads a file to the cloud before sending it in a message, which can be useful for uploading of being recorded voice and video notes. In all other cases there is no need to preliminary upload a file. Updates updateFile will be used to notify about upload progress. The upload will not be completed until the file is sent in a message\npublic struct PreliminaryUploadFile: Codable, Equatable, Hashable {\n\n    /// File to upload\n    public let file: InputFile?\n\n    /// File type; pass null if unknown\n    public let fileType: FileType?\n\n    /// Priority of the upload (1-32). The higher the priority, the earlier the file will be uploaded. If the priorities of two files are equal, then the first one for which preliminaryUploadFile was called will be uploaded first\n    public let priority: Int?\n\n\n    public init(\n        file: InputFile?,\n        fileType: FileType?,\n        priority: Int?\n    ) {\n        self.file = file\n        self.fileType = fileType\n        self.priority = priority\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PremiumFeature.swift",
    "content": "//\n//  PremiumFeature.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a feature available to Premium users\npublic indirect enum PremiumFeature: Codable, Equatable, Hashable {\n\n    /// Increased limits\n    case premiumFeatureIncreasedLimits\n\n    /// Increased maximum upload file size\n    case premiumFeatureIncreasedUploadFileSize\n\n    /// Improved download speed\n    case premiumFeatureImprovedDownloadSpeed\n\n    /// The ability to convert voice notes to text\n    case premiumFeatureVoiceRecognition\n\n    /// Disabled ads\n    case premiumFeatureDisabledAds\n\n    /// Allowed to use more reactions\n    case premiumFeatureUniqueReactions\n\n    /// Allowed to use premium stickers with unique effects\n    case premiumFeatureUniqueStickers\n\n    /// Allowed to use custom emoji stickers in message texts and captions\n    case premiumFeatureCustomEmoji\n\n    /// Ability to change position of the main chat list, archive and mute all new chats from non-contacts, and completely disable notifications about the user's contacts joined Telegram\n    case premiumFeatureAdvancedChatManagement\n\n    /// A badge in the user's profile\n    case premiumFeatureProfileBadge\n\n    /// The ability to show an emoji status along with the user's name\n    case premiumFeatureEmojiStatus\n\n    /// Profile photo animation on message and chat screens\n    case premiumFeatureAnimatedProfilePhoto\n\n    /// The ability to set a custom emoji as a forum topic icon\n    case premiumFeatureForumTopicIcon\n\n    /// Allowed to set a premium application icons\n    case premiumFeatureAppIcons\n\n    /// Allowed to translate chat messages real-time\n    case premiumFeatureRealTimeChatTranslation\n\n    /// Allowed to use many additional features for stories\n    case premiumFeatureUpgradedStories\n\n    /// The ability to boost chats\n    case premiumFeatureChatBoost\n\n    /// The ability to choose accent color for replies and user profile\n    case premiumFeatureAccentColor\n\n    /// The ability to set private chat background for both users\n    case premiumFeatureBackgroundForBoth\n\n    /// The ability to use tags in Saved Messages\n    case premiumFeatureSavedMessagesTags\n\n    /// The ability to disallow incoming voice and video note messages in private chats using setUserPrivacySettingRules with userPrivacySettingAllowPrivateVoiceAndVideoNoteMessages and to restrict incoming messages from non-contacts using setNewChatPrivacySettings\n    case premiumFeatureMessagePrivacy\n\n    /// The ability to view last seen and read times of other users even if they can't view last seen or read time for the current user\n    case premiumFeatureLastSeenTimes\n\n    /// The ability to use Business features\n    case premiumFeatureBusiness\n\n    /// The ability to use all available message effects\n    case premiumFeatureMessageEffects\n\n    /// The ability to create and use checklist messages\n    case premiumFeatureChecklists\n\n    /// The ability to require a payment for incoming messages in new chats\n    case premiumFeaturePaidMessages\n\n    /// The ability to enable content protection in private chats\n    case premiumFeatureProtectPrivateChatContent\n\n    /// The ability to compose text with AI\n    case premiumFeatureTextComposition\n\n\n    private enum Kind: String, Codable {\n        case premiumFeatureIncreasedLimits\n        case premiumFeatureIncreasedUploadFileSize\n        case premiumFeatureImprovedDownloadSpeed\n        case premiumFeatureVoiceRecognition\n        case premiumFeatureDisabledAds\n        case premiumFeatureUniqueReactions\n        case premiumFeatureUniqueStickers\n        case premiumFeatureCustomEmoji\n        case premiumFeatureAdvancedChatManagement\n        case premiumFeatureProfileBadge\n        case premiumFeatureEmojiStatus\n        case premiumFeatureAnimatedProfilePhoto\n        case premiumFeatureForumTopicIcon\n        case premiumFeatureAppIcons\n        case premiumFeatureRealTimeChatTranslation\n        case premiumFeatureUpgradedStories\n        case premiumFeatureChatBoost\n        case premiumFeatureAccentColor\n        case premiumFeatureBackgroundForBoth\n        case premiumFeatureSavedMessagesTags\n        case premiumFeatureMessagePrivacy\n        case premiumFeatureLastSeenTimes\n        case premiumFeatureBusiness\n        case premiumFeatureMessageEffects\n        case premiumFeatureChecklists\n        case premiumFeaturePaidMessages\n        case premiumFeatureProtectPrivateChatContent\n        case premiumFeatureTextComposition\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .premiumFeatureIncreasedLimits:\n            self = .premiumFeatureIncreasedLimits\n        case .premiumFeatureIncreasedUploadFileSize:\n            self = .premiumFeatureIncreasedUploadFileSize\n        case .premiumFeatureImprovedDownloadSpeed:\n            self = .premiumFeatureImprovedDownloadSpeed\n        case .premiumFeatureVoiceRecognition:\n            self = .premiumFeatureVoiceRecognition\n        case .premiumFeatureDisabledAds:\n            self = .premiumFeatureDisabledAds\n        case .premiumFeatureUniqueReactions:\n            self = .premiumFeatureUniqueReactions\n        case .premiumFeatureUniqueStickers:\n            self = .premiumFeatureUniqueStickers\n        case .premiumFeatureCustomEmoji:\n            self = .premiumFeatureCustomEmoji\n        case .premiumFeatureAdvancedChatManagement:\n            self = .premiumFeatureAdvancedChatManagement\n        case .premiumFeatureProfileBadge:\n            self = .premiumFeatureProfileBadge\n        case .premiumFeatureEmojiStatus:\n            self = .premiumFeatureEmojiStatus\n        case .premiumFeatureAnimatedProfilePhoto:\n            self = .premiumFeatureAnimatedProfilePhoto\n        case .premiumFeatureForumTopicIcon:\n            self = .premiumFeatureForumTopicIcon\n        case .premiumFeatureAppIcons:\n            self = .premiumFeatureAppIcons\n        case .premiumFeatureRealTimeChatTranslation:\n            self = .premiumFeatureRealTimeChatTranslation\n        case .premiumFeatureUpgradedStories:\n            self = .premiumFeatureUpgradedStories\n        case .premiumFeatureChatBoost:\n            self = .premiumFeatureChatBoost\n        case .premiumFeatureAccentColor:\n            self = .premiumFeatureAccentColor\n        case .premiumFeatureBackgroundForBoth:\n            self = .premiumFeatureBackgroundForBoth\n        case .premiumFeatureSavedMessagesTags:\n            self = .premiumFeatureSavedMessagesTags\n        case .premiumFeatureMessagePrivacy:\n            self = .premiumFeatureMessagePrivacy\n        case .premiumFeatureLastSeenTimes:\n            self = .premiumFeatureLastSeenTimes\n        case .premiumFeatureBusiness:\n            self = .premiumFeatureBusiness\n        case .premiumFeatureMessageEffects:\n            self = .premiumFeatureMessageEffects\n        case .premiumFeatureChecklists:\n            self = .premiumFeatureChecklists\n        case .premiumFeaturePaidMessages:\n            self = .premiumFeaturePaidMessages\n        case .premiumFeatureProtectPrivateChatContent:\n            self = .premiumFeatureProtectPrivateChatContent\n        case .premiumFeatureTextComposition:\n            self = .premiumFeatureTextComposition\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .premiumFeatureIncreasedLimits:\n            try container.encode(Kind.premiumFeatureIncreasedLimits, forKey: .type)\n        case .premiumFeatureIncreasedUploadFileSize:\n            try container.encode(Kind.premiumFeatureIncreasedUploadFileSize, forKey: .type)\n        case .premiumFeatureImprovedDownloadSpeed:\n            try container.encode(Kind.premiumFeatureImprovedDownloadSpeed, forKey: .type)\n        case .premiumFeatureVoiceRecognition:\n            try container.encode(Kind.premiumFeatureVoiceRecognition, forKey: .type)\n        case .premiumFeatureDisabledAds:\n            try container.encode(Kind.premiumFeatureDisabledAds, forKey: .type)\n        case .premiumFeatureUniqueReactions:\n            try container.encode(Kind.premiumFeatureUniqueReactions, forKey: .type)\n        case .premiumFeatureUniqueStickers:\n            try container.encode(Kind.premiumFeatureUniqueStickers, forKey: .type)\n        case .premiumFeatureCustomEmoji:\n            try container.encode(Kind.premiumFeatureCustomEmoji, forKey: .type)\n        case .premiumFeatureAdvancedChatManagement:\n            try container.encode(Kind.premiumFeatureAdvancedChatManagement, forKey: .type)\n        case .premiumFeatureProfileBadge:\n            try container.encode(Kind.premiumFeatureProfileBadge, forKey: .type)\n        case .premiumFeatureEmojiStatus:\n            try container.encode(Kind.premiumFeatureEmojiStatus, forKey: .type)\n        case .premiumFeatureAnimatedProfilePhoto:\n            try container.encode(Kind.premiumFeatureAnimatedProfilePhoto, forKey: .type)\n        case .premiumFeatureForumTopicIcon:\n            try container.encode(Kind.premiumFeatureForumTopicIcon, forKey: .type)\n        case .premiumFeatureAppIcons:\n            try container.encode(Kind.premiumFeatureAppIcons, forKey: .type)\n        case .premiumFeatureRealTimeChatTranslation:\n            try container.encode(Kind.premiumFeatureRealTimeChatTranslation, forKey: .type)\n        case .premiumFeatureUpgradedStories:\n            try container.encode(Kind.premiumFeatureUpgradedStories, forKey: .type)\n        case .premiumFeatureChatBoost:\n            try container.encode(Kind.premiumFeatureChatBoost, forKey: .type)\n        case .premiumFeatureAccentColor:\n            try container.encode(Kind.premiumFeatureAccentColor, forKey: .type)\n        case .premiumFeatureBackgroundForBoth:\n            try container.encode(Kind.premiumFeatureBackgroundForBoth, forKey: .type)\n        case .premiumFeatureSavedMessagesTags:\n            try container.encode(Kind.premiumFeatureSavedMessagesTags, forKey: .type)\n        case .premiumFeatureMessagePrivacy:\n            try container.encode(Kind.premiumFeatureMessagePrivacy, forKey: .type)\n        case .premiumFeatureLastSeenTimes:\n            try container.encode(Kind.premiumFeatureLastSeenTimes, forKey: .type)\n        case .premiumFeatureBusiness:\n            try container.encode(Kind.premiumFeatureBusiness, forKey: .type)\n        case .premiumFeatureMessageEffects:\n            try container.encode(Kind.premiumFeatureMessageEffects, forKey: .type)\n        case .premiumFeatureChecklists:\n            try container.encode(Kind.premiumFeatureChecklists, forKey: .type)\n        case .premiumFeaturePaidMessages:\n            try container.encode(Kind.premiumFeaturePaidMessages, forKey: .type)\n        case .premiumFeatureProtectPrivateChatContent:\n            try container.encode(Kind.premiumFeatureProtectPrivateChatContent, forKey: .type)\n        case .premiumFeatureTextComposition:\n            try container.encode(Kind.premiumFeatureTextComposition, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PremiumFeaturePromotionAnimation.swift",
    "content": "//\n//  PremiumFeaturePromotionAnimation.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a promotion animation for a Premium feature\npublic struct PremiumFeaturePromotionAnimation: Codable, Equatable, Hashable {\n\n    /// Promotion animation for the feature\n    public let animation: Animation\n\n    /// Premium feature\n    public let feature: PremiumFeature\n\n\n    public init(\n        animation: Animation,\n        feature: PremiumFeature\n    ) {\n        self.animation = animation\n        self.feature = feature\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PremiumFeatures.swift",
    "content": "//\n//  PremiumFeatures.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about features, available to Premium users\npublic struct PremiumFeatures: Codable, Equatable, Hashable {\n\n    /// The list of available features\n    public let features: [PremiumFeature]\n\n    /// The list of limits, increased for Premium users\n    public let limits: [PremiumLimit]\n\n    /// An internal link to be opened to pay for Telegram Premium if store payment isn't possible; may be null if direct payment isn't available\n    public let paymentLink: InternalLinkType?\n\n\n    public init(\n        features: [PremiumFeature],\n        limits: [PremiumLimit],\n        paymentLink: InternalLinkType?\n    ) {\n        self.features = features\n        self.limits = limits\n        self.paymentLink = paymentLink\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PremiumGiftCodeInfo.swift",
    "content": "//\n//  PremiumGiftCodeInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a Telegram Premium gift code\npublic struct PremiumGiftCodeInfo: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the code was created\n    public let creationDate: Int\n\n    /// Identifier of a chat or a user who created the gift code; may be null if unknown. If null and the code is from messagePremiumGiftCode message, then creator_id from the message can be used\n    public let creatorId: MessageSender?\n\n    /// Number of days the Telegram Premium subscription will be active after code activation\n    public let dayCount: Int\n\n    /// Identifier of the corresponding giveaway message in the creator_id chat; may be 0 or an identifier of a deleted message\n    public let giveawayMessageId: Int64\n\n    /// True, if the gift code was created for a giveaway\n    public let isFromGiveaway: Bool\n\n    /// Number of months the Telegram Premium subscription will be active after code activation; 0 if the number of months isn't integer\n    public let monthCount: Int\n\n    /// Point in time (Unix timestamp) when the code was activated; 0 if none\n    public let useDate: Int\n\n    /// Identifier of a user for which the code was created; 0 if none\n    public let userId: Int64\n\n\n    public init(\n        creationDate: Int,\n        creatorId: MessageSender?,\n        dayCount: Int,\n        giveawayMessageId: Int64,\n        isFromGiveaway: Bool,\n        monthCount: Int,\n        useDate: Int,\n        userId: Int64\n    ) {\n        self.creationDate = creationDate\n        self.creatorId = creatorId\n        self.dayCount = dayCount\n        self.giveawayMessageId = giveawayMessageId\n        self.isFromGiveaway = isFromGiveaway\n        self.monthCount = monthCount\n        self.useDate = useDate\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PremiumGiftCodePaymentOption.swift",
    "content": "//\n//  PremiumGiftCodePaymentOption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.45-521aed8e\n//  https://github.com/tdlib/td/tree/521aed8e\n//\n\nimport Foundation\n\n\n/// Describes an option for creating Telegram Premium gift codes or Telegram Premium giveaway. Use telegramPaymentPurposePremiumGiftCodes or telegramPaymentPurposePremiumGiveaway for out-of-store payments\npublic struct PremiumGiftCodePaymentOption: Codable, Equatable, Hashable {\n\n    /// The amount to pay, in the smallest units of the currency\n    public let amount: Int64\n\n    /// ISO 4217 currency code for Telegram Premium gift code payment\n    public let currency: String\n\n    /// The discount associated with this option, as a percentage\n    public let discountPercentage: Int\n\n    /// Number of months the Telegram Premium subscription will be active\n    public let monthCount: Int\n\n    /// A sticker to be shown along with the gift code; may be null if unknown\n    public let sticker: Sticker?\n\n    /// Identifier of the store product associated with the option; may be empty if none\n    public let storeProductId: String\n\n    /// Number of times the store product must be paid\n    public let storeProductQuantity: Int\n\n    /// Number of users which will be able to activate the gift codes\n    public let winnerCount: Int\n\n\n    public init(\n        amount: Int64,\n        currency: String,\n        discountPercentage: Int,\n        monthCount: Int,\n        sticker: Sticker?,\n        storeProductId: String,\n        storeProductQuantity: Int,\n        winnerCount: Int\n    ) {\n        self.amount = amount\n        self.currency = currency\n        self.discountPercentage = discountPercentage\n        self.monthCount = monthCount\n        self.sticker = sticker\n        self.storeProductId = storeProductId\n        self.storeProductQuantity = storeProductQuantity\n        self.winnerCount = winnerCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PremiumGiftCodePaymentOptions.swift",
    "content": "//\n//  PremiumGiftCodePaymentOptions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.45-521aed8e\n//  https://github.com/tdlib/td/tree/521aed8e\n//\n\nimport Foundation\n\n\n/// Contains a list of options for creating Telegram Premium gift codes or Telegram Premium giveaway\npublic struct PremiumGiftCodePaymentOptions: Codable, Equatable, Hashable {\n\n    /// The list of options\n    public let options: [PremiumGiftCodePaymentOption]\n\n\n    public init(options: [PremiumGiftCodePaymentOption]) {\n        self.options = options\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PremiumGiftPaymentOption.swift",
    "content": "//\n//  PremiumGiftPaymentOption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an option for gifting Telegram Premium to a user. Use telegramPaymentPurposePremiumGift for out-of-store payments or payments in Telegram Stars\npublic struct PremiumGiftPaymentOption: Codable, Equatable, Hashable {\n\n    /// The amount to pay, in the smallest units of the currency\n    public let amount: Int64\n\n    /// ISO 4217 currency code for the payment\n    public let currency: String\n\n    /// The discount associated with this option, as a percentage\n    public let discountPercentage: Int\n\n    /// Number of months the Telegram Premium subscription will be active\n    public let monthCount: Int\n\n    /// The alternative Telegram Star amount to pay; 0 if payment in Telegram Stars is not possible\n    public let starCount: Int64\n\n    /// A sticker to be shown along with the option; may be null if unknown\n    public let sticker: Sticker?\n\n    /// Identifier of the store product associated with the option\n    public let storeProductId: String\n\n\n    public init(\n        amount: Int64,\n        currency: String,\n        discountPercentage: Int,\n        monthCount: Int,\n        starCount: Int64,\n        sticker: Sticker?,\n        storeProductId: String\n    ) {\n        self.amount = amount\n        self.currency = currency\n        self.discountPercentage = discountPercentage\n        self.monthCount = monthCount\n        self.starCount = starCount\n        self.sticker = sticker\n        self.storeProductId = storeProductId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PremiumGiftPaymentOptions.swift",
    "content": "//\n//  PremiumGiftPaymentOptions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of options for gifting Telegram Premium to a user\npublic struct PremiumGiftPaymentOptions: Codable, Equatable, Hashable {\n\n    /// The list of options sorted by Telegram Premium subscription duration\n    public let options: [PremiumGiftPaymentOption]\n\n\n    public init(options: [PremiumGiftPaymentOption]) {\n        self.options = options\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PremiumGiveawayInfo.swift",
    "content": "//\n//  PremiumGiveawayInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.35-9b6ff586\n//  https://github.com/tdlib/td/tree/9b6ff586\n//\n\nimport Foundation\n\n\n/// Contains information about Telegram Premium giveaway\npublic indirect enum PremiumGiveawayInfo: Codable, Equatable, Hashable {\n\n    /// Describes an ongoing giveaway\n    case premiumGiveawayInfoOngoing(PremiumGiveawayInfoOngoing)\n\n    /// Describes a completed giveaway\n    case premiumGiveawayInfoCompleted(PremiumGiveawayInfoCompleted)\n\n\n    private enum Kind: String, Codable {\n        case premiumGiveawayInfoOngoing\n        case premiumGiveawayInfoCompleted\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .premiumGiveawayInfoOngoing:\n            let value = try PremiumGiveawayInfoOngoing(from: decoder)\n            self = .premiumGiveawayInfoOngoing(value)\n        case .premiumGiveawayInfoCompleted:\n            let value = try PremiumGiveawayInfoCompleted(from: decoder)\n            self = .premiumGiveawayInfoCompleted(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .premiumGiveawayInfoOngoing(let value):\n            try container.encode(Kind.premiumGiveawayInfoOngoing, forKey: .type)\n            try value.encode(to: encoder)\n        case .premiumGiveawayInfoCompleted(let value):\n            try container.encode(Kind.premiumGiveawayInfoCompleted, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Describes an ongoing giveaway\npublic struct PremiumGiveawayInfoOngoing: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the giveaway was created\n    public let creationDate: Int\n\n    /// True, if the giveaway has ended and results are being prepared\n    public let isEnded: Bool\n\n    /// Status of the current user in the giveaway\n    public let status: PremiumGiveawayParticipantStatus\n\n\n    public init(\n        creationDate: Int,\n        isEnded: Bool,\n        status: PremiumGiveawayParticipantStatus\n    ) {\n        self.creationDate = creationDate\n        self.isEnded = isEnded\n        self.status = status\n    }\n}\n\n/// Describes a completed giveaway\npublic struct PremiumGiveawayInfoCompleted: Codable, Equatable, Hashable {\n\n    /// Number of winners, which activated their gift codes\n    public let activationCount: Int\n\n    /// Point in time (Unix timestamp) when the winners were selected. May be bigger than winners selection date specified in parameters of the giveaway\n    public let actualWinnersSelectionDate: Int\n\n    /// Point in time (Unix timestamp) when the giveaway was created\n    public let creationDate: Int\n\n    /// Telegram Premium gift code that was received by the current user; empty if the user isn't a winner in the giveaway\n    public let giftCode: String\n\n    /// True, if the giveaway was canceled and was fully refunded\n    public let wasRefunded: Bool\n\n    /// Number of winners in the giveaway\n    public let winnerCount: Int\n\n\n    public init(\n        activationCount: Int,\n        actualWinnersSelectionDate: Int,\n        creationDate: Int,\n        giftCode: String,\n        wasRefunded: Bool,\n        winnerCount: Int\n    ) {\n        self.activationCount = activationCount\n        self.actualWinnersSelectionDate = actualWinnersSelectionDate\n        self.creationDate = creationDate\n        self.giftCode = giftCode\n        self.wasRefunded = wasRefunded\n        self.winnerCount = winnerCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PremiumGiveawayParameters.swift",
    "content": "//\n//  PremiumGiveawayParameters.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.35-9b6ff586\n//  https://github.com/tdlib/td/tree/9b6ff586\n//\n\nimport Foundation\n\n\n/// Describes parameters of a Telegram Premium giveaway\npublic struct PremiumGiveawayParameters: Codable, Equatable, Hashable {\n\n    /// Identifiers of other supergroup or channel chats that must be subscribed by the users to be eligible for the giveaway. There can be up to getOption(\"giveaway_additional_chat_count_max\") additional chats\n    public let additionalChatIds: [Int64]\n\n    /// Identifier of the supergroup or channel chat, which will be automatically boosted by the winners of the giveaway for duration of the Premium subscription. If the chat is a channel, then can_post_messages right is required in the channel, otherwise, the user must be an administrator in the supergroup\n    public let boostedChatId: Int64\n\n    /// The list of two-letter ISO 3166-1 alpha-2 codes of countries, users from which will be eligible for the giveaway. If empty, then all users can participate in the giveaway. There can be up to getOption(\"giveaway_country_count_max\") chosen countries. Users with phone number that was bought at https://fragment.com can participate in any giveaway and the country code \"FT\" must not be specified in the list\n    public let countryCodes: [String]\n\n    /// True, if the list of winners of the giveaway will be available to everyone\n    public let hasPublicWinners: Bool\n\n    /// True, if only new members of the chats will be eligible for the giveaway\n    public let onlyNewMembers: Bool\n\n    /// Additional description of the giveaway prize; 0-128 characters\n    public let prizeDescription: String\n\n    /// Point in time (Unix timestamp) when the giveaway is expected to be performed; must be 60-getOption(\"giveaway_duration_max\") seconds in the future in scheduled giveaways\n    public let winnersSelectionDate: Int\n\n\n    public init(\n        additionalChatIds: [Int64],\n        boostedChatId: Int64,\n        countryCodes: [String],\n        hasPublicWinners: Bool,\n        onlyNewMembers: Bool,\n        prizeDescription: String,\n        winnersSelectionDate: Int\n    ) {\n        self.additionalChatIds = additionalChatIds\n        self.boostedChatId = boostedChatId\n        self.countryCodes = countryCodes\n        self.hasPublicWinners = hasPublicWinners\n        self.onlyNewMembers = onlyNewMembers\n        self.prizeDescription = prizeDescription\n        self.winnersSelectionDate = winnersSelectionDate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PremiumGiveawayParticipantStatus.swift",
    "content": "//\n//  PremiumGiveawayParticipantStatus.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.35-9b6ff586\n//  https://github.com/tdlib/td/tree/9b6ff586\n//\n\nimport Foundation\n\n\n/// Contains information about status of a user in a Telegram Premium giveaway\npublic indirect enum PremiumGiveawayParticipantStatus: Codable, Equatable, Hashable {\n\n    /// The user is eligible for the giveaway\n    case premiumGiveawayParticipantStatusEligible\n\n    /// The user participates in the giveaway\n    case premiumGiveawayParticipantStatusParticipating\n\n    /// The user can't participate in the giveaway, because they have already been member of the chat\n    case premiumGiveawayParticipantStatusAlreadyWasMember(PremiumGiveawayParticipantStatusAlreadyWasMember)\n\n    /// The user can't participate in the giveaway, because they are an administrator in one of the chats that created the giveaway\n    case premiumGiveawayParticipantStatusAdministrator(PremiumGiveawayParticipantStatusAdministrator)\n\n    /// The user can't participate in the giveaway, because they phone number is from a disallowed country\n    case premiumGiveawayParticipantStatusDisallowedCountry(PremiumGiveawayParticipantStatusDisallowedCountry)\n\n\n    private enum Kind: String, Codable {\n        case premiumGiveawayParticipantStatusEligible\n        case premiumGiveawayParticipantStatusParticipating\n        case premiumGiveawayParticipantStatusAlreadyWasMember\n        case premiumGiveawayParticipantStatusAdministrator\n        case premiumGiveawayParticipantStatusDisallowedCountry\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .premiumGiveawayParticipantStatusEligible:\n            self = .premiumGiveawayParticipantStatusEligible\n        case .premiumGiveawayParticipantStatusParticipating:\n            self = .premiumGiveawayParticipantStatusParticipating\n        case .premiumGiveawayParticipantStatusAlreadyWasMember:\n            let value = try PremiumGiveawayParticipantStatusAlreadyWasMember(from: decoder)\n            self = .premiumGiveawayParticipantStatusAlreadyWasMember(value)\n        case .premiumGiveawayParticipantStatusAdministrator:\n            let value = try PremiumGiveawayParticipantStatusAdministrator(from: decoder)\n            self = .premiumGiveawayParticipantStatusAdministrator(value)\n        case .premiumGiveawayParticipantStatusDisallowedCountry:\n            let value = try PremiumGiveawayParticipantStatusDisallowedCountry(from: decoder)\n            self = .premiumGiveawayParticipantStatusDisallowedCountry(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .premiumGiveawayParticipantStatusEligible:\n            try container.encode(Kind.premiumGiveawayParticipantStatusEligible, forKey: .type)\n        case .premiumGiveawayParticipantStatusParticipating:\n            try container.encode(Kind.premiumGiveawayParticipantStatusParticipating, forKey: .type)\n        case .premiumGiveawayParticipantStatusAlreadyWasMember(let value):\n            try container.encode(Kind.premiumGiveawayParticipantStatusAlreadyWasMember, forKey: .type)\n            try value.encode(to: encoder)\n        case .premiumGiveawayParticipantStatusAdministrator(let value):\n            try container.encode(Kind.premiumGiveawayParticipantStatusAdministrator, forKey: .type)\n            try value.encode(to: encoder)\n        case .premiumGiveawayParticipantStatusDisallowedCountry(let value):\n            try container.encode(Kind.premiumGiveawayParticipantStatusDisallowedCountry, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The user can't participate in the giveaway, because they have already been member of the chat\npublic struct PremiumGiveawayParticipantStatusAlreadyWasMember: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the user joined the chat\n    public let joinedChatDate: Int\n\n\n    public init(joinedChatDate: Int) {\n        self.joinedChatDate = joinedChatDate\n    }\n}\n\n/// The user can't participate in the giveaway, because they are an administrator in one of the chats that created the giveaway\npublic struct PremiumGiveawayParticipantStatusAdministrator: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat administered by the user\n    public let chatId: Int64\n\n\n    public init(chatId: Int64) {\n        self.chatId = chatId\n    }\n}\n\n/// The user can't participate in the giveaway, because they phone number is from a disallowed country\npublic struct PremiumGiveawayParticipantStatusDisallowedCountry: Codable, Equatable, Hashable {\n\n    /// A two-letter ISO 3166-1 alpha-2 country code of the user's country\n    public let userCountryCode: String\n\n\n    public init(userCountryCode: String) {\n        self.userCountryCode = userCountryCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PremiumGiveawayPaymentOption.swift",
    "content": "//\n//  PremiumGiveawayPaymentOption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an option for creating of Telegram Premium giveaway or manual distribution of Telegram Premium among chat members. Use telegramPaymentPurposePremiumGiftCodes or telegramPaymentPurposePremiumGiveaway for out-of-store payments\npublic struct PremiumGiveawayPaymentOption: Codable, Equatable, Hashable {\n\n    /// The amount to pay, in the smallest units of the currency\n    public let amount: Int64\n\n    /// ISO 4217 currency code for Telegram Premium gift code payment\n    public let currency: String\n\n    /// Number of months the Telegram Premium subscription will be active\n    public let monthCount: Int\n\n    /// Identifier of the store product associated with the option; may be empty if none\n    public let storeProductId: String\n\n    /// Number of times the store product must be paid\n    public let storeProductQuantity: Int\n\n    /// Number of users which will be able to activate the gift codes\n    public let winnerCount: Int\n\n\n    public init(\n        amount: Int64,\n        currency: String,\n        monthCount: Int,\n        storeProductId: String,\n        storeProductQuantity: Int,\n        winnerCount: Int\n    ) {\n        self.amount = amount\n        self.currency = currency\n        self.monthCount = monthCount\n        self.storeProductId = storeProductId\n        self.storeProductQuantity = storeProductQuantity\n        self.winnerCount = winnerCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PremiumGiveawayPaymentOptions.swift",
    "content": "//\n//  PremiumGiveawayPaymentOptions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of options for creating of Telegram Premium giveaway or manual distribution of Telegram Premium among chat members\npublic struct PremiumGiveawayPaymentOptions: Codable, Equatable, Hashable {\n\n    /// The list of options\n    public let options: [PremiumGiveawayPaymentOption]\n\n\n    public init(options: [PremiumGiveawayPaymentOption]) {\n        self.options = options\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PremiumLimit.swift",
    "content": "//\n//  PremiumLimit.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a limit, increased for Premium users\npublic struct PremiumLimit: Codable, Equatable, Hashable {\n\n    /// Default value of the limit\n    public let defaultValue: Int\n\n    /// Value of the limit for Premium users\n    public let premiumValue: Int\n\n    /// The type of the limit\n    public let type: PremiumLimitType\n\n\n    public init(\n        defaultValue: Int,\n        premiumValue: Int,\n        type: PremiumLimitType\n    ) {\n        self.defaultValue = defaultValue\n        self.premiumValue = premiumValue\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PremiumLimitType.swift",
    "content": "//\n//  PremiumLimitType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of limit, increased for Premium users\npublic indirect enum PremiumLimitType: Codable, Equatable, Hashable {\n\n    /// The maximum number of joined supergroups and channels\n    case premiumLimitTypeSupergroupCount\n\n    /// The maximum number of pinned chats in the main chat list\n    case premiumLimitTypePinnedChatCount\n\n    /// The maximum number of created public chats\n    case premiumLimitTypeCreatedPublicChatCount\n\n    /// The maximum number of saved animations\n    case premiumLimitTypeSavedAnimationCount\n\n    /// The maximum number of favorite stickers\n    case premiumLimitTypeFavoriteStickerCount\n\n    /// The maximum number of chat folders\n    case premiumLimitTypeChatFolderCount\n\n    /// The maximum number of pinned and always included, or always excluded chats in a chat folder\n    case premiumLimitTypeChatFolderChosenChatCount\n\n    /// The maximum number of pinned chats in the archive chat list\n    case premiumLimitTypePinnedArchivedChatCount\n\n    /// The maximum number of pinned Saved Messages topics\n    case premiumLimitTypePinnedSavedMessagesTopicCount\n\n    /// The maximum length of sent media caption\n    case premiumLimitTypeCaptionLength\n\n    /// The maximum length of the user's bio\n    case premiumLimitTypeBioLength\n\n    /// The maximum number of invite links for a chat folder\n    case premiumLimitTypeChatFolderInviteLinkCount\n\n    /// The maximum number of added shareable chat folders\n    case premiumLimitTypeShareableChatFolderCount\n\n    /// The maximum number of active stories\n    case premiumLimitTypeActiveStoryCount\n\n    /// The maximum number of stories posted per week\n    case premiumLimitTypeWeeklyPostedStoryCount\n\n    /// The maximum number of stories posted per month\n    case premiumLimitTypeMonthlyPostedStoryCount\n\n    /// The maximum length of captions of posted stories\n    case premiumLimitTypeStoryCaptionLength\n\n    /// The maximum number of suggested reaction areas on a story\n    case premiumLimitTypeStorySuggestedReactionAreaCount\n\n    /// The maximum number of received similar chats\n    case premiumLimitTypeSimilarChatCount\n\n    /// The maximum number of owned bots\n    case premiumLimitTypeOwnedBotCount\n\n    /// The maximum number of added text composition styles\n    case premiumLimitTypeCustomTextCompositionStyleCount\n\n\n    private enum Kind: String, Codable {\n        case premiumLimitTypeSupergroupCount\n        case premiumLimitTypePinnedChatCount\n        case premiumLimitTypeCreatedPublicChatCount\n        case premiumLimitTypeSavedAnimationCount\n        case premiumLimitTypeFavoriteStickerCount\n        case premiumLimitTypeChatFolderCount\n        case premiumLimitTypeChatFolderChosenChatCount\n        case premiumLimitTypePinnedArchivedChatCount\n        case premiumLimitTypePinnedSavedMessagesTopicCount\n        case premiumLimitTypeCaptionLength\n        case premiumLimitTypeBioLength\n        case premiumLimitTypeChatFolderInviteLinkCount\n        case premiumLimitTypeShareableChatFolderCount\n        case premiumLimitTypeActiveStoryCount\n        case premiumLimitTypeWeeklyPostedStoryCount\n        case premiumLimitTypeMonthlyPostedStoryCount\n        case premiumLimitTypeStoryCaptionLength\n        case premiumLimitTypeStorySuggestedReactionAreaCount\n        case premiumLimitTypeSimilarChatCount\n        case premiumLimitTypeOwnedBotCount\n        case premiumLimitTypeCustomTextCompositionStyleCount\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .premiumLimitTypeSupergroupCount:\n            self = .premiumLimitTypeSupergroupCount\n        case .premiumLimitTypePinnedChatCount:\n            self = .premiumLimitTypePinnedChatCount\n        case .premiumLimitTypeCreatedPublicChatCount:\n            self = .premiumLimitTypeCreatedPublicChatCount\n        case .premiumLimitTypeSavedAnimationCount:\n            self = .premiumLimitTypeSavedAnimationCount\n        case .premiumLimitTypeFavoriteStickerCount:\n            self = .premiumLimitTypeFavoriteStickerCount\n        case .premiumLimitTypeChatFolderCount:\n            self = .premiumLimitTypeChatFolderCount\n        case .premiumLimitTypeChatFolderChosenChatCount:\n            self = .premiumLimitTypeChatFolderChosenChatCount\n        case .premiumLimitTypePinnedArchivedChatCount:\n            self = .premiumLimitTypePinnedArchivedChatCount\n        case .premiumLimitTypePinnedSavedMessagesTopicCount:\n            self = .premiumLimitTypePinnedSavedMessagesTopicCount\n        case .premiumLimitTypeCaptionLength:\n            self = .premiumLimitTypeCaptionLength\n        case .premiumLimitTypeBioLength:\n            self = .premiumLimitTypeBioLength\n        case .premiumLimitTypeChatFolderInviteLinkCount:\n            self = .premiumLimitTypeChatFolderInviteLinkCount\n        case .premiumLimitTypeShareableChatFolderCount:\n            self = .premiumLimitTypeShareableChatFolderCount\n        case .premiumLimitTypeActiveStoryCount:\n            self = .premiumLimitTypeActiveStoryCount\n        case .premiumLimitTypeWeeklyPostedStoryCount:\n            self = .premiumLimitTypeWeeklyPostedStoryCount\n        case .premiumLimitTypeMonthlyPostedStoryCount:\n            self = .premiumLimitTypeMonthlyPostedStoryCount\n        case .premiumLimitTypeStoryCaptionLength:\n            self = .premiumLimitTypeStoryCaptionLength\n        case .premiumLimitTypeStorySuggestedReactionAreaCount:\n            self = .premiumLimitTypeStorySuggestedReactionAreaCount\n        case .premiumLimitTypeSimilarChatCount:\n            self = .premiumLimitTypeSimilarChatCount\n        case .premiumLimitTypeOwnedBotCount:\n            self = .premiumLimitTypeOwnedBotCount\n        case .premiumLimitTypeCustomTextCompositionStyleCount:\n            self = .premiumLimitTypeCustomTextCompositionStyleCount\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .premiumLimitTypeSupergroupCount:\n            try container.encode(Kind.premiumLimitTypeSupergroupCount, forKey: .type)\n        case .premiumLimitTypePinnedChatCount:\n            try container.encode(Kind.premiumLimitTypePinnedChatCount, forKey: .type)\n        case .premiumLimitTypeCreatedPublicChatCount:\n            try container.encode(Kind.premiumLimitTypeCreatedPublicChatCount, forKey: .type)\n        case .premiumLimitTypeSavedAnimationCount:\n            try container.encode(Kind.premiumLimitTypeSavedAnimationCount, forKey: .type)\n        case .premiumLimitTypeFavoriteStickerCount:\n            try container.encode(Kind.premiumLimitTypeFavoriteStickerCount, forKey: .type)\n        case .premiumLimitTypeChatFolderCount:\n            try container.encode(Kind.premiumLimitTypeChatFolderCount, forKey: .type)\n        case .premiumLimitTypeChatFolderChosenChatCount:\n            try container.encode(Kind.premiumLimitTypeChatFolderChosenChatCount, forKey: .type)\n        case .premiumLimitTypePinnedArchivedChatCount:\n            try container.encode(Kind.premiumLimitTypePinnedArchivedChatCount, forKey: .type)\n        case .premiumLimitTypePinnedSavedMessagesTopicCount:\n            try container.encode(Kind.premiumLimitTypePinnedSavedMessagesTopicCount, forKey: .type)\n        case .premiumLimitTypeCaptionLength:\n            try container.encode(Kind.premiumLimitTypeCaptionLength, forKey: .type)\n        case .premiumLimitTypeBioLength:\n            try container.encode(Kind.premiumLimitTypeBioLength, forKey: .type)\n        case .premiumLimitTypeChatFolderInviteLinkCount:\n            try container.encode(Kind.premiumLimitTypeChatFolderInviteLinkCount, forKey: .type)\n        case .premiumLimitTypeShareableChatFolderCount:\n            try container.encode(Kind.premiumLimitTypeShareableChatFolderCount, forKey: .type)\n        case .premiumLimitTypeActiveStoryCount:\n            try container.encode(Kind.premiumLimitTypeActiveStoryCount, forKey: .type)\n        case .premiumLimitTypeWeeklyPostedStoryCount:\n            try container.encode(Kind.premiumLimitTypeWeeklyPostedStoryCount, forKey: .type)\n        case .premiumLimitTypeMonthlyPostedStoryCount:\n            try container.encode(Kind.premiumLimitTypeMonthlyPostedStoryCount, forKey: .type)\n        case .premiumLimitTypeStoryCaptionLength:\n            try container.encode(Kind.premiumLimitTypeStoryCaptionLength, forKey: .type)\n        case .premiumLimitTypeStorySuggestedReactionAreaCount:\n            try container.encode(Kind.premiumLimitTypeStorySuggestedReactionAreaCount, forKey: .type)\n        case .premiumLimitTypeSimilarChatCount:\n            try container.encode(Kind.premiumLimitTypeSimilarChatCount, forKey: .type)\n        case .premiumLimitTypeOwnedBotCount:\n            try container.encode(Kind.premiumLimitTypeOwnedBotCount, forKey: .type)\n        case .premiumLimitTypeCustomTextCompositionStyleCount:\n            try container.encode(Kind.premiumLimitTypeCustomTextCompositionStyleCount, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PremiumPaymentOption.swift",
    "content": "//\n//  PremiumPaymentOption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an option for buying Telegram Premium to a user\npublic struct PremiumPaymentOption: Codable, Equatable, Hashable {\n\n    /// The amount to pay, in the smallest units of the currency\n    public let amount: Int64\n\n    /// ISO 4217 currency code for Telegram Premium subscription payment\n    public let currency: String\n\n    /// The discount associated with this option, as a percentage\n    public let discountPercentage: Int\n\n    /// Number of months the Telegram Premium subscription will be active. Use getPremiumInfoSticker to get the sticker to be used as representation of the Telegram Premium subscription\n    public let monthCount: Int\n\n    /// An internal link to be opened for buying Telegram Premium to the user if store payment isn't possible; may be null if direct payment isn't available\n    public let paymentLink: InternalLinkType?\n\n    /// Identifier of the store product associated with the option\n    public let storeProductId: String\n\n\n    public init(\n        amount: Int64,\n        currency: String,\n        discountPercentage: Int,\n        monthCount: Int,\n        paymentLink: InternalLinkType?,\n        storeProductId: String\n    ) {\n        self.amount = amount\n        self.currency = currency\n        self.discountPercentage = discountPercentage\n        self.monthCount = monthCount\n        self.paymentLink = paymentLink\n        self.storeProductId = storeProductId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PremiumSource.swift",
    "content": "//\n//  PremiumSource.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a source from which the Premium features screen is opened\npublic indirect enum PremiumSource: Codable, Equatable, Hashable {\n\n    /// A limit was exceeded\n    case premiumSourceLimitExceeded(PremiumSourceLimitExceeded)\n\n    /// A user tried to use a Premium feature\n    case premiumSourceFeature(PremiumSourceFeature)\n\n    /// A user tried to use a Business feature\n    case premiumSourceBusinessFeature(PremiumSourceBusinessFeature)\n\n    /// A user tried to use a Premium story feature\n    case premiumSourceStoryFeature(PremiumSourceStoryFeature)\n\n    /// A user opened an internal link of the type internalLinkTypePremiumFeaturesPage\n    case premiumSourceLink(PremiumSourceLink)\n\n    /// A user opened the Premium features screen from settings\n    case premiumSourceSettings\n\n\n    private enum Kind: String, Codable {\n        case premiumSourceLimitExceeded\n        case premiumSourceFeature\n        case premiumSourceBusinessFeature\n        case premiumSourceStoryFeature\n        case premiumSourceLink\n        case premiumSourceSettings\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .premiumSourceLimitExceeded:\n            let value = try PremiumSourceLimitExceeded(from: decoder)\n            self = .premiumSourceLimitExceeded(value)\n        case .premiumSourceFeature:\n            let value = try PremiumSourceFeature(from: decoder)\n            self = .premiumSourceFeature(value)\n        case .premiumSourceBusinessFeature:\n            let value = try PremiumSourceBusinessFeature(from: decoder)\n            self = .premiumSourceBusinessFeature(value)\n        case .premiumSourceStoryFeature:\n            let value = try PremiumSourceStoryFeature(from: decoder)\n            self = .premiumSourceStoryFeature(value)\n        case .premiumSourceLink:\n            let value = try PremiumSourceLink(from: decoder)\n            self = .premiumSourceLink(value)\n        case .premiumSourceSettings:\n            self = .premiumSourceSettings\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .premiumSourceLimitExceeded(let value):\n            try container.encode(Kind.premiumSourceLimitExceeded, forKey: .type)\n            try value.encode(to: encoder)\n        case .premiumSourceFeature(let value):\n            try container.encode(Kind.premiumSourceFeature, forKey: .type)\n            try value.encode(to: encoder)\n        case .premiumSourceBusinessFeature(let value):\n            try container.encode(Kind.premiumSourceBusinessFeature, forKey: .type)\n            try value.encode(to: encoder)\n        case .premiumSourceStoryFeature(let value):\n            try container.encode(Kind.premiumSourceStoryFeature, forKey: .type)\n            try value.encode(to: encoder)\n        case .premiumSourceLink(let value):\n            try container.encode(Kind.premiumSourceLink, forKey: .type)\n            try value.encode(to: encoder)\n        case .premiumSourceSettings:\n            try container.encode(Kind.premiumSourceSettings, forKey: .type)\n        }\n    }\n}\n\n/// A limit was exceeded\npublic struct PremiumSourceLimitExceeded: Codable, Equatable, Hashable {\n\n    /// Type of the exceeded limit\n    public let limitType: PremiumLimitType\n\n\n    public init(limitType: PremiumLimitType) {\n        self.limitType = limitType\n    }\n}\n\n/// A user tried to use a Premium feature\npublic struct PremiumSourceFeature: Codable, Equatable, Hashable {\n\n    /// The used feature\n    public let feature: PremiumFeature\n\n\n    public init(feature: PremiumFeature) {\n        self.feature = feature\n    }\n}\n\n/// A user tried to use a Business feature\npublic struct PremiumSourceBusinessFeature: Codable, Equatable, Hashable {\n\n    /// The used feature; pass null if none specific feature was used\n    public let feature: BusinessFeature?\n\n\n    public init(feature: BusinessFeature?) {\n        self.feature = feature\n    }\n}\n\n/// A user tried to use a Premium story feature\npublic struct PremiumSourceStoryFeature: Codable, Equatable, Hashable {\n\n    /// The used feature\n    public let feature: PremiumStoryFeature\n\n\n    public init(feature: PremiumStoryFeature) {\n        self.feature = feature\n    }\n}\n\n/// A user opened an internal link of the type internalLinkTypePremiumFeaturesPage\npublic struct PremiumSourceLink: Codable, Equatable, Hashable {\n\n    /// The referrer from the link\n    public let referrer: String\n\n\n    public init(referrer: String) {\n        self.referrer = referrer\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PremiumState.swift",
    "content": "//\n//  PremiumState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains state of Telegram Premium subscription and promotion videos for Premium features\npublic struct PremiumState: Codable, Equatable, Hashable {\n\n    /// The list of available promotion animations for Premium features\n    public let animations: [PremiumFeaturePromotionAnimation]\n\n    /// The list of available promotion animations for Business features\n    public let businessAnimations: [BusinessFeaturePromotionAnimation]\n\n    /// The list of available options for buying Telegram Premium\n    public let paymentOptions: [PremiumStatePaymentOption]\n\n    /// Text description of the state of the current Premium subscription; may be empty if the current user has no Telegram Premium subscription\n    public let state: FormattedText\n\n\n    public init(\n        animations: [PremiumFeaturePromotionAnimation],\n        businessAnimations: [BusinessFeaturePromotionAnimation],\n        paymentOptions: [PremiumStatePaymentOption],\n        state: FormattedText\n    ) {\n        self.animations = animations\n        self.businessAnimations = businessAnimations\n        self.paymentOptions = paymentOptions\n        self.state = state\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PremiumStatePaymentOption.swift",
    "content": "//\n//  PremiumStatePaymentOption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an option for buying or upgrading Telegram Premium for self\npublic struct PremiumStatePaymentOption: Codable, Equatable, Hashable {\n\n    /// True, if this is the currently used Telegram Premium subscription option\n    public let isCurrent: Bool\n\n    /// True, if the payment option can be used to upgrade the existing Telegram Premium subscription\n    public let isUpgrade: Bool\n\n    /// Identifier of the last in-store transaction for the currently used option\n    public let lastTransactionId: String\n\n    /// Information about the payment option\n    public let paymentOption: PremiumPaymentOption\n\n\n    public init(\n        isCurrent: Bool,\n        isUpgrade: Bool,\n        lastTransactionId: String,\n        paymentOption: PremiumPaymentOption\n    ) {\n        self.isCurrent = isCurrent\n        self.isUpgrade = isUpgrade\n        self.lastTransactionId = lastTransactionId\n        self.paymentOption = paymentOption\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PremiumStoryFeature.swift",
    "content": "//\n//  PremiumStoryFeature.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a story feature available to Premium users\npublic indirect enum PremiumStoryFeature: Codable, Equatable, Hashable {\n\n    /// Stories of the current user are displayed before stories of non-Premium contacts, supergroups, and channels\n    case premiumStoryFeaturePriorityOrder\n\n    /// The ability to hide the fact that the user viewed other's stories\n    case premiumStoryFeatureStealthMode\n\n    /// The ability to check who opened the current user's stories after they expire\n    case premiumStoryFeaturePermanentViewsHistory\n\n    /// The ability to set custom expiration duration for stories\n    case premiumStoryFeatureCustomExpirationDuration\n\n    /// The ability to save other's unprotected stories\n    case premiumStoryFeatureSaveStories\n\n    /// The ability to use links and formatting in story caption, and use inputStoryAreaTypeLink areas\n    case premiumStoryFeatureLinksAndFormatting\n\n    /// The ability to choose better quality for viewed stories\n    case premiumStoryFeatureVideoQuality\n\n\n    private enum Kind: String, Codable {\n        case premiumStoryFeaturePriorityOrder\n        case premiumStoryFeatureStealthMode\n        case premiumStoryFeaturePermanentViewsHistory\n        case premiumStoryFeatureCustomExpirationDuration\n        case premiumStoryFeatureSaveStories\n        case premiumStoryFeatureLinksAndFormatting\n        case premiumStoryFeatureVideoQuality\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .premiumStoryFeaturePriorityOrder:\n            self = .premiumStoryFeaturePriorityOrder\n        case .premiumStoryFeatureStealthMode:\n            self = .premiumStoryFeatureStealthMode\n        case .premiumStoryFeaturePermanentViewsHistory:\n            self = .premiumStoryFeaturePermanentViewsHistory\n        case .premiumStoryFeatureCustomExpirationDuration:\n            self = .premiumStoryFeatureCustomExpirationDuration\n        case .premiumStoryFeatureSaveStories:\n            self = .premiumStoryFeatureSaveStories\n        case .premiumStoryFeatureLinksAndFormatting:\n            self = .premiumStoryFeatureLinksAndFormatting\n        case .premiumStoryFeatureVideoQuality:\n            self = .premiumStoryFeatureVideoQuality\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .premiumStoryFeaturePriorityOrder:\n            try container.encode(Kind.premiumStoryFeaturePriorityOrder, forKey: .type)\n        case .premiumStoryFeatureStealthMode:\n            try container.encode(Kind.premiumStoryFeatureStealthMode, forKey: .type)\n        case .premiumStoryFeaturePermanentViewsHistory:\n            try container.encode(Kind.premiumStoryFeaturePermanentViewsHistory, forKey: .type)\n        case .premiumStoryFeatureCustomExpirationDuration:\n            try container.encode(Kind.premiumStoryFeatureCustomExpirationDuration, forKey: .type)\n        case .premiumStoryFeatureSaveStories:\n            try container.encode(Kind.premiumStoryFeatureSaveStories, forKey: .type)\n        case .premiumStoryFeatureLinksAndFormatting:\n            try container.encode(Kind.premiumStoryFeatureLinksAndFormatting, forKey: .type)\n        case .premiumStoryFeatureVideoQuality:\n            try container.encode(Kind.premiumStoryFeatureVideoQuality, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PrepaidGiveaway.swift",
    "content": "//\n//  PrepaidGiveaway.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a prepaid giveaway\npublic struct PrepaidGiveaway: Codable, Equatable, Hashable, Identifiable {\n\n    /// The number of boosts received by the chat from the giveaway; for Telegram Star giveaways only\n    public let boostCount: Int\n\n    /// Unique identifier of the prepaid giveaway\n    public let id: TdInt64\n\n    /// Point in time (Unix timestamp) when the giveaway was paid\n    public let paymentDate: Int\n\n    /// Prize of the giveaway\n    public let prize: GiveawayPrize\n\n    /// Number of users which will receive giveaway prize\n    public let winnerCount: Int\n\n\n    public init(\n        boostCount: Int,\n        id: TdInt64,\n        paymentDate: Int,\n        prize: GiveawayPrize,\n        winnerCount: Int\n    ) {\n        self.boostCount = boostCount\n        self.id = id\n        self.paymentDate = paymentDate\n        self.prize = prize\n        self.winnerCount = winnerCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PrepaidPremiumGiveaway.swift",
    "content": "//\n//  PrepaidPremiumGiveaway.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.35-9b6ff586\n//  https://github.com/tdlib/td/tree/9b6ff586\n//\n\nimport Foundation\n\n\n/// Describes a prepaid Telegram Premium giveaway\npublic struct PrepaidPremiumGiveaway: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique identifier of the prepaid giveaway\n    public let id: TdInt64\n\n    /// Number of months the Telegram Premium subscription will be active after code activation\n    public let monthCount: Int\n\n    /// Point in time (Unix timestamp) when the giveaway was paid\n    public let paymentDate: Int\n\n    /// Number of users which will receive Telegram Premium subscription gift codes\n    public let winnerCount: Int\n\n\n    public init(\n        id: TdInt64,\n        monthCount: Int,\n        paymentDate: Int,\n        winnerCount: Int\n    ) {\n        self.id = id\n        self.monthCount = monthCount\n        self.paymentDate = paymentDate\n        self.winnerCount = winnerCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PreparedInlineMessage.swift",
    "content": "//\n//  PreparedInlineMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a ready to send inline message. Use sendInlineQueryResultMessage to send the message\npublic struct PreparedInlineMessage: Codable, Equatable, Hashable {\n\n    /// Types of the chats to which the message can be sent\n    public let chatTypes: TargetChatTypes\n\n    /// Unique identifier of the inline query to pass to sendInlineQueryResultMessage\n    public let inlineQueryId: TdInt64\n\n    /// Resulted inline message of the query\n    public let result: InlineQueryResult\n\n\n    public init(\n        chatTypes: TargetChatTypes,\n        inlineQueryId: TdInt64,\n        result: InlineQueryResult\n    ) {\n        self.chatTypes = chatTypes\n        self.inlineQueryId = inlineQueryId\n        self.result = result\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PreparedInlineMessageId.swift",
    "content": "//\n//  PreparedInlineMessageId.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents an inline message that can be sent via the bot\npublic struct PreparedInlineMessageId: Codable, Equatable, Hashable, Identifiable {\n\n    /// Point in time (Unix timestamp) when the message can't be used anymore\n    public let expirationDate: Int\n\n    /// Unique identifier for the message\n    public let id: String\n\n\n    public init(\n        expirationDate: Int,\n        id: String\n    ) {\n        self.expirationDate = expirationDate\n        self.id = id\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ProcessChatFolderNewChats.swift",
    "content": "//\n//  ProcessChatFolderNewChats.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Process new chats added to a shareable chat folder by its owner\npublic struct ProcessChatFolderNewChats: Codable, Equatable, Hashable {\n\n    /// Identifiers of the new chats, which are added to the chat folder. The chats are automatically joined if they aren't joined yet\n    public let addedChatIds: [Int64]?\n\n    /// Chat folder identifier\n    public let chatFolderId: Int?\n\n\n    public init(\n        addedChatIds: [Int64]?,\n        chatFolderId: Int?\n    ) {\n        self.addedChatIds = addedChatIds\n        self.chatFolderId = chatFolderId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ProcessChatHasProtectedContentDisableRequest.swift",
    "content": "//\n//  ProcessChatHasProtectedContentDisableRequest.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Processes request to disable has_protected_content in a chat\npublic struct ProcessChatHasProtectedContentDisableRequest: Codable, Equatable, Hashable {\n\n    /// Pass true to approve the request; pass false to reject the request\n    public let approve: Bool?\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Identifier of the message with the request. The message must be incoming and has content of the type messageChatHasProtectedContentDisableRequested\n    public let requestMessageId: Int64?\n\n\n    public init(\n        approve: Bool?,\n        chatId: Int64?,\n        requestMessageId: Int64?\n    ) {\n        self.approve = approve\n        self.chatId = chatId\n        self.requestMessageId = requestMessageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ProcessChatJoinRequest.swift",
    "content": "//\n//  ProcessChatJoinRequest.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Handles a pending join request in a chat\npublic struct ProcessChatJoinRequest: Codable, Equatable, Hashable {\n\n    /// Pass true to approve the request; pass false to decline it\n    public let approve: Bool?\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Identifier of the user who sent the request\n    public let userId: Int64?\n\n\n    public init(\n        approve: Bool?,\n        chatId: Int64?,\n        userId: Int64?\n    ) {\n        self.approve = approve\n        self.chatId = chatId\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ProcessChatJoinRequests.swift",
    "content": "//\n//  ProcessChatJoinRequests.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Handles all pending join requests for a given link in a chat\npublic struct ProcessChatJoinRequests: Codable, Equatable, Hashable {\n\n    /// Pass true to approve all requests; pass false to decline them\n    public let approve: Bool?\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Invite link for which to process join requests. If empty, all join requests will be processed. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links\n    public let inviteLink: String?\n\n\n    public init(\n        approve: Bool?,\n        chatId: Int64?,\n        inviteLink: String?\n    ) {\n        self.approve = approve\n        self.chatId = chatId\n        self.inviteLink = inviteLink\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ProcessGiftPurchaseOffer.swift",
    "content": "//\n//  ProcessGiftPurchaseOffer.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Handles a pending gift purchase offer\npublic struct ProcessGiftPurchaseOffer: Codable, Equatable, Hashable {\n\n    /// Pass true to accept the request; pass false to reject it\n    public let accept: Bool?\n\n    /// Identifier of the message with the gift purchase offer\n    public let messageId: Int64?\n\n\n    public init(\n        accept: Bool?,\n        messageId: Int64?\n    ) {\n        self.accept = accept\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ProcessPushNotification.swift",
    "content": "//\n//  ProcessPushNotification.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Handles a push notification. Returns error with code 406 if the push notification is not supported and connection to the server is required to fetch new data. Can be called before authorization\npublic struct ProcessPushNotification: Codable, Equatable, Hashable {\n\n    /// JSON-encoded push notification payload with all fields sent by the server, and \"google.sent_time\" and \"google.notification.sound\" fields added\n    public let payload: String?\n\n\n    public init(payload: String?) {\n        self.payload = payload\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ProductInfo.swift",
    "content": "//\n//  ProductInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a product that can be paid with invoice\npublic struct ProductInfo: Codable, Equatable, Hashable {\n\n    public let description: FormattedText\n\n    /// Product photo; may be null\n    public let photo: Photo?\n\n    /// Product title\n    public let title: String\n\n\n    public init(\n        description: FormattedText,\n        photo: Photo?,\n        title: String\n    ) {\n        self.description = description\n        self.photo = photo\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ProfileAccentColor.swift",
    "content": "//\n//  ProfileAccentColor.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about supported accent color for user profile photo background\npublic struct ProfileAccentColor: Codable, Equatable, Hashable, Identifiable {\n\n    /// Accent colors expected to be used in dark themes\n    public let darkThemeColors: ProfileAccentColors\n\n    /// Profile accent color identifier\n    public let id: Int\n\n    /// Accent colors expected to be used in light themes\n    public let lightThemeColors: ProfileAccentColors\n\n    /// The minimum chat boost level required to use the color in a channel chat\n    public let minChannelChatBoostLevel: Int\n\n    /// The minimum chat boost level required to use the color in a supergroup chat\n    public let minSupergroupChatBoostLevel: Int\n\n\n    public init(\n        darkThemeColors: ProfileAccentColors,\n        id: Int,\n        lightThemeColors: ProfileAccentColors,\n        minChannelChatBoostLevel: Int,\n        minSupergroupChatBoostLevel: Int\n    ) {\n        self.darkThemeColors = darkThemeColors\n        self.id = id\n        self.lightThemeColors = lightThemeColors\n        self.minChannelChatBoostLevel = minChannelChatBoostLevel\n        self.minSupergroupChatBoostLevel = minSupergroupChatBoostLevel\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ProfileAccentColors.swift",
    "content": "//\n//  ProfileAccentColors.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about supported accent colors for user profile photo background in RGB format\npublic struct ProfileAccentColors: Codable, Equatable, Hashable {\n\n    /// The list of 1-2 colors in RGB format, describing the colors, as expected to be used for the profile photo background\n    public let backgroundColors: [Int]\n\n    /// The list of 1-2 colors in RGB format, describing the colors, as expected to be shown in the color palette settings\n    public let paletteColors: [Int]\n\n    /// The list of 2 colors in RGB format, describing the colors of the gradient to be used for the unread active story indicator around profile photo\n    public let storyColors: [Int]\n\n\n    public init(\n        backgroundColors: [Int],\n        paletteColors: [Int],\n        storyColors: [Int]\n    ) {\n        self.backgroundColors = backgroundColors\n        self.paletteColors = paletteColors\n        self.storyColors = storyColors\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ProfilePhoto.swift",
    "content": "//\n//  ProfilePhoto.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a user profile photo\npublic struct ProfilePhoto: Codable, Equatable, Hashable, Identifiable {\n\n    /// A big (640x640) user profile photo. The file can be downloaded only before the photo is changed\n    public let big: File\n\n    /// True, if the photo has animated variant\n    public let hasAnimation: Bool\n\n    /// Photo identifier; 0 for an empty photo. Can be used to find a photo in a list of user profile photos\n    public let id: TdInt64\n\n    /// True, if the photo is visible only for the current user\n    public let isPersonal: Bool\n\n    /// User profile photo minithumbnail; may be null\n    public let minithumbnail: Minithumbnail?\n\n    /// A small (160x160) user profile photo. The file can be downloaded only before the photo is changed\n    public let small: File\n\n\n    public init(\n        big: File,\n        hasAnimation: Bool,\n        id: TdInt64,\n        isPersonal: Bool,\n        minithumbnail: Minithumbnail?,\n        small: File\n    ) {\n        self.big = big\n        self.hasAnimation = hasAnimation\n        self.id = id\n        self.isPersonal = isPersonal\n        self.minithumbnail = minithumbnail\n        self.small = small\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ProfileTab.swift",
    "content": "//\n//  ProfileTab.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a tab shown in a user or a chat profile\npublic indirect enum ProfileTab: Codable, Equatable, Hashable {\n\n    /// A tab with stories posted by the user or the channel chat and saved to profile\n    case profileTabPosts\n\n    /// A tab with gifts received by the user or the channel chat\n    case profileTabGifts\n\n    /// A tab with photos and videos posted by the channel\n    case profileTabMedia\n\n    /// A tab with documents posted by the channel\n    case profileTabFiles\n\n    /// A tab with messages posted by the channel and containing links\n    case profileTabLinks\n\n    /// A tab with audio messages posted by the channel\n    case profileTabMusic\n\n    /// A tab with voice notes posted by the channel\n    case profileTabVoice\n\n    /// A tab with animations posted by the channel\n    case profileTabGifs\n\n\n    private enum Kind: String, Codable {\n        case profileTabPosts\n        case profileTabGifts\n        case profileTabMedia\n        case profileTabFiles\n        case profileTabLinks\n        case profileTabMusic\n        case profileTabVoice\n        case profileTabGifs\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .profileTabPosts:\n            self = .profileTabPosts\n        case .profileTabGifts:\n            self = .profileTabGifts\n        case .profileTabMedia:\n            self = .profileTabMedia\n        case .profileTabFiles:\n            self = .profileTabFiles\n        case .profileTabLinks:\n            self = .profileTabLinks\n        case .profileTabMusic:\n            self = .profileTabMusic\n        case .profileTabVoice:\n            self = .profileTabVoice\n        case .profileTabGifs:\n            self = .profileTabGifs\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .profileTabPosts:\n            try container.encode(Kind.profileTabPosts, forKey: .type)\n        case .profileTabGifts:\n            try container.encode(Kind.profileTabGifts, forKey: .type)\n        case .profileTabMedia:\n            try container.encode(Kind.profileTabMedia, forKey: .type)\n        case .profileTabFiles:\n            try container.encode(Kind.profileTabFiles, forKey: .type)\n        case .profileTabLinks:\n            try container.encode(Kind.profileTabLinks, forKey: .type)\n        case .profileTabMusic:\n            try container.encode(Kind.profileTabMusic, forKey: .type)\n        case .profileTabVoice:\n            try container.encode(Kind.profileTabVoice, forKey: .type)\n        case .profileTabGifs:\n            try container.encode(Kind.profileTabGifs, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Proxies.swift",
    "content": "//\n//  Proxies.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.60-cb863c16\n//  https://github.com/tdlib/td/tree/cb863c16\n//\n\nimport Foundation\n\n\n/// Represents a list of proxy servers\npublic struct Proxies: Codable, Equatable, Hashable {\n\n    /// List of proxy servers\n    public let proxies: [Proxy]\n\n\n    public init(proxies: [Proxy]) {\n        self.proxies = proxies\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Proxy.swift",
    "content": "//\n//  Proxy.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a proxy server\npublic struct Proxy: Codable, Equatable, Hashable {\n\n    /// Proxy server port\n    public let port: Int\n\n    /// Proxy server domain or IP address\n    public let server: String\n\n    /// Type of the proxy\n    public let type: ProxyType\n\n\n    public init(\n        port: Int,\n        server: String,\n        type: ProxyType\n    ) {\n        self.port = port\n        self.server = server\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ProxyType.swift",
    "content": "//\n//  ProxyType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the type of proxy server\npublic indirect enum ProxyType: Codable, Equatable, Hashable {\n\n    /// A SOCKS5 proxy server\n    case proxyTypeSocks5(ProxyTypeSocks5)\n\n    /// A HTTP transparent proxy server\n    case proxyTypeHttp(ProxyTypeHttp)\n\n    /// An MTProto proxy server\n    case proxyTypeMtproto(ProxyTypeMtproto)\n\n\n    private enum Kind: String, Codable {\n        case proxyTypeSocks5\n        case proxyTypeHttp\n        case proxyTypeMtproto\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .proxyTypeSocks5:\n            let value = try ProxyTypeSocks5(from: decoder)\n            self = .proxyTypeSocks5(value)\n        case .proxyTypeHttp:\n            let value = try ProxyTypeHttp(from: decoder)\n            self = .proxyTypeHttp(value)\n        case .proxyTypeMtproto:\n            let value = try ProxyTypeMtproto(from: decoder)\n            self = .proxyTypeMtproto(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .proxyTypeSocks5(let value):\n            try container.encode(Kind.proxyTypeSocks5, forKey: .type)\n            try value.encode(to: encoder)\n        case .proxyTypeHttp(let value):\n            try container.encode(Kind.proxyTypeHttp, forKey: .type)\n            try value.encode(to: encoder)\n        case .proxyTypeMtproto(let value):\n            try container.encode(Kind.proxyTypeMtproto, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A SOCKS5 proxy server\npublic struct ProxyTypeSocks5: Codable, Equatable, Hashable {\n\n    /// Password for logging in; may be empty\n    public let password: String\n\n    /// Username for logging in; may be empty\n    public let username: String\n\n\n    public init(\n        password: String,\n        username: String\n    ) {\n        self.password = password\n        self.username = username\n    }\n}\n\n/// A HTTP transparent proxy server\npublic struct ProxyTypeHttp: Codable, Equatable, Hashable {\n\n    /// Pass true if the proxy supports only HTTP requests and doesn't support transparent TCP connections via HTTP CONNECT method\n    public let httpOnly: Bool\n\n    /// Password for logging in; may be empty\n    public let password: String\n\n    /// Username for logging in; may be empty\n    public let username: String\n\n\n    public init(\n        httpOnly: Bool,\n        password: String,\n        username: String\n    ) {\n        self.httpOnly = httpOnly\n        self.password = password\n        self.username = username\n    }\n}\n\n/// An MTProto proxy server\npublic struct ProxyTypeMtproto: Codable, Equatable, Hashable {\n\n    /// The proxy's secret in hexadecimal encoding\n    public let secret: String\n\n\n    public init(secret: String) {\n        self.secret = secret\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PublicChatType.swift",
    "content": "//\n//  PublicChatType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of public chat\npublic indirect enum PublicChatType: Codable, Equatable, Hashable {\n\n    /// The chat is public, because it has an active username\n    case publicChatTypeHasUsername\n\n    /// The chat is public, because it is a location-based supergroup\n    case publicChatTypeIsLocationBased\n\n\n    private enum Kind: String, Codable {\n        case publicChatTypeHasUsername\n        case publicChatTypeIsLocationBased\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .publicChatTypeHasUsername:\n            self = .publicChatTypeHasUsername\n        case .publicChatTypeIsLocationBased:\n            self = .publicChatTypeIsLocationBased\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .publicChatTypeHasUsername:\n            try container.encode(Kind.publicChatTypeHasUsername, forKey: .type)\n        case .publicChatTypeIsLocationBased:\n            try container.encode(Kind.publicChatTypeIsLocationBased, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PublicForward.swift",
    "content": "//\n//  PublicForward.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a public forward or repost of a story\npublic indirect enum PublicForward: Codable, Equatable, Hashable {\n\n    /// Contains a public forward as a message\n    case publicForwardMessage(PublicForwardMessage)\n\n    /// Contains a public repost to a story\n    case publicForwardStory(PublicForwardStory)\n\n\n    private enum Kind: String, Codable {\n        case publicForwardMessage\n        case publicForwardStory\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .publicForwardMessage:\n            let value = try PublicForwardMessage(from: decoder)\n            self = .publicForwardMessage(value)\n        case .publicForwardStory:\n            let value = try PublicForwardStory(from: decoder)\n            self = .publicForwardStory(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .publicForwardMessage(let value):\n            try container.encode(Kind.publicForwardMessage, forKey: .type)\n            try value.encode(to: encoder)\n        case .publicForwardStory(let value):\n            try container.encode(Kind.publicForwardStory, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Contains a public forward as a message\npublic struct PublicForwardMessage: Codable, Equatable, Hashable {\n\n    /// Information about the message\n    public let message: Message\n\n\n    public init(message: Message) {\n        self.message = message\n    }\n}\n\n/// Contains a public repost to a story\npublic struct PublicForwardStory: Codable, Equatable, Hashable {\n\n    /// Information about the story\n    public let story: Story\n\n\n    public init(story: Story) {\n        self.story = story\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PublicForwards.swift",
    "content": "//\n//  PublicForwards.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of public forwards and reposts as a story of a message or a story\npublic struct PublicForwards: Codable, Equatable, Hashable {\n\n    /// List of found public forwards and reposts\n    public let forwards: [PublicForward]\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// Approximate total number of messages and stories found\n    public let totalCount: Int\n\n\n    public init(\n        forwards: [PublicForward],\n        nextOffset: String,\n        totalCount: Int\n    ) {\n        self.forwards = forwards\n        self.nextOffset = nextOffset\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PublicPostSearchLimits.swift",
    "content": "//\n//  PublicPostSearchLimits.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about public post search limits\npublic struct PublicPostSearchLimits: Codable, Equatable, Hashable {\n\n    /// Number of queries that can be sent daily for free\n    public let dailyFreeQueryCount: Int\n\n    /// True, if the search for the specified query isn't charged\n    public let isCurrentQueryFree: Bool\n\n    /// Amount of time till the next free query can be sent; 0 if it can be sent now\n    public let nextFreeQueryIn: Int\n\n    /// Number of remaining free queries today\n    public let remainingFreeQueryCount: Int\n\n    /// Number of Telegram Stars that must be paid for each non-free query\n    public let starCount: Int64\n\n\n    public init(\n        dailyFreeQueryCount: Int,\n        isCurrentQueryFree: Bool,\n        nextFreeQueryIn: Int,\n        remainingFreeQueryCount: Int,\n        starCount: Int64\n    ) {\n        self.dailyFreeQueryCount = dailyFreeQueryCount\n        self.isCurrentQueryFree = isCurrentQueryFree\n        self.nextFreeQueryIn = nextFreeQueryIn\n        self.remainingFreeQueryCount = remainingFreeQueryCount\n        self.starCount = starCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PushMessageContent.swift",
    "content": "//\n//  PushMessageContent.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains content of a push message notification\npublic indirect enum PushMessageContent: Codable, Equatable, Hashable {\n\n    /// A general message with hidden content\n    case pushMessageContentHidden(PushMessageContentHidden)\n\n    /// An animation message (GIF-style).\n    case pushMessageContentAnimation(PushMessageContentAnimation)\n\n    /// An audio message\n    case pushMessageContentAudio(PushMessageContentAudio)\n\n    /// A message with a user contact\n    case pushMessageContentContact(PushMessageContentContact)\n\n    /// A contact has registered with Telegram\n    case pushMessageContentContactRegistered(PushMessageContentContactRegistered)\n\n    /// A document message (a general file)\n    case pushMessageContentDocument(PushMessageContentDocument)\n\n    /// A message with a game\n    case pushMessageContentGame(PushMessageContentGame)\n\n    /// A new high score was achieved in a game\n    case pushMessageContentGameScore(PushMessageContentGameScore)\n\n    /// A message with an invoice from a bot\n    case pushMessageContentInvoice(PushMessageContentInvoice)\n\n    /// A message with a location\n    case pushMessageContentLocation(PushMessageContentLocation)\n\n    /// A message with paid media\n    case pushMessageContentPaidMedia(PushMessageContentPaidMedia)\n\n    /// A photo message\n    case pushMessageContentPhoto(PushMessageContentPhoto)\n\n    /// A message with a poll\n    case pushMessageContentPoll(PushMessageContentPoll)\n\n    /// A message with a Telegram Premium gift code created for the user\n    case pushMessageContentPremiumGiftCode(PushMessageContentPremiumGiftCode)\n\n    /// A message with a giveaway\n    case pushMessageContentGiveaway(PushMessageContentGiveaway)\n\n    /// A message with a gift\n    case pushMessageContentGift(PushMessageContentGift)\n\n    /// A message with an upgraded gift\n    case pushMessageContentUpgradedGift(PushMessageContentUpgradedGift)\n\n    /// A screenshot of a message in the chat has been taken\n    case pushMessageContentScreenshotTaken\n\n    /// A message with a sticker\n    case pushMessageContentSticker(PushMessageContentSticker)\n\n    /// A message with a story\n    case pushMessageContentStory(PushMessageContentStory)\n\n    /// A text message\n    case pushMessageContentText(PushMessageContentText)\n\n    /// A message with a checklist\n    case pushMessageContentChecklist(PushMessageContentChecklist)\n\n    /// A video message\n    case pushMessageContentVideo(PushMessageContentVideo)\n\n    /// A video note message\n    case pushMessageContentVideoNote(PushMessageContentVideoNote)\n\n    /// A voice note message\n    case pushMessageContentVoiceNote(PushMessageContentVoiceNote)\n\n    /// A newly created basic group\n    case pushMessageContentBasicGroupChatCreate\n\n    /// A video chat or live stream was started\n    case pushMessageContentVideoChatStarted\n\n    /// A video chat or live stream has ended\n    case pushMessageContentVideoChatEnded\n\n    /// An invitation of participants to a video chat or live stream\n    case pushMessageContentInviteVideoChatParticipants(PushMessageContentInviteVideoChatParticipants)\n\n    /// New chat members were invited to a group\n    case pushMessageContentChatAddMembers(PushMessageContentChatAddMembers)\n\n    /// A chat photo was edited\n    case pushMessageContentChatChangePhoto\n\n    /// A chat title was edited\n    case pushMessageContentChatChangeTitle(PushMessageContentChatChangeTitle)\n\n    /// A chat background was edited\n    case pushMessageContentChatSetBackground(PushMessageContentChatSetBackground)\n\n    /// A chat theme was edited\n    case pushMessageContentChatSetTheme(PushMessageContentChatSetTheme)\n\n    /// A chat member was deleted\n    case pushMessageContentChatDeleteMember(PushMessageContentChatDeleteMember)\n\n    /// A new member joined the chat via an invite link\n    case pushMessageContentChatJoinByLink\n\n    /// A new member was accepted to the chat by an administrator\n    case pushMessageContentChatJoinByRequest\n\n    /// A new recurring payment was made by the current user\n    case pushMessageContentRecurringPayment(PushMessageContentRecurringPayment)\n\n    /// A profile photo was suggested to the user\n    case pushMessageContentSuggestProfilePhoto\n\n    /// A birthdate was suggested to be set\n    case pushMessageContentSuggestBirthdate\n\n    /// A user in the chat came within proximity alert range from the current user\n    case pushMessageContentProximityAlertTriggered(PushMessageContentProximityAlertTriggered)\n\n    /// Some tasks were added to a checklist\n    case pushMessageContentChecklistTasksAdded(PushMessageContentChecklistTasksAdded)\n\n    /// Some tasks from a checklist were marked as done or not done\n    case pushMessageContentChecklistTasksDone(PushMessageContentChecklistTasksDone)\n\n    /// An option was added to a poll\n    case pushMessageContentPollOptionAdded(PushMessageContentPollOptionAdded)\n\n    /// A forwarded messages\n    case pushMessageContentMessageForwards(PushMessageContentMessageForwards)\n\n    /// A media album\n    case pushMessageContentMediaAlbum(PushMessageContentMediaAlbum)\n\n\n    private enum Kind: String, Codable {\n        case pushMessageContentHidden\n        case pushMessageContentAnimation\n        case pushMessageContentAudio\n        case pushMessageContentContact\n        case pushMessageContentContactRegistered\n        case pushMessageContentDocument\n        case pushMessageContentGame\n        case pushMessageContentGameScore\n        case pushMessageContentInvoice\n        case pushMessageContentLocation\n        case pushMessageContentPaidMedia\n        case pushMessageContentPhoto\n        case pushMessageContentPoll\n        case pushMessageContentPremiumGiftCode\n        case pushMessageContentGiveaway\n        case pushMessageContentGift\n        case pushMessageContentUpgradedGift\n        case pushMessageContentScreenshotTaken\n        case pushMessageContentSticker\n        case pushMessageContentStory\n        case pushMessageContentText\n        case pushMessageContentChecklist\n        case pushMessageContentVideo\n        case pushMessageContentVideoNote\n        case pushMessageContentVoiceNote\n        case pushMessageContentBasicGroupChatCreate\n        case pushMessageContentVideoChatStarted\n        case pushMessageContentVideoChatEnded\n        case pushMessageContentInviteVideoChatParticipants\n        case pushMessageContentChatAddMembers\n        case pushMessageContentChatChangePhoto\n        case pushMessageContentChatChangeTitle\n        case pushMessageContentChatSetBackground\n        case pushMessageContentChatSetTheme\n        case pushMessageContentChatDeleteMember\n        case pushMessageContentChatJoinByLink\n        case pushMessageContentChatJoinByRequest\n        case pushMessageContentRecurringPayment\n        case pushMessageContentSuggestProfilePhoto\n        case pushMessageContentSuggestBirthdate\n        case pushMessageContentProximityAlertTriggered\n        case pushMessageContentChecklistTasksAdded\n        case pushMessageContentChecklistTasksDone\n        case pushMessageContentPollOptionAdded\n        case pushMessageContentMessageForwards\n        case pushMessageContentMediaAlbum\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .pushMessageContentHidden:\n            let value = try PushMessageContentHidden(from: decoder)\n            self = .pushMessageContentHidden(value)\n        case .pushMessageContentAnimation:\n            let value = try PushMessageContentAnimation(from: decoder)\n            self = .pushMessageContentAnimation(value)\n        case .pushMessageContentAudio:\n            let value = try PushMessageContentAudio(from: decoder)\n            self = .pushMessageContentAudio(value)\n        case .pushMessageContentContact:\n            let value = try PushMessageContentContact(from: decoder)\n            self = .pushMessageContentContact(value)\n        case .pushMessageContentContactRegistered:\n            let value = try PushMessageContentContactRegistered(from: decoder)\n            self = .pushMessageContentContactRegistered(value)\n        case .pushMessageContentDocument:\n            let value = try PushMessageContentDocument(from: decoder)\n            self = .pushMessageContentDocument(value)\n        case .pushMessageContentGame:\n            let value = try PushMessageContentGame(from: decoder)\n            self = .pushMessageContentGame(value)\n        case .pushMessageContentGameScore:\n            let value = try PushMessageContentGameScore(from: decoder)\n            self = .pushMessageContentGameScore(value)\n        case .pushMessageContentInvoice:\n            let value = try PushMessageContentInvoice(from: decoder)\n            self = .pushMessageContentInvoice(value)\n        case .pushMessageContentLocation:\n            let value = try PushMessageContentLocation(from: decoder)\n            self = .pushMessageContentLocation(value)\n        case .pushMessageContentPaidMedia:\n            let value = try PushMessageContentPaidMedia(from: decoder)\n            self = .pushMessageContentPaidMedia(value)\n        case .pushMessageContentPhoto:\n            let value = try PushMessageContentPhoto(from: decoder)\n            self = .pushMessageContentPhoto(value)\n        case .pushMessageContentPoll:\n            let value = try PushMessageContentPoll(from: decoder)\n            self = .pushMessageContentPoll(value)\n        case .pushMessageContentPremiumGiftCode:\n            let value = try PushMessageContentPremiumGiftCode(from: decoder)\n            self = .pushMessageContentPremiumGiftCode(value)\n        case .pushMessageContentGiveaway:\n            let value = try PushMessageContentGiveaway(from: decoder)\n            self = .pushMessageContentGiveaway(value)\n        case .pushMessageContentGift:\n            let value = try PushMessageContentGift(from: decoder)\n            self = .pushMessageContentGift(value)\n        case .pushMessageContentUpgradedGift:\n            let value = try PushMessageContentUpgradedGift(from: decoder)\n            self = .pushMessageContentUpgradedGift(value)\n        case .pushMessageContentScreenshotTaken:\n            self = .pushMessageContentScreenshotTaken\n        case .pushMessageContentSticker:\n            let value = try PushMessageContentSticker(from: decoder)\n            self = .pushMessageContentSticker(value)\n        case .pushMessageContentStory:\n            let value = try PushMessageContentStory(from: decoder)\n            self = .pushMessageContentStory(value)\n        case .pushMessageContentText:\n            let value = try PushMessageContentText(from: decoder)\n            self = .pushMessageContentText(value)\n        case .pushMessageContentChecklist:\n            let value = try PushMessageContentChecklist(from: decoder)\n            self = .pushMessageContentChecklist(value)\n        case .pushMessageContentVideo:\n            let value = try PushMessageContentVideo(from: decoder)\n            self = .pushMessageContentVideo(value)\n        case .pushMessageContentVideoNote:\n            let value = try PushMessageContentVideoNote(from: decoder)\n            self = .pushMessageContentVideoNote(value)\n        case .pushMessageContentVoiceNote:\n            let value = try PushMessageContentVoiceNote(from: decoder)\n            self = .pushMessageContentVoiceNote(value)\n        case .pushMessageContentBasicGroupChatCreate:\n            self = .pushMessageContentBasicGroupChatCreate\n        case .pushMessageContentVideoChatStarted:\n            self = .pushMessageContentVideoChatStarted\n        case .pushMessageContentVideoChatEnded:\n            self = .pushMessageContentVideoChatEnded\n        case .pushMessageContentInviteVideoChatParticipants:\n            let value = try PushMessageContentInviteVideoChatParticipants(from: decoder)\n            self = .pushMessageContentInviteVideoChatParticipants(value)\n        case .pushMessageContentChatAddMembers:\n            let value = try PushMessageContentChatAddMembers(from: decoder)\n            self = .pushMessageContentChatAddMembers(value)\n        case .pushMessageContentChatChangePhoto:\n            self = .pushMessageContentChatChangePhoto\n        case .pushMessageContentChatChangeTitle:\n            let value = try PushMessageContentChatChangeTitle(from: decoder)\n            self = .pushMessageContentChatChangeTitle(value)\n        case .pushMessageContentChatSetBackground:\n            let value = try PushMessageContentChatSetBackground(from: decoder)\n            self = .pushMessageContentChatSetBackground(value)\n        case .pushMessageContentChatSetTheme:\n            let value = try PushMessageContentChatSetTheme(from: decoder)\n            self = .pushMessageContentChatSetTheme(value)\n        case .pushMessageContentChatDeleteMember:\n            let value = try PushMessageContentChatDeleteMember(from: decoder)\n            self = .pushMessageContentChatDeleteMember(value)\n        case .pushMessageContentChatJoinByLink:\n            self = .pushMessageContentChatJoinByLink\n        case .pushMessageContentChatJoinByRequest:\n            self = .pushMessageContentChatJoinByRequest\n        case .pushMessageContentRecurringPayment:\n            let value = try PushMessageContentRecurringPayment(from: decoder)\n            self = .pushMessageContentRecurringPayment(value)\n        case .pushMessageContentSuggestProfilePhoto:\n            self = .pushMessageContentSuggestProfilePhoto\n        case .pushMessageContentSuggestBirthdate:\n            self = .pushMessageContentSuggestBirthdate\n        case .pushMessageContentProximityAlertTriggered:\n            let value = try PushMessageContentProximityAlertTriggered(from: decoder)\n            self = .pushMessageContentProximityAlertTriggered(value)\n        case .pushMessageContentChecklistTasksAdded:\n            let value = try PushMessageContentChecklistTasksAdded(from: decoder)\n            self = .pushMessageContentChecklistTasksAdded(value)\n        case .pushMessageContentChecklistTasksDone:\n            let value = try PushMessageContentChecklistTasksDone(from: decoder)\n            self = .pushMessageContentChecklistTasksDone(value)\n        case .pushMessageContentPollOptionAdded:\n            let value = try PushMessageContentPollOptionAdded(from: decoder)\n            self = .pushMessageContentPollOptionAdded(value)\n        case .pushMessageContentMessageForwards:\n            let value = try PushMessageContentMessageForwards(from: decoder)\n            self = .pushMessageContentMessageForwards(value)\n        case .pushMessageContentMediaAlbum:\n            let value = try PushMessageContentMediaAlbum(from: decoder)\n            self = .pushMessageContentMediaAlbum(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .pushMessageContentHidden(let value):\n            try container.encode(Kind.pushMessageContentHidden, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentAnimation(let value):\n            try container.encode(Kind.pushMessageContentAnimation, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentAudio(let value):\n            try container.encode(Kind.pushMessageContentAudio, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentContact(let value):\n            try container.encode(Kind.pushMessageContentContact, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentContactRegistered(let value):\n            try container.encode(Kind.pushMessageContentContactRegistered, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentDocument(let value):\n            try container.encode(Kind.pushMessageContentDocument, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentGame(let value):\n            try container.encode(Kind.pushMessageContentGame, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentGameScore(let value):\n            try container.encode(Kind.pushMessageContentGameScore, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentInvoice(let value):\n            try container.encode(Kind.pushMessageContentInvoice, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentLocation(let value):\n            try container.encode(Kind.pushMessageContentLocation, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentPaidMedia(let value):\n            try container.encode(Kind.pushMessageContentPaidMedia, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentPhoto(let value):\n            try container.encode(Kind.pushMessageContentPhoto, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentPoll(let value):\n            try container.encode(Kind.pushMessageContentPoll, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentPremiumGiftCode(let value):\n            try container.encode(Kind.pushMessageContentPremiumGiftCode, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentGiveaway(let value):\n            try container.encode(Kind.pushMessageContentGiveaway, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentGift(let value):\n            try container.encode(Kind.pushMessageContentGift, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentUpgradedGift(let value):\n            try container.encode(Kind.pushMessageContentUpgradedGift, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentScreenshotTaken:\n            try container.encode(Kind.pushMessageContentScreenshotTaken, forKey: .type)\n        case .pushMessageContentSticker(let value):\n            try container.encode(Kind.pushMessageContentSticker, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentStory(let value):\n            try container.encode(Kind.pushMessageContentStory, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentText(let value):\n            try container.encode(Kind.pushMessageContentText, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentChecklist(let value):\n            try container.encode(Kind.pushMessageContentChecklist, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentVideo(let value):\n            try container.encode(Kind.pushMessageContentVideo, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentVideoNote(let value):\n            try container.encode(Kind.pushMessageContentVideoNote, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentVoiceNote(let value):\n            try container.encode(Kind.pushMessageContentVoiceNote, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentBasicGroupChatCreate:\n            try container.encode(Kind.pushMessageContentBasicGroupChatCreate, forKey: .type)\n        case .pushMessageContentVideoChatStarted:\n            try container.encode(Kind.pushMessageContentVideoChatStarted, forKey: .type)\n        case .pushMessageContentVideoChatEnded:\n            try container.encode(Kind.pushMessageContentVideoChatEnded, forKey: .type)\n        case .pushMessageContentInviteVideoChatParticipants(let value):\n            try container.encode(Kind.pushMessageContentInviteVideoChatParticipants, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentChatAddMembers(let value):\n            try container.encode(Kind.pushMessageContentChatAddMembers, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentChatChangePhoto:\n            try container.encode(Kind.pushMessageContentChatChangePhoto, forKey: .type)\n        case .pushMessageContentChatChangeTitle(let value):\n            try container.encode(Kind.pushMessageContentChatChangeTitle, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentChatSetBackground(let value):\n            try container.encode(Kind.pushMessageContentChatSetBackground, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentChatSetTheme(let value):\n            try container.encode(Kind.pushMessageContentChatSetTheme, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentChatDeleteMember(let value):\n            try container.encode(Kind.pushMessageContentChatDeleteMember, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentChatJoinByLink:\n            try container.encode(Kind.pushMessageContentChatJoinByLink, forKey: .type)\n        case .pushMessageContentChatJoinByRequest:\n            try container.encode(Kind.pushMessageContentChatJoinByRequest, forKey: .type)\n        case .pushMessageContentRecurringPayment(let value):\n            try container.encode(Kind.pushMessageContentRecurringPayment, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentSuggestProfilePhoto:\n            try container.encode(Kind.pushMessageContentSuggestProfilePhoto, forKey: .type)\n        case .pushMessageContentSuggestBirthdate:\n            try container.encode(Kind.pushMessageContentSuggestBirthdate, forKey: .type)\n        case .pushMessageContentProximityAlertTriggered(let value):\n            try container.encode(Kind.pushMessageContentProximityAlertTriggered, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentChecklistTasksAdded(let value):\n            try container.encode(Kind.pushMessageContentChecklistTasksAdded, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentChecklistTasksDone(let value):\n            try container.encode(Kind.pushMessageContentChecklistTasksDone, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentPollOptionAdded(let value):\n            try container.encode(Kind.pushMessageContentPollOptionAdded, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentMessageForwards(let value):\n            try container.encode(Kind.pushMessageContentMessageForwards, forKey: .type)\n            try value.encode(to: encoder)\n        case .pushMessageContentMediaAlbum(let value):\n            try container.encode(Kind.pushMessageContentMediaAlbum, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A general message with hidden content\npublic struct PushMessageContentHidden: Codable, Equatable, Hashable {\n\n    /// True, if the message is a pinned message with the specified content\n    public let isPinned: Bool\n\n\n    public init(isPinned: Bool) {\n        self.isPinned = isPinned\n    }\n}\n\n/// An animation message (GIF-style).\npublic struct PushMessageContentAnimation: Codable, Equatable, Hashable {\n\n    /// Message content; may be null\n    public let animation: Animation?\n\n    /// Animation caption\n    public let caption: String\n\n    /// True, if the message is a pinned message with the specified content\n    public let isPinned: Bool\n\n\n    public init(\n        animation: Animation?,\n        caption: String,\n        isPinned: Bool\n    ) {\n        self.animation = animation\n        self.caption = caption\n        self.isPinned = isPinned\n    }\n}\n\n/// An audio message\npublic struct PushMessageContentAudio: Codable, Equatable, Hashable {\n\n    /// Message content; may be null\n    public let audio: Audio?\n\n    /// True, if the message is a pinned message with the specified content\n    public let isPinned: Bool\n\n\n    public init(\n        audio: Audio?,\n        isPinned: Bool\n    ) {\n        self.audio = audio\n        self.isPinned = isPinned\n    }\n}\n\n/// A message with a user contact\npublic struct PushMessageContentContact: Codable, Equatable, Hashable {\n\n    /// True, if the message is a pinned message with the specified content\n    public let isPinned: Bool\n\n    /// Contact's name\n    public let name: String\n\n\n    public init(\n        isPinned: Bool,\n        name: String\n    ) {\n        self.isPinned = isPinned\n        self.name = name\n    }\n}\n\n/// A contact has registered with Telegram\npublic struct PushMessageContentContactRegistered: Codable, Equatable, Hashable {\n\n    /// True, if the user joined Telegram as a Telegram Premium account\n    public let asPremiumAccount: Bool\n\n\n    public init(asPremiumAccount: Bool) {\n        self.asPremiumAccount = asPremiumAccount\n    }\n}\n\n/// A document message (a general file)\npublic struct PushMessageContentDocument: Codable, Equatable, Hashable {\n\n    /// Message content; may be null\n    public let document: Document?\n\n    /// True, if the message is a pinned message with the specified content\n    public let isPinned: Bool\n\n\n    public init(\n        document: Document?,\n        isPinned: Bool\n    ) {\n        self.document = document\n        self.isPinned = isPinned\n    }\n}\n\n/// A message with a game\npublic struct PushMessageContentGame: Codable, Equatable, Hashable {\n\n    /// True, if the message is a pinned message with the specified content\n    public let isPinned: Bool\n\n    /// Game title, empty for pinned game message\n    public let title: String\n\n\n    public init(\n        isPinned: Bool,\n        title: String\n    ) {\n        self.isPinned = isPinned\n        self.title = title\n    }\n}\n\n/// A new high score was achieved in a game\npublic struct PushMessageContentGameScore: Codable, Equatable, Hashable {\n\n    /// True, if the message is a pinned message with the specified content\n    public let isPinned: Bool\n\n    /// New score, 0 for pinned message\n    public let score: Int\n\n    /// Game title, empty for pinned message\n    public let title: String\n\n\n    public init(\n        isPinned: Bool,\n        score: Int,\n        title: String\n    ) {\n        self.isPinned = isPinned\n        self.score = score\n        self.title = title\n    }\n}\n\n/// A message with an invoice from a bot\npublic struct PushMessageContentInvoice: Codable, Equatable, Hashable {\n\n    /// True, if the message is a pinned message with the specified content\n    public let isPinned: Bool\n\n    /// Product price\n    public let price: String\n\n\n    public init(\n        isPinned: Bool,\n        price: String\n    ) {\n        self.isPinned = isPinned\n        self.price = price\n    }\n}\n\n/// A message with a location\npublic struct PushMessageContentLocation: Codable, Equatable, Hashable {\n\n    /// True, if the location is live\n    public let isLive: Bool\n\n    /// True, if the message is a pinned message with the specified content\n    public let isPinned: Bool\n\n\n    public init(\n        isLive: Bool,\n        isPinned: Bool\n    ) {\n        self.isLive = isLive\n        self.isPinned = isPinned\n    }\n}\n\n/// A message with paid media\npublic struct PushMessageContentPaidMedia: Codable, Equatable, Hashable {\n\n    /// True, if the message is a pinned message with the specified content\n    public let isPinned: Bool\n\n    /// Number of Telegram Stars needed to buy access to the media in the message; 0 for pinned message\n    public let starCount: Int64\n\n\n    public init(\n        isPinned: Bool,\n        starCount: Int64\n    ) {\n        self.isPinned = isPinned\n        self.starCount = starCount\n    }\n}\n\n/// A photo message\npublic struct PushMessageContentPhoto: Codable, Equatable, Hashable {\n\n    /// Photo caption\n    public let caption: String\n\n    /// True, if the message is a pinned message with the specified content\n    public let isPinned: Bool\n\n    /// True, if the photo is secret\n    public let isSecret: Bool\n\n    /// Message content; may be null\n    public let photo: Photo?\n\n\n    public init(\n        caption: String,\n        isPinned: Bool,\n        isSecret: Bool,\n        photo: Photo?\n    ) {\n        self.caption = caption\n        self.isPinned = isPinned\n        self.isSecret = isSecret\n        self.photo = photo\n    }\n}\n\n/// A message with a poll\npublic struct PushMessageContentPoll: Codable, Equatable, Hashable {\n\n    /// True, if the message is a pinned message with the specified content\n    public let isPinned: Bool\n\n    /// True, if the poll is regular and not in quiz mode\n    public let isRegular: Bool\n\n    /// Poll question\n    public let question: String\n\n\n    public init(\n        isPinned: Bool,\n        isRegular: Bool,\n        question: String\n    ) {\n        self.isPinned = isPinned\n        self.isRegular = isRegular\n        self.question = question\n    }\n}\n\n/// A message with a Telegram Premium gift code created for the user\npublic struct PushMessageContentPremiumGiftCode: Codable, Equatable, Hashable {\n\n    /// Number of months the Telegram Premium subscription will be active after code activation\n    public let monthCount: Int\n\n\n    public init(monthCount: Int) {\n        self.monthCount = monthCount\n    }\n}\n\n/// A message with a giveaway\npublic struct PushMessageContentGiveaway: Codable, Equatable, Hashable {\n\n    /// True, if the message is a pinned message with the specified content\n    public let isPinned: Bool\n\n    /// Prize of the giveaway; may be null for pinned message\n    public let prize: GiveawayPrize?\n\n    /// Number of users which will receive giveaway prizes; 0 for pinned message\n    public let winnerCount: Int\n\n\n    public init(\n        isPinned: Bool,\n        prize: GiveawayPrize?,\n        winnerCount: Int\n    ) {\n        self.isPinned = isPinned\n        self.prize = prize\n        self.winnerCount = winnerCount\n    }\n}\n\n/// A message with a gift\npublic struct PushMessageContentGift: Codable, Equatable, Hashable {\n\n    /// True, if the message is about prepaid upgrade of the gift by another user instead of actual receiving of a new gift\n    public let isPrepaidUpgrade: Bool\n\n    /// Number of Telegram Stars that sender paid for the gift\n    public let starCount: Int64\n\n\n    public init(\n        isPrepaidUpgrade: Bool,\n        starCount: Int64\n    ) {\n        self.isPrepaidUpgrade = isPrepaidUpgrade\n        self.starCount = starCount\n    }\n}\n\n/// A message with an upgraded gift\npublic struct PushMessageContentUpgradedGift: Codable, Equatable, Hashable {\n\n    /// True, if the message is about completion of prepaid upgrade of the gift instead of actual receiving of a new gift\n    public let isPrepaidUpgrade: Bool\n\n    /// True, if the gift was obtained by upgrading of a previously received gift; otherwise, if is_prepaid_upgrade == false, then this is a transferred or resold gift\n    public let isUpgrade: Bool\n\n\n    public init(\n        isPrepaidUpgrade: Bool,\n        isUpgrade: Bool\n    ) {\n        self.isPrepaidUpgrade = isPrepaidUpgrade\n        self.isUpgrade = isUpgrade\n    }\n}\n\n/// A message with a sticker\npublic struct PushMessageContentSticker: Codable, Equatable, Hashable {\n\n    /// Emoji corresponding to the sticker; may be empty\n    public let emoji: String\n\n    /// True, if the message is a pinned message with the specified content\n    public let isPinned: Bool\n\n    /// Message content; may be null\n    public let sticker: Sticker?\n\n\n    public init(\n        emoji: String,\n        isPinned: Bool,\n        sticker: Sticker?\n    ) {\n        self.emoji = emoji\n        self.isPinned = isPinned\n        self.sticker = sticker\n    }\n}\n\n/// A message with a story\npublic struct PushMessageContentStory: Codable, Equatable, Hashable {\n\n    /// True, if the user was mentioned in the story\n    public let isMention: Bool\n\n    /// True, if the message is a pinned message with the specified content\n    public let isPinned: Bool\n\n\n    public init(\n        isMention: Bool,\n        isPinned: Bool\n    ) {\n        self.isMention = isMention\n        self.isPinned = isPinned\n    }\n}\n\n/// A text message\npublic struct PushMessageContentText: Codable, Equatable, Hashable {\n\n    /// True, if the message is a pinned message with the specified content\n    public let isPinned: Bool\n\n    /// Message text\n    public let text: String\n\n\n    public init(\n        isPinned: Bool,\n        text: String\n    ) {\n        self.isPinned = isPinned\n        self.text = text\n    }\n}\n\n/// A message with a checklist\npublic struct PushMessageContentChecklist: Codable, Equatable, Hashable {\n\n    /// True, if the message is a pinned message with the specified content\n    public let isPinned: Bool\n\n    /// Checklist title\n    public let title: String\n\n\n    public init(\n        isPinned: Bool,\n        title: String\n    ) {\n        self.isPinned = isPinned\n        self.title = title\n    }\n}\n\n/// A video message\npublic struct PushMessageContentVideo: Codable, Equatable, Hashable {\n\n    /// Video caption\n    public let caption: String\n\n    /// True, if the message is a pinned message with the specified content\n    public let isPinned: Bool\n\n    /// True, if the video is secret\n    public let isSecret: Bool\n\n    /// Message content; may be null\n    public let video: Video?\n\n\n    public init(\n        caption: String,\n        isPinned: Bool,\n        isSecret: Bool,\n        video: Video?\n    ) {\n        self.caption = caption\n        self.isPinned = isPinned\n        self.isSecret = isSecret\n        self.video = video\n    }\n}\n\n/// A video note message\npublic struct PushMessageContentVideoNote: Codable, Equatable, Hashable {\n\n    /// True, if the message is a pinned message with the specified content\n    public let isPinned: Bool\n\n    /// Message content; may be null\n    public let videoNote: VideoNote?\n\n\n    public init(\n        isPinned: Bool,\n        videoNote: VideoNote?\n    ) {\n        self.isPinned = isPinned\n        self.videoNote = videoNote\n    }\n}\n\n/// A voice note message\npublic struct PushMessageContentVoiceNote: Codable, Equatable, Hashable {\n\n    /// True, if the message is a pinned message with the specified content\n    public let isPinned: Bool\n\n    /// Message content; may be null\n    public let voiceNote: VoiceNote?\n\n\n    public init(\n        isPinned: Bool,\n        voiceNote: VoiceNote?\n    ) {\n        self.isPinned = isPinned\n        self.voiceNote = voiceNote\n    }\n}\n\n/// An invitation of participants to a video chat or live stream\npublic struct PushMessageContentInviteVideoChatParticipants: Codable, Equatable, Hashable {\n\n    /// True, if the current user was invited to the video chat or the live stream\n    public let isCurrentUser: Bool\n\n\n    public init(isCurrentUser: Bool) {\n        self.isCurrentUser = isCurrentUser\n    }\n}\n\n/// New chat members were invited to a group\npublic struct PushMessageContentChatAddMembers: Codable, Equatable, Hashable {\n\n    /// True, if the current user was added to the group\n    public let isCurrentUser: Bool\n\n    /// True, if the user has returned to the group themselves\n    public let isReturned: Bool\n\n    /// Name of the added member\n    public let memberName: String\n\n\n    public init(\n        isCurrentUser: Bool,\n        isReturned: Bool,\n        memberName: String\n    ) {\n        self.isCurrentUser = isCurrentUser\n        self.isReturned = isReturned\n        self.memberName = memberName\n    }\n}\n\n/// A chat title was edited\npublic struct PushMessageContentChatChangeTitle: Codable, Equatable, Hashable {\n\n    /// New chat title\n    public let title: String\n\n\n    public init(title: String) {\n        self.title = title\n    }\n}\n\n/// A chat background was edited\npublic struct PushMessageContentChatSetBackground: Codable, Equatable, Hashable {\n\n    /// True, if the set background is the same as the background of the current user\n    public let isSame: Bool\n\n\n    public init(isSame: Bool) {\n        self.isSame = isSame\n    }\n}\n\n/// A chat theme was edited\npublic struct PushMessageContentChatSetTheme: Codable, Equatable, Hashable {\n\n    /// If non-empty, human-readable name of the new theme. Otherwise, the chat theme was reset to the default one\n    public let name: String\n\n\n    public init(name: String) {\n        self.name = name\n    }\n}\n\n/// A chat member was deleted\npublic struct PushMessageContentChatDeleteMember: Codable, Equatable, Hashable {\n\n    /// True, if the current user was deleted from the group\n    public let isCurrentUser: Bool\n\n    /// True, if the user has left the group themselves\n    public let isLeft: Bool\n\n    /// Name of the deleted member\n    public let memberName: String\n\n\n    public init(\n        isCurrentUser: Bool,\n        isLeft: Bool,\n        memberName: String\n    ) {\n        self.isCurrentUser = isCurrentUser\n        self.isLeft = isLeft\n        self.memberName = memberName\n    }\n}\n\n/// A new recurring payment was made by the current user\npublic struct PushMessageContentRecurringPayment: Codable, Equatable, Hashable {\n\n    /// The paid amount\n    public let amount: String\n\n\n    public init(amount: String) {\n        self.amount = amount\n    }\n}\n\n/// A user in the chat came within proximity alert range from the current user\npublic struct PushMessageContentProximityAlertTriggered: Codable, Equatable, Hashable {\n\n    /// The distance to the user\n    public let distance: Int\n\n\n    public init(distance: Int) {\n        self.distance = distance\n    }\n}\n\n/// Some tasks were added to a checklist\npublic struct PushMessageContentChecklistTasksAdded: Codable, Equatable, Hashable {\n\n    /// Number of added tasks\n    public let taskCount: Int\n\n\n    public init(taskCount: Int) {\n        self.taskCount = taskCount\n    }\n}\n\n/// Some tasks from a checklist were marked as done or not done\npublic struct PushMessageContentChecklistTasksDone: Codable, Equatable, Hashable {\n\n    /// Number of changed tasks\n    public let taskCount: Int\n\n\n    public init(taskCount: Int) {\n        self.taskCount = taskCount\n    }\n}\n\n/// An option was added to a poll\npublic struct PushMessageContentPollOptionAdded: Codable, Equatable, Hashable {\n\n    /// Text of the option\n    public let text: String\n\n\n    public init(text: String) {\n        self.text = text\n    }\n}\n\n/// A forwarded messages\npublic struct PushMessageContentMessageForwards: Codable, Equatable, Hashable {\n\n    /// Number of forwarded messages\n    public let totalCount: Int\n\n\n    public init(totalCount: Int) {\n        self.totalCount = totalCount\n    }\n}\n\n/// A media album\npublic struct PushMessageContentMediaAlbum: Codable, Equatable, Hashable {\n\n    /// True, if the album has at least one audio file\n    public let hasAudios: Bool\n\n    /// True, if the album has at least one document\n    public let hasDocuments: Bool\n\n    /// True, if the album has at least one photo\n    public let hasPhotos: Bool\n\n    /// True, if the album has at least one video file\n    public let hasVideos: Bool\n\n    /// Number of messages in the album\n    public let totalCount: Int\n\n\n    public init(\n        hasAudios: Bool,\n        hasDocuments: Bool,\n        hasPhotos: Bool,\n        hasVideos: Bool,\n        totalCount: Int\n    ) {\n        self.hasAudios = hasAudios\n        self.hasDocuments = hasDocuments\n        self.hasPhotos = hasPhotos\n        self.hasVideos = hasVideos\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/PushReceiverId.swift",
    "content": "//\n//  PushReceiverId.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a globally unique push receiver identifier, which can be used to identify which account has received a push notification\npublic struct PushReceiverId: Codable, Equatable, Hashable, Identifiable {\n\n    /// The globally unique identifier of push notification subscription\n    public let id: TdInt64\n\n\n    public init(id: TdInt64) {\n        self.id = id\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/QuickReplyMessage.swift",
    "content": "//\n//  QuickReplyMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a message that can be used for quick reply\npublic struct QuickReplyMessage: Codable, Equatable, Hashable, Identifiable {\n\n    /// True, if the message can be edited\n    public let canBeEdited: Bool\n\n    /// Content of the message\n    public let content: MessageContent\n\n    /// Unique message identifier among all quick replies\n    public let id: Int64\n\n    /// Unique identifier of an album this message belongs to; 0 if none. Only audios, documents, photos and videos can be grouped together in albums\n    public let mediaAlbumId: TdInt64\n\n    /// Inline keyboard reply markup for the message; may be null if none\n    public let replyMarkup: ReplyMarkup?\n\n    /// The identifier of the quick reply message to which the message replies; 0 if none\n    public let replyToMessageId: Int64\n\n    /// The sending state of the message; may be null if the message isn't being sent and didn't fail to be sent\n    public let sendingState: MessageSendingState?\n\n    /// If non-zero, the user identifier of the bot through which this message was sent\n    public let viaBotUserId: Int64\n\n\n    public init(\n        canBeEdited: Bool,\n        content: MessageContent,\n        id: Int64,\n        mediaAlbumId: TdInt64,\n        replyMarkup: ReplyMarkup?,\n        replyToMessageId: Int64,\n        sendingState: MessageSendingState?,\n        viaBotUserId: Int64\n    ) {\n        self.canBeEdited = canBeEdited\n        self.content = content\n        self.id = id\n        self.mediaAlbumId = mediaAlbumId\n        self.replyMarkup = replyMarkup\n        self.replyToMessageId = replyToMessageId\n        self.sendingState = sendingState\n        self.viaBotUserId = viaBotUserId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/QuickReplyMessages.swift",
    "content": "//\n//  QuickReplyMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of quick reply messages\npublic struct QuickReplyMessages: Codable, Equatable, Hashable {\n\n    /// List of quick reply messages; messages may be null\n    public let messages: [QuickReplyMessage]?\n\n\n    public init(messages: [QuickReplyMessage]?) {\n        self.messages = messages\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/QuickReplyShortcut.swift",
    "content": "//\n//  QuickReplyShortcut.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a shortcut that can be used for a quick reply\npublic struct QuickReplyShortcut: Codable, Equatable, Hashable, Identifiable {\n\n    /// The first shortcut message\n    public let firstMessage: QuickReplyMessage\n\n    /// Unique shortcut identifier\n    public let id: Int\n\n    /// The total number of messages in the shortcut\n    public let messageCount: Int\n\n    /// The name of the shortcut that can be used to use the shortcut\n    public let name: String\n\n\n    public init(\n        firstMessage: QuickReplyMessage,\n        id: Int,\n        messageCount: Int,\n        name: String\n    ) {\n        self.firstMessage = firstMessage\n        self.id = id\n        self.messageCount = messageCount\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RateSpeechRecognition.swift",
    "content": "//\n//  RateSpeechRecognition.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Rates recognized speech in a video note or a voice note message\npublic struct RateSpeechRecognition: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the message belongs\n    public let chatId: Int64?\n\n    /// Pass true if the speech recognition is good\n    public let isGood: Bool?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        isGood: Bool?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.isGood = isGood\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReactionNotificationSettings.swift",
    "content": "//\n//  ReactionNotificationSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about notification settings for reactions and poll votes\npublic struct ReactionNotificationSettings: Codable, Equatable, Hashable {\n\n    /// Source of message reactions for which notifications are shown\n    public let messageReactionSource: ReactionNotificationSource\n\n    /// Source of poll votes for which notifications are shown\n    public let pollVoteSource: ReactionNotificationSource\n\n    /// True, if reaction sender and emoji must be displayed in notifications\n    public let showPreview: Bool\n\n    /// Identifier of the notification sound to be played; 0 if sound is disabled; pass -1 to use the app-dependent default sound\n    public let soundId: TdInt64\n\n    /// Source of story reactions for which notifications are shown\n    public let storyReactionSource: ReactionNotificationSource\n\n\n    public init(\n        messageReactionSource: ReactionNotificationSource,\n        pollVoteSource: ReactionNotificationSource,\n        showPreview: Bool,\n        soundId: TdInt64,\n        storyReactionSource: ReactionNotificationSource\n    ) {\n        self.messageReactionSource = messageReactionSource\n        self.pollVoteSource = pollVoteSource\n        self.showPreview = showPreview\n        self.soundId = soundId\n        self.storyReactionSource = storyReactionSource\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReactionNotificationSource.swift",
    "content": "//\n//  ReactionNotificationSource.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes sources of reactions for which notifications will be shown\npublic indirect enum ReactionNotificationSource: Codable, Equatable, Hashable {\n\n    /// Notifications for reactions are disabled\n    case reactionNotificationSourceNone\n\n    /// Notifications for reactions are shown only for reactions from contacts\n    case reactionNotificationSourceContacts\n\n    /// Notifications for reactions are shown for all reactions\n    case reactionNotificationSourceAll\n\n\n    private enum Kind: String, Codable {\n        case reactionNotificationSourceNone\n        case reactionNotificationSourceContacts\n        case reactionNotificationSourceAll\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .reactionNotificationSourceNone:\n            self = .reactionNotificationSourceNone\n        case .reactionNotificationSourceContacts:\n            self = .reactionNotificationSourceContacts\n        case .reactionNotificationSourceAll:\n            self = .reactionNotificationSourceAll\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .reactionNotificationSourceNone:\n            try container.encode(Kind.reactionNotificationSourceNone, forKey: .type)\n        case .reactionNotificationSourceContacts:\n            try container.encode(Kind.reactionNotificationSourceContacts, forKey: .type)\n        case .reactionNotificationSourceAll:\n            try container.encode(Kind.reactionNotificationSourceAll, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReactionType.swift",
    "content": "//\n//  ReactionType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of message reaction\npublic indirect enum ReactionType: Codable, Equatable, Hashable {\n\n    /// A reaction with an emoji\n    case reactionTypeEmoji(ReactionTypeEmoji)\n\n    /// A reaction with a custom emoji\n    case reactionTypeCustomEmoji(ReactionTypeCustomEmoji)\n\n    /// The paid reaction in a channel chat\n    case reactionTypePaid\n\n\n    private enum Kind: String, Codable {\n        case reactionTypeEmoji\n        case reactionTypeCustomEmoji\n        case reactionTypePaid\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .reactionTypeEmoji:\n            let value = try ReactionTypeEmoji(from: decoder)\n            self = .reactionTypeEmoji(value)\n        case .reactionTypeCustomEmoji:\n            let value = try ReactionTypeCustomEmoji(from: decoder)\n            self = .reactionTypeCustomEmoji(value)\n        case .reactionTypePaid:\n            self = .reactionTypePaid\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .reactionTypeEmoji(let value):\n            try container.encode(Kind.reactionTypeEmoji, forKey: .type)\n            try value.encode(to: encoder)\n        case .reactionTypeCustomEmoji(let value):\n            try container.encode(Kind.reactionTypeCustomEmoji, forKey: .type)\n            try value.encode(to: encoder)\n        case .reactionTypePaid:\n            try container.encode(Kind.reactionTypePaid, forKey: .type)\n        }\n    }\n}\n\n/// A reaction with an emoji\npublic struct ReactionTypeEmoji: Codable, Equatable, Hashable {\n\n    /// Text representation of the reaction\n    public let emoji: String\n\n\n    public init(emoji: String) {\n        self.emoji = emoji\n    }\n}\n\n/// A reaction with a custom emoji\npublic struct ReactionTypeCustomEmoji: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the custom emoji\n    public let customEmojiId: TdInt64\n\n\n    public init(customEmojiId: TdInt64) {\n        self.customEmojiId = customEmojiId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReactionUnavailabilityReason.swift",
    "content": "//\n//  ReactionUnavailabilityReason.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes why the current user can't add reactions to the message, despite some other users can\npublic indirect enum ReactionUnavailabilityReason: Codable, Equatable, Hashable {\n\n    /// The user is an anonymous administrator in the supergroup, but isn't a creator of it, so they can't vote on behalf of the supergroup\n    case reactionUnavailabilityReasonAnonymousAdministrator\n\n    /// The user isn't a member of the supergroup and can't send messages and reactions there without joining\n    case reactionUnavailabilityReasonGuest\n\n    /// The user is restricted in the chat\n    case reactionUnavailabilityReasonRestricted\n\n\n    private enum Kind: String, Codable {\n        case reactionUnavailabilityReasonAnonymousAdministrator\n        case reactionUnavailabilityReasonGuest\n        case reactionUnavailabilityReasonRestricted\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .reactionUnavailabilityReasonAnonymousAdministrator:\n            self = .reactionUnavailabilityReasonAnonymousAdministrator\n        case .reactionUnavailabilityReasonGuest:\n            self = .reactionUnavailabilityReasonGuest\n        case .reactionUnavailabilityReasonRestricted:\n            self = .reactionUnavailabilityReasonRestricted\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .reactionUnavailabilityReasonAnonymousAdministrator:\n            try container.encode(Kind.reactionUnavailabilityReasonAnonymousAdministrator, forKey: .type)\n        case .reactionUnavailabilityReasonGuest:\n            try container.encode(Kind.reactionUnavailabilityReasonGuest, forKey: .type)\n        case .reactionUnavailabilityReasonRestricted:\n            try container.encode(Kind.reactionUnavailabilityReasonRestricted, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReadAllChatMentions.swift",
    "content": "//\n//  ReadAllChatMentions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Marks all mentions in a chat as read\npublic struct ReadAllChatMentions: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReadAllChatPollVotes.swift",
    "content": "//\n//  ReadAllChatPollVotes.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Marks all poll votes in a chat as read\npublic struct ReadAllChatPollVotes: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReadAllChatReactions.swift",
    "content": "//\n//  ReadAllChatReactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Marks all reactions in a chat as read\npublic struct ReadAllChatReactions: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReadAllDirectMessagesChatTopicReactions.swift",
    "content": "//\n//  ReadAllDirectMessagesChatTopicReactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes all unread reactions in the topic in a channel direct messages chat administered by the current user\npublic struct ReadAllDirectMessagesChatTopicReactions: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n    /// Topic identifier\n    public let topicId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        topicId: Int64?\n    ) {\n        self.chatId = chatId\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReadAllForumTopicMentions.swift",
    "content": "//\n//  ReadAllForumTopicMentions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Marks all mentions in a topic in a forum supergroup chat as read\npublic struct ReadAllForumTopicMentions: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Forum topic identifier in which mentions are marked as read\n    public let forumTopicId: Int?\n\n\n    public init(\n        chatId: Int64?,\n        forumTopicId: Int?\n    ) {\n        self.chatId = chatId\n        self.forumTopicId = forumTopicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReadAllForumTopicPollVotes.swift",
    "content": "//\n//  ReadAllForumTopicPollVotes.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Marks all poll votes in a topic in a forum supergroup chat as read\npublic struct ReadAllForumTopicPollVotes: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Forum topic identifier in which poll votes are marked as read\n    public let forumTopicId: Int?\n\n\n    public init(\n        chatId: Int64?,\n        forumTopicId: Int?\n    ) {\n        self.chatId = chatId\n        self.forumTopicId = forumTopicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReadAllForumTopicReactions.swift",
    "content": "//\n//  ReadAllForumTopicReactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Marks all reactions in a topic in a forum supergroup chat or a chat with a bot with topics as read\npublic struct ReadAllForumTopicReactions: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Forum topic identifier in which reactions are marked as read\n    public let forumTopicId: Int?\n\n\n    public init(\n        chatId: Int64?,\n        forumTopicId: Int?\n    ) {\n        self.chatId = chatId\n        self.forumTopicId = forumTopicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReadAllMessageThreadMentions.swift",
    "content": "//\n//  ReadAllMessageThreadMentions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.53-bdec6af5\n//  https://github.com/tdlib/td/tree/bdec6af5\n//\n\nimport Foundation\n\n\n/// Marks all mentions in a forum topic as read\npublic struct ReadAllMessageThreadMentions: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Message thread identifier in which mentions are marked as read\n    public let messageThreadId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageThreadId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageThreadId = messageThreadId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReadAllMessageThreadReactions.swift",
    "content": "//\n//  ReadAllMessageThreadReactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.53-bdec6af5\n//  https://github.com/tdlib/td/tree/bdec6af5\n//\n\nimport Foundation\n\n\n/// Marks all reactions in a forum topic as read\npublic struct ReadAllMessageThreadReactions: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Message thread identifier in which reactions are marked as read\n    public let messageThreadId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageThreadId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageThreadId = messageThreadId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReadBusinessMessage.swift",
    "content": "//\n//  ReadBusinessMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Reads a message on behalf of a business account; for bots only\npublic struct ReadBusinessMessage: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection through which the message was received\n    public let businessConnectionId: String?\n\n    /// The chat the message belongs to\n    public let chatId: Int64?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n\n    public init(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReadChatList.swift",
    "content": "//\n//  ReadChatList.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Traverses all chats in a chat list and marks all messages in the chats as read\npublic struct ReadChatList: Codable, Equatable, Hashable {\n\n    /// Chat list in which to mark all chats as read\n    public let chatList: ChatList?\n\n\n    public init(chatList: ChatList?) {\n        self.chatList = chatList\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReadDatePrivacySettings.swift",
    "content": "//\n//  ReadDatePrivacySettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains privacy settings for message read date in private chats. Read dates are always shown to the users that can see online status of the current user regardless of this setting\npublic struct ReadDatePrivacySettings: Codable, Equatable, Hashable {\n\n    /// True, if message read date is shown to other users in private chats. If false and the current user isn't a Telegram Premium user, then they will not be able to see other's message read date\n    public let showReadDate: Bool\n\n\n    public init(showReadDate: Bool) {\n        self.showReadDate = showReadDate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReadFilePart.swift",
    "content": "//\n//  ReadFilePart.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Reads a part of a file from the TDLib file cache and returns read bytes. This method is intended to be used only if the application has no direct access to TDLib's file system, because it is usually slower than a direct read from the file\npublic struct ReadFilePart: Codable, Equatable, Hashable {\n\n    /// Number of bytes to read. An error will be returned if there are not enough bytes available in the file from the specified position. Pass 0 to read all available data from the specified position\n    public let count: Int64?\n\n    /// Identifier of the file. The file must be located in the TDLib file cache\n    public let fileId: Int?\n\n    /// The offset from which to read the file\n    public let offset: Int64?\n\n\n    public init(\n        count: Int64?,\n        fileId: Int?,\n        offset: Int64?\n    ) {\n        self.count = count\n        self.fileId = fileId\n        self.offset = offset\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReaddQuickReplyShortcutMessages.swift",
    "content": "//\n//  ReaddQuickReplyShortcutMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Readds quick reply messages which failed to add. Can be called only for messages for which messageSendingStateFailed.can_retry is true and after specified in messageSendingStateFailed.retry_after time passed. If a message is readded, the corresponding failed to send message is deleted. Returns the sent messages in the same order as the message identifiers passed in message_ids. If a message can't be readded, null will be returned instead of the message\npublic struct ReaddQuickReplyShortcutMessages: Codable, Equatable, Hashable {\n\n    /// Identifiers of the quick reply messages to readd. Message identifiers must be in a strictly increasing order\n    public let messageIds: [Int64]?\n\n    /// Name of the target shortcut\n    public let shortcutName: String?\n\n\n    public init(\n        messageIds: [Int64]?,\n        shortcutName: String?\n    ) {\n        self.messageIds = messageIds\n        self.shortcutName = shortcutName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReceivedGift.swift",
    "content": "//\n//  ReceivedGift.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a gift received by a user or a chat\npublic struct ReceivedGift: Codable, Equatable, Hashable {\n\n    /// True, if the gift is an upgraded gift that can be transferred to another owner; only for the receiver of the gift\n    public let canBeTransferred: Bool\n\n    /// True, if the gift is a regular gift that can be upgraded to a unique gift; only for the receiver of the gift\n    public let canBeUpgraded: Bool\n\n    /// Identifiers of collections to which the gift is added; only for the receiver of the gift\n    public let collectionIds: [Int]\n\n    /// Point in time (Unix timestamp) when the gift can be used to craft another gift can be in the past; only for the receiver of the gift\n    public let craftDate: Int\n\n    /// Point in time (Unix timestamp) when the gift was sent\n    public let date: Int\n\n    /// Number of Telegram Stars that must be paid to drop original details of the upgraded gift; 0 if not available; only for the receiver of the gift\n    public let dropOriginalDetailsStarCount: Int64\n\n    /// Point in time (Unix timestamp) when the upgraded gift can be transferred to the TON blockchain as an NFT; can be in the past; 0 if NFT export isn't possible; only for the receiver of the gift\n    public let exportDate: Int\n\n    /// The gift\n    public let gift: SentGift\n\n    /// True, if the gift is pinned to the top of the chat's profile page\n    public let isPinned: Bool\n\n    /// True, if the sender and gift text are shown only to the gift receiver; otherwise, everyone are able to see them\n    public let isPrivate: Bool\n\n    /// True, if the gift is displayed on the chat's profile page; only for the receiver of the gift\n    public let isSaved: Bool\n\n    /// True, if the upgrade was bought after the gift was sent. In this case, prepaid upgrade cost must not be added to the gift cost\n    public let isUpgradeSeparate: Bool\n\n    /// Point in time (Unix timestamp) when the gift can be resold to another user; can be in the past; 0 if the gift can't be resold; only for the receiver of the gift\n    public let nextResaleDate: Int\n\n    /// Point in time (Unix timestamp) when the gift can be transferred to another owner; can be in the past; 0 if the gift can be transferred immediately or transfer isn't possible; only for the receiver of the gift\n    public let nextTransferDate: Int\n\n    /// If non-empty, then the user can pay for an upgrade of the gift using buyGiftUpgrade\n    public let prepaidUpgradeHash: String\n\n    /// Number of Telegram Stars that were paid by the sender for the ability to upgrade the gift\n    public let prepaidUpgradeStarCount: Int64\n\n    /// Unique identifier of the received gift for the current user; only for the receiver of the gift\n    public let receivedGiftId: String\n\n    /// Number of Telegram Stars that can be claimed by the receiver instead of the regular gift; 0 if the gift can't be sold by the current user\n    public let sellStarCount: Int64\n\n    /// Identifier of a user or a chat that sent the gift; may be null if unknown\n    public let senderId: MessageSender?\n\n    /// Message added to the gift\n    public let text: FormattedText\n\n    /// Number of Telegram Stars that must be paid to transfer the upgraded gift; only for the receiver of the gift\n    public let transferStarCount: Int64\n\n    /// Unique number of the gift among gifts upgraded from the same gift after upgrade; 0 if yet unassigned\n    public let uniqueGiftNumber: Int\n\n    /// True, if the gift was refunded and isn't available anymore\n    public let wasRefunded: Bool\n\n\n    public init(\n        canBeTransferred: Bool,\n        canBeUpgraded: Bool,\n        collectionIds: [Int],\n        craftDate: Int,\n        date: Int,\n        dropOriginalDetailsStarCount: Int64,\n        exportDate: Int,\n        gift: SentGift,\n        isPinned: Bool,\n        isPrivate: Bool,\n        isSaved: Bool,\n        isUpgradeSeparate: Bool,\n        nextResaleDate: Int,\n        nextTransferDate: Int,\n        prepaidUpgradeHash: String,\n        prepaidUpgradeStarCount: Int64,\n        receivedGiftId: String,\n        sellStarCount: Int64,\n        senderId: MessageSender?,\n        text: FormattedText,\n        transferStarCount: Int64,\n        uniqueGiftNumber: Int,\n        wasRefunded: Bool\n    ) {\n        self.canBeTransferred = canBeTransferred\n        self.canBeUpgraded = canBeUpgraded\n        self.collectionIds = collectionIds\n        self.craftDate = craftDate\n        self.date = date\n        self.dropOriginalDetailsStarCount = dropOriginalDetailsStarCount\n        self.exportDate = exportDate\n        self.gift = gift\n        self.isPinned = isPinned\n        self.isPrivate = isPrivate\n        self.isSaved = isSaved\n        self.isUpgradeSeparate = isUpgradeSeparate\n        self.nextResaleDate = nextResaleDate\n        self.nextTransferDate = nextTransferDate\n        self.prepaidUpgradeHash = prepaidUpgradeHash\n        self.prepaidUpgradeStarCount = prepaidUpgradeStarCount\n        self.receivedGiftId = receivedGiftId\n        self.sellStarCount = sellStarCount\n        self.senderId = senderId\n        self.text = text\n        self.transferStarCount = transferStarCount\n        self.uniqueGiftNumber = uniqueGiftNumber\n        self.wasRefunded = wasRefunded\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReceivedGifts.swift",
    "content": "//\n//  ReceivedGifts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of gifts received by a user or a chat\npublic struct ReceivedGifts: Codable, Equatable, Hashable {\n\n    /// True, if notifications about new gifts of the owner are enabled\n    public let areNotificationsEnabled: Bool\n\n    /// The list of gifts\n    public let gifts: [ReceivedGift]\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// The total number of received gifts\n    public let totalCount: Int\n\n\n    public init(\n        areNotificationsEnabled: Bool,\n        gifts: [ReceivedGift],\n        nextOffset: String,\n        totalCount: Int\n    ) {\n        self.areNotificationsEnabled = areNotificationsEnabled\n        self.gifts = gifts\n        self.nextOffset = nextOffset\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RecognizeSpeech.swift",
    "content": "//\n//  RecognizeSpeech.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Recognizes speech in a video note or a voice note message\npublic struct RecognizeSpeech: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the message belongs\n    public let chatId: Int64?\n\n    /// Identifier of the message. Use messageProperties.can_recognize_speech to check whether the message is suitable\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RecommendedChatFolder.swift",
    "content": "//\n//  RecommendedChatFolder.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a recommended chat folder\npublic struct RecommendedChatFolder: Codable, Equatable, Hashable {\n\n    public let description: String\n\n    /// The chat folder\n    public let folder: ChatFolder\n\n\n    public init(\n        description: String,\n        folder: ChatFolder\n    ) {\n        self.description = description\n        self.folder = folder\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RecommendedChatFolders.swift",
    "content": "//\n//  RecommendedChatFolders.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of recommended chat folders\npublic struct RecommendedChatFolders: Codable, Equatable, Hashable {\n\n    /// List of recommended chat folders\n    public let chatFolders: [RecommendedChatFolder]\n\n\n    public init(chatFolders: [RecommendedChatFolder]) {\n        self.chatFolders = chatFolders\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RecoverAuthenticationPassword.swift",
    "content": "//\n//  RecoverAuthenticationPassword.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Recovers the 2-step verification password with a password recovery code sent to an email address that was previously set up. Works only when the current authorization state is authorizationStateWaitPassword\npublic struct RecoverAuthenticationPassword: Codable, Equatable, Hashable {\n\n    /// New password hint; may be empty\n    public let newHint: String?\n\n    /// New 2-step verification password of the user; may be empty to remove the password\n    public let newPassword: String?\n\n    /// Recovery code to check\n    public let recoveryCode: String?\n\n\n    public init(\n        newHint: String?,\n        newPassword: String?,\n        recoveryCode: String?\n    ) {\n        self.newHint = newHint\n        self.newPassword = newPassword\n        self.recoveryCode = recoveryCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RecoverPassword.swift",
    "content": "//\n//  RecoverPassword.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Recovers the 2-step verification password using a recovery code sent to an email address that was previously set up\npublic struct RecoverPassword: Codable, Equatable, Hashable {\n\n    /// New password hint; may be empty\n    public let newHint: String?\n\n    /// New 2-step verification password of the user; may be empty to remove the password\n    public let newPassword: String?\n\n    /// Recovery code to check\n    public let recoveryCode: String?\n\n\n    public init(\n        newHint: String?,\n        newPassword: String?,\n        recoveryCode: String?\n    ) {\n        self.newHint = newHint\n        self.newPassword = newPassword\n        self.recoveryCode = recoveryCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RecoveryEmailAddress.swift",
    "content": "//\n//  RecoveryEmailAddress.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about the current recovery email address\npublic struct RecoveryEmailAddress: Codable, Equatable, Hashable {\n\n    /// Recovery email address\n    public let recoveryEmailAddress: String\n\n\n    public init(recoveryEmailAddress: String) {\n        self.recoveryEmailAddress = recoveryEmailAddress\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RefundStarPayment.swift",
    "content": "//\n//  RefundStarPayment.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Refunds a previously done payment in Telegram Stars; for bots only\npublic struct RefundStarPayment: Codable, Equatable, Hashable {\n\n    /// Telegram payment identifier\n    public let telegramPaymentChargeId: String?\n\n    /// Identifier of the user who did the payment\n    public let userId: Int64?\n\n\n    public init(\n        telegramPaymentChargeId: String?,\n        userId: Int64?\n    ) {\n        self.telegramPaymentChargeId = telegramPaymentChargeId\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RegisterDevice.swift",
    "content": "//\n//  RegisterDevice.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Registers the currently used device for receiving push notifications. Returns a globally unique identifier of the push notification subscription\npublic struct RegisterDevice: Codable, Equatable, Hashable {\n\n    /// Device token\n    public let deviceToken: DeviceToken?\n\n    /// List of user identifiers of other users currently using the application\n    public let otherUserIds: [Int64]?\n\n\n    public init(\n        deviceToken: DeviceToken?,\n        otherUserIds: [Int64]?\n    ) {\n        self.deviceToken = deviceToken\n        self.otherUserIds = otherUserIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RegisterUser.swift",
    "content": "//\n//  RegisterUser.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Finishes user registration. Works only when the current authorization state is authorizationStateWaitRegistration\npublic struct RegisterUser: Codable, Equatable, Hashable {\n\n    /// Pass true to disable notification about the current user joining Telegram for other users that added them to contact list\n    public let disableNotification: Bool?\n\n    /// The first name of the user; 1-64 characters\n    public let firstName: String?\n\n    /// The last name of the user; 0-64 characters\n    public let lastName: String?\n\n\n    public init(\n        disableNotification: Bool?,\n        firstName: String?,\n        lastName: String?\n    ) {\n        self.disableNotification = disableNotification\n        self.firstName = firstName\n        self.lastName = lastName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoteFile.swift",
    "content": "//\n//  RemoteFile.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a remote file\npublic struct RemoteFile: Codable, Equatable, Hashable, Identifiable {\n\n    /// Remote file identifier; may be empty. Can be used by the current user across application restarts or even from other devices. Uniquely identifies a file, but a file can have a lot of different valid identifiers. If the identifier starts with \"http://\" or \"https://\", it represents the HTTP URL of the file. TDLib is currently unable to download files if only their URL is known. If downloadFile/addFileToDownloads is called on such a file or if it is sent to a secret chat, TDLib starts a file generation process by sending updateFileGenerationStart to the application with the HTTP URL in the original_path and \"#url#\" as the conversion string. Application must generate the file by downloading it to the specified location\n    public let id: String\n\n    /// True, if the file is currently being uploaded (or a remote copy is being generated by some other means)\n    public let isUploadingActive: Bool\n\n    /// True, if a remote copy is fully available\n    public let isUploadingCompleted: Bool\n\n    /// Unique file identifier; may be empty if unknown. The unique file identifier which is the same for the same file even for different users and is persistent over time\n    public let uniqueId: String\n\n    /// Size of the remote available part of the file, in bytes; 0 if unknown\n    public let uploadedSize: Int64\n\n\n    public init(\n        id: String,\n        isUploadingActive: Bool,\n        isUploadingCompleted: Bool,\n        uniqueId: String,\n        uploadedSize: Int64\n    ) {\n        self.id = id\n        self.isUploadingActive = isUploadingActive\n        self.isUploadingCompleted = isUploadingCompleted\n        self.uniqueId = uniqueId\n        self.uploadedSize = uploadedSize\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveAllFilesFromDownloads.swift",
    "content": "//\n//  RemoveAllFilesFromDownloads.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes all files from the file download list\npublic struct RemoveAllFilesFromDownloads: Codable, Equatable, Hashable {\n\n    /// Pass true to delete the file from the TDLib file cache\n    public let deleteFromCache: Bool?\n\n    /// Pass true to remove only active downloads, including paused\n    public let onlyActive: Bool?\n\n    /// Pass true to remove only completed downloads\n    public let onlyCompleted: Bool?\n\n\n    public init(\n        deleteFromCache: Bool?,\n        onlyActive: Bool?,\n        onlyCompleted: Bool?\n    ) {\n        self.deleteFromCache = deleteFromCache\n        self.onlyActive = onlyActive\n        self.onlyCompleted = onlyCompleted\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveBusinessConnectedBotFromChat.swift",
    "content": "//\n//  RemoveBusinessConnectedBotFromChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes the connected business bot from a specific chat by adding the chat to businessRecipients.excluded_chat_ids\npublic struct RemoveBusinessConnectedBotFromChat: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveChatActionBar.swift",
    "content": "//\n//  RemoveChatActionBar.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes a chat action bar without any other action\npublic struct RemoveChatActionBar: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveContacts.swift",
    "content": "//\n//  RemoveContacts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes users from the contact list\npublic struct RemoveContacts: Codable, Equatable, Hashable {\n\n    /// Identifiers of users to be deleted\n    public let userIds: [Int64]?\n\n\n    public init(userIds: [Int64]?) {\n        self.userIds = userIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveFavoriteSticker.swift",
    "content": "//\n//  RemoveFavoriteSticker.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes a sticker from the list of favorite stickers\npublic struct RemoveFavoriteSticker: Codable, Equatable, Hashable {\n\n    /// Sticker file to delete from the list\n    public let sticker: InputFile?\n\n\n    public init(sticker: InputFile?) {\n        self.sticker = sticker\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveFileFromDownloads.swift",
    "content": "//\n//  RemoveFileFromDownloads.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes a file from the file download list\npublic struct RemoveFileFromDownloads: Codable, Equatable, Hashable {\n\n    /// Pass true to delete the file from the TDLib file cache\n    public let deleteFromCache: Bool?\n\n    /// Identifier of the downloaded file\n    public let fileId: Int?\n\n\n    public init(\n        deleteFromCache: Bool?,\n        fileId: Int?\n    ) {\n        self.deleteFromCache = deleteFromCache\n        self.fileId = fileId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveGiftCollectionGifts.swift",
    "content": "//\n//  RemoveGiftCollectionGifts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes gifts from a collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat. Returns the changed collection\npublic struct RemoveGiftCollectionGifts: Codable, Equatable, Hashable {\n\n    /// Identifier of the gift collection\n    public let collectionId: Int?\n\n    /// Identifier of the user or the channel chat that owns the collection\n    public let ownerId: MessageSender?\n\n    /// Identifier of the gifts to remove from the collection\n    public let receivedGiftIds: [String]?\n\n\n    public init(\n        collectionId: Int?,\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?\n    ) {\n        self.collectionId = collectionId\n        self.ownerId = ownerId\n        self.receivedGiftIds = receivedGiftIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveInstalledBackground.swift",
    "content": "//\n//  RemoveInstalledBackground.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes background from the list of installed backgrounds\npublic struct RemoveInstalledBackground: Codable, Equatable, Hashable {\n\n    /// The background identifier\n    public let backgroundId: TdInt64?\n\n\n    public init(backgroundId: TdInt64?) {\n        self.backgroundId = backgroundId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveLoginPasskey.swift",
    "content": "//\n//  RemoveLoginPasskey.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes a passkey from the list of passkeys allowed to be used for the login by the current user\npublic struct RemoveLoginPasskey: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the passkey to remove\n    public let passkeyId: String?\n\n\n    public init(passkeyId: String?) {\n        self.passkeyId = passkeyId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveMessageReaction.swift",
    "content": "//\n//  RemoveMessageReaction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes a reaction from a message. A chosen reaction can always be removed\npublic struct RemoveMessageReaction: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the message belongs\n    public let chatId: Int64?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n    /// Type of the reaction to remove. The paid reaction can't be removed\n    public let reactionType: ReactionType?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        reactionType: ReactionType?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.reactionType = reactionType\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveMessageSenderBotVerification.swift",
    "content": "//\n//  RemoveMessageSenderBotVerification.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes the verification status of a user or a chat by an owned bot\npublic struct RemoveMessageSenderBotVerification: Codable, Equatable, Hashable {\n\n    /// Identifier of the owned bot, which verified the user or the chat\n    public let botUserId: Int64?\n\n    /// Identifier of the user or the supergroup or channel chat, which verification is removed\n    public let verifiedId: MessageSender?\n\n\n    public init(\n        botUserId: Int64?,\n        verifiedId: MessageSender?\n    ) {\n        self.botUserId = botUserId\n        self.verifiedId = verifiedId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveNotification.swift",
    "content": "//\n//  RemoveNotification.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes an active notification from notification list. Needs to be called only if the notification is removed by the current user\npublic struct RemoveNotification: Codable, Equatable, Hashable {\n\n    /// Identifier of notification group to which the notification belongs\n    public let notificationGroupId: Int?\n\n    /// Identifier of removed notification\n    public let notificationId: Int?\n\n\n    public init(\n        notificationGroupId: Int?,\n        notificationId: Int?\n    ) {\n        self.notificationGroupId = notificationGroupId\n        self.notificationId = notificationId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveNotificationGroup.swift",
    "content": "//\n//  RemoveNotificationGroup.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes a group of active notifications. Needs to be called only if the notification group is removed by the current user\npublic struct RemoveNotificationGroup: Codable, Equatable, Hashable {\n\n    /// The maximum identifier of removed notifications\n    public let maxNotificationId: Int?\n\n    /// Notification group identifier\n    public let notificationGroupId: Int?\n\n\n    public init(\n        maxNotificationId: Int?,\n        notificationGroupId: Int?\n    ) {\n        self.maxNotificationId = maxNotificationId\n        self.notificationGroupId = notificationGroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemovePendingLiveStoryReactions.swift",
    "content": "//\n//  RemovePendingLiveStoryReactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes all pending paid reactions in a live story group call\npublic struct RemovePendingLiveStoryReactions: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n\n    public init(groupCallId: Int?) {\n        self.groupCallId = groupCallId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemovePendingPaidMessageReactions.swift",
    "content": "//\n//  RemovePendingPaidMessageReactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes all pending paid reactions on a message\npublic struct RemovePendingPaidMessageReactions: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the message belongs\n    public let chatId: Int64?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveProfileAudio.swift",
    "content": "//\n//  RemoveProfileAudio.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes an audio file from the profile audio files of the current user\npublic struct RemoveProfileAudio: Codable, Equatable, Hashable {\n\n    /// Identifier of the audio file to be removed\n    public let fileId: Int?\n\n\n    public init(fileId: Int?) {\n        self.fileId = fileId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveProxy.swift",
    "content": "//\n//  RemoveProxy.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes a proxy server. Can be called before authorization\npublic struct RemoveProxy: Codable, Equatable, Hashable {\n\n    /// Proxy identifier\n    public let proxyId: Int?\n\n\n    public init(proxyId: Int?) {\n        self.proxyId = proxyId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveRecentHashtag.swift",
    "content": "//\n//  RemoveRecentHashtag.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes a hashtag from the list of recently used hashtags\npublic struct RemoveRecentHashtag: Codable, Equatable, Hashable {\n\n    /// Hashtag to delete\n    public let hashtag: String?\n\n\n    public init(hashtag: String?) {\n        self.hashtag = hashtag\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveRecentSticker.swift",
    "content": "//\n//  RemoveRecentSticker.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes a sticker from the list of recently used stickers\npublic struct RemoveRecentSticker: Codable, Equatable, Hashable {\n\n    /// Pass true to remove the sticker from the list of stickers recently attached to photo or video files; pass false to remove the sticker from the list of recently sent stickers\n    public let isAttached: Bool?\n\n    /// Sticker file to delete\n    public let sticker: InputFile?\n\n\n    public init(\n        isAttached: Bool?,\n        sticker: InputFile?\n    ) {\n        self.isAttached = isAttached\n        self.sticker = sticker\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveRecentlyFoundChat.swift",
    "content": "//\n//  RemoveRecentlyFoundChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes a chat from the list of recently found chats\npublic struct RemoveRecentlyFoundChat: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to be removed\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveSavedAnimation.swift",
    "content": "//\n//  RemoveSavedAnimation.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes an animation from the list of saved animations\npublic struct RemoveSavedAnimation: Codable, Equatable, Hashable {\n\n    /// Animation file to be removed\n    public let animation: InputFile?\n\n\n    public init(animation: InputFile?) {\n        self.animation = animation\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveSavedNotificationSound.swift",
    "content": "//\n//  RemoveSavedNotificationSound.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes a notification sound from the list of saved notification sounds\npublic struct RemoveSavedNotificationSound: Codable, Equatable, Hashable {\n\n    /// Identifier of the notification sound\n    public let notificationSoundId: TdInt64?\n\n\n    public init(notificationSoundId: TdInt64?) {\n        self.notificationSoundId = notificationSoundId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveSearchedForHashtag.swift",
    "content": "//\n//  RemoveSearchedForHashtag.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.30-4257a341\n//  https://github.com/tdlib/td/tree/4257a341\n//\n\nimport Foundation\n\n\n/// Removes a hashtag or a cashtag from the list of recently searched for hashtags or cashtags\npublic struct RemoveSearchedForHashtag: Codable, Equatable, Hashable {\n\n    /// Hashtag or cashtag to delete\n    public let hashtag: String?\n\n\n    public init(hashtag: String?) {\n        self.hashtag = hashtag\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveSearchedForTag.swift",
    "content": "//\n//  RemoveSearchedForTag.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes a hashtag or a cashtag from the list of recently searched for hashtags or cashtags\npublic struct RemoveSearchedForTag: Codable, Equatable, Hashable {\n\n    /// Hashtag or cashtag to delete\n    public let tag: String?\n\n\n    public init(tag: String?) {\n        self.tag = tag\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveStickerFromSet.swift",
    "content": "//\n//  RemoveStickerFromSet.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes a sticker from the set to which it belongs. The sticker set must be owned by the current user\npublic struct RemoveStickerFromSet: Codable, Equatable, Hashable {\n\n    /// Sticker to remove from the set\n    public let sticker: InputFile?\n\n\n    public init(sticker: InputFile?) {\n        self.sticker = sticker\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveStoryAlbumStories.swift",
    "content": "//\n//  RemoveStoryAlbumStories.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes stories from an album. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat. Returns the changed album\npublic struct RemoveStoryAlbumStories: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat that owns the stories\n    public let chatId: Int64?\n\n    /// Identifier of the story album\n    public let storyAlbumId: Int?\n\n    /// Identifier of the stories to remove from the album\n    public let storyIds: [Int]?\n\n\n    public init(\n        chatId: Int64?,\n        storyAlbumId: Int?,\n        storyIds: [Int]?\n    ) {\n        self.chatId = chatId\n        self.storyAlbumId = storyAlbumId\n        self.storyIds = storyIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveTextCompositionStyle.swift",
    "content": "//\n//  RemoveTextCompositionStyle.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes a custom text composition style from the list of used by the user styles. If the style was created by the current user, then it can only be deleted\npublic struct RemoveTextCompositionStyle: Codable, Equatable, Hashable {\n\n    /// Name of the style\n    public let name: String?\n\n\n    public init(name: String?) {\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RemoveTopChat.swift",
    "content": "//\n//  RemoveTopChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes a chat from the list of frequently used chats. Supported only if the chat info database is enabled\npublic struct RemoveTopChat: Codable, Equatable, Hashable {\n\n    /// Category of frequently used chats\n    public let category: TopChatCategory?\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(\n        category: TopChatCategory?,\n        chatId: Int64?\n    ) {\n        self.category = category\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReorderActiveUsernames.swift",
    "content": "//\n//  ReorderActiveUsernames.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes order of active usernames of the current user\npublic struct ReorderActiveUsernames: Codable, Equatable, Hashable {\n\n    /// The new order of active usernames. All currently active usernames must be specified\n    public let usernames: [String]?\n\n\n    public init(usernames: [String]?) {\n        self.usernames = usernames\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReorderBotActiveUsernames.swift",
    "content": "//\n//  ReorderBotActiveUsernames.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes order of active usernames of a bot. Can be called only if userTypeBot.can_be_edited == true\npublic struct ReorderBotActiveUsernames: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot\n    public let botUserId: Int64?\n\n    /// The new order of active usernames. All currently active usernames must be specified\n    public let usernames: [String]?\n\n\n    public init(\n        botUserId: Int64?,\n        usernames: [String]?\n    ) {\n        self.botUserId = botUserId\n        self.usernames = usernames\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReorderBotMediaPreviews.swift",
    "content": "//\n//  ReorderBotMediaPreviews.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes order of media previews in the list of media previews of a bot\npublic struct ReorderBotMediaPreviews: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot. The bot must be owned and must have the main Web App\n    public let botUserId: Int64?\n\n    /// File identifiers of the media in the new order\n    public let fileIds: [Int]?\n\n    /// Language code of the media previews to reorder\n    public let languageCode: String?\n\n\n    public init(\n        botUserId: Int64?,\n        fileIds: [Int]?,\n        languageCode: String?\n    ) {\n        self.botUserId = botUserId\n        self.fileIds = fileIds\n        self.languageCode = languageCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReorderChatFolders.swift",
    "content": "//\n//  ReorderChatFolders.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the order of chat folders\npublic struct ReorderChatFolders: Codable, Equatable, Hashable {\n\n    /// Identifiers of chat folders in the new correct order\n    public let chatFolderIds: [Int]?\n\n    /// Position of the main chat list among chat folders, 0-based. Can be non-zero only for Premium users\n    public let mainChatListPosition: Int?\n\n\n    public init(\n        chatFolderIds: [Int]?,\n        mainChatListPosition: Int?\n    ) {\n        self.chatFolderIds = chatFolderIds\n        self.mainChatListPosition = mainChatListPosition\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReorderGiftCollectionGifts.swift",
    "content": "//\n//  ReorderGiftCollectionGifts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes order of gifts in a collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat. Returns the changed collection\npublic struct ReorderGiftCollectionGifts: Codable, Equatable, Hashable {\n\n    /// Identifier of the gift collection\n    public let collectionId: Int?\n\n    /// Identifier of the user or the channel chat that owns the collection\n    public let ownerId: MessageSender?\n\n    /// Identifier of the gifts to move to the beginning of the collection. All other gifts are placed in the current order after the specified gifts\n    public let receivedGiftIds: [String]?\n\n\n    public init(\n        collectionId: Int?,\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?\n    ) {\n        self.collectionId = collectionId\n        self.ownerId = ownerId\n        self.receivedGiftIds = receivedGiftIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReorderGiftCollections.swift",
    "content": "//\n//  ReorderGiftCollections.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes order of gift collections. If the collections are owned by a channel chat, then requires can_post_messages administrator right in the channel chat\npublic struct ReorderGiftCollections: Codable, Equatable, Hashable {\n\n    /// New order of gift collections\n    public let collectionIds: [Int]?\n\n    /// Identifier of the user or the channel chat that owns the collection\n    public let ownerId: MessageSender?\n\n\n    public init(\n        collectionIds: [Int]?,\n        ownerId: MessageSender?\n    ) {\n        self.collectionIds = collectionIds\n        self.ownerId = ownerId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReorderInstalledStickerSets.swift",
    "content": "//\n//  ReorderInstalledStickerSets.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the order of installed sticker sets\npublic struct ReorderInstalledStickerSets: Codable, Equatable, Hashable {\n\n    /// Identifiers of installed sticker sets in the new correct order\n    public let stickerSetIds: [TdInt64]?\n\n    /// Type of the sticker sets to reorder\n    public let stickerType: StickerType?\n\n\n    public init(\n        stickerSetIds: [TdInt64]?,\n        stickerType: StickerType?\n    ) {\n        self.stickerSetIds = stickerSetIds\n        self.stickerType = stickerType\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReorderQuickReplyShortcuts.swift",
    "content": "//\n//  ReorderQuickReplyShortcuts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the order of quick reply shortcuts\npublic struct ReorderQuickReplyShortcuts: Codable, Equatable, Hashable {\n\n    /// The new order of quick reply shortcuts\n    public let shortcutIds: [Int]?\n\n\n    public init(shortcutIds: [Int]?) {\n        self.shortcutIds = shortcutIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReorderStoryAlbumStories.swift",
    "content": "//\n//  ReorderStoryAlbumStories.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes order of stories in an album. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat. Returns the changed album\npublic struct ReorderStoryAlbumStories: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat that owns the stories\n    public let chatId: Int64?\n\n    /// Identifier of the story album\n    public let storyAlbumId: Int?\n\n    /// Identifier of the stories to move to the beginning of the album. All other stories are placed in the current order after the specified stories\n    public let storyIds: [Int]?\n\n\n    public init(\n        chatId: Int64?,\n        storyAlbumId: Int?,\n        storyIds: [Int]?\n    ) {\n        self.chatId = chatId\n        self.storyAlbumId = storyAlbumId\n        self.storyIds = storyIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReorderStoryAlbums.swift",
    "content": "//\n//  ReorderStoryAlbums.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes order of story albums. If the albums are owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat\npublic struct ReorderStoryAlbums: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat that owns the stories\n    public let chatId: Int64?\n\n    /// New order of story albums\n    public let storyAlbumIds: [Int]?\n\n\n    public init(\n        chatId: Int64?,\n        storyAlbumIds: [Int]?\n    ) {\n        self.chatId = chatId\n        self.storyAlbumIds = storyAlbumIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReorderSupergroupActiveUsernames.swift",
    "content": "//\n//  ReorderSupergroupActiveUsernames.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes order of active usernames of a supergroup or channel, requires owner privileges in the supergroup or channel\npublic struct ReorderSupergroupActiveUsernames: Codable, Equatable, Hashable {\n\n    /// Identifier of the supergroup or channel\n    public let supergroupId: Int64?\n\n    /// The new order of active usernames. All currently active usernames must be specified\n    public let usernames: [String]?\n\n\n    public init(\n        supergroupId: Int64?,\n        usernames: [String]?\n    ) {\n        self.supergroupId = supergroupId\n        self.usernames = usernames\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReplaceLiveStoryRtmpUrl.swift",
    "content": "//\n//  ReplaceLiveStoryRtmpUrl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Replaces the current RTMP URL for streaming to a live story; requires owner privileges for channel chats\npublic struct ReplaceLiveStoryRtmpUrl: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReplacePrimaryChatInviteLink.swift",
    "content": "//\n//  ReplacePrimaryChatInviteLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Replaces current primary invite link for a chat with a new primary invite link. Available for basic groups, supergroups, and channels. Requires administrator privileges and can_invite_users right\npublic struct ReplacePrimaryChatInviteLink: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReplaceStickerInSet.swift",
    "content": "//\n//  ReplaceStickerInSet.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Replaces existing sticker in a set. The function is equivalent to removeStickerFromSet, then addStickerToSet, then setStickerPositionInSet\npublic struct ReplaceStickerInSet: Codable, Equatable, Hashable {\n\n    /// Sticker set name. The sticker set must be owned by the current user\n    public let name: String?\n\n    /// Sticker to add to the set\n    public let newSticker: InputSticker?\n\n    /// Sticker to remove from the set\n    public let oldSticker: InputFile?\n\n    /// Sticker set owner; ignored for regular users\n    public let userId: Int64?\n\n\n    public init(\n        name: String?,\n        newSticker: InputSticker?,\n        oldSticker: InputFile?,\n        userId: Int64?\n    ) {\n        self.name = name\n        self.newSticker = newSticker\n        self.oldSticker = oldSticker\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReplaceVideoChatRtmpUrl.swift",
    "content": "//\n//  ReplaceVideoChatRtmpUrl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Replaces the current RTMP URL for streaming to the video chat of a chat; requires owner privileges in the chat\npublic struct ReplaceVideoChatRtmpUrl: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReplyMarkup.swift",
    "content": "//\n//  ReplyMarkup.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a description of a custom keyboard and actions that can be done with it to quickly reply to bots\npublic indirect enum ReplyMarkup: Codable, Equatable, Hashable {\n\n    /// Instructs application to remove the keyboard once this message has been received. This kind of keyboard can't be received in an incoming message; instead, updateChatReplyMarkup with reply_markup_message == null will be sent\n    case replyMarkupRemoveKeyboard(ReplyMarkupRemoveKeyboard)\n\n    /// Instructs application to force a reply to this message\n    case replyMarkupForceReply(ReplyMarkupForceReply)\n\n    /// Contains a custom keyboard layout to quickly reply to bots\n    case replyMarkupShowKeyboard(ReplyMarkupShowKeyboard)\n\n    /// Contains an inline keyboard layout\n    case replyMarkupInlineKeyboard(ReplyMarkupInlineKeyboard)\n\n\n    private enum Kind: String, Codable {\n        case replyMarkupRemoveKeyboard\n        case replyMarkupForceReply\n        case replyMarkupShowKeyboard\n        case replyMarkupInlineKeyboard\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .replyMarkupRemoveKeyboard:\n            let value = try ReplyMarkupRemoveKeyboard(from: decoder)\n            self = .replyMarkupRemoveKeyboard(value)\n        case .replyMarkupForceReply:\n            let value = try ReplyMarkupForceReply(from: decoder)\n            self = .replyMarkupForceReply(value)\n        case .replyMarkupShowKeyboard:\n            let value = try ReplyMarkupShowKeyboard(from: decoder)\n            self = .replyMarkupShowKeyboard(value)\n        case .replyMarkupInlineKeyboard:\n            let value = try ReplyMarkupInlineKeyboard(from: decoder)\n            self = .replyMarkupInlineKeyboard(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .replyMarkupRemoveKeyboard(let value):\n            try container.encode(Kind.replyMarkupRemoveKeyboard, forKey: .type)\n            try value.encode(to: encoder)\n        case .replyMarkupForceReply(let value):\n            try container.encode(Kind.replyMarkupForceReply, forKey: .type)\n            try value.encode(to: encoder)\n        case .replyMarkupShowKeyboard(let value):\n            try container.encode(Kind.replyMarkupShowKeyboard, forKey: .type)\n            try value.encode(to: encoder)\n        case .replyMarkupInlineKeyboard(let value):\n            try container.encode(Kind.replyMarkupInlineKeyboard, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Instructs application to remove the keyboard once this message has been received. This kind of keyboard can't be received in an incoming message; instead, updateChatReplyMarkup with reply_markup_message == null will be sent\npublic struct ReplyMarkupRemoveKeyboard: Codable, Equatable, Hashable {\n\n    /// True, if the keyboard is removed only for the mentioned users or the target user of a reply\n    public let isPersonal: Bool\n\n\n    public init(isPersonal: Bool) {\n        self.isPersonal = isPersonal\n    }\n}\n\n/// Instructs application to force a reply to this message\npublic struct ReplyMarkupForceReply: Codable, Equatable, Hashable {\n\n    /// If non-empty, the placeholder to be shown in the input field when the reply is active; 0-64 characters\n    public let inputFieldPlaceholder: String\n\n    /// True, if a forced reply must automatically be shown to the current user. For outgoing messages, specify true to show the forced reply only for the mentioned users and for the target user of a reply\n    public let isPersonal: Bool\n\n\n    public init(\n        inputFieldPlaceholder: String,\n        isPersonal: Bool\n    ) {\n        self.inputFieldPlaceholder = inputFieldPlaceholder\n        self.isPersonal = isPersonal\n    }\n}\n\n/// Contains a custom keyboard layout to quickly reply to bots\npublic struct ReplyMarkupShowKeyboard: Codable, Equatable, Hashable {\n\n    /// If non-empty, the placeholder to be shown in the input field when the keyboard is active; 0-64 characters\n    public let inputFieldPlaceholder: String\n\n    /// True, if the keyboard is expected to always be shown when the ordinary keyboard is hidden\n    public let isPersistent: Bool\n\n    /// True, if the keyboard must automatically be shown to the current user. For outgoing messages, specify true to show the keyboard only for the mentioned users and for the target user of a reply\n    public let isPersonal: Bool\n\n    /// True, if the application needs to hide the keyboard after use\n    public let oneTime: Bool\n\n    /// True, if the application needs to resize the keyboard vertically\n    public let resizeKeyboard: Bool\n\n    /// A list of rows of bot keyboard buttons\n    public let rows: [[KeyboardButton]]\n\n\n    public init(\n        inputFieldPlaceholder: String,\n        isPersistent: Bool,\n        isPersonal: Bool,\n        oneTime: Bool,\n        resizeKeyboard: Bool,\n        rows: [[KeyboardButton]]\n    ) {\n        self.inputFieldPlaceholder = inputFieldPlaceholder\n        self.isPersistent = isPersistent\n        self.isPersonal = isPersonal\n        self.oneTime = oneTime\n        self.resizeKeyboard = resizeKeyboard\n        self.rows = rows\n    }\n}\n\n/// Contains an inline keyboard layout\npublic struct ReplyMarkupInlineKeyboard: Codable, Equatable, Hashable {\n\n    /// A list of rows of inline keyboard buttons\n    public let rows: [[InlineKeyboardButton]]\n\n\n    public init(rows: [[InlineKeyboardButton]]) {\n        self.rows = rows\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReportAuthenticationCodeMissing.swift",
    "content": "//\n//  ReportAuthenticationCodeMissing.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Reports that authentication code wasn't delivered via SMS; for official mobile applications only. Works only when the current authorization state is authorizationStateWaitCode\npublic struct ReportAuthenticationCodeMissing: Codable, Equatable, Hashable {\n\n    /// Current mobile network code\n    public let mobileNetworkCode: String?\n\n\n    public init(mobileNetworkCode: String?) {\n        self.mobileNetworkCode = mobileNetworkCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReportChat.swift",
    "content": "//\n//  ReportChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Reports a chat to the Telegram moderators. A chat can be reported only from the chat action bar, or if chat.can_be_reported\npublic struct ReportChat: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Identifiers of reported messages. Use messageProperties.can_report_chat to check whether the message can be reported\n    public let messageIds: [Int64]?\n\n    /// Option identifier chosen by the user; leave empty for the initial request\n    public let optionId: Data?\n\n    /// Additional report details if asked by the server; 0-1024 characters; leave empty for the initial request\n    public let text: String?\n\n\n    public init(\n        chatId: Int64?,\n        messageIds: [Int64]?,\n        optionId: Data?,\n        text: String?\n    ) {\n        self.chatId = chatId\n        self.messageIds = messageIds\n        self.optionId = optionId\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReportChatPhoto.swift",
    "content": "//\n//  ReportChatPhoto.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Reports a chat photo to the Telegram moderators. A chat photo can be reported only if chat.can_be_reported\npublic struct ReportChatPhoto: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Identifier of the photo to report. Only full photos from chatPhoto can be reported\n    public let fileId: Int?\n\n    /// The reason for reporting the chat photo\n    public let reason: ReportReason?\n\n    /// Additional report details; 0-1024 characters\n    public let text: String?\n\n\n    public init(\n        chatId: Int64?,\n        fileId: Int?,\n        reason: ReportReason?,\n        text: String?\n    ) {\n        self.chatId = chatId\n        self.fileId = fileId\n        self.reason = reason\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReportChatResult.swift",
    "content": "//\n//  ReportChatResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes result of chat report\npublic indirect enum ReportChatResult: Codable, Equatable, Hashable {\n\n    /// The chat was reported successfully\n    case reportChatResultOk\n\n    /// The user must choose an option to report the chat and repeat request with the chosen option\n    case reportChatResultOptionRequired(ReportChatResultOptionRequired)\n\n    /// The user must add additional text details to the report\n    case reportChatResultTextRequired(ReportChatResultTextRequired)\n\n    /// The user must choose messages to report and repeat the reportChat request with the chosen messages\n    case reportChatResultMessagesRequired\n\n\n    private enum Kind: String, Codable {\n        case reportChatResultOk\n        case reportChatResultOptionRequired\n        case reportChatResultTextRequired\n        case reportChatResultMessagesRequired\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .reportChatResultOk:\n            self = .reportChatResultOk\n        case .reportChatResultOptionRequired:\n            let value = try ReportChatResultOptionRequired(from: decoder)\n            self = .reportChatResultOptionRequired(value)\n        case .reportChatResultTextRequired:\n            let value = try ReportChatResultTextRequired(from: decoder)\n            self = .reportChatResultTextRequired(value)\n        case .reportChatResultMessagesRequired:\n            self = .reportChatResultMessagesRequired\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .reportChatResultOk:\n            try container.encode(Kind.reportChatResultOk, forKey: .type)\n        case .reportChatResultOptionRequired(let value):\n            try container.encode(Kind.reportChatResultOptionRequired, forKey: .type)\n            try value.encode(to: encoder)\n        case .reportChatResultTextRequired(let value):\n            try container.encode(Kind.reportChatResultTextRequired, forKey: .type)\n            try value.encode(to: encoder)\n        case .reportChatResultMessagesRequired:\n            try container.encode(Kind.reportChatResultMessagesRequired, forKey: .type)\n        }\n    }\n}\n\n/// The user must choose an option to report the chat and repeat request with the chosen option\npublic struct ReportChatResultOptionRequired: Codable, Equatable, Hashable {\n\n    /// List of available options\n    public let options: [ReportOption]\n\n    /// Title for the option choice\n    public let title: String\n\n\n    public init(\n        options: [ReportOption],\n        title: String\n    ) {\n        self.options = options\n        self.title = title\n    }\n}\n\n/// The user must add additional text details to the report\npublic struct ReportChatResultTextRequired: Codable, Equatable, Hashable {\n\n    /// True, if the user can skip text adding\n    public let isOptional: Bool\n\n    /// Option identifier for the next reportChat request\n    public let optionId: Data\n\n\n    public init(\n        isOptional: Bool,\n        optionId: Data\n    ) {\n        self.isOptional = isOptional\n        self.optionId = optionId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReportChatSponsoredMessage.swift",
    "content": "//\n//  ReportChatSponsoredMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Reports a sponsored message to Telegram moderators\npublic struct ReportChatSponsoredMessage: Codable, Equatable, Hashable {\n\n    /// Chat identifier of the sponsored message\n    public let chatId: Int64?\n\n    /// Identifier of the sponsored message\n    public let messageId: Int64?\n\n    /// Option identifier chosen by the user; leave empty for the initial request\n    public let optionId: Data?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        optionId: Data?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.optionId = optionId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReportChatSponsoredMessageOption.swift",
    "content": "//\n//  ReportChatSponsoredMessageOption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.36-91aa6c9e\n//  https://github.com/tdlib/td/tree/91aa6c9e\n//\n\nimport Foundation\n\n\n/// Describes an option to report a sponsored message\npublic struct ReportChatSponsoredMessageOption: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique identifier of the option\n    public let id: Data\n\n    /// Text of the option\n    public let text: String\n\n\n    public init(\n        id: Data,\n        text: String\n    ) {\n        self.id = id\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReportChatSponsoredMessageResult.swift",
    "content": "//\n//  ReportChatSponsoredMessageResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.46-b498497b\n//  https://github.com/tdlib/td/tree/b498497b\n//\n\nimport Foundation\n\n\n/// Describes result of sponsored message report\npublic indirect enum ReportChatSponsoredMessageResult: Codable, Equatable, Hashable {\n\n    /// The message was reported successfully\n    case reportChatSponsoredMessageResultOk\n\n    /// The sponsored message is too old or not found\n    case reportChatSponsoredMessageResultFailed\n\n    /// The user must choose an option to report the message and repeat request with the chosen option\n    case reportChatSponsoredMessageResultOptionRequired(ReportChatSponsoredMessageResultOptionRequired)\n\n    /// Sponsored messages were hidden for the user in all chats\n    case reportChatSponsoredMessageResultAdsHidden\n\n    /// The user asked to hide sponsored messages, but Telegram Premium is required for this\n    case reportChatSponsoredMessageResultPremiumRequired\n\n\n    private enum Kind: String, Codable {\n        case reportChatSponsoredMessageResultOk\n        case reportChatSponsoredMessageResultFailed\n        case reportChatSponsoredMessageResultOptionRequired\n        case reportChatSponsoredMessageResultAdsHidden\n        case reportChatSponsoredMessageResultPremiumRequired\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .reportChatSponsoredMessageResultOk:\n            self = .reportChatSponsoredMessageResultOk\n        case .reportChatSponsoredMessageResultFailed:\n            self = .reportChatSponsoredMessageResultFailed\n        case .reportChatSponsoredMessageResultOptionRequired:\n            let value = try ReportChatSponsoredMessageResultOptionRequired(from: decoder)\n            self = .reportChatSponsoredMessageResultOptionRequired(value)\n        case .reportChatSponsoredMessageResultAdsHidden:\n            self = .reportChatSponsoredMessageResultAdsHidden\n        case .reportChatSponsoredMessageResultPremiumRequired:\n            self = .reportChatSponsoredMessageResultPremiumRequired\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .reportChatSponsoredMessageResultOk:\n            try container.encode(Kind.reportChatSponsoredMessageResultOk, forKey: .type)\n        case .reportChatSponsoredMessageResultFailed:\n            try container.encode(Kind.reportChatSponsoredMessageResultFailed, forKey: .type)\n        case .reportChatSponsoredMessageResultOptionRequired(let value):\n            try container.encode(Kind.reportChatSponsoredMessageResultOptionRequired, forKey: .type)\n            try value.encode(to: encoder)\n        case .reportChatSponsoredMessageResultAdsHidden:\n            try container.encode(Kind.reportChatSponsoredMessageResultAdsHidden, forKey: .type)\n        case .reportChatSponsoredMessageResultPremiumRequired:\n            try container.encode(Kind.reportChatSponsoredMessageResultPremiumRequired, forKey: .type)\n        }\n    }\n}\n\n/// The user must choose an option to report the message and repeat request with the chosen option\npublic struct ReportChatSponsoredMessageResultOptionRequired: Codable, Equatable, Hashable {\n\n    /// List of available options\n    public let options: [ReportOption]\n\n    /// Title for the option choice\n    public let title: String\n\n\n    public init(\n        options: [ReportOption],\n        title: String\n    ) {\n        self.options = options\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReportMessageReactions.swift",
    "content": "//\n//  ReportMessageReactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Reports reactions set on a message to the Telegram moderators. Reactions on a message can be reported only if messageProperties.can_report_reactions\npublic struct ReportMessageReactions: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Message identifier\n    public let messageId: Int64?\n\n    /// Identifier of the sender, which added the reaction\n    public let senderId: MessageSender?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        senderId: MessageSender?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.senderId = senderId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReportOption.swift",
    "content": "//\n//  ReportOption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an option to report an entity to Telegram\npublic struct ReportOption: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique identifier of the option\n    public let id: Data\n\n    /// Text of the option\n    public let text: String\n\n\n    public init(\n        id: Data,\n        text: String\n    ) {\n        self.id = id\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReportPhoneNumberCodeMissing.swift",
    "content": "//\n//  ReportPhoneNumberCodeMissing.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Reports that authentication code wasn't delivered via SMS to the specified phone number; for official mobile applications only\npublic struct ReportPhoneNumberCodeMissing: Codable, Equatable, Hashable {\n\n    /// Current mobile network code\n    public let mobileNetworkCode: String?\n\n\n    public init(mobileNetworkCode: String?) {\n        self.mobileNetworkCode = mobileNetworkCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReportReason.swift",
    "content": "//\n//  ReportReason.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the reason why a chat is reported\npublic indirect enum ReportReason: Codable, Equatable, Hashable {\n\n    /// The chat contains spam messages\n    case reportReasonSpam\n\n    /// The chat promotes violence\n    case reportReasonViolence\n\n    /// The chat contains pornographic messages\n    case reportReasonPornography\n\n    /// The chat has child abuse related content\n    case reportReasonChildAbuse\n\n    /// The chat contains copyrighted content\n    case reportReasonCopyright\n\n    /// The location-based chat is unrelated to its stated location\n    case reportReasonUnrelatedLocation\n\n    /// The chat represents a fake account\n    case reportReasonFake\n\n    /// The chat has illegal drugs related content\n    case reportReasonIllegalDrugs\n\n    /// The chat contains messages with personal details\n    case reportReasonPersonalDetails\n\n    /// A custom reason provided by the user\n    case reportReasonCustom\n\n\n    private enum Kind: String, Codable {\n        case reportReasonSpam\n        case reportReasonViolence\n        case reportReasonPornography\n        case reportReasonChildAbuse\n        case reportReasonCopyright\n        case reportReasonUnrelatedLocation\n        case reportReasonFake\n        case reportReasonIllegalDrugs\n        case reportReasonPersonalDetails\n        case reportReasonCustom\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .reportReasonSpam:\n            self = .reportReasonSpam\n        case .reportReasonViolence:\n            self = .reportReasonViolence\n        case .reportReasonPornography:\n            self = .reportReasonPornography\n        case .reportReasonChildAbuse:\n            self = .reportReasonChildAbuse\n        case .reportReasonCopyright:\n            self = .reportReasonCopyright\n        case .reportReasonUnrelatedLocation:\n            self = .reportReasonUnrelatedLocation\n        case .reportReasonFake:\n            self = .reportReasonFake\n        case .reportReasonIllegalDrugs:\n            self = .reportReasonIllegalDrugs\n        case .reportReasonPersonalDetails:\n            self = .reportReasonPersonalDetails\n        case .reportReasonCustom:\n            self = .reportReasonCustom\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .reportReasonSpam:\n            try container.encode(Kind.reportReasonSpam, forKey: .type)\n        case .reportReasonViolence:\n            try container.encode(Kind.reportReasonViolence, forKey: .type)\n        case .reportReasonPornography:\n            try container.encode(Kind.reportReasonPornography, forKey: .type)\n        case .reportReasonChildAbuse:\n            try container.encode(Kind.reportReasonChildAbuse, forKey: .type)\n        case .reportReasonCopyright:\n            try container.encode(Kind.reportReasonCopyright, forKey: .type)\n        case .reportReasonUnrelatedLocation:\n            try container.encode(Kind.reportReasonUnrelatedLocation, forKey: .type)\n        case .reportReasonFake:\n            try container.encode(Kind.reportReasonFake, forKey: .type)\n        case .reportReasonIllegalDrugs:\n            try container.encode(Kind.reportReasonIllegalDrugs, forKey: .type)\n        case .reportReasonPersonalDetails:\n            try container.encode(Kind.reportReasonPersonalDetails, forKey: .type)\n        case .reportReasonCustom:\n            try container.encode(Kind.reportReasonCustom, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReportSponsoredChat.swift",
    "content": "//\n//  ReportSponsoredChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Reports a sponsored chat to Telegram moderators\npublic struct ReportSponsoredChat: Codable, Equatable, Hashable {\n\n    /// Option identifier chosen by the user; leave empty for the initial request\n    public let optionId: Data?\n\n    /// Unique identifier of the sponsored chat\n    public let sponsoredChatUniqueId: Int64?\n\n\n    public init(\n        optionId: Data?,\n        sponsoredChatUniqueId: Int64?\n    ) {\n        self.optionId = optionId\n        self.sponsoredChatUniqueId = sponsoredChatUniqueId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReportSponsoredResult.swift",
    "content": "//\n//  ReportSponsoredResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes result of sponsored message or chat report\npublic indirect enum ReportSponsoredResult: Codable, Equatable, Hashable {\n\n    /// The message was reported successfully\n    case reportSponsoredResultOk\n\n    /// The sponsored message is too old or not found\n    case reportSponsoredResultFailed\n\n    /// The user must choose an option to report the message and repeat request with the chosen option\n    case reportSponsoredResultOptionRequired(ReportSponsoredResultOptionRequired)\n\n    /// Sponsored messages were hidden for the user in all chats\n    case reportSponsoredResultAdsHidden\n\n    /// The user asked to hide sponsored messages, but Telegram Premium is required for this\n    case reportSponsoredResultPremiumRequired\n\n\n    private enum Kind: String, Codable {\n        case reportSponsoredResultOk\n        case reportSponsoredResultFailed\n        case reportSponsoredResultOptionRequired\n        case reportSponsoredResultAdsHidden\n        case reportSponsoredResultPremiumRequired\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .reportSponsoredResultOk:\n            self = .reportSponsoredResultOk\n        case .reportSponsoredResultFailed:\n            self = .reportSponsoredResultFailed\n        case .reportSponsoredResultOptionRequired:\n            let value = try ReportSponsoredResultOptionRequired(from: decoder)\n            self = .reportSponsoredResultOptionRequired(value)\n        case .reportSponsoredResultAdsHidden:\n            self = .reportSponsoredResultAdsHidden\n        case .reportSponsoredResultPremiumRequired:\n            self = .reportSponsoredResultPremiumRequired\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .reportSponsoredResultOk:\n            try container.encode(Kind.reportSponsoredResultOk, forKey: .type)\n        case .reportSponsoredResultFailed:\n            try container.encode(Kind.reportSponsoredResultFailed, forKey: .type)\n        case .reportSponsoredResultOptionRequired(let value):\n            try container.encode(Kind.reportSponsoredResultOptionRequired, forKey: .type)\n            try value.encode(to: encoder)\n        case .reportSponsoredResultAdsHidden:\n            try container.encode(Kind.reportSponsoredResultAdsHidden, forKey: .type)\n        case .reportSponsoredResultPremiumRequired:\n            try container.encode(Kind.reportSponsoredResultPremiumRequired, forKey: .type)\n        }\n    }\n}\n\n/// The user must choose an option to report the message and repeat request with the chosen option\npublic struct ReportSponsoredResultOptionRequired: Codable, Equatable, Hashable {\n\n    /// List of available options\n    public let options: [ReportOption]\n\n    /// Title for the option choice\n    public let title: String\n\n\n    public init(\n        options: [ReportOption],\n        title: String\n    ) {\n        self.options = options\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReportStory.swift",
    "content": "//\n//  ReportStory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Reports a story to the Telegram moderators\npublic struct ReportStory: Codable, Equatable, Hashable {\n\n    /// Option identifier chosen by the user; leave empty for the initial request\n    public let optionId: Data?\n\n    /// The identifier of the story to report\n    public let storyId: Int?\n\n    /// The identifier of the poster of the story to report\n    public let storyPosterChatId: Int64?\n\n    /// Additional report details; 0-1024 characters; leave empty for the initial request\n    public let text: String?\n\n\n    public init(\n        optionId: Data?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        text: String?\n    ) {\n        self.optionId = optionId\n        self.storyId = storyId\n        self.storyPosterChatId = storyPosterChatId\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReportStoryResult.swift",
    "content": "//\n//  ReportStoryResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes result of story report\npublic indirect enum ReportStoryResult: Codable, Equatable, Hashable {\n\n    /// The story was reported successfully\n    case reportStoryResultOk\n\n    /// The user must choose an option to report the story and repeat request with the chosen option\n    case reportStoryResultOptionRequired(ReportStoryResultOptionRequired)\n\n    /// The user must add additional text details to the report\n    case reportStoryResultTextRequired(ReportStoryResultTextRequired)\n\n\n    private enum Kind: String, Codable {\n        case reportStoryResultOk\n        case reportStoryResultOptionRequired\n        case reportStoryResultTextRequired\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .reportStoryResultOk:\n            self = .reportStoryResultOk\n        case .reportStoryResultOptionRequired:\n            let value = try ReportStoryResultOptionRequired(from: decoder)\n            self = .reportStoryResultOptionRequired(value)\n        case .reportStoryResultTextRequired:\n            let value = try ReportStoryResultTextRequired(from: decoder)\n            self = .reportStoryResultTextRequired(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .reportStoryResultOk:\n            try container.encode(Kind.reportStoryResultOk, forKey: .type)\n        case .reportStoryResultOptionRequired(let value):\n            try container.encode(Kind.reportStoryResultOptionRequired, forKey: .type)\n            try value.encode(to: encoder)\n        case .reportStoryResultTextRequired(let value):\n            try container.encode(Kind.reportStoryResultTextRequired, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The user must choose an option to report the story and repeat request with the chosen option\npublic struct ReportStoryResultOptionRequired: Codable, Equatable, Hashable {\n\n    /// List of available options\n    public let options: [ReportOption]\n\n    /// Title for the option choice\n    public let title: String\n\n\n    public init(\n        options: [ReportOption],\n        title: String\n    ) {\n        self.options = options\n        self.title = title\n    }\n}\n\n/// The user must add additional text details to the report\npublic struct ReportStoryResultTextRequired: Codable, Equatable, Hashable {\n\n    /// True, if the user can skip text adding\n    public let isOptional: Bool\n\n    /// Option identifier for the next reportStory request\n    public let optionId: Data\n\n\n    public init(\n        isOptional: Bool,\n        optionId: Data\n    ) {\n        self.isOptional = isOptional\n        self.optionId = optionId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReportSupergroupAntiSpamFalsePositive.swift",
    "content": "//\n//  ReportSupergroupAntiSpamFalsePositive.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Reports a false deletion of a message by aggressive anti-spam checks; requires administrator rights in the supergroup. Can be called only for messages from chatEventMessageDeleted with can_report_anti_spam_false_positive == true\npublic struct ReportSupergroupAntiSpamFalsePositive: Codable, Equatable, Hashable {\n\n    /// Identifier of the erroneously deleted message from chatEventMessageDeleted\n    public let messageId: Int64?\n\n    /// Supergroup identifier\n    public let supergroupId: Int64?\n\n\n    public init(\n        messageId: Int64?,\n        supergroupId: Int64?\n    ) {\n        self.messageId = messageId\n        self.supergroupId = supergroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReportSupergroupSpam.swift",
    "content": "//\n//  ReportSupergroupSpam.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Reports messages in a supergroup as spam; requires administrator rights in the supergroup\npublic struct ReportSupergroupSpam: Codable, Equatable, Hashable {\n\n    /// Identifiers of messages to report. Use messageProperties.can_report_supergroup_spam to check whether the message can be reported\n    public let messageIds: [Int64]?\n\n    /// Supergroup identifier\n    public let supergroupId: Int64?\n\n\n    public init(\n        messageIds: [Int64]?,\n        supergroupId: Int64?\n    ) {\n        self.messageIds = messageIds\n        self.supergroupId = supergroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReportVideoMessageAdvertisement.swift",
    "content": "//\n//  ReportVideoMessageAdvertisement.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Reports a video message advertisement to Telegram moderators\npublic struct ReportVideoMessageAdvertisement: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the advertisement\n    public let advertisementUniqueId: Int64?\n\n    /// Option identifier chosen by the user; leave empty for the initial request\n    public let optionId: Data?\n\n\n    public init(\n        advertisementUniqueId: Int64?,\n        optionId: Data?\n    ) {\n        self.advertisementUniqueId = advertisementUniqueId\n        self.optionId = optionId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RequestAuthenticationPasswordRecovery.swift",
    "content": "//\n//  RequestAuthenticationPasswordRecovery.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Requests to send a 2-step verification password recovery code to an email address that was previously set up. Works only when the current authorization state is authorizationStateWaitPassword\npublic struct RequestAuthenticationPasswordRecovery: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RequestPasswordRecovery.swift",
    "content": "//\n//  RequestPasswordRecovery.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Requests to send a 2-step verification password recovery code to an email address that was previously set up\npublic struct RequestPasswordRecovery: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RequestQrCodeAuthentication.swift",
    "content": "//\n//  RequestQrCodeAuthentication.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Requests QR code authentication by scanning a QR code on another logged in device. Works only when the current authorization state is authorizationStateWaitPhoneNumber, or if there is no pending authentication query and the current authorization state is authorizationStateWaitPremiumPurchase, authorizationStateWaitEmailAddress, authorizationStateWaitEmailCode, authorizationStateWaitCode, authorizationStateWaitRegistration, or authorizationStateWaitPassword\npublic struct RequestQrCodeAuthentication: Codable, Equatable, Hashable {\n\n    /// List of user identifiers of other users currently using the application\n    public let otherUserIds: [Int64]?\n\n\n    public init(otherUserIds: [Int64]?) {\n        self.otherUserIds = otherUserIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ResendAuthenticationCode.swift",
    "content": "//\n//  ResendAuthenticationCode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Resends an authentication code to the user. Works only when the current authorization state is authorizationStateWaitCode, the next_code_type of the result is not null and the server-specified timeout has passed, or when the current authorization state is authorizationStateWaitEmailCode\npublic struct ResendAuthenticationCode: Codable, Equatable, Hashable {\n\n    /// Reason of code resending; pass null if unknown\n    public let reason: ResendCodeReason?\n\n\n    public init(reason: ResendCodeReason?) {\n        self.reason = reason\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ResendCodeReason.swift",
    "content": "//\n//  ResendCodeReason.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the reason why a code needs to be re-sent\npublic indirect enum ResendCodeReason: Codable, Equatable, Hashable {\n\n    /// The user requested to resend the code\n    case resendCodeReasonUserRequest\n\n    /// The code is re-sent, because device verification has failed\n    case resendCodeReasonVerificationFailed(ResendCodeReasonVerificationFailed)\n\n\n    private enum Kind: String, Codable {\n        case resendCodeReasonUserRequest\n        case resendCodeReasonVerificationFailed\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .resendCodeReasonUserRequest:\n            self = .resendCodeReasonUserRequest\n        case .resendCodeReasonVerificationFailed:\n            let value = try ResendCodeReasonVerificationFailed(from: decoder)\n            self = .resendCodeReasonVerificationFailed(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .resendCodeReasonUserRequest:\n            try container.encode(Kind.resendCodeReasonUserRequest, forKey: .type)\n        case .resendCodeReasonVerificationFailed(let value):\n            try container.encode(Kind.resendCodeReasonVerificationFailed, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The code is re-sent, because device verification has failed\npublic struct ResendCodeReasonVerificationFailed: Codable, Equatable, Hashable {\n\n    /// Cause of the verification failure, for example, \"PLAY_SERVICES_NOT_AVAILABLE\", \"APNS_RECEIVE_TIMEOUT\", or \"APNS_INIT_FAILED\"\n    public let errorMessage: String\n\n\n    public init(errorMessage: String) {\n        self.errorMessage = errorMessage\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ResendEmailAddressVerificationCode.swift",
    "content": "//\n//  ResendEmailAddressVerificationCode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Resends the code to verify an email address to be added to a user's Telegram Passport\npublic struct ResendEmailAddressVerificationCode: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ResendLoginEmailAddressCode.swift",
    "content": "//\n//  ResendLoginEmailAddressCode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Resends the login email address verification code\npublic struct ResendLoginEmailAddressCode: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ResendMessages.swift",
    "content": "//\n//  ResendMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Resends messages which failed to send. Can be called only for messages for which messageSendingStateFailed.can_retry is true and after specified in messageSendingStateFailed.retry_after time passed. If a message is re-sent, the corresponding failed to send message is deleted. Returns the sent messages in the same order as the message identifiers passed in message_ids. If a message can't be re-sent, null will be returned instead of the message\npublic struct ResendMessages: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to send messages\n    public let chatId: Int64?\n\n    /// Identifiers of the messages to resend. Message identifiers must be in a strictly increasing order\n    public let messageIds: [Int64]?\n\n    /// The number of Telegram Stars the user agreed to pay to send the messages. Ignored if messageSendingStateFailed.required_paid_message_star_count == 0\n    public let paidMessageStarCount: Int64?\n\n    /// New manually chosen quote from the message to be replied; pass null if none. Ignored if more than one message is re-sent, or if messageSendingStateFailed.need_another_reply_quote == false\n    public let quote: InputTextQuote?\n\n\n    public init(\n        chatId: Int64?,\n        messageIds: [Int64]?,\n        paidMessageStarCount: Int64?,\n        quote: InputTextQuote?\n    ) {\n        self.chatId = chatId\n        self.messageIds = messageIds\n        self.paidMessageStarCount = paidMessageStarCount\n        self.quote = quote\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ResendPhoneNumberCode.swift",
    "content": "//\n//  ResendPhoneNumberCode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Resends the authentication code sent to a phone number. Works only if the previously received authenticationCodeInfo next_code_type was not null and the server-specified timeout has passed\npublic struct ResendPhoneNumberCode: Codable, Equatable, Hashable {\n\n    /// Reason of code resending; pass null if unknown\n    public let reason: ResendCodeReason?\n\n\n    public init(reason: ResendCodeReason?) {\n        self.reason = reason\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ResendRecoveryEmailAddressCode.swift",
    "content": "//\n//  ResendRecoveryEmailAddressCode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Resends the 2-step verification recovery email address verification code\npublic struct ResendRecoveryEmailAddressCode: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ResetAllNotificationSettings.swift",
    "content": "//\n//  ResetAllNotificationSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Resets all chat and scope notification settings to their default values. By default, all chats are unmuted and message previews are shown\npublic struct ResetAllNotificationSettings: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ResetAuthenticationEmailAddress.swift",
    "content": "//\n//  ResetAuthenticationEmailAddress.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Resets the login email address. May return an error with a message \"TASK_ALREADY_EXISTS\" if reset is still pending. Works only when the current authorization state is authorizationStateWaitEmailCode and authorization_state.can_reset_email_address == true\npublic struct ResetAuthenticationEmailAddress: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ResetInstalledBackgrounds.swift",
    "content": "//\n//  ResetInstalledBackgrounds.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Resets list of installed backgrounds to its default value\npublic struct ResetInstalledBackgrounds: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ResetNetworkStatistics.swift",
    "content": "//\n//  ResetNetworkStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Resets all network data usage statistics to zero. Can be called before authorization\npublic struct ResetNetworkStatistics: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ResetPassword.swift",
    "content": "//\n//  ResetPassword.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes 2-step verification password without previous password and access to recovery email address. The password can't be reset immediately and the request needs to be repeated after the specified time\npublic struct ResetPassword: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ResetPasswordResult.swift",
    "content": "//\n//  ResetPasswordResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents result of 2-step verification password reset\npublic indirect enum ResetPasswordResult: Codable, Equatable, Hashable {\n\n    /// The password was reset\n    case resetPasswordResultOk\n\n    /// The password reset request is pending\n    case resetPasswordResultPending(ResetPasswordResultPending)\n\n    /// The password reset request was declined\n    case resetPasswordResultDeclined(ResetPasswordResultDeclined)\n\n\n    private enum Kind: String, Codable {\n        case resetPasswordResultOk\n        case resetPasswordResultPending\n        case resetPasswordResultDeclined\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .resetPasswordResultOk:\n            self = .resetPasswordResultOk\n        case .resetPasswordResultPending:\n            let value = try ResetPasswordResultPending(from: decoder)\n            self = .resetPasswordResultPending(value)\n        case .resetPasswordResultDeclined:\n            let value = try ResetPasswordResultDeclined(from: decoder)\n            self = .resetPasswordResultDeclined(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .resetPasswordResultOk:\n            try container.encode(Kind.resetPasswordResultOk, forKey: .type)\n        case .resetPasswordResultPending(let value):\n            try container.encode(Kind.resetPasswordResultPending, forKey: .type)\n            try value.encode(to: encoder)\n        case .resetPasswordResultDeclined(let value):\n            try container.encode(Kind.resetPasswordResultDeclined, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The password reset request is pending\npublic struct ResetPasswordResultPending: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) after which the password can be reset immediately using resetPassword\n    public let pendingResetDate: Int\n\n\n    public init(pendingResetDate: Int) {\n        self.pendingResetDate = pendingResetDate\n    }\n}\n\n/// The password reset request was declined\npublic struct ResetPasswordResultDeclined: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the password reset can be retried\n    public let retryDate: Int\n\n\n    public init(retryDate: Int) {\n        self.retryDate = retryDate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RestrictionInfo.swift",
    "content": "//\n//  RestrictionInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about restrictions that must be applied to a chat or a message\npublic struct RestrictionInfo: Codable, Equatable, Hashable {\n\n    /// True, if media content of the messages must be hidden with 18+ spoiler. Use value of the option \"can_ignore_sensitive_content_restrictions\" to check whether the current user can ignore the restriction. If age verification parameters were received in updateAgeVerificationParameters, then the user must complete age verification to ignore the restriction. Set the option \"ignore_sensitive_content_restrictions\" to true if the user passes age verification\n    public let hasSensitiveContent: Bool\n\n    /// A human-readable description of the reason why access to the content must be restricted. If empty, then the content can be accessed, but may be covered by hidden with 18+ spoiler anyway\n    public let restrictionReason: String\n\n\n    public init(\n        hasSensitiveContent: Bool,\n        restrictionReason: String\n    ) {\n        self.hasSensitiveContent = hasSensitiveContent\n        self.restrictionReason = restrictionReason\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ReuseStarSubscription.swift",
    "content": "//\n//  ReuseStarSubscription.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Reuses an active Telegram Star subscription to a channel chat and joins the chat again\npublic struct ReuseStarSubscription: Codable, Equatable, Hashable {\n\n    /// Identifier of the subscription\n    public let subscriptionId: String?\n\n\n    public init(subscriptionId: String?) {\n        self.subscriptionId = subscriptionId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RevenueWithdrawalState.swift",
    "content": "//\n//  RevenueWithdrawalState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes state of a revenue withdrawal\npublic indirect enum RevenueWithdrawalState: Codable, Equatable, Hashable {\n\n    /// Withdrawal is pending\n    case revenueWithdrawalStatePending\n\n    /// Withdrawal succeeded\n    case revenueWithdrawalStateSucceeded(RevenueWithdrawalStateSucceeded)\n\n    /// Withdrawal failed\n    case revenueWithdrawalStateFailed\n\n\n    private enum Kind: String, Codable {\n        case revenueWithdrawalStatePending\n        case revenueWithdrawalStateSucceeded\n        case revenueWithdrawalStateFailed\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .revenueWithdrawalStatePending:\n            self = .revenueWithdrawalStatePending\n        case .revenueWithdrawalStateSucceeded:\n            let value = try RevenueWithdrawalStateSucceeded(from: decoder)\n            self = .revenueWithdrawalStateSucceeded(value)\n        case .revenueWithdrawalStateFailed:\n            self = .revenueWithdrawalStateFailed\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .revenueWithdrawalStatePending:\n            try container.encode(Kind.revenueWithdrawalStatePending, forKey: .type)\n        case .revenueWithdrawalStateSucceeded(let value):\n            try container.encode(Kind.revenueWithdrawalStateSucceeded, forKey: .type)\n            try value.encode(to: encoder)\n        case .revenueWithdrawalStateFailed:\n            try container.encode(Kind.revenueWithdrawalStateFailed, forKey: .type)\n        }\n    }\n}\n\n/// Withdrawal succeeded\npublic struct RevenueWithdrawalStateSucceeded: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the withdrawal was completed\n    public let date: Int\n\n    /// The URL where the withdrawal transaction can be viewed\n    public let url: String\n\n\n    public init(\n        date: Int,\n        url: String\n    ) {\n        self.date = date\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RevokeChatInviteLink.swift",
    "content": "//\n//  RevokeChatInviteLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Revokes invite link for a chat. Available for basic groups, supergroups, and channels. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links. If a primary link is revoked, then additionally to the revoked link returns new primary link\npublic struct RevokeChatInviteLink: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Invite link to be revoked\n    public let inviteLink: String?\n\n\n    public init(\n        chatId: Int64?,\n        inviteLink: String?\n    ) {\n        self.chatId = chatId\n        self.inviteLink = inviteLink\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RevokeGroupCallInviteLink.swift",
    "content": "//\n//  RevokeGroupCallInviteLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Revokes invite link for a group call. Requires groupCall.can_be_managed right for video chats or groupCall.is_owned otherwise\npublic struct RevokeGroupCallInviteLink: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n\n    public init(groupCallId: Int?) {\n        self.groupCallId = groupCallId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RichText.swift",
    "content": "//\n//  RichText.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a formatted text object\n/// This Swift enum is recursive.\npublic indirect enum RichText: Codable, Equatable, Hashable {\n\n    /// A plain text\n    case richTextPlain(RichTextPlain)\n\n    /// A bold rich text\n    case richTextBold(RichTextBold)\n\n    /// An italicized rich text\n    case richTextItalic(RichTextItalic)\n\n    /// An underlined rich text\n    case richTextUnderline(RichTextUnderline)\n\n    /// A strikethrough rich text\n    case richTextStrikethrough(RichTextStrikethrough)\n\n    /// A fixed-width rich text\n    case richTextFixed(RichTextFixed)\n\n    /// A rich text URL link\n    case richTextUrl(RichTextUrl)\n\n    /// A rich text email link\n    case richTextEmailAddress(RichTextEmailAddress)\n\n    /// A subscript rich text\n    case richTextSubscript(RichTextSubscript)\n\n    /// A superscript rich text\n    case richTextSuperscript(RichTextSuperscript)\n\n    /// A marked rich text\n    case richTextMarked(RichTextMarked)\n\n    /// A rich text phone number\n    case richTextPhoneNumber(RichTextPhoneNumber)\n\n    /// A small image inside the text\n    case richTextIcon(RichTextIcon)\n\n    /// A reference to a richTexts object on the same page\n    case richTextReference(RichTextReference)\n\n    /// An anchor\n    case richTextAnchor(RichTextAnchor)\n\n    /// A link to an anchor on the same page\n    case richTextAnchorLink(RichTextAnchorLink)\n\n    /// A concatenation of rich texts\n    case richTexts(RichTexts)\n\n\n    private enum Kind: String, Codable {\n        case richTextPlain\n        case richTextBold\n        case richTextItalic\n        case richTextUnderline\n        case richTextStrikethrough\n        case richTextFixed\n        case richTextUrl\n        case richTextEmailAddress\n        case richTextSubscript\n        case richTextSuperscript\n        case richTextMarked\n        case richTextPhoneNumber\n        case richTextIcon\n        case richTextReference\n        case richTextAnchor\n        case richTextAnchorLink\n        case richTexts\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .richTextPlain:\n            let value = try RichTextPlain(from: decoder)\n            self = .richTextPlain(value)\n        case .richTextBold:\n            let value = try RichTextBold(from: decoder)\n            self = .richTextBold(value)\n        case .richTextItalic:\n            let value = try RichTextItalic(from: decoder)\n            self = .richTextItalic(value)\n        case .richTextUnderline:\n            let value = try RichTextUnderline(from: decoder)\n            self = .richTextUnderline(value)\n        case .richTextStrikethrough:\n            let value = try RichTextStrikethrough(from: decoder)\n            self = .richTextStrikethrough(value)\n        case .richTextFixed:\n            let value = try RichTextFixed(from: decoder)\n            self = .richTextFixed(value)\n        case .richTextUrl:\n            let value = try RichTextUrl(from: decoder)\n            self = .richTextUrl(value)\n        case .richTextEmailAddress:\n            let value = try RichTextEmailAddress(from: decoder)\n            self = .richTextEmailAddress(value)\n        case .richTextSubscript:\n            let value = try RichTextSubscript(from: decoder)\n            self = .richTextSubscript(value)\n        case .richTextSuperscript:\n            let value = try RichTextSuperscript(from: decoder)\n            self = .richTextSuperscript(value)\n        case .richTextMarked:\n            let value = try RichTextMarked(from: decoder)\n            self = .richTextMarked(value)\n        case .richTextPhoneNumber:\n            let value = try RichTextPhoneNumber(from: decoder)\n            self = .richTextPhoneNumber(value)\n        case .richTextIcon:\n            let value = try RichTextIcon(from: decoder)\n            self = .richTextIcon(value)\n        case .richTextReference:\n            let value = try RichTextReference(from: decoder)\n            self = .richTextReference(value)\n        case .richTextAnchor:\n            let value = try RichTextAnchor(from: decoder)\n            self = .richTextAnchor(value)\n        case .richTextAnchorLink:\n            let value = try RichTextAnchorLink(from: decoder)\n            self = .richTextAnchorLink(value)\n        case .richTexts:\n            let value = try RichTexts(from: decoder)\n            self = .richTexts(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .richTextPlain(let value):\n            try container.encode(Kind.richTextPlain, forKey: .type)\n            try value.encode(to: encoder)\n        case .richTextBold(let value):\n            try container.encode(Kind.richTextBold, forKey: .type)\n            try value.encode(to: encoder)\n        case .richTextItalic(let value):\n            try container.encode(Kind.richTextItalic, forKey: .type)\n            try value.encode(to: encoder)\n        case .richTextUnderline(let value):\n            try container.encode(Kind.richTextUnderline, forKey: .type)\n            try value.encode(to: encoder)\n        case .richTextStrikethrough(let value):\n            try container.encode(Kind.richTextStrikethrough, forKey: .type)\n            try value.encode(to: encoder)\n        case .richTextFixed(let value):\n            try container.encode(Kind.richTextFixed, forKey: .type)\n            try value.encode(to: encoder)\n        case .richTextUrl(let value):\n            try container.encode(Kind.richTextUrl, forKey: .type)\n            try value.encode(to: encoder)\n        case .richTextEmailAddress(let value):\n            try container.encode(Kind.richTextEmailAddress, forKey: .type)\n            try value.encode(to: encoder)\n        case .richTextSubscript(let value):\n            try container.encode(Kind.richTextSubscript, forKey: .type)\n            try value.encode(to: encoder)\n        case .richTextSuperscript(let value):\n            try container.encode(Kind.richTextSuperscript, forKey: .type)\n            try value.encode(to: encoder)\n        case .richTextMarked(let value):\n            try container.encode(Kind.richTextMarked, forKey: .type)\n            try value.encode(to: encoder)\n        case .richTextPhoneNumber(let value):\n            try container.encode(Kind.richTextPhoneNumber, forKey: .type)\n            try value.encode(to: encoder)\n        case .richTextIcon(let value):\n            try container.encode(Kind.richTextIcon, forKey: .type)\n            try value.encode(to: encoder)\n        case .richTextReference(let value):\n            try container.encode(Kind.richTextReference, forKey: .type)\n            try value.encode(to: encoder)\n        case .richTextAnchor(let value):\n            try container.encode(Kind.richTextAnchor, forKey: .type)\n            try value.encode(to: encoder)\n        case .richTextAnchorLink(let value):\n            try container.encode(Kind.richTextAnchorLink, forKey: .type)\n            try value.encode(to: encoder)\n        case .richTexts(let value):\n            try container.encode(Kind.richTexts, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A plain text\npublic struct RichTextPlain: Codable, Equatable, Hashable {\n\n    /// Text\n    public let text: String\n\n\n    public init(text: String) {\n        self.text = text\n    }\n}\n\n/// A bold rich text\npublic struct RichTextBold: Codable, Equatable, Hashable {\n\n    /// Text\n    public let text: RichText\n\n\n    public init(text: RichText) {\n        self.text = text\n    }\n}\n\n/// An italicized rich text\npublic struct RichTextItalic: Codable, Equatable, Hashable {\n\n    /// Text\n    public let text: RichText\n\n\n    public init(text: RichText) {\n        self.text = text\n    }\n}\n\n/// An underlined rich text\npublic struct RichTextUnderline: Codable, Equatable, Hashable {\n\n    /// Text\n    public let text: RichText\n\n\n    public init(text: RichText) {\n        self.text = text\n    }\n}\n\n/// A strikethrough rich text\npublic struct RichTextStrikethrough: Codable, Equatable, Hashable {\n\n    /// Text\n    public let text: RichText\n\n\n    public init(text: RichText) {\n        self.text = text\n    }\n}\n\n/// A fixed-width rich text\npublic struct RichTextFixed: Codable, Equatable, Hashable {\n\n    /// Text\n    public let text: RichText\n\n\n    public init(text: RichText) {\n        self.text = text\n    }\n}\n\n/// A rich text URL link\npublic struct RichTextUrl: Codable, Equatable, Hashable {\n\n    /// True, if the URL has cached instant view server-side\n    public let isCached: Bool\n\n    /// Text\n    public let text: RichText\n\n    /// URL\n    public let url: String\n\n\n    public init(\n        isCached: Bool,\n        text: RichText,\n        url: String\n    ) {\n        self.isCached = isCached\n        self.text = text\n        self.url = url\n    }\n}\n\n/// A rich text email link\npublic struct RichTextEmailAddress: Codable, Equatable, Hashable {\n\n    /// Email address\n    public let emailAddress: String\n\n    /// Text\n    public let text: RichText\n\n\n    public init(\n        emailAddress: String,\n        text: RichText\n    ) {\n        self.emailAddress = emailAddress\n        self.text = text\n    }\n}\n\n/// A subscript rich text\npublic struct RichTextSubscript: Codable, Equatable, Hashable {\n\n    /// Text\n    public let text: RichText\n\n\n    public init(text: RichText) {\n        self.text = text\n    }\n}\n\n/// A superscript rich text\npublic struct RichTextSuperscript: Codable, Equatable, Hashable {\n\n    /// Text\n    public let text: RichText\n\n\n    public init(text: RichText) {\n        self.text = text\n    }\n}\n\n/// A marked rich text\npublic struct RichTextMarked: Codable, Equatable, Hashable {\n\n    /// Text\n    public let text: RichText\n\n\n    public init(text: RichText) {\n        self.text = text\n    }\n}\n\n/// A rich text phone number\npublic struct RichTextPhoneNumber: Codable, Equatable, Hashable {\n\n    /// Phone number\n    public let phoneNumber: String\n\n    /// Text\n    public let text: RichText\n\n\n    public init(\n        phoneNumber: String,\n        text: RichText\n    ) {\n        self.phoneNumber = phoneNumber\n        self.text = text\n    }\n}\n\n/// A small image inside the text\npublic struct RichTextIcon: Codable, Equatable, Hashable {\n\n    /// The image represented as a document. The image can be in GIF, JPEG or PNG format\n    public let document: Document\n\n    /// Height of a bounding box in which the image must be shown; 0 if unknown\n    public let height: Int\n\n    /// Width of a bounding box in which the image must be shown; 0 if unknown\n    public let width: Int\n\n\n    public init(\n        document: Document,\n        height: Int,\n        width: Int\n    ) {\n        self.document = document\n        self.height = height\n        self.width = width\n    }\n}\n\n/// A reference to a richTexts object on the same page\npublic struct RichTextReference: Codable, Equatable, Hashable {\n\n    /// The name of a richTextAnchor object, which is the first element of the target richTexts object\n    public let anchorName: String\n\n    /// The text\n    public let text: RichText\n\n    /// An HTTP URL, opening the reference\n    public let url: String\n\n\n    public init(\n        anchorName: String,\n        text: RichText,\n        url: String\n    ) {\n        self.anchorName = anchorName\n        self.text = text\n        self.url = url\n    }\n}\n\n/// An anchor\npublic struct RichTextAnchor: Codable, Equatable, Hashable {\n\n    /// Anchor name\n    public let name: String\n\n\n    public init(name: String) {\n        self.name = name\n    }\n}\n\n/// A link to an anchor on the same page\npublic struct RichTextAnchorLink: Codable, Equatable, Hashable {\n\n    /// The anchor name. If the name is empty, the link must bring back to top\n    public let anchorName: String\n\n    /// The link text\n    public let text: RichText\n\n    /// An HTTP URL, opening the anchor\n    public let url: String\n\n\n    public init(\n        anchorName: String,\n        text: RichText,\n        url: String\n    ) {\n        self.anchorName = anchorName\n        self.text = text\n        self.url = url\n    }\n}\n\n/// A concatenation of rich texts\npublic struct RichTexts: Codable, Equatable, Hashable {\n\n    /// Texts\n    public let texts: [RichText]\n\n\n    public init(texts: [RichText]) {\n        self.texts = texts\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/RtmpUrl.swift",
    "content": "//\n//  RtmpUrl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents an RTMP URL\npublic struct RtmpUrl: Codable, Equatable, Hashable {\n\n    /// Stream key\n    public let streamKey: String\n\n    /// The URL\n    public let url: String\n\n\n    public init(\n        streamKey: String,\n        url: String\n    ) {\n        self.streamKey = streamKey\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SaveApplicationLogEvent.swift",
    "content": "//\n//  SaveApplicationLogEvent.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Saves application log event on the server. Can be called before authorization\npublic struct SaveApplicationLogEvent: Codable, Equatable, Hashable {\n\n    /// Optional chat identifier, associated with the event\n    public let chatId: Int64?\n\n    /// The log event data\n    public let data: JsonValue?\n\n    /// Event type\n    public let type: String?\n\n\n    public init(\n        chatId: Int64?,\n        data: JsonValue?,\n        type: String?\n    ) {\n        self.chatId = chatId\n        self.data = data\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SavePreparedInlineMessage.swift",
    "content": "//\n//  SavePreparedInlineMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Saves an inline message to be sent by the given user; for bots only\npublic struct SavePreparedInlineMessage: Codable, Equatable, Hashable {\n\n    /// Types of the chats to which the message can be sent\n    public let chatTypes: TargetChatTypes?\n\n    /// The description of the message\n    public let result: InputInlineQueryResult?\n\n    /// Identifier of the user\n    public let userId: Int64?\n\n\n    public init(\n        chatTypes: TargetChatTypes?,\n        result: InputInlineQueryResult?,\n        userId: Int64?\n    ) {\n        self.chatTypes = chatTypes\n        self.result = result\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SavePreparedKeyboardButton.swift",
    "content": "//\n//  SavePreparedKeyboardButton.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Saves a keyboard button to be shown to the given user; for bots only\npublic struct SavePreparedKeyboardButton: Codable, Equatable, Hashable {\n\n    /// The button; must be of the type keyboardButtonTypeRequestUsers, keyboardButtonTypeRequestChat, or keyboardButtonTypeRequestManagedBot\n    public let button: KeyboardButton?\n\n    /// Identifier of the user\n    public let userId: Int64?\n\n\n    public init(\n        button: KeyboardButton?,\n        userId: Int64?\n    ) {\n        self.button = button\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SavedCredentials.swift",
    "content": "//\n//  SavedCredentials.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about saved payment credentials\npublic struct SavedCredentials: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique identifier of the saved credentials\n    public let id: String\n\n    /// Title of the saved credentials\n    public let title: String\n\n\n    public init(\n        id: String,\n        title: String\n    ) {\n        self.id = id\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SavedMessagesTag.swift",
    "content": "//\n//  SavedMessagesTag.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a tag used in Saved Messages or a Saved Messages topic\npublic struct SavedMessagesTag: Codable, Equatable, Hashable {\n\n    /// Number of times the tag was used; may be 0 if the tag has non-empty label\n    public let count: Int\n\n    /// Label of the tag; 0-12 characters. Always empty if the tag is returned for a Saved Messages topic\n    public let label: String\n\n    /// The tag\n    public let tag: ReactionType\n\n\n    public init(\n        count: Int,\n        label: String,\n        tag: ReactionType\n    ) {\n        self.count = count\n        self.label = label\n        self.tag = tag\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SavedMessagesTags.swift",
    "content": "//\n//  SavedMessagesTags.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of tags used in Saved Messages\npublic struct SavedMessagesTags: Codable, Equatable, Hashable {\n\n    /// List of tags\n    public let tags: [SavedMessagesTag]\n\n\n    public init(tags: [SavedMessagesTag]) {\n        self.tags = tags\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SavedMessagesTopic.swift",
    "content": "//\n//  SavedMessagesTopic.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a Saved Messages topic\npublic struct SavedMessagesTopic: Codable, Equatable, Hashable, Identifiable {\n\n    /// A draft of a message in the topic; may be null if none\n    public let draftMessage: DraftMessage?\n\n    /// Unique topic identifier\n    public let id: Int64\n\n    /// True, if the topic is pinned\n    public let isPinned: Bool\n\n    /// Last message in the topic; may be null if none or unknown\n    public let lastMessage: Message?\n\n    /// A parameter used to determine order of the topic in the topic list. Topics must be sorted by the order in descending order\n    public let order: TdInt64\n\n    /// Type of the topic\n    public let type: SavedMessagesTopicType\n\n\n    public init(\n        draftMessage: DraftMessage?,\n        id: Int64,\n        isPinned: Bool,\n        lastMessage: Message?,\n        order: TdInt64,\n        type: SavedMessagesTopicType\n    ) {\n        self.draftMessage = draftMessage\n        self.id = id\n        self.isPinned = isPinned\n        self.lastMessage = lastMessage\n        self.order = order\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SavedMessagesTopicType.swift",
    "content": "//\n//  SavedMessagesTopicType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of Saved Messages topic\npublic indirect enum SavedMessagesTopicType: Codable, Equatable, Hashable {\n\n    /// Topic containing messages sent by the current user of forwarded from an unknown chat\n    case savedMessagesTopicTypeMyNotes\n\n    /// Topic containing messages forwarded from a user with hidden privacy\n    case savedMessagesTopicTypeAuthorHidden\n\n    /// Topic containing messages forwarded from a specific chat\n    case savedMessagesTopicTypeSavedFromChat(SavedMessagesTopicTypeSavedFromChat)\n\n\n    private enum Kind: String, Codable {\n        case savedMessagesTopicTypeMyNotes\n        case savedMessagesTopicTypeAuthorHidden\n        case savedMessagesTopicTypeSavedFromChat\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .savedMessagesTopicTypeMyNotes:\n            self = .savedMessagesTopicTypeMyNotes\n        case .savedMessagesTopicTypeAuthorHidden:\n            self = .savedMessagesTopicTypeAuthorHidden\n        case .savedMessagesTopicTypeSavedFromChat:\n            let value = try SavedMessagesTopicTypeSavedFromChat(from: decoder)\n            self = .savedMessagesTopicTypeSavedFromChat(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .savedMessagesTopicTypeMyNotes:\n            try container.encode(Kind.savedMessagesTopicTypeMyNotes, forKey: .type)\n        case .savedMessagesTopicTypeAuthorHidden:\n            try container.encode(Kind.savedMessagesTopicTypeAuthorHidden, forKey: .type)\n        case .savedMessagesTopicTypeSavedFromChat(let value):\n            try container.encode(Kind.savedMessagesTopicTypeSavedFromChat, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Topic containing messages forwarded from a specific chat\npublic struct SavedMessagesTopicTypeSavedFromChat: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64\n\n\n    public init(chatId: Int64) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ScopeAutosaveSettings.swift",
    "content": "//\n//  ScopeAutosaveSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains autosave settings for an autosave settings scope\npublic struct ScopeAutosaveSettings: Codable, Equatable, Hashable {\n\n    /// True, if photo autosave is enabled\n    public let autosavePhotos: Bool\n\n    /// True, if video autosave is enabled\n    public let autosaveVideos: Bool\n\n    /// The maximum size of a video file to be autosaved, in bytes; 512 KB - 4000 MB\n    public let maxVideoFileSize: Int64\n\n\n    public init(\n        autosavePhotos: Bool,\n        autosaveVideos: Bool,\n        maxVideoFileSize: Int64\n    ) {\n        self.autosavePhotos = autosavePhotos\n        self.autosaveVideos = autosaveVideos\n        self.maxVideoFileSize = maxVideoFileSize\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ScopeNotificationSettings.swift",
    "content": "//\n//  ScopeNotificationSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about notification settings for several chats\npublic struct ScopeNotificationSettings: Codable, Equatable, Hashable {\n\n    /// True, if notifications for messages with mentions will be created as for an ordinary unread message\n    public let disableMentionNotifications: Bool\n\n    /// True, if notifications for incoming pinned messages will be created as for an ordinary unread message\n    public let disablePinnedMessageNotifications: Bool\n\n    /// Time left before notifications will be unmuted, in seconds\n    public let muteFor: Int\n\n    /// True, if story notifications are disabled\n    public let muteStories: Bool\n\n    /// True, if message content must be displayed in notifications\n    public let showPreview: Bool\n\n    /// True, if the chat that posted a story must be displayed in notifications\n    public let showStoryPoster: Bool\n\n    /// Identifier of the notification sound to be played; 0 if sound is disabled; pass -1 to use the app-dependent default sound\n    public let soundId: TdInt64\n\n    /// Identifier of the notification sound to be played for stories; 0 if sound is disabled; pass -1 to use the app-dependent default sound\n    public let storySoundId: TdInt64\n\n    /// If true, story notifications are received only for the first 5 chats from topChatCategoryUsers regardless of the value of mute_stories\n    public let useDefaultMuteStories: Bool\n\n\n    public init(\n        disableMentionNotifications: Bool,\n        disablePinnedMessageNotifications: Bool,\n        muteFor: Int,\n        muteStories: Bool,\n        showPreview: Bool,\n        showStoryPoster: Bool,\n        soundId: TdInt64,\n        storySoundId: TdInt64,\n        useDefaultMuteStories: Bool\n    ) {\n        self.disableMentionNotifications = disableMentionNotifications\n        self.disablePinnedMessageNotifications = disablePinnedMessageNotifications\n        self.muteFor = muteFor\n        self.muteStories = muteStories\n        self.showPreview = showPreview\n        self.showStoryPoster = showStoryPoster\n        self.soundId = soundId\n        self.storySoundId = storySoundId\n        self.useDefaultMuteStories = useDefaultMuteStories\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchAffiliatePrograms.swift",
    "content": "//\n//  SearchAffiliatePrograms.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches affiliate programs that can be connected to the given affiliate\npublic struct SearchAffiliatePrograms: Codable, Equatable, Hashable {\n\n    /// The affiliate for which affiliate programs are searched for\n    public let affiliate: AffiliateType?\n\n    /// The maximum number of affiliate programs to return\n    public let limit: Int?\n\n    /// Offset of the first affiliate program to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n    /// Sort order for the results\n    public let sortOrder: AffiliateProgramSortOrder?\n\n\n    public init(\n        affiliate: AffiliateType?,\n        limit: Int?,\n        offset: String?,\n        sortOrder: AffiliateProgramSortOrder?\n    ) {\n        self.affiliate = affiliate\n        self.limit = limit\n        self.offset = offset\n        self.sortOrder = sortOrder\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchBackground.swift",
    "content": "//\n//  SearchBackground.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for a background by its name\npublic struct SearchBackground: Codable, Equatable, Hashable {\n\n    /// The name of the background\n    public let name: String?\n\n\n    public init(name: String?) {\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchCallMessages.swift",
    "content": "//\n//  SearchCallMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for call and group call messages. Returns the results in reverse chronological order (i.e., in order of decreasing message_id). For optimal performance, the number of returned messages is chosen by TDLib\npublic struct SearchCallMessages: Codable, Equatable, Hashable {\n\n    /// The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n    /// Pass true to search only for messages with missed/declined calls\n    public let onlyMissed: Bool?\n\n\n    public init(\n        limit: Int?,\n        offset: String?,\n        onlyMissed: Bool?\n    ) {\n        self.limit = limit\n        self.offset = offset\n        self.onlyMissed = onlyMissed\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchChatAffiliateProgram.swift",
    "content": "//\n//  SearchChatAffiliateProgram.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches a chat with an affiliate program. Returns the chat if found and the program is active\npublic struct SearchChatAffiliateProgram: Codable, Equatable, Hashable {\n\n    /// The referrer from an internalLinkTypeChatAffiliateProgram link\n    public let referrer: String?\n\n    /// Username of the chat\n    public let username: String?\n\n\n    public init(\n        referrer: String?,\n        username: String?\n    ) {\n        self.referrer = referrer\n        self.username = username\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchChatMembers.swift",
    "content": "//\n//  SearchChatMembers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for a specified query in the first name, last name and usernames of the members of a specified chat. Requires administrator rights if the chat is a channel\npublic struct SearchChatMembers: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// The type of users to search for; pass null to search among all chat members\n    public let filter: ChatMembersFilter?\n\n    /// The maximum number of users to be returned; up to 200\n    public let limit: Int?\n\n    /// Query to search for\n    public let query: String?\n\n\n    public init(\n        chatId: Int64?,\n        filter: ChatMembersFilter?,\n        limit: Int?,\n        query: String?\n    ) {\n        self.chatId = chatId\n        self.filter = filter\n        self.limit = limit\n        self.query = query\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchChatMessages.swift",
    "content": "//\n//  SearchChatMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for messages with given words in the chat. Returns the results in reverse chronological order, i.e. in order of decreasing message_id. Cannot be used in secret chats with a non-empty query (searchSecretMessages must be used instead), or without an enabled message database. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit. A combination of query, sender_id, filter and topic_id search criteria is expected to be supported, only if it is required for Telegram official application implementation\npublic struct SearchChatMessages: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat in which to search messages\n    public let chatId: Int64?\n\n    /// Additional filter for messages to search; pass null to search for all messages\n    public let filter: SearchMessagesFilter?\n\n    /// Identifier of the message starting from which history must be fetched; use 0 to get results from the last message\n    public let fromMessageId: Int64?\n\n    /// The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Specify 0 to get results from exactly the message from_message_id or a negative number to get the specified message and some newer messages\n    public let offset: Int?\n\n    /// Query to search for\n    public let query: String?\n\n    /// Identifier of the sender of messages to search for; pass null to search for messages from any sender. Not supported in secret chats\n    public let senderId: MessageSender?\n\n    /// Pass topic identifier to search messages only in specific topic; pass null to search for messages in all topics\n    public let topicId: MessageTopic?\n\n\n    public init(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        query: String?,\n        senderId: MessageSender?,\n        topicId: MessageTopic?\n    ) {\n        self.chatId = chatId\n        self.filter = filter\n        self.fromMessageId = fromMessageId\n        self.limit = limit\n        self.offset = offset\n        self.query = query\n        self.senderId = senderId\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchChatRecentLocationMessages.swift",
    "content": "//\n//  SearchChatRecentLocationMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about the recent locations of chat members that were sent to the chat. Returns up to 1 location message per user\npublic struct SearchChatRecentLocationMessages: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// The maximum number of messages to be returned\n    public let limit: Int?\n\n\n    public init(\n        chatId: Int64?,\n        limit: Int?\n    ) {\n        self.chatId = chatId\n        self.limit = limit\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchChats.swift",
    "content": "//\n//  SearchChats.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for the specified query in the title and username of already known chats. This is an offline method. Returns chats in the order seen in the main chat list\npublic struct SearchChats: Codable, Equatable, Hashable {\n\n    /// The maximum number of chats to be returned\n    public let limit: Int?\n\n    /// Query to search for. If the query is empty, returns up to 50 recently found chats\n    public let query: String?\n\n\n    public init(\n        limit: Int?,\n        query: String?\n    ) {\n        self.limit = limit\n        self.query = query\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchChatsNearby.swift",
    "content": "//\n//  SearchChatsNearby.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.37-b39769be\n//  https://github.com/tdlib/td/tree/b39769be\n//\n\nimport Foundation\n\n\n/// Returns a list of users and location-based supergroups nearby. The method was disabled and returns an empty list of chats now\npublic struct SearchChatsNearby: Codable, Equatable, Hashable {\n\n    /// Current user location\n    public let location: Location?\n\n\n    public init(location: Location?) {\n        self.location = location\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchChatsOnServer.swift",
    "content": "//\n//  SearchChatsOnServer.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for the specified query in the title and username of already known chats via request to the server. Returns chats in the order seen in the main chat list\npublic struct SearchChatsOnServer: Codable, Equatable, Hashable {\n\n    /// The maximum number of chats to be returned\n    public let limit: Int?\n\n    /// Query to search for\n    public let query: String?\n\n\n    public init(\n        limit: Int?,\n        query: String?\n    ) {\n        self.limit = limit\n        self.query = query\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchContacts.swift",
    "content": "//\n//  SearchContacts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for the specified query in the first names, last names and usernames of the known user contacts\npublic struct SearchContacts: Codable, Equatable, Hashable {\n\n    /// The maximum number of users to be returned\n    public let limit: Int?\n\n    /// Query to search for; may be empty to return all contacts\n    public let query: String?\n\n\n    public init(\n        limit: Int?,\n        query: String?\n    ) {\n        self.limit = limit\n        self.query = query\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchEmojis.swift",
    "content": "//\n//  SearchEmojis.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for emojis by keywords. Supported only if the file database is enabled. Order of results is unspecified\npublic struct SearchEmojis: Codable, Equatable, Hashable {\n\n    /// List of possible IETF language tags of the user's input language; may be empty if unknown\n    public let inputLanguageCodes: [String]?\n\n    /// Text to search for\n    public let text: String?\n\n\n    public init(\n        inputLanguageCodes: [String]?,\n        text: String?\n    ) {\n        self.inputLanguageCodes = inputLanguageCodes\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchFileDownloads.swift",
    "content": "//\n//  SearchFileDownloads.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for files in the file download list or recently downloaded files from the list\npublic struct SearchFileDownloads: Codable, Equatable, Hashable {\n\n    /// The maximum number of files to be returned\n    public let limit: Int?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n    /// Pass true to search only for active downloads, including paused\n    public let onlyActive: Bool?\n\n    /// Pass true to search only for completed downloads\n    public let onlyCompleted: Bool?\n\n    /// Query to search for; may be empty to return all downloaded files\n    public let query: String?\n\n\n    public init(\n        limit: Int?,\n        offset: String?,\n        onlyActive: Bool?,\n        onlyCompleted: Bool?,\n        query: String?\n    ) {\n        self.limit = limit\n        self.offset = offset\n        self.onlyActive = onlyActive\n        self.onlyCompleted = onlyCompleted\n        self.query = query\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchGiftsForResale.swift",
    "content": "//\n//  SearchGiftsForResale.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns upgraded gifts that can be bought from other owners using sendResoldGift\npublic struct SearchGiftsForResale: Codable, Equatable, Hashable {\n\n    /// Attributes used to filter received gifts. If multiple attributes of the same type are specified, then all of them are allowed. If none attributes of specific type are specified, then all values for this attribute type are allowed\n    public let attributes: [UpgradedGiftAttributeId]?\n\n    /// Pass true to get only gifts suitable for crafting\n    public let forCrafting: Bool?\n\n    /// Pass true to get only gifts that can be bought using Telegram Stars\n    public let forStars: Bool?\n\n    /// Identifier of the regular gift that was upgraded to a unique gift\n    public let giftId: TdInt64?\n\n    /// The maximum number of gifts to return\n    public let limit: Int?\n\n    /// Offset of the first entry to return as received from the previous request with the same order and attributes; use empty string to get the first chunk of results\n    public let offset: String?\n\n    /// Order in which the results will be sorted\n    public let order: GiftForResaleOrder?\n\n\n    public init(\n        attributes: [UpgradedGiftAttributeId]?,\n        forCrafting: Bool?,\n        forStars: Bool?,\n        giftId: TdInt64?,\n        limit: Int?,\n        offset: String?,\n        order: GiftForResaleOrder?\n    ) {\n        self.attributes = attributes\n        self.forCrafting = forCrafting\n        self.forStars = forStars\n        self.giftId = giftId\n        self.limit = limit\n        self.offset = offset\n        self.order = order\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchHashtags.swift",
    "content": "//\n//  SearchHashtags.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for recently used hashtags by their prefix\npublic struct SearchHashtags: Codable, Equatable, Hashable {\n\n    /// The maximum number of hashtags to be returned\n    public let limit: Int?\n\n    /// Hashtag prefix to search for\n    public let prefix: String?\n\n\n    public init(\n        limit: Int?,\n        prefix: String?\n    ) {\n        self.limit = limit\n        self.prefix = prefix\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchInstalledStickerSets.swift",
    "content": "//\n//  SearchInstalledStickerSets.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for installed sticker sets by looking for specified query in their title and name\npublic struct SearchInstalledStickerSets: Codable, Equatable, Hashable {\n\n    /// The maximum number of sticker sets to return\n    public let limit: Int?\n\n    /// Query to search for\n    public let query: String?\n\n    /// Type of the sticker sets to search for\n    public let stickerType: StickerType?\n\n\n    public init(\n        limit: Int?,\n        query: String?,\n        stickerType: StickerType?\n    ) {\n        self.limit = limit\n        self.query = query\n        self.stickerType = stickerType\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchMessages.swift",
    "content": "//\n//  SearchMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for messages in all chats except secret chats. Returns the results in reverse chronological order (i.e., in order of decreasing (date, chat_id, message_id)). For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\npublic struct SearchMessages: Codable, Equatable, Hashable {\n\n    /// Chat list in which to search messages; pass null to search in all chats regardless of their chat list. Only Main and Archive chat lists are supported\n    public let chatList: ChatList?\n\n    /// Additional filter for type of the chat of the searched messages; pass null to search for messages in all chats\n    public let chatTypeFilter: SearchMessagesChatTypeFilter?\n\n    /// Additional filter for messages to search; pass null to search for all messages. Filters searchMessagesFilterMention, searchMessagesFilterUnreadMention, searchMessagesFilterUnreadReaction, searchMessagesFilterUnreadPollVote, searchMessagesFilterFailedToSend, and searchMessagesFilterPinned are unsupported in this function\n    public let filter: SearchMessagesFilter?\n\n    /// The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// If not 0, the maximum date of the messages to return\n    public let maxDate: Int?\n\n    /// If not 0, the minimum date of the messages to return\n    public let minDate: Int?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n    /// Query to search for\n    public let query: String?\n\n\n    public init(\n        chatList: ChatList?,\n        chatTypeFilter: SearchMessagesChatTypeFilter?,\n        filter: SearchMessagesFilter?,\n        limit: Int?,\n        maxDate: Int?,\n        minDate: Int?,\n        offset: String?,\n        query: String?\n    ) {\n        self.chatList = chatList\n        self.chatTypeFilter = chatTypeFilter\n        self.filter = filter\n        self.limit = limit\n        self.maxDate = maxDate\n        self.minDate = minDate\n        self.offset = offset\n        self.query = query\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchMessagesChatTypeFilter.swift",
    "content": "//\n//  SearchMessagesChatTypeFilter.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a filter for type of the chats in which to search messages\npublic indirect enum SearchMessagesChatTypeFilter: Codable, Equatable, Hashable {\n\n    /// Returns only messages in private chats\n    case searchMessagesChatTypeFilterPrivate\n\n    /// Returns only messages in basic group and supergroup chats\n    case searchMessagesChatTypeFilterGroup\n\n    /// Returns only messages in channel chats\n    case searchMessagesChatTypeFilterChannel\n\n\n    private enum Kind: String, Codable {\n        case searchMessagesChatTypeFilterPrivate\n        case searchMessagesChatTypeFilterGroup\n        case searchMessagesChatTypeFilterChannel\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .searchMessagesChatTypeFilterPrivate:\n            self = .searchMessagesChatTypeFilterPrivate\n        case .searchMessagesChatTypeFilterGroup:\n            self = .searchMessagesChatTypeFilterGroup\n        case .searchMessagesChatTypeFilterChannel:\n            self = .searchMessagesChatTypeFilterChannel\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .searchMessagesChatTypeFilterPrivate:\n            try container.encode(Kind.searchMessagesChatTypeFilterPrivate, forKey: .type)\n        case .searchMessagesChatTypeFilterGroup:\n            try container.encode(Kind.searchMessagesChatTypeFilterGroup, forKey: .type)\n        case .searchMessagesChatTypeFilterChannel:\n            try container.encode(Kind.searchMessagesChatTypeFilterChannel, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchMessagesFilter.swift",
    "content": "//\n//  SearchMessagesFilter.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a filter for message search results\npublic indirect enum SearchMessagesFilter: Codable, Equatable, Hashable {\n\n    /// Returns all found messages, no filter is applied\n    case searchMessagesFilterEmpty\n\n    /// Returns only animation messages\n    case searchMessagesFilterAnimation\n\n    /// Returns only audio messages\n    case searchMessagesFilterAudio\n\n    /// Returns only document messages\n    case searchMessagesFilterDocument\n\n    /// Returns only photo messages\n    case searchMessagesFilterPhoto\n\n    /// Returns only poll messages\n    case searchMessagesFilterPoll\n\n    /// Returns only video messages\n    case searchMessagesFilterVideo\n\n    /// Returns only voice note messages\n    case searchMessagesFilterVoiceNote\n\n    /// Returns only photo and video messages\n    case searchMessagesFilterPhotoAndVideo\n\n    /// Returns only messages containing URLs\n    case searchMessagesFilterUrl\n\n    /// Returns only messages containing chat photos\n    case searchMessagesFilterChatPhoto\n\n    /// Returns only video note messages\n    case searchMessagesFilterVideoNote\n\n    /// Returns only voice and video note messages\n    case searchMessagesFilterVoiceAndVideoNote\n\n    /// Returns only messages with mentions of the current user, or messages that are replies to their messages\n    case searchMessagesFilterMention\n\n    /// Returns only messages with unread mentions of the current user, or messages that are replies to their messages. When using this filter the results can't be additionally filtered by a query or by the sending user\n    case searchMessagesFilterUnreadMention\n\n    /// Returns only messages with unread reactions for the current user. When using this filter the results can't be additionally filtered by a query or by the sending user\n    case searchMessagesFilterUnreadReaction\n\n    /// Returns only messages with unread poll votes for the current user. When using this filter the results can't be additionally filtered by a query or by the sending user\n    case searchMessagesFilterUnreadPollVote\n\n    /// Returns only failed to send messages. This filter can be used only if the message database is used\n    case searchMessagesFilterFailedToSend\n\n    /// Returns only pinned messages\n    case searchMessagesFilterPinned\n\n\n    private enum Kind: String, Codable {\n        case searchMessagesFilterEmpty\n        case searchMessagesFilterAnimation\n        case searchMessagesFilterAudio\n        case searchMessagesFilterDocument\n        case searchMessagesFilterPhoto\n        case searchMessagesFilterPoll\n        case searchMessagesFilterVideo\n        case searchMessagesFilterVoiceNote\n        case searchMessagesFilterPhotoAndVideo\n        case searchMessagesFilterUrl\n        case searchMessagesFilterChatPhoto\n        case searchMessagesFilterVideoNote\n        case searchMessagesFilterVoiceAndVideoNote\n        case searchMessagesFilterMention\n        case searchMessagesFilterUnreadMention\n        case searchMessagesFilterUnreadReaction\n        case searchMessagesFilterUnreadPollVote\n        case searchMessagesFilterFailedToSend\n        case searchMessagesFilterPinned\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .searchMessagesFilterEmpty:\n            self = .searchMessagesFilterEmpty\n        case .searchMessagesFilterAnimation:\n            self = .searchMessagesFilterAnimation\n        case .searchMessagesFilterAudio:\n            self = .searchMessagesFilterAudio\n        case .searchMessagesFilterDocument:\n            self = .searchMessagesFilterDocument\n        case .searchMessagesFilterPhoto:\n            self = .searchMessagesFilterPhoto\n        case .searchMessagesFilterPoll:\n            self = .searchMessagesFilterPoll\n        case .searchMessagesFilterVideo:\n            self = .searchMessagesFilterVideo\n        case .searchMessagesFilterVoiceNote:\n            self = .searchMessagesFilterVoiceNote\n        case .searchMessagesFilterPhotoAndVideo:\n            self = .searchMessagesFilterPhotoAndVideo\n        case .searchMessagesFilterUrl:\n            self = .searchMessagesFilterUrl\n        case .searchMessagesFilterChatPhoto:\n            self = .searchMessagesFilterChatPhoto\n        case .searchMessagesFilterVideoNote:\n            self = .searchMessagesFilterVideoNote\n        case .searchMessagesFilterVoiceAndVideoNote:\n            self = .searchMessagesFilterVoiceAndVideoNote\n        case .searchMessagesFilterMention:\n            self = .searchMessagesFilterMention\n        case .searchMessagesFilterUnreadMention:\n            self = .searchMessagesFilterUnreadMention\n        case .searchMessagesFilterUnreadReaction:\n            self = .searchMessagesFilterUnreadReaction\n        case .searchMessagesFilterUnreadPollVote:\n            self = .searchMessagesFilterUnreadPollVote\n        case .searchMessagesFilterFailedToSend:\n            self = .searchMessagesFilterFailedToSend\n        case .searchMessagesFilterPinned:\n            self = .searchMessagesFilterPinned\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .searchMessagesFilterEmpty:\n            try container.encode(Kind.searchMessagesFilterEmpty, forKey: .type)\n        case .searchMessagesFilterAnimation:\n            try container.encode(Kind.searchMessagesFilterAnimation, forKey: .type)\n        case .searchMessagesFilterAudio:\n            try container.encode(Kind.searchMessagesFilterAudio, forKey: .type)\n        case .searchMessagesFilterDocument:\n            try container.encode(Kind.searchMessagesFilterDocument, forKey: .type)\n        case .searchMessagesFilterPhoto:\n            try container.encode(Kind.searchMessagesFilterPhoto, forKey: .type)\n        case .searchMessagesFilterPoll:\n            try container.encode(Kind.searchMessagesFilterPoll, forKey: .type)\n        case .searchMessagesFilterVideo:\n            try container.encode(Kind.searchMessagesFilterVideo, forKey: .type)\n        case .searchMessagesFilterVoiceNote:\n            try container.encode(Kind.searchMessagesFilterVoiceNote, forKey: .type)\n        case .searchMessagesFilterPhotoAndVideo:\n            try container.encode(Kind.searchMessagesFilterPhotoAndVideo, forKey: .type)\n        case .searchMessagesFilterUrl:\n            try container.encode(Kind.searchMessagesFilterUrl, forKey: .type)\n        case .searchMessagesFilterChatPhoto:\n            try container.encode(Kind.searchMessagesFilterChatPhoto, forKey: .type)\n        case .searchMessagesFilterVideoNote:\n            try container.encode(Kind.searchMessagesFilterVideoNote, forKey: .type)\n        case .searchMessagesFilterVoiceAndVideoNote:\n            try container.encode(Kind.searchMessagesFilterVoiceAndVideoNote, forKey: .type)\n        case .searchMessagesFilterMention:\n            try container.encode(Kind.searchMessagesFilterMention, forKey: .type)\n        case .searchMessagesFilterUnreadMention:\n            try container.encode(Kind.searchMessagesFilterUnreadMention, forKey: .type)\n        case .searchMessagesFilterUnreadReaction:\n            try container.encode(Kind.searchMessagesFilterUnreadReaction, forKey: .type)\n        case .searchMessagesFilterUnreadPollVote:\n            try container.encode(Kind.searchMessagesFilterUnreadPollVote, forKey: .type)\n        case .searchMessagesFilterFailedToSend:\n            try container.encode(Kind.searchMessagesFilterFailedToSend, forKey: .type)\n        case .searchMessagesFilterPinned:\n            try container.encode(Kind.searchMessagesFilterPinned, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchOutgoingDocumentMessages.swift",
    "content": "//\n//  SearchOutgoingDocumentMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for outgoing messages with content of the type messageDocument in all chats except secret chats. Returns the results in reverse chronological order\npublic struct SearchOutgoingDocumentMessages: Codable, Equatable, Hashable {\n\n    /// The maximum number of messages to be returned; up to 100\n    public let limit: Int?\n\n    /// Query to search for in document file name and message caption\n    public let query: String?\n\n\n    public init(\n        limit: Int?,\n        query: String?\n    ) {\n        self.limit = limit\n        self.query = query\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchPublicChat.swift",
    "content": "//\n//  SearchPublicChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches a public chat by its username. Currently, only private chats, supergroups and channels can be public. Returns the chat if found; otherwise, an error is returned\npublic struct SearchPublicChat: Codable, Equatable, Hashable {\n\n    /// Username to be resolved\n    public let username: String?\n\n\n    public init(username: String?) {\n        self.username = username\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchPublicChats.swift",
    "content": "//\n//  SearchPublicChats.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches public chats by looking for specified query in their username and title. Currently, only private chats, supergroups and channels can be public. Returns a meaningful number of results. Excludes private chats with contacts and chats from the chat list from the results\npublic struct SearchPublicChats: Codable, Equatable, Hashable {\n\n    /// Query to search for\n    public let query: String?\n\n\n    public init(query: String?) {\n        self.query = query\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchPublicHashtagMessages.swift",
    "content": "//\n//  SearchPublicHashtagMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.30-4257a341\n//  https://github.com/tdlib/td/tree/4257a341\n//\n\nimport Foundation\n\n\n/// Searches for public channel posts with the given hashtag or cashtag. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\npublic struct SearchPublicHashtagMessages: Codable, Equatable, Hashable {\n\n    /// Hashtag or cashtag to search for\n    public let hashtag: String?\n\n    /// The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n\n    public init(\n        hashtag: String?,\n        limit: Int?,\n        offset: String?\n    ) {\n        self.hashtag = hashtag\n        self.limit = limit\n        self.offset = offset\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchPublicMessagesByTag.swift",
    "content": "//\n//  SearchPublicMessagesByTag.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for public channel posts containing the given hashtag or cashtag. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\npublic struct SearchPublicMessagesByTag: Codable, Equatable, Hashable {\n\n    /// The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n    /// Hashtag or cashtag to search for\n    public let tag: String?\n\n\n    public init(\n        limit: Int?,\n        offset: String?,\n        tag: String?\n    ) {\n        self.limit = limit\n        self.offset = offset\n        self.tag = tag\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchPublicPosts.swift",
    "content": "//\n//  SearchPublicPosts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for public channel posts using the given query. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\npublic struct SearchPublicPosts: Codable, Equatable, Hashable {\n\n    /// The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n    /// Query to search for\n    public let query: String?\n\n    /// The Telegram Star amount the user agreed to pay for the search; pass 0 for free searches\n    public let starCount: Int64?\n\n\n    public init(\n        limit: Int?,\n        offset: String?,\n        query: String?,\n        starCount: Int64?\n    ) {\n        self.limit = limit\n        self.offset = offset\n        self.query = query\n        self.starCount = starCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchPublicStoriesByLocation.swift",
    "content": "//\n//  SearchPublicStoriesByLocation.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for public stories by the given address location. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\npublic struct SearchPublicStoriesByLocation: Codable, Equatable, Hashable {\n\n    /// Address of the location\n    public let address: LocationAddress?\n\n    /// The maximum number of stories to be returned; up to 100. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n\n    public init(\n        address: LocationAddress?,\n        limit: Int?,\n        offset: String?\n    ) {\n        self.address = address\n        self.limit = limit\n        self.offset = offset\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchPublicStoriesByTag.swift",
    "content": "//\n//  SearchPublicStoriesByTag.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for public stories containing the given hashtag or cashtag. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\npublic struct SearchPublicStoriesByTag: Codable, Equatable, Hashable {\n\n    /// The maximum number of stories to be returned; up to 100. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n    /// Identifier of the chat that posted the stories to search for; pass 0 to search stories in all chats\n    public let storyPosterChatId: Int64?\n\n    /// Hashtag or cashtag to search for\n    public let tag: String?\n\n\n    public init(\n        limit: Int?,\n        offset: String?,\n        storyPosterChatId: Int64?,\n        tag: String?\n    ) {\n        self.limit = limit\n        self.offset = offset\n        self.storyPosterChatId = storyPosterChatId\n        self.tag = tag\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchPublicStoriesByVenue.swift",
    "content": "//\n//  SearchPublicStoriesByVenue.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for public stories from the given venue. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\npublic struct SearchPublicStoriesByVenue: Codable, Equatable, Hashable {\n\n    /// The maximum number of stories to be returned; up to 100. For optimal performance, the number of returned stories is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n    /// Identifier of the venue in the provider database\n    public let venueId: String?\n\n    /// Provider of the venue\n    public let venueProvider: String?\n\n\n    public init(\n        limit: Int?,\n        offset: String?,\n        venueId: String?,\n        venueProvider: String?\n    ) {\n        self.limit = limit\n        self.offset = offset\n        self.venueId = venueId\n        self.venueProvider = venueProvider\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchQuote.swift",
    "content": "//\n//  SearchQuote.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for a given quote in a text. Returns found quote start position in UTF-16 code units. Returns a 404 error if the quote is not found. Can be called synchronously\npublic struct SearchQuote: Codable, Equatable, Hashable {\n\n    /// Quote to search for\n    public let quote: FormattedText?\n\n    /// Approximate quote position in UTF-16 code units\n    public let quotePosition: Int?\n\n    /// Text in which to search for the quote\n    public let text: FormattedText?\n\n\n    public init(\n        quote: FormattedText?,\n        quotePosition: Int?,\n        text: FormattedText?\n    ) {\n        self.quote = quote\n        self.quotePosition = quotePosition\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchRecentlyFoundChats.swift",
    "content": "//\n//  SearchRecentlyFoundChats.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for the specified query in the title and username of up to 50 recently found chats. This is an offline method\npublic struct SearchRecentlyFoundChats: Codable, Equatable, Hashable {\n\n    /// The maximum number of chats to be returned\n    public let limit: Int?\n\n    /// Query to search for\n    public let query: String?\n\n\n    public init(\n        limit: Int?,\n        query: String?\n    ) {\n        self.limit = limit\n        self.query = query\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchSavedMessages.swift",
    "content": "//\n//  SearchSavedMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for messages tagged by the given reaction and with the given words in the Saved Messages chat; for Telegram Premium users only. Returns the results in reverse chronological order, i.e. in order of decreasing message_id. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\npublic struct SearchSavedMessages: Codable, Equatable, Hashable {\n\n    /// Identifier of the message starting from which messages must be fetched; use 0 to get results from the last message\n    public let fromMessageId: Int64?\n\n    /// The maximum number of messages to be returned; must be positive and can't be greater than 100. If the offset is negative, then the limit must be greater than -offset. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Specify 0 to get results from exactly the message from_message_id or a negative number to get the specified message and some newer messages\n    public let offset: Int?\n\n    /// Query to search for\n    public let query: String?\n\n    /// If not 0, only messages in the specified Saved Messages topic will be considered; pass 0 to consider all messages\n    public let savedMessagesTopicId: Int64?\n\n    /// Tag to search for; pass null to return all suitable messages\n    public let tag: ReactionType?\n\n\n    public init(\n        fromMessageId: Int64?,\n        limit: Int?,\n        offset: Int?,\n        query: String?,\n        savedMessagesTopicId: Int64?,\n        tag: ReactionType?\n    ) {\n        self.fromMessageId = fromMessageId\n        self.limit = limit\n        self.offset = offset\n        self.query = query\n        self.savedMessagesTopicId = savedMessagesTopicId\n        self.tag = tag\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchSecretMessages.swift",
    "content": "//\n//  SearchSecretMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for messages in secret chats. Returns the results in reverse chronological order. For optimal performance, the number of returned messages is chosen by TDLib\npublic struct SearchSecretMessages: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat in which to search. Specify 0 to search in all secret chats\n    public let chatId: Int64?\n\n    /// Additional filter for messages to search; pass null to search for all messages\n    public let filter: SearchMessagesFilter?\n\n    /// The maximum number of messages to be returned; up to 100. For optimal performance, the number of returned messages is chosen by TDLib and can be smaller than the specified limit\n    public let limit: Int?\n\n    /// Offset of the first entry to return as received from the previous request; use empty string to get the first chunk of results\n    public let offset: String?\n\n    /// Query to search for. If empty, searchChatMessages must be used instead\n    public let query: String?\n\n\n    public init(\n        chatId: Int64?,\n        filter: SearchMessagesFilter?,\n        limit: Int?,\n        offset: String?,\n        query: String?\n    ) {\n        self.chatId = chatId\n        self.filter = filter\n        self.limit = limit\n        self.offset = offset\n        self.query = query\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchStickerSet.swift",
    "content": "//\n//  SearchStickerSet.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for a sticker set by its name\npublic struct SearchStickerSet: Codable, Equatable, Hashable {\n\n    /// Pass true to ignore local cache of sticker sets and always send a network request\n    public let ignoreCache: Bool?\n\n    /// Name of the sticker set\n    public let name: String?\n\n\n    public init(\n        ignoreCache: Bool?,\n        name: String?\n    ) {\n        self.ignoreCache = ignoreCache\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchStickerSets.swift",
    "content": "//\n//  SearchStickerSets.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for sticker sets by looking for specified query in their title and name. Excludes installed sticker sets from the results\npublic struct SearchStickerSets: Codable, Equatable, Hashable {\n\n    /// Query to search for\n    public let query: String?\n\n    /// Type of the sticker sets to return\n    public let stickerType: StickerType?\n\n\n    public init(\n        query: String?,\n        stickerType: StickerType?\n    ) {\n        self.query = query\n        self.stickerType = stickerType\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchStickers.swift",
    "content": "//\n//  SearchStickers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches for stickers from public sticker sets that correspond to any of the given emoji\npublic struct SearchStickers: Codable, Equatable, Hashable {\n\n    /// Space-separated list of emojis to search for\n    public let emojis: String?\n\n    /// List of possible IETF language tags of the user's input language; may be empty if unknown\n    public let inputLanguageCodes: [String]?\n\n    /// The maximum number of stickers to be returned; 0-100\n    public let limit: Int?\n\n    /// The offset from which to return the stickers; must be non-negative\n    public let offset: Int?\n\n    /// Query to search for; may be empty to search for emoji only\n    public let query: String?\n\n    /// Type of the stickers to return\n    public let stickerType: StickerType?\n\n\n    public init(\n        emojis: String?,\n        inputLanguageCodes: [String]?,\n        limit: Int?,\n        offset: Int?,\n        query: String?,\n        stickerType: StickerType?\n    ) {\n        self.emojis = emojis\n        self.inputLanguageCodes = inputLanguageCodes\n        self.limit = limit\n        self.offset = offset\n        self.query = query\n        self.stickerType = stickerType\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchStringsByPrefix.swift",
    "content": "//\n//  SearchStringsByPrefix.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches specified query by word prefixes in the provided strings. Returns 0-based positions of strings that matched. Can be called synchronously\npublic struct SearchStringsByPrefix: Codable, Equatable, Hashable {\n\n    /// The maximum number of objects to return\n    public let limit: Int?\n\n    /// Query to search for\n    public let query: String?\n\n    /// Pass true to receive no results for an empty query\n    public let returnNoneForEmptyQuery: Bool?\n\n    /// The strings to search in for the query\n    public let strings: [String]?\n\n\n    public init(\n        limit: Int?,\n        query: String?,\n        returnNoneForEmptyQuery: Bool?,\n        strings: [String]?\n    ) {\n        self.limit = limit\n        self.query = query\n        self.returnNoneForEmptyQuery = returnNoneForEmptyQuery\n        self.strings = strings\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchTextCompositionStyle.swift",
    "content": "//\n//  SearchTextCompositionStyle.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches a custom text composition style by its name\npublic struct SearchTextCompositionStyle: Codable, Equatable, Hashable {\n\n    /// Name of the style\n    public let name: String?\n\n\n    public init(name: String?) {\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchUserByPhoneNumber.swift",
    "content": "//\n//  SearchUserByPhoneNumber.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches a user by their phone number. Returns a 404 error if the user can't be found\npublic struct SearchUserByPhoneNumber: Codable, Equatable, Hashable {\n\n    /// Pass true to get only locally available information without sending network requests\n    public let onlyLocal: Bool?\n\n    /// Phone number to search for\n    public let phoneNumber: String?\n\n\n    public init(\n        onlyLocal: Bool?,\n        phoneNumber: String?\n    ) {\n        self.onlyLocal = onlyLocal\n        self.phoneNumber = phoneNumber\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchUserByToken.swift",
    "content": "//\n//  SearchUserByToken.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Searches a user by a token from the user's link\npublic struct SearchUserByToken: Codable, Equatable, Hashable {\n\n    /// Token to search for\n    public let token: String?\n\n\n    public init(token: String?) {\n        self.token = token\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SearchWebApp.swift",
    "content": "//\n//  SearchWebApp.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about a Web App by its short name. Returns a 404 error if the Web App is not found\npublic struct SearchWebApp: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot\n    public let botUserId: Int64?\n\n    /// Short name of the Web App\n    public let webAppShortName: String?\n\n\n    public init(\n        botUserId: Int64?,\n        webAppShortName: String?\n    ) {\n        self.botUserId = botUserId\n        self.webAppShortName = webAppShortName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Seconds.swift",
    "content": "//\n//  Seconds.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a value representing a number of seconds\npublic struct Seconds: Codable, Equatable, Hashable {\n\n    /// Number of seconds\n    public let seconds: Double\n\n\n    public init(seconds: Double) {\n        self.seconds = seconds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SecretChat.swift",
    "content": "//\n//  SecretChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a secret chat\npublic struct SecretChat: Codable, Equatable, Hashable, Identifiable {\n\n    /// Secret chat identifier\n    public let id: Int\n\n    /// True, if the chat was created by the current user; false otherwise\n    public let isOutbound: Bool\n\n    /// Hash of the currently used key for comparison with the hash of the chat partner's key. This is a string of 36 little-endian bytes, which must be split into groups of 2 bits, each denoting a pixel of one of 4 colors FFFFFF, D5E6F3, 2D5775, and 2F99C9. The pixels must be used to make a 12x12 square image filled from left to right, top to bottom. Alternatively, the first 32 bytes of the hash can be converted to the hexadecimal format and printed as 32 2-digit hex numbers\n    public let keyHash: Data\n\n    /// Secret chat layer; determines features supported by the chat partner's application. Nested text entities and underline and strikethrough entities are supported if the layer >= 101, files bigger than 2000MB are supported if the layer >= 143, spoiler and custom emoji text entities are supported if the layer >= 144\n    public let layer: Int\n\n    /// State of the secret chat\n    public let state: SecretChatState\n\n    /// Identifier of the chat partner\n    public let userId: Int64\n\n\n    public init(\n        id: Int,\n        isOutbound: Bool,\n        keyHash: Data,\n        layer: Int,\n        state: SecretChatState,\n        userId: Int64\n    ) {\n        self.id = id\n        self.isOutbound = isOutbound\n        self.keyHash = keyHash\n        self.layer = layer\n        self.state = state\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SecretChatState.swift",
    "content": "//\n//  SecretChatState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the current secret chat state\npublic indirect enum SecretChatState: Codable, Equatable, Hashable {\n\n    /// The secret chat is not yet created; waiting for the other user to get online\n    case secretChatStatePending\n\n    /// The secret chat is ready to use\n    case secretChatStateReady\n\n    /// The secret chat is closed\n    case secretChatStateClosed\n\n\n    private enum Kind: String, Codable {\n        case secretChatStatePending\n        case secretChatStateReady\n        case secretChatStateClosed\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .secretChatStatePending:\n            self = .secretChatStatePending\n        case .secretChatStateReady:\n            self = .secretChatStateReady\n        case .secretChatStateClosed:\n            self = .secretChatStateClosed\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .secretChatStatePending:\n            try container.encode(Kind.secretChatStatePending, forKey: .type)\n        case .secretChatStateReady:\n            try container.encode(Kind.secretChatStateReady, forKey: .type)\n        case .secretChatStateClosed:\n            try container.encode(Kind.secretChatStateClosed, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SellGift.swift",
    "content": "//\n//  SellGift.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sells a gift for Telegram Stars; requires owner privileges for gifts owned by a chat\npublic struct SellGift: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection on behalf of which to send the request; for bots only\n    public let businessConnectionId: String?\n\n    /// Identifier of the gift\n    public let receivedGiftId: String?\n\n\n    public init(\n        businessConnectionId: String?,\n        receivedGiftId: String?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.receivedGiftId = receivedGiftId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendAuthenticationFirebaseSms.swift",
    "content": "//\n//  SendAuthenticationFirebaseSms.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends Firebase Authentication SMS to the phone number of the user. Works only when the current authorization state is authorizationStateWaitCode and the server returned code of the type authenticationCodeTypeFirebaseAndroid or authenticationCodeTypeFirebaseIos\npublic struct SendAuthenticationFirebaseSms: Codable, Equatable, Hashable {\n\n    /// Play Integrity API or SafetyNet Attestation API token for the Android application, or secret from push notification for the iOS application\n    public let token: String?\n\n\n    public init(token: String?) {\n        self.token = token\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendBotStartMessage.swift",
    "content": "//\n//  SendBotStartMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Invites a bot to a chat (if it is not yet a member) and sends it the /start command; requires can_invite_users member right. Bots can't be invited to a private chat other than the chat with the bot. Bots can't be invited to channels (although they can be added as admins) and secret chats. Returns the sent message\npublic struct SendBotStartMessage: Codable, Equatable, Hashable {\n\n    /// Identifier of the bot\n    public let botUserId: Int64?\n\n    /// Identifier of the target chat\n    public let chatId: Int64?\n\n    /// A hidden parameter sent to the bot for deep linking purposes (https://core.telegram.org/bots#deep-linking)\n    public let parameter: String?\n\n\n    public init(\n        botUserId: Int64?,\n        chatId: Int64?,\n        parameter: String?\n    ) {\n        self.botUserId = botUserId\n        self.chatId = chatId\n        self.parameter = parameter\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendBusinessMessage.swift",
    "content": "//\n//  SendBusinessMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends a message on behalf of a business account; for bots only. Returns the message after it was sent\npublic struct SendBusinessMessage: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection on behalf of which to send the request\n    public let businessConnectionId: String?\n\n    /// Target chat\n    public let chatId: Int64?\n\n    /// Pass true to disable notification for the message\n    public let disableNotification: Bool?\n\n    /// Identifier of the effect to apply to the message\n    public let effectId: TdInt64?\n\n    /// The content of the message to be sent\n    public let inputMessageContent: InputMessageContent?\n\n    /// Pass true if the content of the message must be protected from forwarding and saving\n    public let protectContent: Bool?\n\n    /// Markup for replying to the message; pass null if none\n    public let replyMarkup: ReplyMarkup?\n\n    /// Information about the message to be replied; pass null if none\n    public let replyTo: InputMessageReplyTo?\n\n\n    public init(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        disableNotification: Bool?,\n        effectId: TdInt64?,\n        inputMessageContent: InputMessageContent?,\n        protectContent: Bool?,\n        replyMarkup: ReplyMarkup?,\n        replyTo: InputMessageReplyTo?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.chatId = chatId\n        self.disableNotification = disableNotification\n        self.effectId = effectId\n        self.inputMessageContent = inputMessageContent\n        self.protectContent = protectContent\n        self.replyMarkup = replyMarkup\n        self.replyTo = replyTo\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendBusinessMessageAlbum.swift",
    "content": "//\n//  SendBusinessMessageAlbum.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends 2-10 messages grouped together into an album on behalf of a business account; for bots only. Currently, only audio, document, photo and video messages can be grouped into an album. Documents and audio files can be only grouped in an album with messages of the same type. Returns sent messages\npublic struct SendBusinessMessageAlbum: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection on behalf of which to send the request\n    public let businessConnectionId: String?\n\n    /// Target chat\n    public let chatId: Int64?\n\n    /// Pass true to disable notification for the message\n    public let disableNotification: Bool?\n\n    /// Identifier of the effect to apply to the message\n    public let effectId: TdInt64?\n\n    /// Contents of messages to be sent. At most 10 messages can be added to an album. All messages must have the same value of show_caption_above_media\n    public let inputMessageContents: [InputMessageContent]?\n\n    /// Pass true if the content of the message must be protected from forwarding and saving\n    public let protectContent: Bool?\n\n    /// Information about the message to be replied; pass null if none\n    public let replyTo: InputMessageReplyTo?\n\n\n    public init(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        disableNotification: Bool?,\n        effectId: TdInt64?,\n        inputMessageContents: [InputMessageContent]?,\n        protectContent: Bool?,\n        replyTo: InputMessageReplyTo?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.chatId = chatId\n        self.disableNotification = disableNotification\n        self.effectId = effectId\n        self.inputMessageContents = inputMessageContents\n        self.protectContent = protectContent\n        self.replyTo = replyTo\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendCallDebugInformation.swift",
    "content": "//\n//  SendCallDebugInformation.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends debug information for a call to Telegram servers\npublic struct SendCallDebugInformation: Codable, Equatable, Hashable {\n\n    /// Call identifier\n    public let callId: InputCall?\n\n    /// Debug information in application-specific format\n    public let debugInformation: String?\n\n\n    public init(\n        callId: InputCall?,\n        debugInformation: String?\n    ) {\n        self.callId = callId\n        self.debugInformation = debugInformation\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendCallLog.swift",
    "content": "//\n//  SendCallLog.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends log file for a call to Telegram servers\npublic struct SendCallLog: Codable, Equatable, Hashable {\n\n    /// Call identifier\n    public let callId: InputCall?\n\n    /// Call log file. Only inputFileLocal and inputFileGenerated are supported\n    public let logFile: InputFile?\n\n\n    public init(\n        callId: InputCall?,\n        logFile: InputFile?\n    ) {\n        self.callId = callId\n        self.logFile = logFile\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendCallRating.swift",
    "content": "//\n//  SendCallRating.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends a call rating\npublic struct SendCallRating: Codable, Equatable, Hashable {\n\n    /// Call identifier\n    public let callId: InputCall?\n\n    /// An optional user comment if the rating is less than 5\n    public let comment: String?\n\n    /// List of the exact types of problems with the call, specified by the user\n    public let problems: [CallProblem]?\n\n    /// Call rating; 1-5\n    public let rating: Int?\n\n\n    public init(\n        callId: InputCall?,\n        comment: String?,\n        problems: [CallProblem]?,\n        rating: Int?\n    ) {\n        self.callId = callId\n        self.comment = comment\n        self.problems = problems\n        self.rating = rating\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendCallSignalingData.swift",
    "content": "//\n//  SendCallSignalingData.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends call signaling data\npublic struct SendCallSignalingData: Codable, Equatable, Hashable {\n\n    /// Call identifier\n    public let callId: Int?\n\n    /// The data\n    public let data: Data?\n\n\n    public init(\n        callId: Int?,\n        data: Data?\n    ) {\n        self.callId = callId\n        self.data = data\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendChatAction.swift",
    "content": "//\n//  SendChatAction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends a notification about user activity in a chat\npublic struct SendChatAction: Codable, Equatable, Hashable {\n\n    /// The action description; pass null to cancel the currently active action\n    public let action: ChatAction?\n\n    /// Unique identifier of business connection on behalf of which to send the request; for bots only\n    public let businessConnectionId: String?\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Identifier of the topic in which the action is performed; pass null if none\n    public let topicId: MessageTopic?\n\n\n    public init(\n        action: ChatAction?,\n        businessConnectionId: String?,\n        chatId: Int64?,\n        topicId: MessageTopic?\n    ) {\n        self.action = action\n        self.businessConnectionId = businessConnectionId\n        self.chatId = chatId\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendCustomRequest.swift",
    "content": "//\n//  SendCustomRequest.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends a custom request; for bots only\npublic struct SendCustomRequest: Codable, Equatable, Hashable {\n\n    /// The method name\n    public let method: String?\n\n    /// JSON-serialized method parameters\n    public let parameters: String?\n\n\n    public init(\n        method: String?,\n        parameters: String?\n    ) {\n        self.method = method\n        self.parameters = parameters\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendEmailAddressVerificationCode.swift",
    "content": "//\n//  SendEmailAddressVerificationCode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends a code to verify an email address to be added to a user's Telegram Passport\npublic struct SendEmailAddressVerificationCode: Codable, Equatable, Hashable {\n\n    /// Email address\n    public let emailAddress: String?\n\n\n    public init(emailAddress: String?) {\n        self.emailAddress = emailAddress\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendGift.swift",
    "content": "//\n//  SendGift.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends a gift to another user or channel chat. May return an error with a message \"STARGIFT_USAGE_LIMITED\" if the gift was sold out\npublic struct SendGift: Codable, Equatable, Hashable {\n\n    /// Identifier of the gift to send\n    public let giftId: TdInt64?\n\n    /// Pass true to show gift text and sender only to the gift receiver; otherwise, everyone will be able to see them\n    public let isPrivate: Bool?\n\n    /// Identifier of the user or the channel chat that will receive the gift; limited gifts can't be sent to channel chats\n    public let ownerId: MessageSender?\n\n    /// Pass true to additionally pay for the gift upgrade and allow the receiver to upgrade it for free\n    public let payForUpgrade: Bool?\n\n    /// Text to show along with the gift; 0-getOption(\"gift_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed. Must be empty if the receiver enabled paid messages\n    public let text: FormattedText?\n\n\n    public init(\n        giftId: TdInt64?,\n        isPrivate: Bool?,\n        ownerId: MessageSender?,\n        payForUpgrade: Bool?,\n        text: FormattedText?\n    ) {\n        self.giftId = giftId\n        self.isPrivate = isPrivate\n        self.ownerId = ownerId\n        self.payForUpgrade = payForUpgrade\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendGiftPurchaseOffer.swift",
    "content": "//\n//  SendGiftPurchaseOffer.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends an offer to purchase an upgraded gift\npublic struct SendGiftPurchaseOffer: Codable, Equatable, Hashable {\n\n    /// Duration of the offer, in seconds; must be one of 21600, 43200, 86400, 129600, 172800, or 259200. Can also be 120 if Telegram test environment is used\n    public let duration: Int?\n\n    /// Name of the upgraded gift\n    public let giftName: String?\n\n    /// Identifier of the user or the channel chat that currently owns the gift and will receive the offer\n    public let ownerId: MessageSender?\n\n    /// The number of Telegram Stars the user agreed to pay additionally for sending of the offer message to the current gift owner; pass userFullInfo.outgoing_paid_message_star_count for users and 0 otherwise\n    public let paidMessageStarCount: Int64?\n\n    /// The price that the user agreed to pay for the gift\n    public let price: GiftResalePrice?\n\n\n    public init(\n        duration: Int?,\n        giftName: String?,\n        ownerId: MessageSender?,\n        paidMessageStarCount: Int64?,\n        price: GiftResalePrice?\n    ) {\n        self.duration = duration\n        self.giftName = giftName\n        self.ownerId = ownerId\n        self.paidMessageStarCount = paidMessageStarCount\n        self.price = price\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendGroupCallMessage.swift",
    "content": "//\n//  SendGroupCallMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends a message to other participants of a group call. Requires groupCall.can_send_messages right\npublic struct SendGroupCallMessage: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// The number of Telegram Stars the user agreed to pay to send the message; for live stories only; 0-getOption(\"paid_group_call_message_star_count_max\"). Must be 0 for messages sent to live stories posted by the current user\n    public let paidMessageStarCount: Int64?\n\n    /// Text of the message to send; 1-getOption(\"group_call_message_text_length_max\") characters for non-live-stories; see updateGroupCallMessageLevels for live story restrictions, which depends on paid_message_star_count. Can't contain line feeds for live stories. Can contain only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities for live stories\n    public let text: FormattedText?\n\n\n    public init(\n        groupCallId: Int?,\n        paidMessageStarCount: Int64?,\n        text: FormattedText?\n    ) {\n        self.groupCallId = groupCallId\n        self.paidMessageStarCount = paidMessageStarCount\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendInlineQueryResultMessage.swift",
    "content": "//\n//  SendInlineQueryResultMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends the result of an inline query as a message. Returns the sent message. Always clears a chat draft message\npublic struct SendInlineQueryResultMessage: Codable, Equatable, Hashable {\n\n    /// Target chat\n    public let chatId: Int64?\n\n    /// Pass true to hide the bot, via which the message is sent. Can be used only for bots getOption(\"animation_search_bot_username\"), getOption(\"photo_search_bot_username\"), and getOption(\"venue_search_bot_username\")\n    public let hideViaBot: Bool?\n\n    /// Options to be used to send the message; pass null to use default options\n    public let options: MessageSendOptions?\n\n    /// Identifier of the inline query\n    public let queryId: TdInt64?\n\n    /// Information about the message or story to be replied; pass null if none\n    public let replyTo: InputMessageReplyTo?\n\n    /// Identifier of the inline query result\n    public let resultId: String?\n\n    /// Topic in which the message will be sent; pass null if none\n    public let topicId: MessageTopic?\n\n\n    public init(\n        chatId: Int64?,\n        hideViaBot: Bool?,\n        options: MessageSendOptions?,\n        queryId: TdInt64?,\n        replyTo: InputMessageReplyTo?,\n        resultId: String?,\n        topicId: MessageTopic?\n    ) {\n        self.chatId = chatId\n        self.hideViaBot = hideViaBot\n        self.options = options\n        self.queryId = queryId\n        self.replyTo = replyTo\n        self.resultId = resultId\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendMessage.swift",
    "content": "//\n//  SendMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends a message. Returns the sent message\npublic struct SendMessage: Codable, Equatable, Hashable {\n\n    /// Target chat\n    public let chatId: Int64?\n\n    /// The content of the message to be sent\n    public let inputMessageContent: InputMessageContent?\n\n    /// Options to be used to send the message; pass null to use default options\n    public let options: MessageSendOptions?\n\n    /// Markup for replying to the message; pass null if none; for bots only\n    public let replyMarkup: ReplyMarkup?\n\n    /// Information about the message or story to be replied; pass null if none\n    public let replyTo: InputMessageReplyTo?\n\n    /// Topic in which the message will be sent; pass null if none\n    public let topicId: MessageTopic?\n\n\n    public init(\n        chatId: Int64?,\n        inputMessageContent: InputMessageContent?,\n        options: MessageSendOptions?,\n        replyMarkup: ReplyMarkup?,\n        replyTo: InputMessageReplyTo?,\n        topicId: MessageTopic?\n    ) {\n        self.chatId = chatId\n        self.inputMessageContent = inputMessageContent\n        self.options = options\n        self.replyMarkup = replyMarkup\n        self.replyTo = replyTo\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendMessageAlbum.swift",
    "content": "//\n//  SendMessageAlbum.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends 2-10 messages grouped together into an album. Currently, only audio, document, photo and video messages can be grouped into an album. Documents and audio files can be only grouped in an album with messages of the same type. Returns sent messages\npublic struct SendMessageAlbum: Codable, Equatable, Hashable {\n\n    /// Target chat\n    public let chatId: Int64?\n\n    /// Contents of messages to be sent. At most 10 messages can be added to an album. All messages must have the same value of show_caption_above_media\n    public let inputMessageContents: [InputMessageContent]?\n\n    /// Options to be used to send the messages; pass null to use default options\n    public let options: MessageSendOptions?\n\n    /// Information about the message or story to be replied; pass null if none\n    public let replyTo: InputMessageReplyTo?\n\n    /// Topic in which the messages will be sent; pass null if none\n    public let topicId: MessageTopic?\n\n\n    public init(\n        chatId: Int64?,\n        inputMessageContents: [InputMessageContent]?,\n        options: MessageSendOptions?,\n        replyTo: InputMessageReplyTo?,\n        topicId: MessageTopic?\n    ) {\n        self.chatId = chatId\n        self.inputMessageContents = inputMessageContents\n        self.options = options\n        self.replyTo = replyTo\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendMessageViewMetrics.swift",
    "content": "//\n//  SendMessageViewMetrics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib about details of a message view by the user from a chat, a message thread or a forum topic history. The method must be called if the message wasn't seen for more than 300 milliseconds, the viewport was destroyed, or the total view duration exceeded 5 minutes\npublic struct SendMessageViewMetrics: Codable, Equatable, Hashable {\n\n    /// The amount of time the message was seen by at least 1 pixel within 15 seconds after any action from the user; in milliseconds\n    public let activeTimeInViewMs: Int?\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// The ratio of the post height to the viewport height in 1/1000 fractions\n    public let heightToViewportRatioPerMille: Int?\n\n    /// The identifier of the message being viewed\n    public let messageId: Int64?\n\n    /// The ratio of the viewed post height to the full post height in 1/1000 fractions; 0-1000\n    public let seenRangeRatioPerMille: Int?\n\n    /// The amount of time the message was seen by at least 1 pixel; in milliseconds\n    public let timeInViewMs: Int?\n\n\n    public init(\n        activeTimeInViewMs: Int?,\n        chatId: Int64?,\n        heightToViewportRatioPerMille: Int?,\n        messageId: Int64?,\n        seenRangeRatioPerMille: Int?,\n        timeInViewMs: Int?\n    ) {\n        self.activeTimeInViewMs = activeTimeInViewMs\n        self.chatId = chatId\n        self.heightToViewportRatioPerMille = heightToViewportRatioPerMille\n        self.messageId = messageId\n        self.seenRangeRatioPerMille = seenRangeRatioPerMille\n        self.timeInViewMs = timeInViewMs\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendPassportAuthorizationForm.swift",
    "content": "//\n//  SendPassportAuthorizationForm.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends a Telegram Passport authorization form, effectively sharing data with the service. This method must be called after getPassportAuthorizationFormAvailableElements if some previously available elements are going to be reused\npublic struct SendPassportAuthorizationForm: Codable, Equatable, Hashable {\n\n    /// Authorization form identifier\n    public let authorizationFormId: Int?\n\n    /// Types of Telegram Passport elements chosen by user to complete the authorization form\n    public let types: [PassportElementType]?\n\n\n    public init(\n        authorizationFormId: Int?,\n        types: [PassportElementType]?\n    ) {\n        self.authorizationFormId = authorizationFormId\n        self.types = types\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendPaymentForm.swift",
    "content": "//\n//  SendPaymentForm.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends a filled-out payment form to the bot for final verification\npublic struct SendPaymentForm: Codable, Equatable, Hashable {\n\n    /// The credentials chosen by user for payment; pass null for a payment in Telegram Stars\n    public let credentials: InputCredentials?\n\n    /// The invoice\n    public let inputInvoice: InputInvoice?\n\n    /// Identifier returned by validateOrderInfo, or an empty string\n    public let orderInfoId: String?\n\n    /// Payment form identifier returned by getPaymentForm\n    public let paymentFormId: TdInt64?\n\n    /// Identifier of a chosen shipping option, if applicable\n    public let shippingOptionId: String?\n\n    /// Chosen by the user amount of tip in the smallest units of the currency\n    public let tipAmount: Int64?\n\n\n    public init(\n        credentials: InputCredentials?,\n        inputInvoice: InputInvoice?,\n        orderInfoId: String?,\n        paymentFormId: TdInt64?,\n        shippingOptionId: String?,\n        tipAmount: Int64?\n    ) {\n        self.credentials = credentials\n        self.inputInvoice = inputInvoice\n        self.orderInfoId = orderInfoId\n        self.paymentFormId = paymentFormId\n        self.shippingOptionId = shippingOptionId\n        self.tipAmount = tipAmount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendPhoneNumberCode.swift",
    "content": "//\n//  SendPhoneNumberCode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends a code to the specified phone number. Aborts previous phone number verification if there was one. On success, returns information about the sent code\npublic struct SendPhoneNumberCode: Codable, Equatable, Hashable {\n\n    /// The phone number, in international format\n    public let phoneNumber: String?\n\n    /// Settings for the authentication of the user's phone number; pass null to use default settings\n    public let settings: PhoneNumberAuthenticationSettings?\n\n    /// Type of the request for which the code is sent\n    public let type: PhoneNumberCodeType?\n\n\n    public init(\n        phoneNumber: String?,\n        settings: PhoneNumberAuthenticationSettings?,\n        type: PhoneNumberCodeType?\n    ) {\n        self.phoneNumber = phoneNumber\n        self.settings = settings\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendPhoneNumberFirebaseSms.swift",
    "content": "//\n//  SendPhoneNumberFirebaseSms.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends Firebase Authentication SMS to the specified phone number. Works only when received a code of the type authenticationCodeTypeFirebaseAndroid or authenticationCodeTypeFirebaseIos\npublic struct SendPhoneNumberFirebaseSms: Codable, Equatable, Hashable {\n\n    /// Play Integrity API or SafetyNet Attestation API token for the Android application, or secret from push notification for the iOS application\n    public let token: String?\n\n\n    public init(token: String?) {\n        self.token = token\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendQuickReplyShortcutMessages.swift",
    "content": "//\n//  SendQuickReplyShortcutMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends messages from a quick reply shortcut. Requires Telegram Business subscription. Can't be used to send paid messages\npublic struct SendQuickReplyShortcutMessages: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which to send messages. The chat must be a private chat with a regular user\n    public let chatId: Int64?\n\n    /// Non-persistent identifier, which will be returned back in messageSendingStatePending object and can be used to match sent messages and corresponding updateNewMessage updates\n    public let sendingId: Int?\n\n    /// Unique identifier of the quick reply shortcut\n    public let shortcutId: Int?\n\n\n    public init(\n        chatId: Int64?,\n        sendingId: Int?,\n        shortcutId: Int?\n    ) {\n        self.chatId = chatId\n        self.sendingId = sendingId\n        self.shortcutId = shortcutId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendResoldGift.swift",
    "content": "//\n//  SendResoldGift.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends an upgraded gift that is available for resale to another user or channel chat; gifts already owned by the current user must be transferred using transferGift and can't be passed to the method\npublic struct SendResoldGift: Codable, Equatable, Hashable {\n\n    /// Name of the upgraded gift to send\n    public let giftName: String?\n\n    /// Identifier of the user or the channel chat that will receive the gift\n    public let ownerId: MessageSender?\n\n    /// The price that the user agreed to pay for the gift\n    public let price: GiftResalePrice?\n\n\n    public init(\n        giftName: String?,\n        ownerId: MessageSender?,\n        price: GiftResalePrice?\n    ) {\n        self.giftName = giftName\n        self.ownerId = ownerId\n        self.price = price\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendStory.swift",
    "content": "//\n//  SendStory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.47-971684a3\n//  https://github.com/tdlib/td/tree/971684a3\n//\n\nimport Foundation\n\n\n/// Sends a new story to a chat; requires can_post_stories right for supergroup and channel chats. Returns a temporary story\npublic struct SendStory: Codable, Equatable, Hashable {\n\n    /// Period after which the story is moved to archive, in seconds; must be one of 6 * 3600, 12 * 3600, 86400, or 2 * 86400 for Telegram Premium users, and 86400 otherwise\n    public let activePeriod: Int?\n\n    /// Clickable rectangle areas to be shown on the story media; pass null if none\n    public let areas: InputStoryAreas?\n\n    /// Story caption; pass null to use an empty caption; 0-getOption(\"story_caption_length_max\") characters; can have entities only if getOption(\"can_use_text_entities_in_story_caption\")\n    public let caption: FormattedText?\n\n    /// Identifier of the chat that will post the story. Pass Saved Messages chat identifier when posting a story on behalf of the current user\n    public let chatId: Int64?\n\n    /// Content of the story\n    public let content: InputStoryContent?\n\n    /// Full identifier of the original story, which content was used to create the story; pass null if the story isn't repost of another story\n    public let fromStoryFullId: StoryFullId?\n\n    /// Pass true to keep the story accessible after expiration\n    public let isPostedToChatPage: Bool?\n\n    /// The privacy settings for the story; ignored for stories sent to supergroup and channel chats\n    public let privacySettings: StoryPrivacySettings?\n\n    /// Pass true if the content of the story must be protected from forwarding and screenshotting\n    public let protectContent: Bool?\n\n\n    public init(\n        activePeriod: Int?,\n        areas: InputStoryAreas?,\n        caption: FormattedText?,\n        chatId: Int64?,\n        content: InputStoryContent?,\n        fromStoryFullId: StoryFullId?,\n        isPostedToChatPage: Bool?,\n        privacySettings: StoryPrivacySettings?,\n        protectContent: Bool?\n    ) {\n        self.activePeriod = activePeriod\n        self.areas = areas\n        self.caption = caption\n        self.chatId = chatId\n        self.content = content\n        self.fromStoryFullId = fromStoryFullId\n        self.isPostedToChatPage = isPostedToChatPage\n        self.privacySettings = privacySettings\n        self.protectContent = protectContent\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendTextMessageDraft.swift",
    "content": "//\n//  SendTextMessageDraft.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends a draft for a being generated text message; for bots only\npublic struct SendTextMessageDraft: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Unique identifier of the draft\n    public let draftId: TdInt64?\n\n    /// The forum topic identifier in which the message will be sent; pass 0 if none\n    public let forumTopicId: Int?\n\n    /// Draft text of the message; pass null to show a \"Thinking...\" placeholder\n    public let text: FormattedText?\n\n\n    public init(\n        chatId: Int64?,\n        draftId: TdInt64?,\n        forumTopicId: Int?,\n        text: FormattedText?\n    ) {\n        self.chatId = chatId\n        self.draftId = draftId\n        self.forumTopicId = forumTopicId\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendWebAppCustomRequest.swift",
    "content": "//\n//  SendWebAppCustomRequest.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends a custom request from a Web App\npublic struct SendWebAppCustomRequest: Codable, Equatable, Hashable {\n\n    /// Identifier of the bot\n    public let botUserId: Int64?\n\n    /// The method name\n    public let method: String?\n\n    /// JSON-serialized method parameters\n    public let parameters: String?\n\n\n    public init(\n        botUserId: Int64?,\n        method: String?,\n        parameters: String?\n    ) {\n        self.botUserId = botUserId\n        self.method = method\n        self.parameters = parameters\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SendWebAppData.swift",
    "content": "//\n//  SendWebAppData.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends data received from a keyboardButtonTypeWebApp Web App to a bot\npublic struct SendWebAppData: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot\n    public let botUserId: Int64?\n\n    /// Text of the keyboardButtonTypeWebApp button, which opened the Web App\n    public let buttonText: String?\n\n    /// The data\n    public let data: String?\n\n\n    public init(\n        botUserId: Int64?,\n        buttonText: String?,\n        data: String?\n    ) {\n        self.botUserId = botUserId\n        self.buttonText = buttonText\n        self.data = data\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SentGift.swift",
    "content": "//\n//  SentGift.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents content of a gift received by a user or a channel chat\npublic indirect enum SentGift: Codable, Equatable, Hashable {\n\n    /// Regular gift\n    case sentGiftRegular(SentGiftRegular)\n\n    /// Upgraded gift\n    case sentGiftUpgraded(SentGiftUpgraded)\n\n\n    private enum Kind: String, Codable {\n        case sentGiftRegular\n        case sentGiftUpgraded\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .sentGiftRegular:\n            let value = try SentGiftRegular(from: decoder)\n            self = .sentGiftRegular(value)\n        case .sentGiftUpgraded:\n            let value = try SentGiftUpgraded(from: decoder)\n            self = .sentGiftUpgraded(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .sentGiftRegular(let value):\n            try container.encode(Kind.sentGiftRegular, forKey: .type)\n            try value.encode(to: encoder)\n        case .sentGiftUpgraded(let value):\n            try container.encode(Kind.sentGiftUpgraded, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Regular gift\npublic struct SentGiftRegular: Codable, Equatable, Hashable {\n\n    /// The gift\n    public let gift: Gift\n\n\n    public init(gift: Gift) {\n        self.gift = gift\n    }\n}\n\n/// Upgraded gift\npublic struct SentGiftUpgraded: Codable, Equatable, Hashable {\n\n    /// The gift\n    public let gift: UpgradedGift\n\n\n    public init(gift: UpgradedGift) {\n        self.gift = gift\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SentWebAppMessage.swift",
    "content": "//\n//  SentWebAppMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.63-8fc2344f\n//  https://github.com/tdlib/td/tree/8fc2344f\n//\n\nimport Foundation\n\n\n/// Information about the message sent by answerWebAppQuery\npublic struct SentWebAppMessage: Codable, Equatable, Hashable {\n\n    /// Identifier of the sent inline message, if known\n    public let inlineMessageId: String\n\n\n    public init(inlineMessageId: String) {\n        self.inlineMessageId = inlineMessageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Session.swift",
    "content": "//\n//  Session.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about one session in a Telegram application used by the current user. Sessions must be shown to the user in the returned order\npublic struct Session: Codable, Equatable, Hashable, Identifiable {\n\n    /// Telegram API identifier, as provided by the application\n    public let apiId: Int\n\n    /// Name of the application, as provided by the application\n    public let applicationName: String\n\n    /// The version of the application, as provided by the application\n    public let applicationVersion: String\n\n    /// True, if incoming calls can be accepted by the session\n    public let canAcceptCalls: Bool\n\n    /// True, if incoming secret chats can be accepted by the session\n    public let canAcceptSecretChats: Bool\n\n    /// Model of the device the application has been run or is running on, as provided by the application\n    public let deviceModel: String\n\n    /// Session identifier\n    public let id: TdInt64\n\n    /// IP address from which the session was created, in human-readable format\n    public let ipAddress: String\n\n    /// True, if this session is the current session\n    public let isCurrent: Bool\n\n    /// True, if the application is an official application or uses the api_id of an official application\n    public let isOfficialApplication: Bool\n\n    /// True, if a 2-step verification password is needed to complete authorization of the session\n    public let isPasswordPending: Bool\n\n    /// True, if the session wasn't confirmed from another session\n    public let isUnconfirmed: Bool\n\n    /// Point in time (Unix timestamp) when the session was last used\n    public let lastActiveDate: Int\n\n    /// A human-readable description of the location from which the session was created, based on the IP address\n    public let location: String\n\n    /// Point in time (Unix timestamp) when the user has logged in\n    public let logInDate: Int\n\n    /// Operating system the application has been run or is running on, as provided by the application\n    public let platform: String\n\n    /// Version of the operating system the application has been run or is running on, as provided by the application\n    public let systemVersion: String\n\n    /// Session type based on the system and application version, which can be used to display a corresponding icon\n    public let type: SessionType\n\n\n    public init(\n        apiId: Int,\n        applicationName: String,\n        applicationVersion: String,\n        canAcceptCalls: Bool,\n        canAcceptSecretChats: Bool,\n        deviceModel: String,\n        id: TdInt64,\n        ipAddress: String,\n        isCurrent: Bool,\n        isOfficialApplication: Bool,\n        isPasswordPending: Bool,\n        isUnconfirmed: Bool,\n        lastActiveDate: Int,\n        location: String,\n        logInDate: Int,\n        platform: String,\n        systemVersion: String,\n        type: SessionType\n    ) {\n        self.apiId = apiId\n        self.applicationName = applicationName\n        self.applicationVersion = applicationVersion\n        self.canAcceptCalls = canAcceptCalls\n        self.canAcceptSecretChats = canAcceptSecretChats\n        self.deviceModel = deviceModel\n        self.id = id\n        self.ipAddress = ipAddress\n        self.isCurrent = isCurrent\n        self.isOfficialApplication = isOfficialApplication\n        self.isPasswordPending = isPasswordPending\n        self.isUnconfirmed = isUnconfirmed\n        self.lastActiveDate = lastActiveDate\n        self.location = location\n        self.logInDate = logInDate\n        self.platform = platform\n        self.systemVersion = systemVersion\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SessionType.swift",
    "content": "//\n//  SessionType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents the type of session\npublic indirect enum SessionType: Codable, Equatable, Hashable {\n\n    /// The session is running on an Android device\n    case sessionTypeAndroid\n\n    /// The session is running on a generic Apple device\n    case sessionTypeApple\n\n    /// The session is running on the Brave browser\n    case sessionTypeBrave\n\n    /// The session is running on the Chrome browser\n    case sessionTypeChrome\n\n    /// The session is running on the Edge browser\n    case sessionTypeEdge\n\n    /// The session is running on the Firefox browser\n    case sessionTypeFirefox\n\n    /// The session is running on an iPad device\n    case sessionTypeIpad\n\n    /// The session is running on an iPhone device\n    case sessionTypeIphone\n\n    /// The session is running on a Linux device\n    case sessionTypeLinux\n\n    /// The session is running on a Mac device\n    case sessionTypeMac\n\n    /// The session is running on the Opera browser\n    case sessionTypeOpera\n\n    /// The session is running on the Safari browser\n    case sessionTypeSafari\n\n    /// The session is running on an Ubuntu device\n    case sessionTypeUbuntu\n\n    /// The session is running on an unknown type of device\n    case sessionTypeUnknown\n\n    /// The session is running on the Vivaldi browser\n    case sessionTypeVivaldi\n\n    /// The session is running on a Windows device\n    case sessionTypeWindows\n\n    /// The session is running on an Xbox console\n    case sessionTypeXbox\n\n\n    private enum Kind: String, Codable {\n        case sessionTypeAndroid\n        case sessionTypeApple\n        case sessionTypeBrave\n        case sessionTypeChrome\n        case sessionTypeEdge\n        case sessionTypeFirefox\n        case sessionTypeIpad\n        case sessionTypeIphone\n        case sessionTypeLinux\n        case sessionTypeMac\n        case sessionTypeOpera\n        case sessionTypeSafari\n        case sessionTypeUbuntu\n        case sessionTypeUnknown\n        case sessionTypeVivaldi\n        case sessionTypeWindows\n        case sessionTypeXbox\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .sessionTypeAndroid:\n            self = .sessionTypeAndroid\n        case .sessionTypeApple:\n            self = .sessionTypeApple\n        case .sessionTypeBrave:\n            self = .sessionTypeBrave\n        case .sessionTypeChrome:\n            self = .sessionTypeChrome\n        case .sessionTypeEdge:\n            self = .sessionTypeEdge\n        case .sessionTypeFirefox:\n            self = .sessionTypeFirefox\n        case .sessionTypeIpad:\n            self = .sessionTypeIpad\n        case .sessionTypeIphone:\n            self = .sessionTypeIphone\n        case .sessionTypeLinux:\n            self = .sessionTypeLinux\n        case .sessionTypeMac:\n            self = .sessionTypeMac\n        case .sessionTypeOpera:\n            self = .sessionTypeOpera\n        case .sessionTypeSafari:\n            self = .sessionTypeSafari\n        case .sessionTypeUbuntu:\n            self = .sessionTypeUbuntu\n        case .sessionTypeUnknown:\n            self = .sessionTypeUnknown\n        case .sessionTypeVivaldi:\n            self = .sessionTypeVivaldi\n        case .sessionTypeWindows:\n            self = .sessionTypeWindows\n        case .sessionTypeXbox:\n            self = .sessionTypeXbox\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .sessionTypeAndroid:\n            try container.encode(Kind.sessionTypeAndroid, forKey: .type)\n        case .sessionTypeApple:\n            try container.encode(Kind.sessionTypeApple, forKey: .type)\n        case .sessionTypeBrave:\n            try container.encode(Kind.sessionTypeBrave, forKey: .type)\n        case .sessionTypeChrome:\n            try container.encode(Kind.sessionTypeChrome, forKey: .type)\n        case .sessionTypeEdge:\n            try container.encode(Kind.sessionTypeEdge, forKey: .type)\n        case .sessionTypeFirefox:\n            try container.encode(Kind.sessionTypeFirefox, forKey: .type)\n        case .sessionTypeIpad:\n            try container.encode(Kind.sessionTypeIpad, forKey: .type)\n        case .sessionTypeIphone:\n            try container.encode(Kind.sessionTypeIphone, forKey: .type)\n        case .sessionTypeLinux:\n            try container.encode(Kind.sessionTypeLinux, forKey: .type)\n        case .sessionTypeMac:\n            try container.encode(Kind.sessionTypeMac, forKey: .type)\n        case .sessionTypeOpera:\n            try container.encode(Kind.sessionTypeOpera, forKey: .type)\n        case .sessionTypeSafari:\n            try container.encode(Kind.sessionTypeSafari, forKey: .type)\n        case .sessionTypeUbuntu:\n            try container.encode(Kind.sessionTypeUbuntu, forKey: .type)\n        case .sessionTypeUnknown:\n            try container.encode(Kind.sessionTypeUnknown, forKey: .type)\n        case .sessionTypeVivaldi:\n            try container.encode(Kind.sessionTypeVivaldi, forKey: .type)\n        case .sessionTypeWindows:\n            try container.encode(Kind.sessionTypeWindows, forKey: .type)\n        case .sessionTypeXbox:\n            try container.encode(Kind.sessionTypeXbox, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Sessions.swift",
    "content": "//\n//  Sessions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of sessions\npublic struct Sessions: Codable, Equatable, Hashable {\n\n    /// Number of days of inactivity before sessions will automatically be terminated; 1-366 days\n    public let inactiveSessionTtlDays: Int\n\n    /// List of sessions\n    public let sessions: [Session]\n\n\n    public init(\n        inactiveSessionTtlDays: Int,\n        sessions: [Session]\n    ) {\n        self.inactiveSessionTtlDays = inactiveSessionTtlDays\n        self.sessions = sessions\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetAccentColor.swift",
    "content": "//\n//  SetAccentColor.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes accent color and background custom emoji for the current user; for Telegram Premium users only\npublic struct SetAccentColor: Codable, Equatable, Hashable {\n\n    /// Identifier of the accent color to use\n    public let accentColorId: Int?\n\n    /// Identifier of a custom emoji to be shown on the reply header and link preview background; 0 if none\n    public let backgroundCustomEmojiId: TdInt64?\n\n\n    public init(\n        accentColorId: Int?,\n        backgroundCustomEmojiId: TdInt64?\n    ) {\n        self.accentColorId = accentColorId\n        self.backgroundCustomEmojiId = backgroundCustomEmojiId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetAccountTtl.swift",
    "content": "//\n//  SetAccountTtl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the period of inactivity after which the account of the current user will automatically be deleted\npublic struct SetAccountTtl: Codable, Equatable, Hashable {\n\n    /// New account TTL\n    public let ttl: AccountTtl?\n\n\n    public init(ttl: AccountTtl?) {\n        self.ttl = ttl\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetAlarm.swift",
    "content": "//\n//  SetAlarm.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Succeeds after a specified amount of time has passed. Can be called before initialization\npublic struct SetAlarm: Codable, Equatable, Hashable {\n\n    /// Number of seconds before the function returns\n    public let seconds: Double?\n\n\n    public init(seconds: Double?) {\n        self.seconds = seconds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetApplicationVerificationToken.swift",
    "content": "//\n//  SetApplicationVerificationToken.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that application or reCAPTCHA verification has been completed. Can be called before authorization\npublic struct SetApplicationVerificationToken: Codable, Equatable, Hashable {\n\n    /// Play Integrity API token for the Android application, or secret from push notification for the iOS application for application verification, or reCAPTCHA token for reCAPTCHA verifications; pass an empty string to abort verification and receive the error \"VERIFICATION_FAILED\" for the request\n    public let token: String?\n\n    /// Unique identifier for the verification process as received from updateApplicationVerificationRequired or updateApplicationRecaptchaVerificationRequired\n    public let verificationId: Int64?\n\n\n    public init(\n        token: String?,\n        verificationId: Int64?\n    ) {\n        self.token = token\n        self.verificationId = verificationId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetArchiveChatListSettings.swift",
    "content": "//\n//  SetArchiveChatListSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes settings for automatic moving of chats to and from the Archive chat lists\npublic struct SetArchiveChatListSettings: Codable, Equatable, Hashable {\n\n    /// New settings\n    public let settings: ArchiveChatListSettings?\n\n\n    public init(settings: ArchiveChatListSettings?) {\n        self.settings = settings\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetAuthenticationEmailAddress.swift",
    "content": "//\n//  SetAuthenticationEmailAddress.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets the email address of the user and sends an authentication code to the email address. Works only when the current authorization state is authorizationStateWaitEmailAddress\npublic struct SetAuthenticationEmailAddress: Codable, Equatable, Hashable {\n\n    /// The email address of the user\n    public let emailAddress: String?\n\n\n    public init(emailAddress: String?) {\n        self.emailAddress = emailAddress\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetAuthenticationPhoneNumber.swift",
    "content": "//\n//  SetAuthenticationPhoneNumber.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets the phone number of the user and sends an authentication code to the user. Works only when the current authorization state is authorizationStateWaitPhoneNumber, or if there is no pending authentication query and the current authorization state is authorizationStateWaitPremiumPurchase, authorizationStateWaitEmailAddress, authorizationStateWaitEmailCode, authorizationStateWaitCode, authorizationStateWaitRegistration, or authorizationStateWaitPassword\npublic struct SetAuthenticationPhoneNumber: Codable, Equatable, Hashable {\n\n    /// The phone number of the user, in international format\n    public let phoneNumber: String?\n\n    /// Settings for the authentication of the user's phone number; pass null to use default settings\n    public let settings: PhoneNumberAuthenticationSettings?\n\n\n    public init(\n        phoneNumber: String?,\n        settings: PhoneNumberAuthenticationSettings?\n    ) {\n        self.phoneNumber = phoneNumber\n        self.settings = settings\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetAuthenticationPremiumPurchaseTransaction.swift",
    "content": "//\n//  SetAuthenticationPremiumPurchaseTransaction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs server about an in-store purchase of Telegram Premium before authorization. Works only when the current authorization state is authorizationStateWaitPremiumPurchase\npublic struct SetAuthenticationPremiumPurchaseTransaction: Codable, Equatable, Hashable {\n\n    /// Paid amount, in the smallest units of the currency\n    public let amount: Int64?\n\n    /// ISO 4217 currency code of the payment currency\n    public let currency: String?\n\n    /// Pass true if this is a restore of a Telegram Premium purchase; only for App Store\n    public let isRestore: Bool?\n\n    /// The number of days for which the Telegram Premium subscription will be granted\n    public let premiumDayCount: Int?\n\n    /// Information about the transaction\n    public let transaction: StoreTransaction?\n\n\n    public init(\n        amount: Int64?,\n        currency: String?,\n        isRestore: Bool?,\n        premiumDayCount: Int?,\n        transaction: StoreTransaction?\n    ) {\n        self.amount = amount\n        self.currency = currency\n        self.isRestore = isRestore\n        self.premiumDayCount = premiumDayCount\n        self.transaction = transaction\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetAutoDownloadSettings.swift",
    "content": "//\n//  SetAutoDownloadSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets auto-download settings\npublic struct SetAutoDownloadSettings: Codable, Equatable, Hashable {\n\n    /// New user auto-download settings\n    public let settings: AutoDownloadSettings?\n\n    /// Type of the network for which the new settings are relevant\n    public let type: NetworkType?\n\n\n    public init(\n        settings: AutoDownloadSettings?,\n        type: NetworkType?\n    ) {\n        self.settings = settings\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetAutosaveSettings.swift",
    "content": "//\n//  SetAutosaveSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets autosave settings for the given scope. The method is guaranteed to work only after at least one call to getAutosaveSettings\npublic struct SetAutosaveSettings: Codable, Equatable, Hashable {\n\n    /// Autosave settings scope\n    public let scope: AutosaveSettingsScope?\n\n    /// New autosave settings for the scope; pass null to set autosave settings to default\n    public let settings: ScopeAutosaveSettings?\n\n\n    public init(\n        scope: AutosaveSettingsScope?,\n        settings: ScopeAutosaveSettings?\n    ) {\n        self.scope = scope\n        self.settings = settings\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetBio.swift",
    "content": "//\n//  SetBio.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the bio of the current user\npublic struct SetBio: Codable, Equatable, Hashable {\n\n    /// The new value of the user bio; 0-getOption(\"bio_length_max\") characters without line feeds\n    public let bio: String?\n\n\n    public init(bio: String?) {\n        self.bio = bio\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetBirthdate.swift",
    "content": "//\n//  SetBirthdate.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the birthdate of the current user\npublic struct SetBirthdate: Codable, Equatable, Hashable {\n\n    /// The new value of the current user's birthdate; pass null to remove the birthdate\n    public let birthdate: Birthdate?\n\n\n    public init(birthdate: Birthdate?) {\n        self.birthdate = birthdate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetBotInfoDescription.swift",
    "content": "//\n//  SetBotInfoDescription.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets the text shown in the chat with a bot if the chat is empty. Can be called only if userTypeBot.can_be_edited == true\npublic struct SetBotInfoDescription: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot\n    public let botUserId: Int64?\n\n    public let description: String?\n\n    /// A two-letter ISO 639-1 language code. If empty, the description will be shown to all users for whose languages there is no dedicated description\n    public let languageCode: String?\n\n\n    public init(\n        botUserId: Int64?,\n        description: String?,\n        languageCode: String?\n    ) {\n        self.botUserId = botUserId\n        self.description = description\n        self.languageCode = languageCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetBotInfoShortDescription.swift",
    "content": "//\n//  SetBotInfoShortDescription.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets the text shown on a bot's profile page and sent together with the link when users share the bot. Can be called only if userTypeBot.can_be_edited == true\npublic struct SetBotInfoShortDescription: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot\n    public let botUserId: Int64?\n\n    /// A two-letter ISO 639-1 language code. If empty, the short description will be shown to all users for whose languages there is no dedicated description\n    public let languageCode: String?\n\n    /// New bot's short description on the specified language\n    public let shortDescription: String?\n\n\n    public init(\n        botUserId: Int64?,\n        languageCode: String?,\n        shortDescription: String?\n    ) {\n        self.botUserId = botUserId\n        self.languageCode = languageCode\n        self.shortDescription = shortDescription\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetBotName.swift",
    "content": "//\n//  SetBotName.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets the name of a bot. Can be called only if userTypeBot.can_be_edited == true\npublic struct SetBotName: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot\n    public let botUserId: Int64?\n\n    /// A two-letter ISO 639-1 language code. If empty, the name will be shown to all users for whose languages there is no dedicated name\n    public let languageCode: String?\n\n    /// New bot's name on the specified language; 0-64 characters; must be non-empty if language code is empty\n    public let name: String?\n\n\n    public init(\n        botUserId: Int64?,\n        languageCode: String?,\n        name: String?\n    ) {\n        self.botUserId = botUserId\n        self.languageCode = languageCode\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetBotProfilePhoto.swift",
    "content": "//\n//  SetBotProfilePhoto.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes a profile photo for a bot\npublic struct SetBotProfilePhoto: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot\n    public let botUserId: Int64?\n\n    /// Profile photo to set; pass null to delete the chat photo\n    public let photo: InputChatPhoto?\n\n\n    public init(\n        botUserId: Int64?,\n        photo: InputChatPhoto?\n    ) {\n        self.botUserId = botUserId\n        self.photo = photo\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetBotUpdatesStatus.swift",
    "content": "//\n//  SetBotUpdatesStatus.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs the server about the number of pending bot updates if they haven't been processed for a long time; for bots only\npublic struct SetBotUpdatesStatus: Codable, Equatable, Hashable {\n\n    /// The last error message\n    public let errorMessage: String?\n\n    /// The number of pending updates\n    public let pendingUpdateCount: Int?\n\n\n    public init(\n        errorMessage: String?,\n        pendingUpdateCount: Int?\n    ) {\n        self.errorMessage = errorMessage\n        self.pendingUpdateCount = pendingUpdateCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetBusinessAccountBio.swift",
    "content": "//\n//  SetBusinessAccountBio.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the bio of a business account; for bots only\npublic struct SetBusinessAccountBio: Codable, Equatable, Hashable {\n\n    /// The new value of the bio; 0-getOption(\"bio_length_max\") characters without line feeds\n    public let bio: String?\n\n    /// Unique identifier of business connection\n    public let businessConnectionId: String?\n\n\n    public init(\n        bio: String?,\n        businessConnectionId: String?\n    ) {\n        self.bio = bio\n        self.businessConnectionId = businessConnectionId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetBusinessAccountGiftSettings.swift",
    "content": "//\n//  SetBusinessAccountGiftSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes settings for gift receiving of a business account; for bots only\npublic struct SetBusinessAccountGiftSettings: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection\n    public let businessConnectionId: String?\n\n    /// The new settings\n    public let settings: GiftSettings?\n\n\n    public init(\n        businessConnectionId: String?,\n        settings: GiftSettings?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.settings = settings\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetBusinessAccountName.swift",
    "content": "//\n//  SetBusinessAccountName.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the first and last name of a business account; for bots only\npublic struct SetBusinessAccountName: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection\n    public let businessConnectionId: String?\n\n    /// The new value of the first name for the business account; 1-64 characters\n    public let firstName: String?\n\n    /// The new value of the optional last name for the business account; 0-64 characters\n    public let lastName: String?\n\n\n    public init(\n        businessConnectionId: String?,\n        firstName: String?,\n        lastName: String?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.firstName = firstName\n        self.lastName = lastName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetBusinessAccountProfilePhoto.swift",
    "content": "//\n//  SetBusinessAccountProfilePhoto.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes a profile photo of a business account; for bots only\npublic struct SetBusinessAccountProfilePhoto: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection\n    public let businessConnectionId: String?\n\n    /// Pass true to set the public photo, which will be visible even if the main photo is hidden by privacy settings\n    public let isPublic: Bool?\n\n    /// Profile photo to set; pass null to remove the photo\n    public let photo: InputChatPhoto?\n\n\n    public init(\n        businessConnectionId: String?,\n        isPublic: Bool?,\n        photo: InputChatPhoto?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.isPublic = isPublic\n        self.photo = photo\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetBusinessAccountUsername.swift",
    "content": "//\n//  SetBusinessAccountUsername.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the editable username of a business account; for bots only\npublic struct SetBusinessAccountUsername: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection\n    public let businessConnectionId: String?\n\n    /// The new value of the username\n    public let username: String?\n\n\n    public init(\n        businessConnectionId: String?,\n        username: String?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.username = username\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetBusinessAwayMessageSettings.swift",
    "content": "//\n//  SetBusinessAwayMessageSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the business away message settings of the current user. Requires Telegram Business subscription\npublic struct SetBusinessAwayMessageSettings: Codable, Equatable, Hashable {\n\n    /// The new settings for the away message of the business; pass null to disable the away message\n    public let awayMessageSettings: BusinessAwayMessageSettings?\n\n\n    public init(awayMessageSettings: BusinessAwayMessageSettings?) {\n        self.awayMessageSettings = awayMessageSettings\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetBusinessConnectedBot.swift",
    "content": "//\n//  SetBusinessConnectedBot.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds or changes business bot that is connected to the current user account\npublic struct SetBusinessConnectedBot: Codable, Equatable, Hashable {\n\n    /// Connection settings for the bot\n    public let bot: BusinessConnectedBot?\n\n\n    public init(bot: BusinessConnectedBot?) {\n        self.bot = bot\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetBusinessGreetingMessageSettings.swift",
    "content": "//\n//  SetBusinessGreetingMessageSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the business greeting message settings of the current user. Requires Telegram Business subscription\npublic struct SetBusinessGreetingMessageSettings: Codable, Equatable, Hashable {\n\n    /// The new settings for the greeting message of the business; pass null to disable the greeting message\n    public let greetingMessageSettings: BusinessGreetingMessageSettings?\n\n\n    public init(greetingMessageSettings: BusinessGreetingMessageSettings?) {\n        self.greetingMessageSettings = greetingMessageSettings\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetBusinessLocation.swift",
    "content": "//\n//  SetBusinessLocation.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the business location of the current user. Requires Telegram Business subscription\npublic struct SetBusinessLocation: Codable, Equatable, Hashable {\n\n    /// The new location of the business; pass null to remove the location\n    public let location: BusinessLocation?\n\n\n    public init(location: BusinessLocation?) {\n        self.location = location\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetBusinessMessageIsPinned.swift",
    "content": "//\n//  SetBusinessMessageIsPinned.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Pins or unpins a message sent on behalf of a business account; for bots only\npublic struct SetBusinessMessageIsPinned: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection on behalf of which the message was sent\n    public let businessConnectionId: String?\n\n    /// The chat the message belongs to\n    public let chatId: Int64?\n\n    /// Pass true to pin the message, pass false to unpin it\n    public let isPinned: Bool?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n\n    public init(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        isPinned: Bool?,\n        messageId: Int64?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.chatId = chatId\n        self.isPinned = isPinned\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetBusinessOpeningHours.swift",
    "content": "//\n//  SetBusinessOpeningHours.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the business opening hours of the current user. Requires Telegram Business subscription\npublic struct SetBusinessOpeningHours: Codable, Equatable, Hashable {\n\n    /// The new opening hours of the business; pass null to remove the opening hours; up to 28 time intervals can be specified\n    public let openingHours: BusinessOpeningHours?\n\n\n    public init(openingHours: BusinessOpeningHours?) {\n        self.openingHours = openingHours\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetBusinessStartPage.swift",
    "content": "//\n//  SetBusinessStartPage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the business start page of the current user. Requires Telegram Business subscription\npublic struct SetBusinessStartPage: Codable, Equatable, Hashable {\n\n    /// The new start page of the business; pass null to remove custom start page\n    public let startPage: InputBusinessStartPage?\n\n\n    public init(startPage: InputBusinessStartPage?) {\n        self.startPage = startPage\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatAccentColor.swift",
    "content": "//\n//  SetChatAccentColor.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes accent color and background custom emoji of a channel chat. Requires can_change_info administrator right\npublic struct SetChatAccentColor: Codable, Equatable, Hashable {\n\n    /// Identifier of the accent color to use. The chat must have at least accentColor.min_channel_chat_boost_level boost level to pass the corresponding color\n    public let accentColorId: Int?\n\n    /// Identifier of a custom emoji to be shown on the reply header and link preview background; 0 if none. Use chatBoostLevelFeatures.can_set_background_custom_emoji to check whether a custom emoji can be set\n    public let backgroundCustomEmojiId: TdInt64?\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n\n    public init(\n        accentColorId: Int?,\n        backgroundCustomEmojiId: TdInt64?,\n        chatId: Int64?\n    ) {\n        self.accentColorId = accentColorId\n        self.backgroundCustomEmojiId = backgroundCustomEmojiId\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatActiveStoriesList.swift",
    "content": "//\n//  SetChatActiveStoriesList.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes story list in which stories from the chat are shown\npublic struct SetChatActiveStoriesList: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat that posted stories\n    public let chatId: Int64?\n\n    /// New list for active stories posted by the chat\n    public let storyList: StoryList?\n\n\n    public init(\n        chatId: Int64?,\n        storyList: StoryList?\n    ) {\n        self.chatId = chatId\n        self.storyList = storyList\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatAffiliateProgram.swift",
    "content": "//\n//  SetChatAffiliateProgram.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes affiliate program for a bot\npublic struct SetChatAffiliateProgram: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat with an owned bot for which affiliate program is changed\n    public let chatId: Int64?\n\n    /// Parameters of the affiliate program; pass null to close the currently active program. If there is an active program, then commission and program duration can only be increased. If the active program is scheduled to be closed, then it can't be changed anymore\n    public let parameters: AffiliateProgramParameters?\n\n\n    public init(\n        chatId: Int64?,\n        parameters: AffiliateProgramParameters?\n    ) {\n        self.chatId = chatId\n        self.parameters = parameters\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatAvailableReactions.swift",
    "content": "//\n//  SetChatAvailableReactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes reactions, available in a chat. Available for basic groups, supergroups, and channels. Requires can_change_info member right\npublic struct SetChatAvailableReactions: Codable, Equatable, Hashable {\n\n    /// Reactions available in the chat. All explicitly specified emoji reactions must be active. In channel chats up to the chat's boost level custom emoji reactions can be explicitly specified\n    public let availableReactions: ChatAvailableReactions?\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n\n    public init(\n        availableReactions: ChatAvailableReactions?,\n        chatId: Int64?\n    ) {\n        self.availableReactions = availableReactions\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatBackground.swift",
    "content": "//\n//  SetChatBackground.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets the background in a specific chat. Supported only in private and secret chats with non-deleted users, and in chats with sufficient boost level and can_change_info administrator right\npublic struct SetChatBackground: Codable, Equatable, Hashable {\n\n    /// The input background to use; pass null to create a new filled or chat theme background\n    public let background: InputBackground?\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Dimming of the background in dark themes, as a percentage; 0-100. Applied only to Wallpaper and Fill types of background\n    public let darkThemeDimming: Int?\n\n    /// Pass true to set background only for self; pass false to set background for all chat users. Always false for backgrounds set in boosted chats. Background can be set for both users only by Telegram Premium users and if set background isn't of the type inputBackgroundPrevious\n    public let onlyForSelf: Bool?\n\n    /// Background type; pass null to use default background type for the chosen background; backgroundTypeChatTheme isn't supported for private and secret chats. Use chatBoostLevelFeatures.chat_theme_background_count and chatBoostLevelFeatures.can_set_custom_background to check whether the background type can be set in the boosted chat\n    public let type: BackgroundType?\n\n\n    public init(\n        background: InputBackground?,\n        chatId: Int64?,\n        darkThemeDimming: Int?,\n        onlyForSelf: Bool?,\n        type: BackgroundType?\n    ) {\n        self.background = background\n        self.chatId = chatId\n        self.darkThemeDimming = darkThemeDimming\n        self.onlyForSelf = onlyForSelf\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatClientData.swift",
    "content": "//\n//  SetChatClientData.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes application-specific data associated with a chat\npublic struct SetChatClientData: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// New value of client_data\n    public let clientData: String?\n\n\n    public init(\n        chatId: Int64?,\n        clientData: String?\n    ) {\n        self.chatId = chatId\n        self.clientData = clientData\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatDescription.swift",
    "content": "//\n//  SetChatDescription.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes information about a chat. Available for basic groups, supergroups, and channels. Requires can_change_info member right\npublic struct SetChatDescription: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n    public let description: String?\n\n\n    public init(\n        chatId: Int64?,\n        description: String?\n    ) {\n        self.chatId = chatId\n        self.description = description\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatDirectMessagesGroup.swift",
    "content": "//\n//  SetChatDirectMessagesGroup.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes direct messages group settings for a channel chat; requires owner privileges in the chat\npublic struct SetChatDirectMessagesGroup: Codable, Equatable, Hashable {\n\n    /// Identifier of the channel chat\n    public let chatId: Int64?\n\n    /// Pass true if the direct messages group is enabled for the channel chat; pass false otherwise\n    public let isEnabled: Bool?\n\n    /// The new number of Telegram Stars that must be paid for each message that is sent to the direct messages chat unless the sender is an administrator of the channel chat; 0-getOption(\"paid_message_star_count_max\"). The channel will receive getOption(\"paid_message_earnings_per_mille\") Telegram Stars for each 1000 Telegram Stars paid for message sending. Requires supergroupFullInfo.can_enable_paid_messages for positive amounts\n    public let paidMessageStarCount: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        isEnabled: Bool?,\n        paidMessageStarCount: Int64?\n    ) {\n        self.chatId = chatId\n        self.isEnabled = isEnabled\n        self.paidMessageStarCount = paidMessageStarCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatDiscussionGroup.swift",
    "content": "//\n//  SetChatDiscussionGroup.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the discussion group of a channel chat; requires can_change_info administrator right in the channel if it is specified\npublic struct SetChatDiscussionGroup: Codable, Equatable, Hashable {\n\n    /// Identifier of the channel chat. Pass 0 to remove a link from the supergroup passed in the second argument to a linked channel chat (requires can_pin_messages member right in the supergroup)\n    public let chatId: Int64?\n\n    /// Identifier of a new channel's discussion group. Use 0 to remove the discussion group. Use the method getSuitableDiscussionChats to find all suitable groups. Basic group chats must be first upgraded to supergroup chats. If new chat members don't have access to old messages in the supergroup, then toggleSupergroupIsAllHistoryAvailable must be used first to change that\n    public let discussionChatId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        discussionChatId: Int64?\n    ) {\n        self.chatId = chatId\n        self.discussionChatId = discussionChatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatDraftMessage.swift",
    "content": "//\n//  SetChatDraftMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the draft message in a chat or a topic\npublic struct SetChatDraftMessage: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// New draft message; pass null to remove the draft. All files in draft message content must be of the type inputFileLocal. Media thumbnails and captions are ignored\n    public let draftMessage: DraftMessage?\n\n    /// Topic in which the draft will be changed; pass null to change the draft for the chat itself\n    public let topicId: MessageTopic?\n\n\n    public init(\n        chatId: Int64?,\n        draftMessage: DraftMessage?,\n        topicId: MessageTopic?\n    ) {\n        self.chatId = chatId\n        self.draftMessage = draftMessage\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatEmojiStatus.swift",
    "content": "//\n//  SetChatEmojiStatus.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the emoji status of a chat. Use chatBoostLevelFeatures.can_set_emoji_status to check whether an emoji status can be set. Requires can_change_info administrator right\npublic struct SetChatEmojiStatus: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// New emoji status; pass null to remove emoji status\n    public let emojiStatus: EmojiStatus?\n\n\n    public init(\n        chatId: Int64?,\n        emojiStatus: EmojiStatus?\n    ) {\n        self.chatId = chatId\n        self.emojiStatus = emojiStatus\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatLocation.swift",
    "content": "//\n//  SetChatLocation.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the location of a chat. Available only for some location-based supergroups, use supergroupFullInfo.can_set_location to check whether the method is allowed to use\npublic struct SetChatLocation: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// New location for the chat; must be valid and not null\n    public let location: ChatLocation?\n\n\n    public init(\n        chatId: Int64?,\n        location: ChatLocation?\n    ) {\n        self.chatId = chatId\n        self.location = location\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatMemberStatus.swift",
    "content": "//\n//  SetChatMemberStatus.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the status of a chat member; requires can_invite_users member right to add a chat member, can_promote_members administrator right to change administrator rights of the member, and can_restrict_members administrator right to change restrictions of a user. This function is currently not suitable for transferring chat ownership; use transferChatOwnership instead. Use addChatMember or banChatMember if some additional parameters needs to be passed\npublic struct SetChatMemberStatus: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Member identifier. Chats can be only banned and unbanned in supergroups and channels\n    public let memberId: MessageSender?\n\n    /// The new status of the member in the chat\n    public let status: ChatMemberStatus?\n\n\n    public init(\n        chatId: Int64?,\n        memberId: MessageSender?,\n        status: ChatMemberStatus?\n    ) {\n        self.chatId = chatId\n        self.memberId = memberId\n        self.status = status\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatMemberTag.swift",
    "content": "//\n//  SetChatMemberTag.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the tag or custom title of a chat member; requires can_manage_tags administrator right to change tag of other users; for basic groups and supergroups only\npublic struct SetChatMemberTag: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// The new tag of the member in the chat; 0-16 characters without emoji\n    public let tag: String?\n\n    /// Identifier of the user, which tag is changed. Chats can't have member tags\n    public let userId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        tag: String?,\n        userId: Int64?\n    ) {\n        self.chatId = chatId\n        self.tag = tag\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatMessageAutoDeleteTime.swift",
    "content": "//\n//  SetChatMessageAutoDeleteTime.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the message auto-delete or self-destruct (for secret chats) time in a chat. Requires change_info administrator right in basic groups, supergroups and channels. Message auto-delete time can't be changed in a chat with the current user (Saved Messages) and the chat 777000 (Telegram).\npublic struct SetChatMessageAutoDeleteTime: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// New time value, in seconds; unless the chat is secret, it must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically\n    public let messageAutoDeleteTime: Int?\n\n\n    public init(\n        chatId: Int64?,\n        messageAutoDeleteTime: Int?\n    ) {\n        self.chatId = chatId\n        self.messageAutoDeleteTime = messageAutoDeleteTime\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatMessageSender.swift",
    "content": "//\n//  SetChatMessageSender.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Selects a message sender to send messages in a chat\npublic struct SetChatMessageSender: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// New message sender for the chat\n    public let messageSenderId: MessageSender?\n\n\n    public init(\n        chatId: Int64?,\n        messageSenderId: MessageSender?\n    ) {\n        self.chatId = chatId\n        self.messageSenderId = messageSenderId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatNotificationSettings.swift",
    "content": "//\n//  SetChatNotificationSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the notification settings of a chat. Notification settings of a chat with the current user (Saved Messages) can't be changed\npublic struct SetChatNotificationSettings: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// New notification settings for the chat. If the chat is muted for more than 366 days, it is considered to be muted forever\n    public let notificationSettings: ChatNotificationSettings?\n\n\n    public init(\n        chatId: Int64?,\n        notificationSettings: ChatNotificationSettings?\n    ) {\n        self.chatId = chatId\n        self.notificationSettings = notificationSettings\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatPaidMessageStarCount.swift",
    "content": "//\n//  SetChatPaidMessageStarCount.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the Telegram Star amount that must be paid to send a message to a supergroup chat; requires can_restrict_members administrator right and supergroupFullInfo.can_enable_paid_messages\npublic struct SetChatPaidMessageStarCount: Codable, Equatable, Hashable {\n\n    /// Identifier of the supergroup chat\n    public let chatId: Int64?\n\n    /// The new number of Telegram Stars that must be paid for each message that is sent to the supergroup chat unless the sender is an administrator of the chat; 0-getOption(\"paid_message_star_count_max\"). The supergroup will receive getOption(\"paid_message_earnings_per_mille\") Telegram Stars for each 1000 Telegram Stars paid for message sending\n    public let paidMessageStarCount: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        paidMessageStarCount: Int64?\n    ) {\n        self.chatId = chatId\n        self.paidMessageStarCount = paidMessageStarCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatPermissions.swift",
    "content": "//\n//  SetChatPermissions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the chat members permissions. Supported only for basic groups and supergroups. Requires can_restrict_members administrator right\npublic struct SetChatPermissions: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// New non-administrator members permissions in the chat\n    public let permissions: ChatPermissions?\n\n\n    public init(\n        chatId: Int64?,\n        permissions: ChatPermissions?\n    ) {\n        self.chatId = chatId\n        self.permissions = permissions\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatPhoto.swift",
    "content": "//\n//  SetChatPhoto.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the photo of a chat. Supported only for basic groups, supergroups and channels. Requires can_change_info member right\npublic struct SetChatPhoto: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// New chat photo; pass null to delete the chat photo\n    public let photo: InputChatPhoto?\n\n\n    public init(\n        chatId: Int64?,\n        photo: InputChatPhoto?\n    ) {\n        self.chatId = chatId\n        self.photo = photo\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatPinnedStories.swift",
    "content": "//\n//  SetChatPinnedStories.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the list of pinned stories on a chat page; requires can_edit_stories administrator right in the chat\npublic struct SetChatPinnedStories: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat that posted the stories\n    public let chatId: Int64?\n\n    /// New list of pinned stories. All stories must be posted to the chat page first. There can be up to getOption(\"pinned_story_count_max\") pinned stories on a chat page\n    public let storyIds: [Int]?\n\n\n    public init(\n        chatId: Int64?,\n        storyIds: [Int]?\n    ) {\n        self.chatId = chatId\n        self.storyIds = storyIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatProfileAccentColor.swift",
    "content": "//\n//  SetChatProfileAccentColor.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes accent color and background custom emoji for profile of a supergroup or channel chat. Requires can_change_info administrator right\npublic struct SetChatProfileAccentColor: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Identifier of the accent color to use for profile; pass -1 if none. The chat must have at least profileAccentColor.min_supergroup_chat_boost_level for supergroups or profileAccentColor.min_channel_chat_boost_level for channels boost level to pass the corresponding color\n    public let profileAccentColorId: Int?\n\n    /// Identifier of a custom emoji to be shown on the chat's profile photo background; 0 if none. Use chatBoostLevelFeatures.can_set_profile_background_custom_emoji to check whether a custom emoji can be set\n    public let profileBackgroundCustomEmojiId: TdInt64?\n\n\n    public init(\n        chatId: Int64?,\n        profileAccentColorId: Int?,\n        profileBackgroundCustomEmojiId: TdInt64?\n    ) {\n        self.chatId = chatId\n        self.profileAccentColorId = profileAccentColorId\n        self.profileBackgroundCustomEmojiId = profileBackgroundCustomEmojiId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatSlowModeDelay.swift",
    "content": "//\n//  SetChatSlowModeDelay.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the slow mode delay of a chat. Available only for supergroups; requires can_restrict_members administrator right\npublic struct SetChatSlowModeDelay: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// New slow mode delay for the chat, in seconds; must be one of 0, 5, 10, 30, 60, 300, 900, 3600\n    public let slowModeDelay: Int?\n\n\n    public init(\n        chatId: Int64?,\n        slowModeDelay: Int?\n    ) {\n        self.chatId = chatId\n        self.slowModeDelay = slowModeDelay\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatTheme.swift",
    "content": "//\n//  SetChatTheme.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the chat theme. Supported only in private and secret chats\npublic struct SetChatTheme: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// New chat theme; pass null to return the default theme\n    public let theme: InputChatTheme?\n\n\n    public init(\n        chatId: Int64?,\n        theme: InputChatTheme?\n    ) {\n        self.chatId = chatId\n        self.theme = theme\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetChatTitle.swift",
    "content": "//\n//  SetChatTitle.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the chat title. Supported only for basic groups, supergroups and channels. Requires can_change_info member right\npublic struct SetChatTitle: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// New title of the chat; 1-128 characters\n    public let title: String?\n\n\n    public init(\n        chatId: Int64?,\n        title: String?\n    ) {\n        self.chatId = chatId\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetCloseFriends.swift",
    "content": "//\n//  SetCloseFriends.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the list of close friends of the current user\npublic struct SetCloseFriends: Codable, Equatable, Hashable {\n\n    /// User identifiers of close friends; the users must be contacts of the current user\n    public let userIds: [Int64]?\n\n\n    public init(userIds: [Int64]?) {\n        self.userIds = userIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetCommands.swift",
    "content": "//\n//  SetCommands.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets the list of commands supported by the bot for the given user scope and language; for bots only\npublic struct SetCommands: Codable, Equatable, Hashable {\n\n    /// List of the bot's commands\n    public let commands: [BotCommand]?\n\n    /// A two-letter ISO 639-1 language code. If empty, the commands will be applied to all users from the given scope, for which language there are no dedicated commands\n    public let languageCode: String?\n\n    /// The scope to which the commands are relevant; pass null to change commands in the default bot command scope\n    public let scope: BotCommandScope?\n\n\n    public init(\n        commands: [BotCommand]?,\n        languageCode: String?,\n        scope: BotCommandScope?\n    ) {\n        self.commands = commands\n        self.languageCode = languageCode\n        self.scope = scope\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetCustomEmojiStickerSetThumbnail.swift",
    "content": "//\n//  SetCustomEmojiStickerSetThumbnail.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets a custom emoji sticker set thumbnail\npublic struct SetCustomEmojiStickerSetThumbnail: Codable, Equatable, Hashable {\n\n    /// Identifier of the custom emoji from the sticker set, which will be set as sticker set thumbnail; pass 0 to remove the sticker set thumbnail\n    public let customEmojiId: TdInt64?\n\n    /// Sticker set name. The sticker set must be owned by the current user\n    public let name: String?\n\n\n    public init(\n        customEmojiId: TdInt64?,\n        name: String?\n    ) {\n        self.customEmojiId = customEmojiId\n        self.name = name\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetCustomLanguagePack.swift",
    "content": "//\n//  SetCustomLanguagePack.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds or changes a custom local language pack to the current localization target\npublic struct SetCustomLanguagePack: Codable, Equatable, Hashable {\n\n    /// Information about the language pack. Language pack identifier must start with 'X', consist only of English letters, digits and hyphens, and must not exceed 64 characters. Can be called before authorization\n    public let info: LanguagePackInfo?\n\n    /// Strings of the new language pack\n    public let strings: [LanguagePackString]?\n\n\n    public init(\n        info: LanguagePackInfo?,\n        strings: [LanguagePackString]?\n    ) {\n        self.info = info\n        self.strings = strings\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetCustomLanguagePackString.swift",
    "content": "//\n//  SetCustomLanguagePackString.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds, edits or deletes a string in a custom local language pack. Can be called before authorization\npublic struct SetCustomLanguagePackString: Codable, Equatable, Hashable {\n\n    /// Identifier of a previously added custom local language pack in the current localization target\n    public let languagePackId: String?\n\n    /// New language pack string\n    public let newString: LanguagePackString?\n\n\n    public init(\n        languagePackId: String?,\n        newString: LanguagePackString?\n    ) {\n        self.languagePackId = languagePackId\n        self.newString = newString\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetDatabaseEncryptionKey.swift",
    "content": "//\n//  SetDatabaseEncryptionKey.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the database encryption key. Usually the encryption key is never changed and is stored in some OS keychain\npublic struct SetDatabaseEncryptionKey: Codable, Equatable, Hashable {\n\n    /// New encryption key\n    public let newEncryptionKey: Data?\n\n\n    public init(newEncryptionKey: Data?) {\n        self.newEncryptionKey = newEncryptionKey\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetDefaultBackground.swift",
    "content": "//\n//  SetDefaultBackground.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets default background for chats; adds the background to the list of installed backgrounds\npublic struct SetDefaultBackground: Codable, Equatable, Hashable {\n\n    /// The input background to use; pass null to create a new filled background\n    public let background: InputBackground?\n\n    /// Pass true if the background is set for a dark theme\n    public let forDarkTheme: Bool?\n\n    /// Background type; pass null to use the default type of the remote background; backgroundTypeChatTheme isn't supported\n    public let type: BackgroundType?\n\n\n    public init(\n        background: InputBackground?,\n        forDarkTheme: Bool?,\n        type: BackgroundType?\n    ) {\n        self.background = background\n        self.forDarkTheme = forDarkTheme\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetDefaultChannelAdministratorRights.swift",
    "content": "//\n//  SetDefaultChannelAdministratorRights.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets default administrator rights for adding the bot to channel chats; for bots only\npublic struct SetDefaultChannelAdministratorRights: Codable, Equatable, Hashable {\n\n    /// Default administrator rights for adding the bot to channels; pass null to remove default rights\n    public let defaultChannelAdministratorRights: ChatAdministratorRights?\n\n\n    public init(defaultChannelAdministratorRights: ChatAdministratorRights?) {\n        self.defaultChannelAdministratorRights = defaultChannelAdministratorRights\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetDefaultGroupAdministratorRights.swift",
    "content": "//\n//  SetDefaultGroupAdministratorRights.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets default administrator rights for adding the bot to basic group and supergroup chats; for bots only\npublic struct SetDefaultGroupAdministratorRights: Codable, Equatable, Hashable {\n\n    /// Default administrator rights for adding the bot to basic group and supergroup chats; pass null to remove default rights\n    public let defaultGroupAdministratorRights: ChatAdministratorRights?\n\n\n    public init(defaultGroupAdministratorRights: ChatAdministratorRights?) {\n        self.defaultGroupAdministratorRights = defaultGroupAdministratorRights\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetDefaultMessageAutoDeleteTime.swift",
    "content": "//\n//  SetDefaultMessageAutoDeleteTime.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the default message auto-delete time for new chats\npublic struct SetDefaultMessageAutoDeleteTime: Codable, Equatable, Hashable {\n\n    /// New default message auto-delete time; must be from 0 up to 365 * 86400 and be divisible by 86400. If 0, then messages aren't deleted automatically\n    public let messageAutoDeleteTime: MessageAutoDeleteTime?\n\n\n    public init(messageAutoDeleteTime: MessageAutoDeleteTime?) {\n        self.messageAutoDeleteTime = messageAutoDeleteTime\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetDefaultReactionType.swift",
    "content": "//\n//  SetDefaultReactionType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes type of default reaction for the current user\npublic struct SetDefaultReactionType: Codable, Equatable, Hashable {\n\n    /// New type of the default reaction. The paid reaction can't be set as default\n    public let reactionType: ReactionType?\n\n\n    public init(reactionType: ReactionType?) {\n        self.reactionType = reactionType\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetDirectMessagesChatTopicDraftMessage.swift",
    "content": "//\n//  SetDirectMessagesChatTopicDraftMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.53-bdec6af5\n//  https://github.com/tdlib/td/tree/bdec6af5\n//\n\nimport Foundation\n\n\n/// Changes the draft message in the topic in a channel direct messages chat administered by the current user\npublic struct SetDirectMessagesChatTopicDraftMessage: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// New draft message; pass null to remove the draft. All files in draft message content must be of the type inputFileLocal. Media thumbnails and captions are ignored\n    public let draftMessage: DraftMessage?\n\n    /// Topic identifier\n    public let topicId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        draftMessage: DraftMessage?,\n        topicId: Int64?\n    ) {\n        self.chatId = chatId\n        self.draftMessage = draftMessage\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetDirectMessagesChatTopicIsMarkedAsUnread.swift",
    "content": "//\n//  SetDirectMessagesChatTopicIsMarkedAsUnread.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the marked as unread state of the topic in a channel direct messages chat administered by the current user\npublic struct SetDirectMessagesChatTopicIsMarkedAsUnread: Codable, Equatable, Hashable {\n\n    /// Chat identifier of the channel direct messages chat\n    public let chatId: Int64?\n\n    /// New value of is_marked_as_unread\n    public let isMarkedAsUnread: Bool?\n\n    /// Topic identifier\n    public let topicId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        isMarkedAsUnread: Bool?,\n        topicId: Int64?\n    ) {\n        self.chatId = chatId\n        self.isMarkedAsUnread = isMarkedAsUnread\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetEmojiStatus.swift",
    "content": "//\n//  SetEmojiStatus.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the emoji status of the current user; for Telegram Premium users only\npublic struct SetEmojiStatus: Codable, Equatable, Hashable {\n\n    /// New emoji status; pass null to switch to the default badge\n    public let emojiStatus: EmojiStatus?\n\n\n    public init(emojiStatus: EmojiStatus?) {\n        self.emojiStatus = emojiStatus\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetFileGenerationProgress.swift",
    "content": "//\n//  SetFileGenerationProgress.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib on a file generation progress\npublic struct SetFileGenerationProgress: Codable, Equatable, Hashable {\n\n    /// Expected size of the generated file, in bytes; 0 if unknown\n    public let expectedSize: Int64?\n\n    /// The identifier of the generation process\n    public let generationId: TdInt64?\n\n    /// The number of bytes already generated\n    public let localPrefixSize: Int64?\n\n\n    public init(\n        expectedSize: Int64?,\n        generationId: TdInt64?,\n        localPrefixSize: Int64?\n    ) {\n        self.expectedSize = expectedSize\n        self.generationId = generationId\n        self.localPrefixSize = localPrefixSize\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetForumTopicNotificationSettings.swift",
    "content": "//\n//  SetForumTopicNotificationSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the notification settings of a forum topic in a forum supergroup chat or a chat with a bot with topics\npublic struct SetForumTopicNotificationSettings: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Forum topic identifier\n    public let forumTopicId: Int?\n\n    /// New notification settings for the forum topic. If the topic is muted for more than 366 days, it is considered to be muted forever\n    public let notificationSettings: ChatNotificationSettings?\n\n\n    public init(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        notificationSettings: ChatNotificationSettings?\n    ) {\n        self.chatId = chatId\n        self.forumTopicId = forumTopicId\n        self.notificationSettings = notificationSettings\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetGameScore.swift",
    "content": "//\n//  SetGameScore.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Updates the game score of the specified user in the game; for bots only\npublic struct SetGameScore: Codable, Equatable, Hashable {\n\n    /// The chat to which the message with the game belongs\n    public let chatId: Int64?\n\n    /// Pass true to edit the game message to include the current scoreboard\n    public let editMessage: Bool?\n\n    /// Pass true to update the score even if it decreases. If the score is 0, the user will be deleted from the high score table\n    public let force: Bool?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n    /// The new score\n    public let score: Int?\n\n    /// User identifier\n    public let userId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        editMessage: Bool?,\n        force: Bool?,\n        messageId: Int64?,\n        score: Int?,\n        userId: Int64?\n    ) {\n        self.chatId = chatId\n        self.editMessage = editMessage\n        self.force = force\n        self.messageId = messageId\n        self.score = score\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetGiftCollectionName.swift",
    "content": "//\n//  SetGiftCollectionName.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes name of a gift collection. If the collection is owned by a channel chat, then requires can_post_messages administrator right in the channel chat. Returns the changed collection\npublic struct SetGiftCollectionName: Codable, Equatable, Hashable {\n\n    /// Identifier of the gift collection\n    public let collectionId: Int?\n\n    /// New name of the collection; 1-12 characters\n    public let name: String?\n\n    /// Identifier of the user or the channel chat that owns the collection\n    public let ownerId: MessageSender?\n\n\n    public init(\n        collectionId: Int?,\n        name: String?,\n        ownerId: MessageSender?\n    ) {\n        self.collectionId = collectionId\n        self.name = name\n        self.ownerId = ownerId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetGiftResalePrice.swift",
    "content": "//\n//  SetGiftResalePrice.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes resale price of a unique gift owned by the current user\npublic struct SetGiftResalePrice: Codable, Equatable, Hashable {\n\n    /// The new price for the unique gift; pass null to disallow gift resale. The current user will receive getOption(\"gift_resale_star_earnings_per_mille\") Telegram Stars for each 1000 Telegram Stars paid for the gift if the gift price is in Telegram Stars or getOption(\"gift_resale_ton_earnings_per_mille\") Toncoins for each 1000 Toncoins paid for the gift if the gift price is in Toncoins\n    public let price: GiftResalePrice?\n\n    /// Identifier of the unique gift\n    public let receivedGiftId: String?\n\n\n    public init(\n        price: GiftResalePrice?,\n        receivedGiftId: String?\n    ) {\n        self.price = price\n        self.receivedGiftId = receivedGiftId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetGiftSettings.swift",
    "content": "//\n//  SetGiftSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes settings for gift receiving for the current user\npublic struct SetGiftSettings: Codable, Equatable, Hashable {\n\n    /// The new settings\n    public let settings: GiftSettings?\n\n\n    public init(settings: GiftSettings?) {\n        self.settings = settings\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetGroupCallPaidMessageStarCount.swift",
    "content": "//\n//  SetGroupCallPaidMessageStarCount.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the minimum number of Telegram Stars that must be paid by general participant for each sent message to a live story call. Requires groupCall.can_be_managed right\npublic struct SetGroupCallPaidMessageStarCount: Codable, Equatable, Hashable {\n\n    /// Group call identifier; must be an identifier of a live story call\n    public let groupCallId: Int?\n\n    /// The new minimum number of Telegram Stars; 0-getOption(\"paid_group_call_message_star_count_max\")\n    public let paidMessageStarCount: Int64?\n\n\n    public init(\n        groupCallId: Int?,\n        paidMessageStarCount: Int64?\n    ) {\n        self.groupCallId = groupCallId\n        self.paidMessageStarCount = paidMessageStarCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetGroupCallParticipantIsSpeaking.swift",
    "content": "//\n//  SetGroupCallParticipantIsSpeaking.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that speaking state of a participant of an active group call has changed. Returns identifier of the participant if it is found\npublic struct SetGroupCallParticipantIsSpeaking: Codable, Equatable, Hashable {\n\n    /// Group call participant's synchronization audio source identifier, or 0 for the current user\n    public let audioSource: Int?\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// Pass true if the user is speaking\n    public let isSpeaking: Bool?\n\n\n    public init(\n        audioSource: Int?,\n        groupCallId: Int?,\n        isSpeaking: Bool?\n    ) {\n        self.audioSource = audioSource\n        self.groupCallId = groupCallId\n        self.isSpeaking = isSpeaking\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetGroupCallParticipantVolumeLevel.swift",
    "content": "//\n//  SetGroupCallParticipantVolumeLevel.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes volume level of a participant of an active group call; not supported for live stories. If the current user can manage the group call or is the owner of the group call, then the participant's volume level will be changed for all users with the default volume level\npublic struct SetGroupCallParticipantVolumeLevel: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// Participant identifier\n    public let participantId: MessageSender?\n\n    /// New participant's volume level; 1-20000 in hundreds of percents\n    public let volumeLevel: Int?\n\n\n    public init(\n        groupCallId: Int?,\n        participantId: MessageSender?,\n        volumeLevel: Int?\n    ) {\n        self.groupCallId = groupCallId\n        self.participantId = participantId\n        self.volumeLevel = volumeLevel\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetGroupCallTitle.swift",
    "content": "//\n//  SetGroupCallTitle.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.47-971684a3\n//  https://github.com/tdlib/td/tree/971684a3\n//\n\nimport Foundation\n\n\n/// Sets group call title. Requires groupCall.can_be_managed group call flag\npublic struct SetGroupCallTitle: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// New group call title; 1-64 characters\n    public let title: String?\n\n\n    public init(\n        groupCallId: Int?,\n        title: String?\n    ) {\n        self.groupCallId = groupCallId\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetInactiveSessionTtl.swift",
    "content": "//\n//  SetInactiveSessionTtl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the period of inactivity after which sessions will automatically be terminated\npublic struct SetInactiveSessionTtl: Codable, Equatable, Hashable {\n\n    /// New number of days of inactivity before sessions will be automatically terminated; 1-366 days\n    public let inactiveSessionTtlDays: Int?\n\n\n    public init(inactiveSessionTtlDays: Int?) {\n        self.inactiveSessionTtlDays = inactiveSessionTtlDays\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetInlineGameScore.swift",
    "content": "//\n//  SetInlineGameScore.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Updates the game score of the specified user in a game; for bots only\npublic struct SetInlineGameScore: Codable, Equatable, Hashable {\n\n    /// Pass true to edit the game message to include the current scoreboard\n    public let editMessage: Bool?\n\n    /// Pass true to update the score even if it decreases. If the score is 0, the user will be deleted from the high score table\n    public let force: Bool?\n\n    /// Inline message identifier\n    public let inlineMessageId: String?\n\n    /// The new score\n    public let score: Int?\n\n    /// User identifier\n    public let userId: Int64?\n\n\n    public init(\n        editMessage: Bool?,\n        force: Bool?,\n        inlineMessageId: String?,\n        score: Int?,\n        userId: Int64?\n    ) {\n        self.editMessage = editMessage\n        self.force = force\n        self.inlineMessageId = inlineMessageId\n        self.score = score\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetLiveStoryMessageSender.swift",
    "content": "//\n//  SetLiveStoryMessageSender.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Selects a message sender to send messages in a live story call\npublic struct SetLiveStoryMessageSender: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// New message sender for the group call\n    public let messageSenderId: MessageSender?\n\n\n    public init(\n        groupCallId: Int?,\n        messageSenderId: MessageSender?\n    ) {\n        self.groupCallId = groupCallId\n        self.messageSenderId = messageSenderId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetLocation.swift",
    "content": "//\n//  SetLocation.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.37-b39769be\n//  https://github.com/tdlib/td/tree/b39769be\n//\n\nimport Foundation\n\n\n/// Changes the location of the current user. Needs to be called if getOption(\"is_location_visible\") is true and location changes for more than 1 kilometer. Must not be called if the user has a business location\npublic struct SetLocation: Codable, Equatable, Hashable {\n\n    /// The new location of the user\n    public let location: Location?\n\n\n    public init(location: Location?) {\n        self.location = location\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetLogStream.swift",
    "content": "//\n//  SetLogStream.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets new log stream for internal logging of TDLib. Can be called synchronously\npublic struct SetLogStream: Codable, Equatable, Hashable {\n\n    /// New log stream\n    public let logStream: LogStream?\n\n\n    public init(logStream: LogStream?) {\n        self.logStream = logStream\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetLogTagVerbosityLevel.swift",
    "content": "//\n//  SetLogTagVerbosityLevel.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets the verbosity level for a specified TDLib internal log tag. Can be called synchronously\npublic struct SetLogTagVerbosityLevel: Codable, Equatable, Hashable {\n\n    /// New verbosity level; 1-1024\n    public let newVerbosityLevel: Int?\n\n    /// Logging tag to change verbosity level\n    public let tag: String?\n\n\n    public init(\n        newVerbosityLevel: Int?,\n        tag: String?\n    ) {\n        self.newVerbosityLevel = newVerbosityLevel\n        self.tag = tag\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetLogVerbosityLevel.swift",
    "content": "//\n//  SetLogVerbosityLevel.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets the verbosity level of the internal logging of TDLib. Can be called synchronously\npublic struct SetLogVerbosityLevel: Codable, Equatable, Hashable {\n\n    /// New value of the verbosity level for logging. Value 0 corresponds to fatal errors, value 1 corresponds to errors, value 2 corresponds to warnings and debug warnings, value 3 corresponds to informational, value 4 corresponds to debug, value 5 corresponds to verbose debug, value greater than 5 and up to 1023 can be used to enable even more logging\n    public let newVerbosityLevel: Int?\n\n\n    public init(newVerbosityLevel: Int?) {\n        self.newVerbosityLevel = newVerbosityLevel\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetLoginEmailAddress.swift",
    "content": "//\n//  SetLoginEmailAddress.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the login email address of the user. The email address can be changed only if the current user already has login email and passwordState.login_email_address_pattern is non-empty, or the user received suggestedActionSetLoginEmailAddress and isLoginEmailAddressRequired succeeds. The change will not be applied until the new login email address is confirmed with checkLoginEmailAddressCode. To use Apple ID/Google ID instead of an email address, call checkLoginEmailAddressCode directly\npublic struct SetLoginEmailAddress: Codable, Equatable, Hashable {\n\n    /// New login email address\n    public let newLoginEmailAddress: String?\n\n\n    public init(newLoginEmailAddress: String?) {\n        self.newLoginEmailAddress = newLoginEmailAddress\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetMainProfileTab.swift",
    "content": "//\n//  SetMainProfileTab.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the main profile tab of the current user\npublic struct SetMainProfileTab: Codable, Equatable, Hashable {\n\n    /// The new value of the main profile tab\n    public let mainProfileTab: ProfileTab?\n\n\n    public init(mainProfileTab: ProfileTab?) {\n        self.mainProfileTab = mainProfileTab\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetManagedBotAccessSettings.swift",
    "content": "//\n//  SetManagedBotAccessSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets access settings of a managed bot; for bots only\npublic struct SetManagedBotAccessSettings: Codable, Equatable, Hashable {\n\n    /// Identifier of the managed bot\n    public let botUserId: Int64?\n\n    /// New access settings\n    public let settings: BotAccessSettings?\n\n\n    public init(\n        botUserId: Int64?,\n        settings: BotAccessSettings?\n    ) {\n        self.botUserId = botUserId\n        self.settings = settings\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetMenuButton.swift",
    "content": "//\n//  SetMenuButton.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets menu button for the given user or for all users; for bots only\npublic struct SetMenuButton: Codable, Equatable, Hashable {\n\n    /// New menu button\n    public let menuButton: BotMenuButton?\n\n    /// Identifier of the user or 0 to set menu button for all users\n    public let userId: Int64?\n\n\n    public init(\n        menuButton: BotMenuButton?,\n        userId: Int64?\n    ) {\n        self.menuButton = menuButton\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetMessageFactCheck.swift",
    "content": "//\n//  SetMessageFactCheck.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the fact-check of a message. Can be only used if messageProperties.can_set_fact_check == true\npublic struct SetMessageFactCheck: Codable, Equatable, Hashable {\n\n    /// The channel chat the message belongs to\n    public let chatId: Int64?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n    /// New text of the fact-check; 0-getOption(\"fact_check_length_max\") characters; pass null to remove it. Only Bold, Italic, and TextUrl entities with https://t.me/ links are supported\n    public let text: FormattedText?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        text: FormattedText?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetMessageReactions.swift",
    "content": "//\n//  SetMessageReactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets reactions on a message; for bots only\npublic struct SetMessageReactions: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the message belongs\n    public let chatId: Int64?\n\n    /// Pass true if the reactions are added with a big animation\n    public let isBig: Bool?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n    /// Types of the reaction to set; pass an empty list to remove the reactions\n    public let reactionTypes: [ReactionType]?\n\n\n    public init(\n        chatId: Int64?,\n        isBig: Bool?,\n        messageId: Int64?,\n        reactionTypes: [ReactionType]?\n    ) {\n        self.chatId = chatId\n        self.isBig = isBig\n        self.messageId = messageId\n        self.reactionTypes = reactionTypes\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetMessageSenderBlockList.swift",
    "content": "//\n//  SetMessageSenderBlockList.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the block list of a message sender. Currently, only users and supergroup chats can be blocked\npublic struct SetMessageSenderBlockList: Codable, Equatable, Hashable {\n\n    /// New block list for the message sender; pass null to unblock the message sender\n    public let blockList: BlockList?\n\n    /// Identifier of a message sender to block/unblock\n    public let senderId: MessageSender?\n\n\n    public init(\n        blockList: BlockList?,\n        senderId: MessageSender?\n    ) {\n        self.blockList = blockList\n        self.senderId = senderId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetMessageSenderBotVerification.swift",
    "content": "//\n//  SetMessageSenderBotVerification.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the verification status of a user or a chat by an owned bot\npublic struct SetMessageSenderBotVerification: Codable, Equatable, Hashable {\n\n    /// Identifier of the owned bot, which will verify the user or the chat\n    public let botUserId: Int64?\n\n    /// Custom description of verification reason; 0-getOption(\"bot_verification_custom_description_length_max\"). If empty, then \"was verified by organization \"organization_name\"\" will be used as description. Can be specified only if the bot is allowed to provide custom description\n    public let customDescription: String?\n\n    /// Identifier of the user or the supergroup or channel chat, which will be verified by the bot\n    public let verifiedId: MessageSender?\n\n\n    public init(\n        botUserId: Int64?,\n        customDescription: String?,\n        verifiedId: MessageSender?\n    ) {\n        self.botUserId = botUserId\n        self.customDescription = customDescription\n        self.verifiedId = verifiedId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetName.swift",
    "content": "//\n//  SetName.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the first and last name of the current user\npublic struct SetName: Codable, Equatable, Hashable {\n\n    /// The new value of the first name for the current user; 1-64 characters\n    public let firstName: String?\n\n    /// The new value of the optional last name for the current user; 0-64 characters\n    public let lastName: String?\n\n\n    public init(\n        firstName: String?,\n        lastName: String?\n    ) {\n        self.firstName = firstName\n        self.lastName = lastName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetNetworkType.swift",
    "content": "//\n//  SetNetworkType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets the current network type. Can be called before authorization. Calling this method forces all network connections to reopen, mitigating the delay in switching between different networks, so it must be called whenever the network is changed, even if the network type remains the same. Network type is used to check whether the library can use the network at all and also for collecting detailed network data usage statistics\npublic struct SetNetworkType: Codable, Equatable, Hashable {\n\n    /// The new network type; pass null to set network type to networkTypeOther\n    public let type: NetworkType?\n\n\n    public init(type: NetworkType?) {\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetNewChatPrivacySettings.swift",
    "content": "//\n//  SetNewChatPrivacySettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes privacy settings for new chat creation; can be used only if getOption(\"can_set_new_chat_privacy_settings\")\npublic struct SetNewChatPrivacySettings: Codable, Equatable, Hashable {\n\n    /// New settings\n    public let settings: NewChatPrivacySettings?\n\n\n    public init(settings: NewChatPrivacySettings?) {\n        self.settings = settings\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetOption.swift",
    "content": "//\n//  SetOption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets the value of an option. (Check the list of available options on https://core.telegram.org/tdlib/options.) Only writable options can be set. Can be called before authorization\npublic struct SetOption: Codable, Equatable, Hashable {\n\n    /// The name of the option\n    public let name: String?\n\n    /// The new value of the option; pass null to reset option value to a default value\n    public let value: OptionValue?\n\n\n    public init(\n        name: String?,\n        value: OptionValue?\n    ) {\n        self.name = name\n        self.value = value\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetPaidMessageReactionType.swift",
    "content": "//\n//  SetPaidMessageReactionType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes type of paid message reaction of the current user on a message. The message must have paid reaction added by the current user\npublic struct SetPaidMessageReactionType: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the message belongs\n    public let chatId: Int64?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n    /// New type of the paid reaction\n    public let type: PaidReactionType?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        type: PaidReactionType?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetPassportElement.swift",
    "content": "//\n//  SetPassportElement.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds an element to the user's Telegram Passport. May return an error with a message \"PHONE_VERIFICATION_NEEDED\" or \"EMAIL_VERIFICATION_NEEDED\" if the chosen phone number or the chosen email address must be verified first\npublic struct SetPassportElement: Codable, Equatable, Hashable {\n\n    /// Input Telegram Passport element\n    public let element: InputPassportElement?\n\n    /// The 2-step verification password of the current user\n    public let password: String?\n\n\n    public init(\n        element: InputPassportElement?,\n        password: String?\n    ) {\n        self.element = element\n        self.password = password\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetPassportElementErrors.swift",
    "content": "//\n//  SetPassportElementErrors.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs the user who some of the elements in their Telegram Passport contain errors; for bots only. The user will not be able to resend the elements, until the errors are fixed\npublic struct SetPassportElementErrors: Codable, Equatable, Hashable {\n\n    /// The errors\n    public let errors: [InputPassportElementError]?\n\n    /// User identifier\n    public let userId: Int64?\n\n\n    public init(\n        errors: [InputPassportElementError]?,\n        userId: Int64?\n    ) {\n        self.errors = errors\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetPassword.swift",
    "content": "//\n//  SetPassword.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the 2-step verification password for the current user. If a new recovery email address is specified, then the change will not be applied until the new recovery email address is confirmed\npublic struct SetPassword: Codable, Equatable, Hashable {\n\n    /// New password hint; may be empty\n    public let newHint: String?\n\n    /// New 2-step verification password of the user; may be empty to remove the password\n    public let newPassword: String?\n\n    /// New recovery email address; may be empty\n    public let newRecoveryEmailAddress: String?\n\n    /// Previous 2-step verification password of the user\n    public let oldPassword: String?\n\n    /// Pass true to change also the recovery email address\n    public let setRecoveryEmailAddress: Bool?\n\n\n    public init(\n        newHint: String?,\n        newPassword: String?,\n        newRecoveryEmailAddress: String?,\n        oldPassword: String?,\n        setRecoveryEmailAddress: Bool?\n    ) {\n        self.newHint = newHint\n        self.newPassword = newPassword\n        self.newRecoveryEmailAddress = newRecoveryEmailAddress\n        self.oldPassword = oldPassword\n        self.setRecoveryEmailAddress = setRecoveryEmailAddress\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetPersonalChat.swift",
    "content": "//\n//  SetPersonalChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the personal chat of the current user\npublic struct SetPersonalChat: Codable, Equatable, Hashable {\n\n    /// Identifier of the new personal chat; pass 0 to remove the chat. Use getSuitablePersonalChats to get suitable chats\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetPinnedChats.swift",
    "content": "//\n//  SetPinnedChats.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the order of pinned chats\npublic struct SetPinnedChats: Codable, Equatable, Hashable {\n\n    /// The new list of pinned chats\n    public let chatIds: [Int64]?\n\n    /// Chat list in which to change the order of pinned chats\n    public let chatList: ChatList?\n\n\n    public init(\n        chatIds: [Int64]?,\n        chatList: ChatList?\n    ) {\n        self.chatIds = chatIds\n        self.chatList = chatList\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetPinnedForumTopics.swift",
    "content": "//\n//  SetPinnedForumTopics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the order of pinned topics in a forum supergroup chat or a chat with a bot with topics; requires can_manage_topics administrator right in the supergroup\npublic struct SetPinnedForumTopics: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// The new list of identifiers of the pinned forum topics\n    public let forumTopicIds: [Int]?\n\n\n    public init(\n        chatId: Int64?,\n        forumTopicIds: [Int]?\n    ) {\n        self.chatId = chatId\n        self.forumTopicIds = forumTopicIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetPinnedGifts.swift",
    "content": "//\n//  SetPinnedGifts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the list of pinned gifts on the current user's or the channel's profile page; requires can_post_messages administrator right in the channel chat\npublic struct SetPinnedGifts: Codable, Equatable, Hashable {\n\n    /// Identifier of the user or the channel chat that received the gifts\n    public let ownerId: MessageSender?\n\n    /// New list of pinned gifts. All gifts must be upgraded and saved on the profile page first. There can be up to getOption(\"pinned_gift_count_max\") pinned gifts\n    public let receivedGiftIds: [String]?\n\n\n    public init(\n        ownerId: MessageSender?,\n        receivedGiftIds: [String]?\n    ) {\n        self.ownerId = ownerId\n        self.receivedGiftIds = receivedGiftIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetPinnedSavedMessagesTopics.swift",
    "content": "//\n//  SetPinnedSavedMessagesTopics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the order of pinned Saved Messages topics\npublic struct SetPinnedSavedMessagesTopics: Codable, Equatable, Hashable {\n\n    /// Identifiers of the new pinned Saved Messages topics\n    public let savedMessagesTopicIds: [Int64]?\n\n\n    public init(savedMessagesTopicIds: [Int64]?) {\n        self.savedMessagesTopicIds = savedMessagesTopicIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetPollAnswer.swift",
    "content": "//\n//  SetPollAnswer.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the user answer to a poll\npublic struct SetPollAnswer: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the poll belongs\n    public let chatId: Int64?\n\n    /// Identifier of the message containing the poll\n    public let messageId: Int64?\n\n    /// 0-based identifiers of answer options, chosen by the user. User can choose more than 1 answer option only is the poll allows multiple answers\n    public let optionIds: [Int]?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        optionIds: [Int]?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.optionIds = optionIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetProfileAccentColor.swift",
    "content": "//\n//  SetProfileAccentColor.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes accent color and background custom emoji for profile of the current user; for Telegram Premium users only\npublic struct SetProfileAccentColor: Codable, Equatable, Hashable {\n\n    /// Identifier of the accent color to use for profile; pass -1 if none\n    public let profileAccentColorId: Int?\n\n    /// Identifier of a custom emoji to be shown on the user's profile photo background; 0 if none\n    public let profileBackgroundCustomEmojiId: TdInt64?\n\n\n    public init(\n        profileAccentColorId: Int?,\n        profileBackgroundCustomEmojiId: TdInt64?\n    ) {\n        self.profileAccentColorId = profileAccentColorId\n        self.profileBackgroundCustomEmojiId = profileBackgroundCustomEmojiId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetProfileAudioPosition.swift",
    "content": "//\n//  SetProfileAudioPosition.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes position of an audio file in the profile audio files of the current user\npublic struct SetProfileAudioPosition: Codable, Equatable, Hashable {\n\n    /// Identifier of the file from profile audio files after which the file will be positioned; pass 0 to move the file to the beginning of the list\n    public let afterFileId: Int?\n\n    /// Identifier of the file from profile audio files, which position will be changed\n    public let fileId: Int?\n\n\n    public init(\n        afterFileId: Int?,\n        fileId: Int?\n    ) {\n        self.afterFileId = afterFileId\n        self.fileId = fileId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetProfilePhoto.swift",
    "content": "//\n//  SetProfilePhoto.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes a profile photo for the current user\npublic struct SetProfilePhoto: Codable, Equatable, Hashable {\n\n    /// Pass true to set the public photo, which will be visible even if the main photo is hidden by privacy settings\n    public let isPublic: Bool?\n\n    /// Profile photo to set\n    public let photo: InputChatPhoto?\n\n\n    public init(\n        isPublic: Bool?,\n        photo: InputChatPhoto?\n    ) {\n        self.isPublic = isPublic\n        self.photo = photo\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetQuickReplyShortcutName.swift",
    "content": "//\n//  SetQuickReplyShortcutName.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes name of a quick reply shortcut\npublic struct SetQuickReplyShortcutName: Codable, Equatable, Hashable {\n\n    /// New name for the shortcut. Use checkQuickReplyShortcutName to check its validness\n    public let name: String?\n\n    /// Unique identifier of the quick reply shortcut\n    public let shortcutId: Int?\n\n\n    public init(\n        name: String?,\n        shortcutId: Int?\n    ) {\n        self.name = name\n        self.shortcutId = shortcutId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetReactionNotificationSettings.swift",
    "content": "//\n//  SetReactionNotificationSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes notification settings for reactions\npublic struct SetReactionNotificationSettings: Codable, Equatable, Hashable {\n\n    /// The new notification settings for reactions\n    public let notificationSettings: ReactionNotificationSettings?\n\n\n    public init(notificationSettings: ReactionNotificationSettings?) {\n        self.notificationSettings = notificationSettings\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetReadDatePrivacySettings.swift",
    "content": "//\n//  SetReadDatePrivacySettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes privacy settings for message read date\npublic struct SetReadDatePrivacySettings: Codable, Equatable, Hashable {\n\n    /// New settings\n    public let settings: ReadDatePrivacySettings?\n\n\n    public init(settings: ReadDatePrivacySettings?) {\n        self.settings = settings\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetRecoveryEmailAddress.swift",
    "content": "//\n//  SetRecoveryEmailAddress.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the 2-step verification recovery email address of the user. If a new recovery email address is specified, then the change will not be applied until the new recovery email address is confirmed. If new_recovery_email_address is the same as the email address that is currently set up, this call succeeds immediately and aborts all other requests waiting for an email confirmation\npublic struct SetRecoveryEmailAddress: Codable, Equatable, Hashable {\n\n    /// New recovery email address\n    public let newRecoveryEmailAddress: String?\n\n    /// The 2-step verification password of the current user\n    public let password: String?\n\n\n    public init(\n        newRecoveryEmailAddress: String?,\n        password: String?\n    ) {\n        self.newRecoveryEmailAddress = newRecoveryEmailAddress\n        self.password = password\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetSavedMessagesTagLabel.swift",
    "content": "//\n//  SetSavedMessagesTagLabel.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes label of a Saved Messages tag; for Telegram Premium users only\npublic struct SetSavedMessagesTagLabel: Codable, Equatable, Hashable {\n\n    /// New label for the tag; 0-12 characters\n    public let label: String?\n\n    /// The tag which label will be changed\n    public let tag: ReactionType?\n\n\n    public init(\n        label: String?,\n        tag: ReactionType?\n    ) {\n        self.label = label\n        self.tag = tag\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetScopeNotificationSettings.swift",
    "content": "//\n//  SetScopeNotificationSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes notification settings for chats of a given type\npublic struct SetScopeNotificationSettings: Codable, Equatable, Hashable {\n\n    /// The new notification settings for the given scope\n    public let notificationSettings: ScopeNotificationSettings?\n\n    /// Types of chats for which to change the notification settings\n    public let scope: NotificationSettingsScope?\n\n\n    public init(\n        notificationSettings: ScopeNotificationSettings?,\n        scope: NotificationSettingsScope?\n    ) {\n        self.notificationSettings = notificationSettings\n        self.scope = scope\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetStickerEmojis.swift",
    "content": "//\n//  SetStickerEmojis.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the list of emojis corresponding to a sticker. The sticker must belong to a regular or custom emoji sticker set that is owned by the current user\npublic struct SetStickerEmojis: Codable, Equatable, Hashable {\n\n    /// New string with 1-20 emoji corresponding to the sticker\n    public let emojis: String?\n\n    /// Sticker\n    public let sticker: InputFile?\n\n\n    public init(\n        emojis: String?,\n        sticker: InputFile?\n    ) {\n        self.emojis = emojis\n        self.sticker = sticker\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetStickerKeywords.swift",
    "content": "//\n//  SetStickerKeywords.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the list of keywords of a sticker. The sticker must belong to a regular or custom emoji sticker set that is owned by the current user\npublic struct SetStickerKeywords: Codable, Equatable, Hashable {\n\n    /// List of up to 20 keywords with total length up to 64 characters, which can be used to find the sticker\n    public let keywords: [String]?\n\n    /// Sticker\n    public let sticker: InputFile?\n\n\n    public init(\n        keywords: [String]?,\n        sticker: InputFile?\n    ) {\n        self.keywords = keywords\n        self.sticker = sticker\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetStickerMaskPosition.swift",
    "content": "//\n//  SetStickerMaskPosition.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the mask position of a mask sticker. The sticker must belong to a mask sticker set that is owned by the current user\npublic struct SetStickerMaskPosition: Codable, Equatable, Hashable {\n\n    /// Position where the mask is placed; pass null to remove mask position\n    public let maskPosition: MaskPosition?\n\n    /// Sticker\n    public let sticker: InputFile?\n\n\n    public init(\n        maskPosition: MaskPosition?,\n        sticker: InputFile?\n    ) {\n        self.maskPosition = maskPosition\n        self.sticker = sticker\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetStickerPositionInSet.swift",
    "content": "//\n//  SetStickerPositionInSet.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the position of a sticker in the set to which it belongs. The sticker set must be owned by the current user\npublic struct SetStickerPositionInSet: Codable, Equatable, Hashable {\n\n    /// New position of the sticker in the set, 0-based\n    public let position: Int?\n\n    /// Sticker\n    public let sticker: InputFile?\n\n\n    public init(\n        position: Int?,\n        sticker: InputFile?\n    ) {\n        self.position = position\n        self.sticker = sticker\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetStickerSetThumbnail.swift",
    "content": "//\n//  SetStickerSetThumbnail.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets a sticker set thumbnail\npublic struct SetStickerSetThumbnail: Codable, Equatable, Hashable {\n\n    /// Format of the thumbnail; pass null if thumbnail is removed\n    public let format: StickerFormat?\n\n    /// Sticker set name. The sticker set must be owned by the current user\n    public let name: String?\n\n    /// Thumbnail to set; pass null to remove the sticker set thumbnail\n    public let thumbnail: InputFile?\n\n    /// Sticker set owner; ignored for regular users\n    public let userId: Int64?\n\n\n    public init(\n        format: StickerFormat?,\n        name: String?,\n        thumbnail: InputFile?,\n        userId: Int64?\n    ) {\n        self.format = format\n        self.name = name\n        self.thumbnail = thumbnail\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetStickerSetTitle.swift",
    "content": "//\n//  SetStickerSetTitle.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets a sticker set title\npublic struct SetStickerSetTitle: Codable, Equatable, Hashable {\n\n    /// Sticker set name. The sticker set must be owned by the current user\n    public let name: String?\n\n    /// New sticker set title\n    public let title: String?\n\n\n    public init(\n        name: String?,\n        title: String?\n    ) {\n        self.name = name\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetStoryAlbumName.swift",
    "content": "//\n//  SetStoryAlbumName.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes name of an album of stories. If the album is owned by a supergroup or a channel chat, then requires can_edit_stories administrator right in the chat. Returns the changed album\npublic struct SetStoryAlbumName: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat that owns the stories\n    public let chatId: Int64?\n\n    /// New name of the album; 1-12 characters\n    public let name: String?\n\n    /// Identifier of the story album\n    public let storyAlbumId: Int?\n\n\n    public init(\n        chatId: Int64?,\n        name: String?,\n        storyAlbumId: Int?\n    ) {\n        self.chatId = chatId\n        self.name = name\n        self.storyAlbumId = storyAlbumId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetStoryPrivacySettings.swift",
    "content": "//\n//  SetStoryPrivacySettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes privacy settings of a story. The method can be called only for stories posted on behalf of the current user and if story.can_set_privacy_settings == true\npublic struct SetStoryPrivacySettings: Codable, Equatable, Hashable {\n\n    /// The new privacy settings for the story\n    public let privacySettings: StoryPrivacySettings?\n\n    /// Identifier of the story\n    public let storyId: Int?\n\n\n    public init(\n        privacySettings: StoryPrivacySettings?,\n        storyId: Int?\n    ) {\n        self.privacySettings = privacySettings\n        self.storyId = storyId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetStoryReaction.swift",
    "content": "//\n//  SetStoryReaction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes chosen reaction on a story that has already been sent; not supported for live stories\npublic struct SetStoryReaction: Codable, Equatable, Hashable {\n\n    /// Type of the reaction to set; pass null to remove the reaction. Custom emoji reactions can be used only by Telegram Premium users. Paid reactions can't be set\n    public let reactionType: ReactionType?\n\n    /// The identifier of the story\n    public let storyId: Int?\n\n    /// The identifier of the poster of the story\n    public let storyPosterChatId: Int64?\n\n    /// Pass true if the reaction needs to be added to recent reactions\n    public let updateRecentReactions: Bool?\n\n\n    public init(\n        reactionType: ReactionType?,\n        storyId: Int?,\n        storyPosterChatId: Int64?,\n        updateRecentReactions: Bool?\n    ) {\n        self.reactionType = reactionType\n        self.storyId = storyId\n        self.storyPosterChatId = storyPosterChatId\n        self.updateRecentReactions = updateRecentReactions\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetSupergroupCustomEmojiStickerSet.swift",
    "content": "//\n//  SetSupergroupCustomEmojiStickerSet.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the custom emoji sticker set of a supergroup; requires can_change_info administrator right. The chat must have at least chatBoostFeatures.min_custom_emoji_sticker_set_boost_level boost level to pass the corresponding color\npublic struct SetSupergroupCustomEmojiStickerSet: Codable, Equatable, Hashable {\n\n    /// New value of the custom emoji sticker set identifier for the supergroup. Use 0 to remove the custom emoji sticker set in the supergroup\n    public let customEmojiStickerSetId: TdInt64?\n\n    /// Identifier of the supergroup\n    public let supergroupId: Int64?\n\n\n    public init(\n        customEmojiStickerSetId: TdInt64?,\n        supergroupId: Int64?\n    ) {\n        self.customEmojiStickerSetId = customEmojiStickerSetId\n        self.supergroupId = supergroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetSupergroupMainProfileTab.swift",
    "content": "//\n//  SetSupergroupMainProfileTab.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the main profile tab of the channel; requires can_change_info administrator right\npublic struct SetSupergroupMainProfileTab: Codable, Equatable, Hashable {\n\n    /// The new value of the main profile tab\n    public let mainProfileTab: ProfileTab?\n\n    /// Identifier of the channel\n    public let supergroupId: Int64?\n\n\n    public init(\n        mainProfileTab: ProfileTab?,\n        supergroupId: Int64?\n    ) {\n        self.mainProfileTab = mainProfileTab\n        self.supergroupId = supergroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetSupergroupStickerSet.swift",
    "content": "//\n//  SetSupergroupStickerSet.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the sticker set of a supergroup; requires can_change_info administrator right\npublic struct SetSupergroupStickerSet: Codable, Equatable, Hashable {\n\n    /// New value of the supergroup sticker set identifier. Use 0 to remove the supergroup sticker set\n    public let stickerSetId: TdInt64?\n\n    /// Identifier of the supergroup\n    public let supergroupId: Int64?\n\n\n    public init(\n        stickerSetId: TdInt64?,\n        supergroupId: Int64?\n    ) {\n        self.stickerSetId = stickerSetId\n        self.supergroupId = supergroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetSupergroupUnrestrictBoostCount.swift",
    "content": "//\n//  SetSupergroupUnrestrictBoostCount.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the number of times the supergroup must be boosted by a user to ignore slow mode and chat permission restrictions; requires can_restrict_members administrator right\npublic struct SetSupergroupUnrestrictBoostCount: Codable, Equatable, Hashable {\n\n    /// Identifier of the supergroup\n    public let supergroupId: Int64?\n\n    /// New value of the unrestrict_boost_count supergroup setting; 0-8. Use 0 to remove the setting\n    public let unrestrictBoostCount: Int?\n\n\n    public init(\n        supergroupId: Int64?,\n        unrestrictBoostCount: Int?\n    ) {\n        self.supergroupId = supergroupId\n        self.unrestrictBoostCount = unrestrictBoostCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetSupergroupUsername.swift",
    "content": "//\n//  SetSupergroupUsername.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the editable username of a supergroup or channel, requires owner privileges in the supergroup or channel\npublic struct SetSupergroupUsername: Codable, Equatable, Hashable {\n\n    /// Identifier of the supergroup or channel\n    public let supergroupId: Int64?\n\n    /// New value of the username. Use an empty string to remove the username. The username can't be completely removed if there is another active or disabled username\n    public let username: String?\n\n\n    public init(\n        supergroupId: Int64?,\n        username: String?\n    ) {\n        self.supergroupId = supergroupId\n        self.username = username\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetTdlibParameters.swift",
    "content": "//\n//  SetTdlibParameters.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets the parameters for TDLib initialization. Works only when the current authorization state is authorizationStateWaitTdlibParameters\npublic struct SetTdlibParameters: Codable, Equatable, Hashable {\n\n    /// Application identifier hash for Telegram API access, which can be obtained at https://my.telegram.org\n    public let apiHash: String?\n\n    /// Application identifier for Telegram API access, which can be obtained at https://my.telegram.org\n    public let apiId: Int?\n\n    /// Application version; must be non-empty\n    public let applicationVersion: String?\n\n    /// The path to the directory for the persistent database; if empty, the current working directory will be used\n    public let databaseDirectory: String?\n\n    /// Encryption key for the database. If the encryption key is invalid, then an error with code 401 will be returned\n    public let databaseEncryptionKey: Data?\n\n    /// Model of the device the application is being run on; must be non-empty\n    public let deviceModel: String?\n\n    /// The path to the directory for storing files; if empty, database_directory will be used\n    public let filesDirectory: String?\n\n    /// IETF language tag of the user's operating system language; must be non-empty\n    public let systemLanguageCode: String?\n\n    /// Version of the operating system the application is being run on. If empty, the version is automatically detected by TDLib\n    public let systemVersion: String?\n\n    /// Pass true to keep cache of users, basic groups, supergroups, channels and secret chats between restarts. Implies use_file_database\n    public let useChatInfoDatabase: Bool?\n\n    /// Pass true to keep information about downloaded and uploaded files between application restarts\n    public let useFileDatabase: Bool?\n\n    /// Pass true to keep cache of chats and messages between restarts. Implies use_chat_info_database\n    public let useMessageDatabase: Bool?\n\n    /// Pass true to enable support for secret chats\n    public let useSecretChats: Bool?\n\n    /// Pass true to use Telegram test environment instead of the production environment\n    public let useTestDc: Bool?\n\n\n    public init(\n        apiHash: String?,\n        apiId: Int?,\n        applicationVersion: String?,\n        databaseDirectory: String?,\n        databaseEncryptionKey: Data?,\n        deviceModel: String?,\n        filesDirectory: String?,\n        systemLanguageCode: String?,\n        systemVersion: String?,\n        useChatInfoDatabase: Bool?,\n        useFileDatabase: Bool?,\n        useMessageDatabase: Bool?,\n        useSecretChats: Bool?,\n        useTestDc: Bool?\n    ) {\n        self.apiHash = apiHash\n        self.apiId = apiId\n        self.applicationVersion = applicationVersion\n        self.databaseDirectory = databaseDirectory\n        self.databaseEncryptionKey = databaseEncryptionKey\n        self.deviceModel = deviceModel\n        self.filesDirectory = filesDirectory\n        self.systemLanguageCode = systemLanguageCode\n        self.systemVersion = systemVersion\n        self.useChatInfoDatabase = useChatInfoDatabase\n        self.useFileDatabase = useFileDatabase\n        self.useMessageDatabase = useMessageDatabase\n        self.useSecretChats = useSecretChats\n        self.useTestDc = useTestDc\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetUpgradedGiftColors.swift",
    "content": "//\n//  SetUpgradedGiftColors.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes color scheme for the current user based on an owned or a hosted upgraded gift; for Telegram Premium users only\npublic struct SetUpgradedGiftColors: Codable, Equatable, Hashable {\n\n    /// Identifier of the upgradedGiftColors scheme to use\n    public let upgradedGiftColorsId: TdInt64?\n\n\n    public init(upgradedGiftColorsId: TdInt64?) {\n        self.upgradedGiftColorsId = upgradedGiftColorsId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetUserEmojiStatus.swift",
    "content": "//\n//  SetUserEmojiStatus.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the emoji status of a user; for bots only\npublic struct SetUserEmojiStatus: Codable, Equatable, Hashable {\n\n    /// New emoji status; pass null to switch to the default badge\n    public let emojiStatus: EmojiStatus?\n\n    /// Identifier of the user\n    public let userId: Int64?\n\n\n    public init(\n        emojiStatus: EmojiStatus?,\n        userId: Int64?\n    ) {\n        self.emojiStatus = emojiStatus\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetUserNote.swift",
    "content": "//\n//  SetUserNote.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes a note of a contact user\npublic struct SetUserNote: Codable, Equatable, Hashable {\n\n    /// Note to set for the user; 0-getOption(\"user_note_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed\n    public let note: FormattedText?\n\n    /// User identifier\n    public let userId: Int64?\n\n\n    public init(\n        note: FormattedText?,\n        userId: Int64?\n    ) {\n        self.note = note\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetUserPersonalProfilePhoto.swift",
    "content": "//\n//  SetUserPersonalProfilePhoto.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes a personal profile photo of a contact user\npublic struct SetUserPersonalProfilePhoto: Codable, Equatable, Hashable {\n\n    /// Profile photo to set; pass null to delete the photo; inputChatPhotoPrevious isn't supported in this function\n    public let photo: InputChatPhoto?\n\n    /// User identifier\n    public let userId: Int64?\n\n\n    public init(\n        photo: InputChatPhoto?,\n        userId: Int64?\n    ) {\n        self.photo = photo\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetUserPrivacySettingRules.swift",
    "content": "//\n//  SetUserPrivacySettingRules.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes user privacy settings\npublic struct SetUserPrivacySettingRules: Codable, Equatable, Hashable {\n\n    /// The new privacy rules\n    public let rules: UserPrivacySettingRules?\n\n    /// The privacy setting\n    public let setting: UserPrivacySetting?\n\n\n    public init(\n        rules: UserPrivacySettingRules?,\n        setting: UserPrivacySetting?\n    ) {\n        self.rules = rules\n        self.setting = setting\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetUserSupportInfo.swift",
    "content": "//\n//  SetUserSupportInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets support information for the given user; for Telegram support only\npublic struct SetUserSupportInfo: Codable, Equatable, Hashable {\n\n    /// New information message\n    public let message: FormattedText?\n\n    /// User identifier\n    public let userId: Int64?\n\n\n    public init(\n        message: FormattedText?,\n        userId: Int64?\n    ) {\n        self.message = message\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetUsername.swift",
    "content": "//\n//  SetUsername.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the editable username of the current user\npublic struct SetUsername: Codable, Equatable, Hashable {\n\n    /// The new value of the username. Use an empty string to remove the username. The username can't be completely removed if there is another active or disabled username\n    public let username: String?\n\n\n    public init(username: String?) {\n        self.username = username\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetVideoChatDefaultParticipant.swift",
    "content": "//\n//  SetVideoChatDefaultParticipant.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes default participant identifier, on whose behalf a video chat in the chat will be joined\npublic struct SetVideoChatDefaultParticipant: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Default group call participant identifier to join the video chats in the chat\n    public let defaultParticipantId: MessageSender?\n\n\n    public init(\n        chatId: Int64?,\n        defaultParticipantId: MessageSender?\n    ) {\n        self.chatId = chatId\n        self.defaultParticipantId = defaultParticipantId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SetVideoChatTitle.swift",
    "content": "//\n//  SetVideoChatTitle.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sets title of a video chat; requires groupCall.can_be_managed right\npublic struct SetVideoChatTitle: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// New group call title; 1-64 characters\n    public let title: String?\n\n\n    public init(\n        groupCallId: Int?,\n        title: String?\n    ) {\n        self.groupCallId = groupCallId\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SettingsSection.swift",
    "content": "//\n//  SettingsSection.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a section of the application settings\npublic indirect enum SettingsSection: Codable, Equatable, Hashable {\n\n    /// The appearance section\n    case settingsSectionAppearance(SettingsSectionAppearance)\n\n    /// The \"Ask a question\" section\n    case settingsSectionAskQuestion\n\n    /// The \"Telegram Business\" section\n    case settingsSectionBusiness(SettingsSectionBusiness)\n\n    /// The chat folder settings section\n    case settingsSectionChatFolders(SettingsSectionChatFolders)\n\n    /// The data and storage settings section\n    case settingsSectionDataAndStorage(SettingsSectionDataAndStorage)\n\n    /// The Devices section\n    case settingsSectionDevices(SettingsSectionDevices)\n\n    /// The profile edit section\n    case settingsSectionEditProfile(SettingsSectionEditProfile)\n\n    /// The FAQ section\n    case settingsSectionFaq\n\n    /// The \"Telegram Features\" section\n    case settingsSectionFeatures\n\n    /// The in-app browser settings section\n    case settingsSectionInAppBrowser(SettingsSectionInAppBrowser)\n\n    /// The application language section\n    case settingsSectionLanguage(SettingsSectionLanguage)\n\n    /// The Telegram Star balance and transaction section\n    case settingsSectionMyStars(SettingsSectionMyStars)\n\n    /// The Toncoin balance and transaction section\n    case settingsSectionMyToncoins\n\n    /// The notification settings section\n    case settingsSectionNotifications(SettingsSectionNotifications)\n\n    /// The power saving settings section\n    case settingsSectionPowerSaving(SettingsSectionPowerSaving)\n\n    /// The \"Telegram Premium\" section\n    case settingsSectionPremium\n\n    /// The privacy and security section\n    case settingsSectionPrivacyAndSecurity(SettingsSectionPrivacyAndSecurity)\n\n    /// The \"Privacy Policy\" section\n    case settingsSectionPrivacyPolicy\n\n    /// The current user's QR code section\n    case settingsSectionQrCode(SettingsSectionQrCode)\n\n    /// Search in Settings\n    case settingsSectionSearch\n\n    /// The \"Send a gift\" section\n    case settingsSectionSendGift(SettingsSectionSendGift)\n\n\n    private enum Kind: String, Codable {\n        case settingsSectionAppearance\n        case settingsSectionAskQuestion\n        case settingsSectionBusiness\n        case settingsSectionChatFolders\n        case settingsSectionDataAndStorage\n        case settingsSectionDevices\n        case settingsSectionEditProfile\n        case settingsSectionFaq\n        case settingsSectionFeatures\n        case settingsSectionInAppBrowser\n        case settingsSectionLanguage\n        case settingsSectionMyStars\n        case settingsSectionMyToncoins\n        case settingsSectionNotifications\n        case settingsSectionPowerSaving\n        case settingsSectionPremium\n        case settingsSectionPrivacyAndSecurity\n        case settingsSectionPrivacyPolicy\n        case settingsSectionQrCode\n        case settingsSectionSearch\n        case settingsSectionSendGift\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .settingsSectionAppearance:\n            let value = try SettingsSectionAppearance(from: decoder)\n            self = .settingsSectionAppearance(value)\n        case .settingsSectionAskQuestion:\n            self = .settingsSectionAskQuestion\n        case .settingsSectionBusiness:\n            let value = try SettingsSectionBusiness(from: decoder)\n            self = .settingsSectionBusiness(value)\n        case .settingsSectionChatFolders:\n            let value = try SettingsSectionChatFolders(from: decoder)\n            self = .settingsSectionChatFolders(value)\n        case .settingsSectionDataAndStorage:\n            let value = try SettingsSectionDataAndStorage(from: decoder)\n            self = .settingsSectionDataAndStorage(value)\n        case .settingsSectionDevices:\n            let value = try SettingsSectionDevices(from: decoder)\n            self = .settingsSectionDevices(value)\n        case .settingsSectionEditProfile:\n            let value = try SettingsSectionEditProfile(from: decoder)\n            self = .settingsSectionEditProfile(value)\n        case .settingsSectionFaq:\n            self = .settingsSectionFaq\n        case .settingsSectionFeatures:\n            self = .settingsSectionFeatures\n        case .settingsSectionInAppBrowser:\n            let value = try SettingsSectionInAppBrowser(from: decoder)\n            self = .settingsSectionInAppBrowser(value)\n        case .settingsSectionLanguage:\n            let value = try SettingsSectionLanguage(from: decoder)\n            self = .settingsSectionLanguage(value)\n        case .settingsSectionMyStars:\n            let value = try SettingsSectionMyStars(from: decoder)\n            self = .settingsSectionMyStars(value)\n        case .settingsSectionMyToncoins:\n            self = .settingsSectionMyToncoins\n        case .settingsSectionNotifications:\n            let value = try SettingsSectionNotifications(from: decoder)\n            self = .settingsSectionNotifications(value)\n        case .settingsSectionPowerSaving:\n            let value = try SettingsSectionPowerSaving(from: decoder)\n            self = .settingsSectionPowerSaving(value)\n        case .settingsSectionPremium:\n            self = .settingsSectionPremium\n        case .settingsSectionPrivacyAndSecurity:\n            let value = try SettingsSectionPrivacyAndSecurity(from: decoder)\n            self = .settingsSectionPrivacyAndSecurity(value)\n        case .settingsSectionPrivacyPolicy:\n            self = .settingsSectionPrivacyPolicy\n        case .settingsSectionQrCode:\n            let value = try SettingsSectionQrCode(from: decoder)\n            self = .settingsSectionQrCode(value)\n        case .settingsSectionSearch:\n            self = .settingsSectionSearch\n        case .settingsSectionSendGift:\n            let value = try SettingsSectionSendGift(from: decoder)\n            self = .settingsSectionSendGift(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .settingsSectionAppearance(let value):\n            try container.encode(Kind.settingsSectionAppearance, forKey: .type)\n            try value.encode(to: encoder)\n        case .settingsSectionAskQuestion:\n            try container.encode(Kind.settingsSectionAskQuestion, forKey: .type)\n        case .settingsSectionBusiness(let value):\n            try container.encode(Kind.settingsSectionBusiness, forKey: .type)\n            try value.encode(to: encoder)\n        case .settingsSectionChatFolders(let value):\n            try container.encode(Kind.settingsSectionChatFolders, forKey: .type)\n            try value.encode(to: encoder)\n        case .settingsSectionDataAndStorage(let value):\n            try container.encode(Kind.settingsSectionDataAndStorage, forKey: .type)\n            try value.encode(to: encoder)\n        case .settingsSectionDevices(let value):\n            try container.encode(Kind.settingsSectionDevices, forKey: .type)\n            try value.encode(to: encoder)\n        case .settingsSectionEditProfile(let value):\n            try container.encode(Kind.settingsSectionEditProfile, forKey: .type)\n            try value.encode(to: encoder)\n        case .settingsSectionFaq:\n            try container.encode(Kind.settingsSectionFaq, forKey: .type)\n        case .settingsSectionFeatures:\n            try container.encode(Kind.settingsSectionFeatures, forKey: .type)\n        case .settingsSectionInAppBrowser(let value):\n            try container.encode(Kind.settingsSectionInAppBrowser, forKey: .type)\n            try value.encode(to: encoder)\n        case .settingsSectionLanguage(let value):\n            try container.encode(Kind.settingsSectionLanguage, forKey: .type)\n            try value.encode(to: encoder)\n        case .settingsSectionMyStars(let value):\n            try container.encode(Kind.settingsSectionMyStars, forKey: .type)\n            try value.encode(to: encoder)\n        case .settingsSectionMyToncoins:\n            try container.encode(Kind.settingsSectionMyToncoins, forKey: .type)\n        case .settingsSectionNotifications(let value):\n            try container.encode(Kind.settingsSectionNotifications, forKey: .type)\n            try value.encode(to: encoder)\n        case .settingsSectionPowerSaving(let value):\n            try container.encode(Kind.settingsSectionPowerSaving, forKey: .type)\n            try value.encode(to: encoder)\n        case .settingsSectionPremium:\n            try container.encode(Kind.settingsSectionPremium, forKey: .type)\n        case .settingsSectionPrivacyAndSecurity(let value):\n            try container.encode(Kind.settingsSectionPrivacyAndSecurity, forKey: .type)\n            try value.encode(to: encoder)\n        case .settingsSectionPrivacyPolicy:\n            try container.encode(Kind.settingsSectionPrivacyPolicy, forKey: .type)\n        case .settingsSectionQrCode(let value):\n            try container.encode(Kind.settingsSectionQrCode, forKey: .type)\n            try value.encode(to: encoder)\n        case .settingsSectionSearch:\n            try container.encode(Kind.settingsSectionSearch, forKey: .type)\n        case .settingsSectionSendGift(let value):\n            try container.encode(Kind.settingsSectionSendGift, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The appearance section\npublic struct SettingsSectionAppearance: Codable, Equatable, Hashable {\n\n    /// Subsection of the section; may be one of \"\", \"themes\", \"themes/edit\", \"themes/create\", \"wallpapers\", \"wallpapers/edit\", \"wallpapers/set\", \"wallpapers/choose-photo\", \"your-color/profile\", \"your-color/profile/add-icons\", \"your-color/profile/use-gift\", \"your-color/profile/reset\", \"your-color/name\", \"your-color/name/add-icons\", \"your-color/name/use-gift\", \"night-mode\", \"auto-night-mode\", \"text-size\", \"text-size/use-system\", \"message-corners\", \"animations\", \"stickers-and-emoji\", \"stickers-and-emoji/edit\", \"stickers-and-emoji/trending\", \"stickers-and-emoji/archived\", \"stickers-and-emoji/archived/edit\", \"stickers-and-emoji/emoji\", \"stickers-and-emoji/emoji/edit\", \"stickers-and-emoji/emoji/archived\", \"stickers-and-emoji/emoji/archived/edit\", \"stickers-and-emoji/emoji/suggest\", \"stickers-and-emoji/emoji/quick-reaction\", \"stickers-and-emoji/emoji/quick-reaction/choose\", \"stickers-and-emoji/suggest-by-emoji\", \"stickers-and-emoji/large-emoji\", \"stickers-and-emoji/dynamic-order\", \"stickers-and-emoji/emoji/show-more\", \"app-icon\", \"tap-for-next-media\"\n    public let subsection: String\n\n\n    public init(subsection: String) {\n        self.subsection = subsection\n    }\n}\n\n/// The \"Telegram Business\" section\npublic struct SettingsSectionBusiness: Codable, Equatable, Hashable {\n\n    /// Subsection of the section; may be one of \"\", \"do-not-hide-ads\"\n    public let subsection: String\n\n\n    public init(subsection: String) {\n        self.subsection = subsection\n    }\n}\n\n/// The chat folder settings section\npublic struct SettingsSectionChatFolders: Codable, Equatable, Hashable {\n\n    /// Subsection of the section; may be one of \"\", \"edit\", \"create\", \"add-recommended\", \"show-tags\", \"tab-view\"\n    public let subsection: String\n\n\n    public init(subsection: String) {\n        self.subsection = subsection\n    }\n}\n\n/// The data and storage settings section\npublic struct SettingsSectionDataAndStorage: Codable, Equatable, Hashable {\n\n    /// Subsection of the section; may be one of \"\", \"storage\", \"storage/edit\", \"storage/auto-remove\", \"storage/clear-cache\", \"storage/max-cache\", \"usage\", \"usage/mobile\", \"usage/wifi\", \"usage/reset\", \"usage/roaming\", \"auto-download/mobile\", \"auto-download/mobile/enable\", \"auto-download/mobile/usage\", \"auto-download/mobile/photos\", \"auto-download/mobile/stories\", \"auto-download/mobile/videos\", \"auto-download/mobile/files\", \"auto-download/wifi\", \"auto-download/wifi/enable\", \"auto-download/wifi/usage\", \"auto-download/wifi/photos\", \"auto-download/wifi/stories\", \"auto-download/wifi/videos\", \"auto-download/wifi/files\", \"auto-download/roaming\", \"auto-download/roaming/enable\", \"auto-download/roaming/usage\", \"auto-download/roaming/photos\", \"auto-download/roaming/stories\", \"auto-download/roaming/videos\", \"auto-download/roaming/files\", \"auto-download/reset\", \"save-to-photos/chats\", \"save-to-photos/chats/max-video-size\", \"save-to-photos/chats/add-exception\", \"save-to-photos/chats/delete-all\", \"save-to-photos/groups\", \"save-to-photos/groups/max-video-size\", \"save-to-photos/groups/add-exception\", \"save-to-photos/groups/delete-all\", \"save-to-photos/channels\", \"save-to-photos/channels/max-video-size\", \"save-to-photos/channels/add-exception\", \"save-to-photos/channels/delete-all\", \"less-data-calls\", \"open-links\", \"share-sheet\", \"share-sheet/suggested-chats\", \"share-sheet/suggest-by\", \"share-sheet/reset\", \"saved-edited-photos\", \"pause-music\", \"raise-to-listen\", \"raise-to-speak\", \"show-18-content\", \"proxy\", \"proxy/edit\", \"proxy/use-proxy\", \"proxy/add-proxy\", \"proxy/share-list\", \"proxy/use-for-calls\"\n    public let subsection: String\n\n\n    public init(subsection: String) {\n        self.subsection = subsection\n    }\n}\n\n/// The Devices section\npublic struct SettingsSectionDevices: Codable, Equatable, Hashable {\n\n    /// Subsection of the section; may be one of \"\", \"edit\", \"link-desktop\", \"terminate-sessions\", \"auto-terminate\"\n    public let subsection: String\n\n\n    public init(subsection: String) {\n        self.subsection = subsection\n    }\n}\n\n/// The profile edit section\npublic struct SettingsSectionEditProfile: Codable, Equatable, Hashable {\n\n    /// Subsection of the section; may be one of \"\", \"set-photo\", \"first-name\", \"last-name\", \"emoji-status\", \"bio\", \"birthday\", \"change-number\", \"username\", \"your-color\", \"channel\", \"add-account\", \"log-out\", \"profile-color/profile\", \"profile-color/profile/add-icons\", \"profile-color/profile/use-gift\", \"profile-color/name\", \"profile-color/name/add-icons\", \"profile-color/name/use-gift\", \"profile-photo/use-emoji\"\n    public let subsection: String\n\n\n    public init(subsection: String) {\n        self.subsection = subsection\n    }\n}\n\n/// The in-app browser settings section\npublic struct SettingsSectionInAppBrowser: Codable, Equatable, Hashable {\n\n    /// Subsection of the section; may be one of \"\", \"enable-browser\", \"clear-cookies\", \"clear-cache\", \"history\", \"clear-history\", \"never-open\", \"clear-list\", \"search\"\n    public let subsection: String\n\n\n    public init(subsection: String) {\n        self.subsection = subsection\n    }\n}\n\n/// The application language section\npublic struct SettingsSectionLanguage: Codable, Equatable, Hashable {\n\n    /// Subsection of the section; may be one of \"\", \"show-button\" for Show Translate Button toggle, \"translate-chats\" for Translate Entire Chats toggle, \"do-not-translate\" - for Do Not Translate language list\n    public let subsection: String\n\n\n    public init(subsection: String) {\n        self.subsection = subsection\n    }\n}\n\n/// The Telegram Star balance and transaction section\npublic struct SettingsSectionMyStars: Codable, Equatable, Hashable {\n\n    /// Subsection of the section; may be one of \"\", \"top-up\", \"stats\", \"gift\", \"earn\"\n    public let subsection: String\n\n\n    public init(subsection: String) {\n        self.subsection = subsection\n    }\n}\n\n/// The notification settings section\npublic struct SettingsSectionNotifications: Codable, Equatable, Hashable {\n\n    /// Subsection of the section; may be one of \"\", \"accounts\", \"private-chats\", \"private-chats/edit\", \"private-chats/show\", \"private-chats/preview\", \"private-chats/sound\", \"private-chats/add-exception\", \"private-chats/delete-exceptions\", \"private-chats/light-color\", \"private-chats/vibrate\", \"private-chats/priority\", \"groups\", \"groups/edit\", \"groups/show\", \"groups/preview\", \"groups/sound\", \"groups/add-exception\", \"groups/delete-exceptions\", \"groups/light-color\", \"groups/vibrate\", \"groups/priority\", \"channels\", \"channels/edit\", \"channels/show\", \"channels/preview\", \"channels/sound\", \"channels/add-exception\", \"channels/delete-exceptions\", \"channels/light-color\", \"channels/vibrate\", \"channels/priority\", \"stories\", \"stories/new\", \"stories/important\", \"stories/show-sender\", \"stories/sound\", \"stories/add-exception\", \"stories/delete-exceptions\", \"stories/light-color\", \"stories/vibrate\", \"stories/priority\", \"reactions\", \"reactions/messages\", \"reactions/stories\", \"reactions/show-sender\", \"reactions/sound\", \"reactions/light-color\", \"reactions/vibrate\", \"reactions/priority\", \"in-app-sounds\", \"in-app-vibrate\", \"in-app-preview\", \"in-chat-sounds\", \"in-app-popup\", \"lock-screen-names\", \"include-channels\", \"include-muted-chats\", \"count-unread-messages\", \"new-contacts\", \"pinned-messages\", \"reset\", \"web\"\n    public let subsection: String\n\n\n    public init(subsection: String) {\n        self.subsection = subsection\n    }\n}\n\n/// The power saving settings section\npublic struct SettingsSectionPowerSaving: Codable, Equatable, Hashable {\n\n    /// Subsection of the section; may be one of \"\", \"videos\", \"gifs\", \"stickers\", \"emoji\", \"effects\", \"preload\", \"background\", \"call-animations\", \"particles\", \"transitions\"\n    public let subsection: String\n\n\n    public init(subsection: String) {\n        self.subsection = subsection\n    }\n}\n\n/// The privacy and security section\npublic struct SettingsSectionPrivacyAndSecurity: Codable, Equatable, Hashable {\n\n    /// Subsection of the section; may be one of \"\", \"blocked\", \"blocked/edit\", \"blocked/block-user\", \"blocked/block-user/chats\", \"blocked/block-user/contacts\", \"active-websites\", \"active-websites/edit\", \"active-websites/disconnect-all\", \"passcode\", \"passcode/disable\", \"passcode/change\", \"passcode/auto-lock\", \"passcode/face-id\", \"passcode/fingerprint\", \"2sv\", \"2sv/change\", \"2sv/disable\", \"2sv/change-email\", \"passkey\", \"passkey/create\", \"auto-delete\", \"auto-delete/set-custom\", \"login-email\", \"phone-number\", \"phone-number/never\", \"phone-number/always\", \"last-seen\", \"last-seen/never\", \"last-seen/always\", \"last-seen/hide-read-time\", \"profile-photos\", \"profile-photos/never\", \"profile-photos/always\", \"profile-photos/set-public\", \"profile-photos/update-public\", \"profile-photos/remove-public\", \"bio\", \"bio/never\", \"bio/always\", \"gifts\", \"gifts/show-icon\", \"gifts/never\", \"gifts/always\", \"gifts/accepted-types\", \"birthday\", \"birthday/add\", \"birthday/never\", \"birthday/always\", \"saved-music\", \"saved-music/never\", \"saved-music/always\", \"forwards\", \"forwards/never\", \"forwards/always\", \"calls\", \"calls/never\", \"calls/always\", \"calls/p2p\", \"calls/p2p/never\", \"calls/p2p/always\", \"calls/ios-integration\", \"voice\", \"voice/never\", \"voice/always\", \"messages\", \"messages/set-price\", \"messages/exceptions\", \"invites\", \"invites/never\", \"invites/always\", \"self-destruct\", \"data-settings\", \"data-settings/sync-contacts\", \"data-settings/delete-synced\", \"data-settings/suggest-contacts\", \"data-settings/delete-cloud-drafts\", \"data-settings/clear-payment-info\", \"data-settings/link-previews\", \"data-settings/bot-settings\", \"data-settings/map-provider\", \"archive-and-mute\"\n    public let subsection: String\n\n\n    public init(subsection: String) {\n        self.subsection = subsection\n    }\n}\n\n/// The current user's QR code section\npublic struct SettingsSectionQrCode: Codable, Equatable, Hashable {\n\n    /// Subsection of the section; may be one of \"\", \"share\", \"scan\"\n    public let subsection: String\n\n\n    public init(subsection: String) {\n        self.subsection = subsection\n    }\n}\n\n/// The \"Send a gift\" section\npublic struct SettingsSectionSendGift: Codable, Equatable, Hashable {\n\n    /// Subsection of the section; may be one of \"\", \"self\"\n    public let subsection: String\n\n\n    public init(subsection: String) {\n        self.subsection = subsection\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ShareChatWithBot.swift",
    "content": "//\n//  ShareChatWithBot.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Shares a chat after pressing a keyboardButtonTypeRequestChat button with the bot\npublic struct ShareChatWithBot: Codable, Equatable, Hashable {\n\n    /// Identifier of the button\n    public let buttonId: Int?\n\n    /// Pass true to check that the chat can be shared by the button instead of actually sharing it. Doesn't check bot_is_member and bot_administrator_rights restrictions. If the bot must be a member, then all chats from getGroupsInCommon and all chats, where the user can add the bot, are suitable. In the latter case the bot will be automatically added to the chat. If the bot must be an administrator, then all chats, where the bot already has requested rights or can be added to administrators by the user, are suitable. In the latter case the bot will be automatically granted requested rights\n    public let onlyCheck: Bool?\n\n    /// Identifier of the shared chat\n    public let sharedChatId: Int64?\n\n    /// Source of the button\n    public let source: KeyboardButtonSource?\n\n\n    public init(\n        buttonId: Int?,\n        onlyCheck: Bool?,\n        sharedChatId: Int64?,\n        source: KeyboardButtonSource?\n    ) {\n        self.buttonId = buttonId\n        self.onlyCheck = onlyCheck\n        self.sharedChatId = sharedChatId\n        self.source = source\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SharePhoneNumber.swift",
    "content": "//\n//  SharePhoneNumber.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Shares the phone number of the current user with a mutual contact. Supposed to be called when the user clicks on chatActionBarSharePhoneNumber\npublic struct SharePhoneNumber: Codable, Equatable, Hashable {\n\n    /// Identifier of the user with whom to share the phone number. The user must be a mutual contact\n    public let userId: Int64?\n\n\n    public init(userId: Int64?) {\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ShareUsersWithBot.swift",
    "content": "//\n//  ShareUsersWithBot.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Shares users after pressing a keyboardButtonTypeRequestUsers button with the bot\npublic struct ShareUsersWithBot: Codable, Equatable, Hashable {\n\n    /// Identifier of the button\n    public let buttonId: Int?\n\n    /// Pass true to check that the users can be shared by the button instead of actually sharing them\n    public let onlyCheck: Bool?\n\n    /// Identifiers of the shared users\n    public let sharedUserIds: [Int64]?\n\n    /// Source of the button\n    public let source: KeyboardButtonSource?\n\n\n    public init(\n        buttonId: Int?,\n        onlyCheck: Bool?,\n        sharedUserIds: [Int64]?,\n        source: KeyboardButtonSource?\n    ) {\n        self.buttonId = buttonId\n        self.onlyCheck = onlyCheck\n        self.sharedUserIds = sharedUserIds\n        self.source = source\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SharedChat.swift",
    "content": "//\n//  SharedChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a chat shared with a bot\npublic struct SharedChat: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// Photo of the chat; for bots only; may be null\n    public let photo: Photo?\n\n    /// Title of the chat; for bots only\n    public let title: String\n\n    /// Username of the chat; for bots only\n    public let username: String\n\n\n    public init(\n        chatId: Int64,\n        photo: Photo?,\n        title: String,\n        username: String\n    ) {\n        self.chatId = chatId\n        self.photo = photo\n        self.title = title\n        self.username = username\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SharedUser.swift",
    "content": "//\n//  SharedUser.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a user shared with a bot\npublic struct SharedUser: Codable, Equatable, Hashable {\n\n    /// First name of the user; for bots only\n    public let firstName: String\n\n    /// Last name of the user; for bots only\n    public let lastName: String\n\n    /// Profile photo of the user; for bots only; may be null\n    public let photo: Photo?\n\n    /// User identifier\n    public let userId: Int64\n\n    /// Username of the user; for bots only\n    public let username: String\n\n\n    public init(\n        firstName: String,\n        lastName: String,\n        photo: Photo?,\n        userId: Int64,\n        username: String\n    ) {\n        self.firstName = firstName\n        self.lastName = lastName\n        self.photo = photo\n        self.userId = userId\n        self.username = username\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ShippingOption.swift",
    "content": "//\n//  ShippingOption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// One shipping option\npublic struct ShippingOption: Codable, Equatable, Hashable, Identifiable {\n\n    /// Shipping option identifier\n    public let id: String\n\n    /// A list of objects used to calculate the total shipping costs\n    public let priceParts: [LabeledPricePart]\n\n    /// Option title\n    public let title: String\n\n\n    public init(\n        id: String,\n        priceParts: [LabeledPricePart],\n        title: String\n    ) {\n        self.id = id\n        self.priceParts = priceParts\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SpeechRecognitionResult.swift",
    "content": "//\n//  SpeechRecognitionResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes result of speech recognition in a voice note\npublic indirect enum SpeechRecognitionResult: Codable, Equatable, Hashable {\n\n    /// The speech recognition is ongoing\n    case speechRecognitionResultPending(SpeechRecognitionResultPending)\n\n    /// The speech recognition successfully finished\n    case speechRecognitionResultText(SpeechRecognitionResultText)\n\n    /// The speech recognition failed\n    case speechRecognitionResultError(SpeechRecognitionResultError)\n\n\n    private enum Kind: String, Codable {\n        case speechRecognitionResultPending\n        case speechRecognitionResultText\n        case speechRecognitionResultError\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .speechRecognitionResultPending:\n            let value = try SpeechRecognitionResultPending(from: decoder)\n            self = .speechRecognitionResultPending(value)\n        case .speechRecognitionResultText:\n            let value = try SpeechRecognitionResultText(from: decoder)\n            self = .speechRecognitionResultText(value)\n        case .speechRecognitionResultError:\n            let value = try SpeechRecognitionResultError(from: decoder)\n            self = .speechRecognitionResultError(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .speechRecognitionResultPending(let value):\n            try container.encode(Kind.speechRecognitionResultPending, forKey: .type)\n            try value.encode(to: encoder)\n        case .speechRecognitionResultText(let value):\n            try container.encode(Kind.speechRecognitionResultText, forKey: .type)\n            try value.encode(to: encoder)\n        case .speechRecognitionResultError(let value):\n            try container.encode(Kind.speechRecognitionResultError, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The speech recognition is ongoing\npublic struct SpeechRecognitionResultPending: Codable, Equatable, Hashable {\n\n    /// Partially recognized text\n    public let partialText: String\n\n\n    public init(partialText: String) {\n        self.partialText = partialText\n    }\n}\n\n/// The speech recognition successfully finished\npublic struct SpeechRecognitionResultText: Codable, Equatable, Hashable {\n\n    /// Recognized text\n    public let text: String\n\n\n    public init(text: String) {\n        self.text = text\n    }\n}\n\n/// The speech recognition failed\npublic struct SpeechRecognitionResultError: Codable, Equatable, Hashable {\n\n    /// Recognition error. An error with a message \"MSG_VOICE_TOO_LONG\" is returned when media duration is too big to be recognized\n    public let error: Error\n\n\n    public init(error: Error) {\n        self.error = error\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SponsoredChat.swift",
    "content": "//\n//  SponsoredChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a sponsored chat\npublic struct SponsoredChat: Codable, Equatable, Hashable {\n\n    /// If non-empty, additional information about the sponsored chat to be shown along with the chat\n    public let additionalInfo: String\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// Additional optional information about the sponsor to be shown along with the chat\n    public let sponsorInfo: String\n\n    /// Unique identifier of this result\n    public let uniqueId: Int64\n\n\n    public init(\n        additionalInfo: String,\n        chatId: Int64,\n        sponsorInfo: String,\n        uniqueId: Int64\n    ) {\n        self.additionalInfo = additionalInfo\n        self.chatId = chatId\n        self.sponsorInfo = sponsorInfo\n        self.uniqueId = uniqueId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SponsoredChats.swift",
    "content": "//\n//  SponsoredChats.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of sponsored chats\npublic struct SponsoredChats: Codable, Equatable, Hashable {\n\n    /// List of sponsored chats\n    public let chats: [SponsoredChat]\n\n\n    public init(chats: [SponsoredChat]) {\n        self.chats = chats\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SponsoredMessage.swift",
    "content": "//\n//  SponsoredMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a sponsored message\npublic struct SponsoredMessage: Codable, Equatable, Hashable {\n\n    /// Identifier of the accent color for title, button text and message background\n    public let accentColorId: Int\n\n    /// If non-empty, additional information about the sponsored message to be shown along with the message\n    public let additionalInfo: String\n\n    /// Identifier of a custom emoji to be shown on the message background; 0 if none\n    public let backgroundCustomEmojiId: TdInt64\n\n    /// Text for the message action button\n    public let buttonText: String\n\n    /// True, if the message can be reported to Telegram moderators through reportChatSponsoredMessage\n    public let canBeReported: Bool\n\n    /// Content of the message. Currently, can be only of the types messageText, messageAnimation, messagePhoto, or messageVideo. Video messages can be viewed fullscreen. The content must be fully downloaded before the message is shown\n    public let content: MessageContent\n\n    /// True, if the message needs to be labeled as \"recommended\" instead of \"sponsored\"\n    public let isRecommended: Bool\n\n    /// Message identifier; unique for the chat to which the sponsored message belongs among both ordinary and sponsored messages\n    public let messageId: Int64\n\n    /// Information about the sponsor of the message\n    public let sponsor: AdvertisementSponsor\n\n    /// Title of the sponsored message\n    public let title: String\n\n\n    public init(\n        accentColorId: Int,\n        additionalInfo: String,\n        backgroundCustomEmojiId: TdInt64,\n        buttonText: String,\n        canBeReported: Bool,\n        content: MessageContent,\n        isRecommended: Bool,\n        messageId: Int64,\n        sponsor: AdvertisementSponsor,\n        title: String\n    ) {\n        self.accentColorId = accentColorId\n        self.additionalInfo = additionalInfo\n        self.backgroundCustomEmojiId = backgroundCustomEmojiId\n        self.buttonText = buttonText\n        self.canBeReported = canBeReported\n        self.content = content\n        self.isRecommended = isRecommended\n        self.messageId = messageId\n        self.sponsor = sponsor\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SponsoredMessages.swift",
    "content": "//\n//  SponsoredMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of sponsored messages\npublic struct SponsoredMessages: Codable, Equatable, Hashable {\n\n    /// List of sponsored messages\n    public let messages: [SponsoredMessage]\n\n    /// The minimum number of messages between shown sponsored messages, or 0 if only one sponsored message must be shown after all ordinary messages\n    public let messagesBetween: Int\n\n\n    public init(\n        messages: [SponsoredMessage],\n        messagesBetween: Int\n    ) {\n        self.messages = messages\n        self.messagesBetween = messagesBetween\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StakeDiceState.swift",
    "content": "//\n//  StakeDiceState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes state of the stake dice\npublic struct StakeDiceState: Codable, Equatable, Hashable {\n\n    /// The number of rolled sixes towards the streak; 0-2\n    public let currentStreak: Int\n\n    /// The number of Toncoins received by the user for each 1000 Toncoins staked if the dice outcome is 1-6 correspondingly; may be empty if the stake dice can't be sent by the current user\n    public let prizePerMille: [Int]\n\n    /// The Toncoin amount that was staked in the previous roll; in the smallest units of the currency\n    public let stakeToncoinAmount: Int64\n\n    /// Hash of the state to use for sending the next dice; may be empty if the stake dice can't be sent by the current user\n    public let stateHash: String\n\n    /// The number of Toncoins received by the user for each 1000 Toncoins staked if the dice outcome is 6 three times in a row with the same stake\n    public let streakPrizePerMille: Int\n\n    /// The amounts of Toncoins that are suggested to be staked; in the smallest units of the currency\n    public let suggestedStakeToncoinAmounts: [Int64]\n\n\n    public init(\n        currentStreak: Int,\n        prizePerMille: [Int],\n        stakeToncoinAmount: Int64,\n        stateHash: String,\n        streakPrizePerMille: Int,\n        suggestedStakeToncoinAmounts: [Int64]\n    ) {\n        self.currentStreak = currentStreak\n        self.prizePerMille = prizePerMille\n        self.stakeToncoinAmount = stakeToncoinAmount\n        self.stateHash = stateHash\n        self.streakPrizePerMille = streakPrizePerMille\n        self.suggestedStakeToncoinAmounts = suggestedStakeToncoinAmounts\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StarAmount.swift",
    "content": "//\n//  StarAmount.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a possibly non-integer Telegram Star amount\npublic struct StarAmount: Codable, Equatable, Hashable {\n\n    /// The number of 1/1000000000 shares of Telegram Stars; from -999999999 to 999999999\n    public let nanostarCount: Int\n\n    /// The integer Telegram Star amount rounded to 0\n    public let starCount: Int64\n\n\n    public init(\n        nanostarCount: Int,\n        starCount: Int64\n    ) {\n        self.nanostarCount = nanostarCount\n        self.starCount = starCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StarCount.swift",
    "content": "//\n//  StarCount.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a number of Telegram Stars\npublic struct StarCount: Codable, Equatable, Hashable {\n\n    /// Number of Telegram Stars\n    public let starCount: Int64\n\n\n    public init(starCount: Int64) {\n        self.starCount = starCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StarGiveawayPaymentOption.swift",
    "content": "//\n//  StarGiveawayPaymentOption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an option for creating of Telegram Star giveaway. Use telegramPaymentPurposeStarGiveaway for out-of-store payments\npublic struct StarGiveawayPaymentOption: Codable, Equatable, Hashable {\n\n    /// The amount to pay, in the smallest units of the currency\n    public let amount: Int64\n\n    /// ISO 4217 currency code for the payment\n    public let currency: String\n\n    /// True, if the option must be shown only in the full list of payment options\n    public let isAdditional: Bool\n\n    /// True, if the option must be chosen by default\n    public let isDefault: Bool\n\n    /// Number of Telegram Stars that will be distributed among winners\n    public let starCount: Int64\n\n    /// Identifier of the store product associated with the option; may be empty if none\n    public let storeProductId: String\n\n    /// Allowed options for the number of giveaway winners\n    public let winnerOptions: [StarGiveawayWinnerOption]\n\n    /// Number of times the chat will be boosted for one year if the option is chosen\n    public let yearlyBoostCount: Int\n\n\n    public init(\n        amount: Int64,\n        currency: String,\n        isAdditional: Bool,\n        isDefault: Bool,\n        starCount: Int64,\n        storeProductId: String,\n        winnerOptions: [StarGiveawayWinnerOption],\n        yearlyBoostCount: Int\n    ) {\n        self.amount = amount\n        self.currency = currency\n        self.isAdditional = isAdditional\n        self.isDefault = isDefault\n        self.starCount = starCount\n        self.storeProductId = storeProductId\n        self.winnerOptions = winnerOptions\n        self.yearlyBoostCount = yearlyBoostCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StarGiveawayPaymentOptions.swift",
    "content": "//\n//  StarGiveawayPaymentOptions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of options for creating of Telegram Star giveaway\npublic struct StarGiveawayPaymentOptions: Codable, Equatable, Hashable {\n\n    /// The list of options\n    public let options: [StarGiveawayPaymentOption]\n\n\n    public init(options: [StarGiveawayPaymentOption]) {\n        self.options = options\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StarGiveawayWinnerOption.swift",
    "content": "//\n//  StarGiveawayWinnerOption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an option for the number of winners of a Telegram Star giveaway\npublic struct StarGiveawayWinnerOption: Codable, Equatable, Hashable {\n\n    /// True, if the option must be chosen by default\n    public let isDefault: Bool\n\n    /// The number of users that will be chosen as winners\n    public let winnerCount: Int\n\n    /// The number of Telegram Stars that will be won by the winners of the giveaway\n    public let wonStarCount: Int64\n\n\n    public init(\n        isDefault: Bool,\n        winnerCount: Int,\n        wonStarCount: Int64\n    ) {\n        self.isDefault = isDefault\n        self.winnerCount = winnerCount\n        self.wonStarCount = wonStarCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StarPaymentOption.swift",
    "content": "//\n//  StarPaymentOption.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an option for buying Telegram Stars. Use telegramPaymentPurposeStars for out-of-store payments\npublic struct StarPaymentOption: Codable, Equatable, Hashable {\n\n    /// The amount to pay, in the smallest units of the currency\n    public let amount: Int64\n\n    /// ISO 4217 currency code for the payment\n    public let currency: String\n\n    /// True, if the option must be shown only in the full list of payment options\n    public let isAdditional: Bool\n\n    /// Number of Telegram Stars that will be purchased\n    public let starCount: Int64\n\n    /// Identifier of the store product associated with the option; may be empty if none\n    public let storeProductId: String\n\n\n    public init(\n        amount: Int64,\n        currency: String,\n        isAdditional: Bool,\n        starCount: Int64,\n        storeProductId: String\n    ) {\n        self.amount = amount\n        self.currency = currency\n        self.isAdditional = isAdditional\n        self.starCount = starCount\n        self.storeProductId = storeProductId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StarPaymentOptions.swift",
    "content": "//\n//  StarPaymentOptions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of options for buying Telegram Stars\npublic struct StarPaymentOptions: Codable, Equatable, Hashable {\n\n    /// The list of options\n    public let options: [StarPaymentOption]\n\n\n    public init(options: [StarPaymentOption]) {\n        self.options = options\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StarRevenueStatistics.swift",
    "content": "//\n//  StarRevenueStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A detailed statistics about Telegram Stars earned by a user or a chat\npublic struct StarRevenueStatistics: Codable, Equatable, Hashable {\n\n    /// A graph containing amount of revenue in a given day\n    public let revenueByDayGraph: StatisticalGraph\n\n    /// Telegram Star revenue status\n    public let status: StarRevenueStatus\n\n    /// Current conversion rate of a Telegram Star to USD\n    public let usdRate: Double\n\n\n    public init(\n        revenueByDayGraph: StatisticalGraph,\n        status: StarRevenueStatus,\n        usdRate: Double\n    ) {\n        self.revenueByDayGraph = revenueByDayGraph\n        self.status = status\n        self.usdRate = usdRate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StarRevenueStatus.swift",
    "content": "//\n//  StarRevenueStatus.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about Telegram Stars earned by a user or a chat\npublic struct StarRevenueStatus: Codable, Equatable, Hashable {\n\n    /// The Telegram Star amount that is available for withdrawal\n    public let availableAmount: StarAmount\n\n    /// The Telegram Star amount that isn't withdrawn yet\n    public let currentAmount: StarAmount\n\n    /// Time left before the next withdrawal can be started, in seconds; 0 if withdrawal can be started now\n    public let nextWithdrawalIn: Int\n\n    /// Total Telegram Star amount earned\n    public let totalAmount: StarAmount\n\n    /// True, if Telegram Stars can be withdrawn now or later\n    public let withdrawalEnabled: Bool\n\n\n    public init(\n        availableAmount: StarAmount,\n        currentAmount: StarAmount,\n        nextWithdrawalIn: Int,\n        totalAmount: StarAmount,\n        withdrawalEnabled: Bool\n    ) {\n        self.availableAmount = availableAmount\n        self.currentAmount = currentAmount\n        self.nextWithdrawalIn = nextWithdrawalIn\n        self.totalAmount = totalAmount\n        self.withdrawalEnabled = withdrawalEnabled\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StarSubscription.swift",
    "content": "//\n//  StarSubscription.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about subscription to a channel chat, a bot, or a business account that was paid in Telegram Stars\npublic struct StarSubscription: Codable, Equatable, Hashable, Identifiable {\n\n    /// Identifier of the chat that is subscribed\n    public let chatId: Int64\n\n    /// Point in time (Unix timestamp) when the subscription will expire or expired\n    public let expirationDate: Int\n\n    /// Unique identifier of the subscription\n    public let id: String\n\n    /// True, if the subscription was canceled\n    public let isCanceled: Bool\n\n    /// True, if the subscription expires soon and there are no enough Telegram Stars on the user's balance to extend it\n    public let isExpiring: Bool\n\n    /// The subscription plan\n    public let pricing: StarSubscriptionPricing\n\n    /// Type of the subscription\n    public let type: StarSubscriptionType\n\n\n    public init(\n        chatId: Int64,\n        expirationDate: Int,\n        id: String,\n        isCanceled: Bool,\n        isExpiring: Bool,\n        pricing: StarSubscriptionPricing,\n        type: StarSubscriptionType\n    ) {\n        self.chatId = chatId\n        self.expirationDate = expirationDate\n        self.id = id\n        self.isCanceled = isCanceled\n        self.isExpiring = isExpiring\n        self.pricing = pricing\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StarSubscriptionPricing.swift",
    "content": "//\n//  StarSubscriptionPricing.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes subscription plan paid in Telegram Stars\npublic struct StarSubscriptionPricing: Codable, Equatable, Hashable {\n\n    /// The number of seconds between consecutive Telegram Star debiting\n    public let period: Int\n\n    /// The Telegram Star amount that must be paid for each period\n    public let starCount: Int64\n\n\n    public init(\n        period: Int,\n        starCount: Int64\n    ) {\n        self.period = period\n        self.starCount = starCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StarSubscriptionType.swift",
    "content": "//\n//  StarSubscriptionType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of subscription paid in Telegram Stars\npublic indirect enum StarSubscriptionType: Codable, Equatable, Hashable {\n\n    /// Describes a subscription to a channel chat\n    case starSubscriptionTypeChannel(StarSubscriptionTypeChannel)\n\n    /// Describes a subscription in a bot or a business account\n    case starSubscriptionTypeBot(StarSubscriptionTypeBot)\n\n\n    private enum Kind: String, Codable {\n        case starSubscriptionTypeChannel\n        case starSubscriptionTypeBot\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .starSubscriptionTypeChannel:\n            let value = try StarSubscriptionTypeChannel(from: decoder)\n            self = .starSubscriptionTypeChannel(value)\n        case .starSubscriptionTypeBot:\n            let value = try StarSubscriptionTypeBot(from: decoder)\n            self = .starSubscriptionTypeBot(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .starSubscriptionTypeChannel(let value):\n            try container.encode(Kind.starSubscriptionTypeChannel, forKey: .type)\n            try value.encode(to: encoder)\n        case .starSubscriptionTypeBot(let value):\n            try container.encode(Kind.starSubscriptionTypeBot, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Describes a subscription to a channel chat\npublic struct StarSubscriptionTypeChannel: Codable, Equatable, Hashable {\n\n    /// True, if the subscription is active and the user can use the method reuseStarSubscription to join the subscribed chat again\n    public let canReuse: Bool\n\n    /// The invite link that can be used to renew the subscription if it has been expired; may be empty, if the link isn't available anymore\n    public let inviteLink: String\n\n\n    public init(\n        canReuse: Bool,\n        inviteLink: String\n    ) {\n        self.canReuse = canReuse\n        self.inviteLink = inviteLink\n    }\n}\n\n/// Describes a subscription in a bot or a business account\npublic struct StarSubscriptionTypeBot: Codable, Equatable, Hashable {\n\n    /// The link to the subscription invoice\n    public let invoiceLink: String\n\n    /// True, if the subscription was canceled by the bot and can't be extended\n    public let isCanceledByBot: Bool\n\n    /// Subscription invoice photo\n    public let photo: Photo\n\n    /// Subscription invoice title\n    public let title: String\n\n\n    public init(\n        invoiceLink: String,\n        isCanceledByBot: Bool,\n        photo: Photo,\n        title: String\n    ) {\n        self.invoiceLink = invoiceLink\n        self.isCanceledByBot = isCanceledByBot\n        self.photo = photo\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StarSubscriptions.swift",
    "content": "//\n//  StarSubscriptions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of Telegram Star subscriptions\npublic struct StarSubscriptions: Codable, Equatable, Hashable {\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// The number of Telegram Stars required to buy to extend subscriptions expiring soon\n    public let requiredStarCount: Int64\n\n    /// The amount of owned Telegram Stars\n    public let starAmount: StarAmount\n\n    /// List of subscriptions for Telegram Stars\n    public let subscriptions: [StarSubscription]\n\n\n    public init(\n        nextOffset: String,\n        requiredStarCount: Int64,\n        starAmount: StarAmount,\n        subscriptions: [StarSubscription]\n    ) {\n        self.nextOffset = nextOffset\n        self.requiredStarCount = requiredStarCount\n        self.starAmount = starAmount\n        self.subscriptions = subscriptions\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StarTransaction.swift",
    "content": "//\n//  StarTransaction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a transaction changing the amount of owned Telegram Stars\npublic struct StarTransaction: Codable, Equatable, Hashable, Identifiable {\n\n    /// Point in time (Unix timestamp) when the transaction was completed\n    public let date: Int\n\n    /// Unique identifier of the transaction\n    public let id: String\n\n    /// True, if the transaction is a refund of a previous transaction\n    public let isRefund: Bool\n\n    /// The amount of added owned Telegram Stars; negative for outgoing transactions\n    public let starAmount: StarAmount\n\n    /// Type of the transaction\n    public let type: StarTransactionType\n\n\n    public init(\n        date: Int,\n        id: String,\n        isRefund: Bool,\n        starAmount: StarAmount,\n        type: StarTransactionType\n    ) {\n        self.date = date\n        self.id = id\n        self.isRefund = isRefund\n        self.starAmount = starAmount\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StarTransactionDirection.swift",
    "content": "//\n//  StarTransactionDirection.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.51-6d74326c\n//  https://github.com/tdlib/td/tree/6d74326c\n//\n\nimport Foundation\n\n\n/// Describes direction of a transaction with Telegram Stars\npublic indirect enum StarTransactionDirection: Codable, Equatable, Hashable {\n\n    /// The transaction is incoming and increases the number of owned Telegram Stars\n    case starTransactionDirectionIncoming\n\n    /// The transaction is outgoing and decreases the number of owned Telegram Stars\n    case starTransactionDirectionOutgoing\n\n\n    private enum Kind: String, Codable {\n        case starTransactionDirectionIncoming\n        case starTransactionDirectionOutgoing\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .starTransactionDirectionIncoming:\n            self = .starTransactionDirectionIncoming\n        case .starTransactionDirectionOutgoing:\n            self = .starTransactionDirectionOutgoing\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .starTransactionDirectionIncoming:\n            try container.encode(Kind.starTransactionDirectionIncoming, forKey: .type)\n        case .starTransactionDirectionOutgoing:\n            try container.encode(Kind.starTransactionDirectionOutgoing, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StarTransactionPartner.swift",
    "content": "//\n//  StarTransactionPartner.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.40-22d49d5b\n//  https://github.com/tdlib/td/tree/22d49d5b\n//\n\nimport Foundation\n\n\n/// Describes source or recipient of a transaction with Telegram Stars\npublic indirect enum StarTransactionPartner: Codable, Equatable, Hashable {\n\n    /// The transaction is a transaction with Telegram through a bot\n    case starTransactionPartnerTelegram\n\n    /// The transaction is a transaction with App Store\n    case starTransactionPartnerAppStore\n\n    /// The transaction is a transaction with Google Play\n    case starTransactionPartnerGooglePlay\n\n    /// The transaction is a transaction with Fragment\n    case starTransactionPartnerFragment(StarTransactionPartnerFragment)\n\n    /// The transaction is a transaction with Telegram Ad platform\n    case starTransactionPartnerTelegramAds\n\n    /// The transaction is a transaction with Telegram for API usage\n    case starTransactionPartnerTelegramApi(StarTransactionPartnerTelegramApi)\n\n    /// The transaction is a transaction with a bot\n    case starTransactionPartnerBot(StarTransactionPartnerBot)\n\n    /// The transaction is a transaction with a business account\n    case starTransactionPartnerBusiness(StarTransactionPartnerBusiness)\n\n    /// The transaction is a transaction with a supergroup or a channel chat\n    case starTransactionPartnerChat(StarTransactionPartnerChat)\n\n    /// The transaction is a transaction with another user\n    case starTransactionPartnerUser(StarTransactionPartnerUser)\n\n    /// The transaction is a transaction with unknown partner\n    case starTransactionPartnerUnsupported\n\n\n    private enum Kind: String, Codable {\n        case starTransactionPartnerTelegram\n        case starTransactionPartnerAppStore\n        case starTransactionPartnerGooglePlay\n        case starTransactionPartnerFragment\n        case starTransactionPartnerTelegramAds\n        case starTransactionPartnerTelegramApi\n        case starTransactionPartnerBot\n        case starTransactionPartnerBusiness\n        case starTransactionPartnerChat\n        case starTransactionPartnerUser\n        case starTransactionPartnerUnsupported\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .starTransactionPartnerTelegram:\n            self = .starTransactionPartnerTelegram\n        case .starTransactionPartnerAppStore:\n            self = .starTransactionPartnerAppStore\n        case .starTransactionPartnerGooglePlay:\n            self = .starTransactionPartnerGooglePlay\n        case .starTransactionPartnerFragment:\n            let value = try StarTransactionPartnerFragment(from: decoder)\n            self = .starTransactionPartnerFragment(value)\n        case .starTransactionPartnerTelegramAds:\n            self = .starTransactionPartnerTelegramAds\n        case .starTransactionPartnerTelegramApi:\n            let value = try StarTransactionPartnerTelegramApi(from: decoder)\n            self = .starTransactionPartnerTelegramApi(value)\n        case .starTransactionPartnerBot:\n            let value = try StarTransactionPartnerBot(from: decoder)\n            self = .starTransactionPartnerBot(value)\n        case .starTransactionPartnerBusiness:\n            let value = try StarTransactionPartnerBusiness(from: decoder)\n            self = .starTransactionPartnerBusiness(value)\n        case .starTransactionPartnerChat:\n            let value = try StarTransactionPartnerChat(from: decoder)\n            self = .starTransactionPartnerChat(value)\n        case .starTransactionPartnerUser:\n            let value = try StarTransactionPartnerUser(from: decoder)\n            self = .starTransactionPartnerUser(value)\n        case .starTransactionPartnerUnsupported:\n            self = .starTransactionPartnerUnsupported\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .starTransactionPartnerTelegram:\n            try container.encode(Kind.starTransactionPartnerTelegram, forKey: .type)\n        case .starTransactionPartnerAppStore:\n            try container.encode(Kind.starTransactionPartnerAppStore, forKey: .type)\n        case .starTransactionPartnerGooglePlay:\n            try container.encode(Kind.starTransactionPartnerGooglePlay, forKey: .type)\n        case .starTransactionPartnerFragment(let value):\n            try container.encode(Kind.starTransactionPartnerFragment, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionPartnerTelegramAds:\n            try container.encode(Kind.starTransactionPartnerTelegramAds, forKey: .type)\n        case .starTransactionPartnerTelegramApi(let value):\n            try container.encode(Kind.starTransactionPartnerTelegramApi, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionPartnerBot(let value):\n            try container.encode(Kind.starTransactionPartnerBot, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionPartnerBusiness(let value):\n            try container.encode(Kind.starTransactionPartnerBusiness, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionPartnerChat(let value):\n            try container.encode(Kind.starTransactionPartnerChat, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionPartnerUser(let value):\n            try container.encode(Kind.starTransactionPartnerUser, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionPartnerUnsupported:\n            try container.encode(Kind.starTransactionPartnerUnsupported, forKey: .type)\n        }\n    }\n}\n\n/// The transaction is a transaction with Fragment\npublic struct StarTransactionPartnerFragment: Codable, Equatable, Hashable {\n\n    /// State of the withdrawal; may be null for refunds from Fragment or for Telegram Stars bought on Fragment\n    public let withdrawalState: RevenueWithdrawalState?\n\n\n    public init(withdrawalState: RevenueWithdrawalState?) {\n        self.withdrawalState = withdrawalState\n    }\n}\n\n/// The transaction is a transaction with Telegram for API usage\npublic struct StarTransactionPartnerTelegramApi: Codable, Equatable, Hashable {\n\n    /// The number of billed requests\n    public let requestCount: Int\n\n\n    public init(requestCount: Int) {\n        self.requestCount = requestCount\n    }\n}\n\n/// The transaction is a transaction with a bot\npublic struct StarTransactionPartnerBot: Codable, Equatable, Hashable {\n\n    /// Purpose of the transaction\n    public let purpose: BotTransactionPurpose\n\n    /// Identifier of the bot\n    public let userId: Int64\n\n\n    public init(\n        purpose: BotTransactionPurpose,\n        userId: Int64\n    ) {\n        self.purpose = purpose\n        self.userId = userId\n    }\n}\n\n/// The transaction is a transaction with a business account\npublic struct StarTransactionPartnerBusiness: Codable, Equatable, Hashable {\n\n    /// The bought media if the transaction wasn't refunded\n    public let media: [PaidMedia]\n\n    /// Identifier of the business account user\n    public let userId: Int64\n\n\n    public init(\n        media: [PaidMedia],\n        userId: Int64\n    ) {\n        self.media = media\n        self.userId = userId\n    }\n}\n\n/// The transaction is a transaction with a supergroup or a channel chat\npublic struct StarTransactionPartnerChat: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64\n\n    /// Purpose of the transaction\n    public let purpose: ChatTransactionPurpose\n\n\n    public init(\n        chatId: Int64,\n        purpose: ChatTransactionPurpose\n    ) {\n        self.chatId = chatId\n        self.purpose = purpose\n    }\n}\n\n/// The transaction is a transaction with another user\npublic struct StarTransactionPartnerUser: Codable, Equatable, Hashable {\n\n    /// Purpose of the transaction\n    public let purpose: UserTransactionPurpose\n\n    /// Identifier of the user; 0 if the user was anonymous\n    public let userId: Int64\n\n\n    public init(\n        purpose: UserTransactionPurpose,\n        userId: Int64\n    ) {\n        self.purpose = purpose\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StarTransactionSource.swift",
    "content": "//\n//  StarTransactionSource.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.30-4257a341\n//  https://github.com/tdlib/td/tree/4257a341\n//\n\nimport Foundation\n\n\n/// Describes source or recipient of a transaction with Telegram stars\npublic indirect enum StarTransactionSource: Codable, Equatable, Hashable {\n\n    /// The transaction is a transaction with Telegram through a bot\n    case starTransactionSourceTelegram\n\n    /// The transaction is a transaction with App Store\n    case starTransactionSourceAppStore\n\n    /// The transaction is a transaction with Google Play\n    case starTransactionSourceGooglePlay\n\n    /// The transaction is a transaction with Fragment\n    case starTransactionSourceFragment\n\n    /// The transaction is a transaction with another user\n    case starTransactionSourceUser(StarTransactionSourceUser)\n\n    /// The transaction is a transaction with unknown source\n    case starTransactionSourceUnsupported\n\n\n    private enum Kind: String, Codable {\n        case starTransactionSourceTelegram\n        case starTransactionSourceAppStore\n        case starTransactionSourceGooglePlay\n        case starTransactionSourceFragment\n        case starTransactionSourceUser\n        case starTransactionSourceUnsupported\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .starTransactionSourceTelegram:\n            self = .starTransactionSourceTelegram\n        case .starTransactionSourceAppStore:\n            self = .starTransactionSourceAppStore\n        case .starTransactionSourceGooglePlay:\n            self = .starTransactionSourceGooglePlay\n        case .starTransactionSourceFragment:\n            self = .starTransactionSourceFragment\n        case .starTransactionSourceUser:\n            let value = try StarTransactionSourceUser(from: decoder)\n            self = .starTransactionSourceUser(value)\n        case .starTransactionSourceUnsupported:\n            self = .starTransactionSourceUnsupported\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .starTransactionSourceTelegram:\n            try container.encode(Kind.starTransactionSourceTelegram, forKey: .type)\n        case .starTransactionSourceAppStore:\n            try container.encode(Kind.starTransactionSourceAppStore, forKey: .type)\n        case .starTransactionSourceGooglePlay:\n            try container.encode(Kind.starTransactionSourceGooglePlay, forKey: .type)\n        case .starTransactionSourceFragment:\n            try container.encode(Kind.starTransactionSourceFragment, forKey: .type)\n        case .starTransactionSourceUser(let value):\n            try container.encode(Kind.starTransactionSourceUser, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionSourceUnsupported:\n            try container.encode(Kind.starTransactionSourceUnsupported, forKey: .type)\n        }\n    }\n}\n\n/// The transaction is a transaction with another user\npublic struct StarTransactionSourceUser: Codable, Equatable, Hashable {\n\n    /// Information about the bought product; may be null if none\n    public let productInfo: ProductInfo?\n\n    /// Identifier of the user\n    public let userId: Int64\n\n\n    public init(\n        productInfo: ProductInfo?,\n        userId: Int64\n    ) {\n        self.productInfo = productInfo\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StarTransactionType.swift",
    "content": "//\n//  StarTransactionType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of transaction with Telegram Stars\npublic indirect enum StarTransactionType: Codable, Equatable, Hashable {\n\n    /// The transaction is a deposit of Telegram Stars from the Premium bot; relevant for regular users only\n    case starTransactionTypePremiumBotDeposit\n\n    /// The transaction is a deposit of Telegram Stars from App Store; relevant for regular users only\n    case starTransactionTypeAppStoreDeposit\n\n    /// The transaction is a deposit of Telegram Stars from Google Play; relevant for regular users only\n    case starTransactionTypeGooglePlayDeposit\n\n    /// The transaction is a deposit of Telegram Stars from Fragment; relevant for regular users and bots only\n    case starTransactionTypeFragmentDeposit\n\n    /// The transaction is a deposit of Telegram Stars by another user; relevant for regular users only\n    case starTransactionTypeUserDeposit(StarTransactionTypeUserDeposit)\n\n    /// The transaction is a deposit of Telegram Stars from a giveaway; relevant for regular users only\n    case starTransactionTypeGiveawayDeposit(StarTransactionTypeGiveawayDeposit)\n\n    /// The transaction is a withdrawal of earned Telegram Stars to Fragment; relevant for regular users, bots, supergroup and channel chats only\n    case starTransactionTypeFragmentWithdrawal(StarTransactionTypeFragmentWithdrawal)\n\n    /// The transaction is a withdrawal of earned Telegram Stars to Telegram Ad platform; relevant for bots and channel chats only\n    case starTransactionTypeTelegramAdsWithdrawal\n\n    /// The transaction is a payment for Telegram API usage; relevant for bots only\n    case starTransactionTypeTelegramApiUsage(StarTransactionTypeTelegramApiUsage)\n\n    /// The transaction is a purchase of paid media from a bot or a business account by the current user; relevant for regular users only\n    case starTransactionTypeBotPaidMediaPurchase(StarTransactionTypeBotPaidMediaPurchase)\n\n    /// The transaction is a sale of paid media by the bot or a business account managed by the bot; relevant for bots only\n    case starTransactionTypeBotPaidMediaSale(StarTransactionTypeBotPaidMediaSale)\n\n    /// The transaction is a purchase of paid media from a channel by the current user; relevant for regular users only\n    case starTransactionTypeChannelPaidMediaPurchase(StarTransactionTypeChannelPaidMediaPurchase)\n\n    /// The transaction is a sale of paid media by the channel chat; relevant for channel chats only\n    case starTransactionTypeChannelPaidMediaSale(StarTransactionTypeChannelPaidMediaSale)\n\n    /// The transaction is a purchase of a product from a bot or a business account by the current user; relevant for regular users only\n    case starTransactionTypeBotInvoicePurchase(StarTransactionTypeBotInvoicePurchase)\n\n    /// The transaction is a sale of a product by the bot; relevant for bots only\n    case starTransactionTypeBotInvoiceSale(StarTransactionTypeBotInvoiceSale)\n\n    /// The transaction is a purchase of a subscription from a bot or a business account by the current user; relevant for regular users only\n    case starTransactionTypeBotSubscriptionPurchase(StarTransactionTypeBotSubscriptionPurchase)\n\n    /// The transaction is a sale of a subscription by the bot; relevant for bots only\n    case starTransactionTypeBotSubscriptionSale(StarTransactionTypeBotSubscriptionSale)\n\n    /// The transaction is a purchase of a subscription to a channel chat by the current user; relevant for regular users only\n    case starTransactionTypeChannelSubscriptionPurchase(StarTransactionTypeChannelSubscriptionPurchase)\n\n    /// The transaction is a sale of a subscription by the channel chat; relevant for channel chats only\n    case starTransactionTypeChannelSubscriptionSale(StarTransactionTypeChannelSubscriptionSale)\n\n    /// The transaction is a bid on a gift auction; relevant for regular users only\n    case starTransactionTypeGiftAuctionBid(StarTransactionTypeGiftAuctionBid)\n\n    /// The transaction is a purchase of a regular gift; relevant for regular users and bots only\n    case starTransactionTypeGiftPurchase(StarTransactionTypeGiftPurchase)\n\n    /// The transaction is an offer of gift purchase; relevant for regular users only\n    case starTransactionTypeGiftPurchaseOffer(StarTransactionTypeGiftPurchaseOffer)\n\n    /// The transaction is a transfer of an upgraded gift; relevant for regular users only\n    case starTransactionTypeGiftTransfer(StarTransactionTypeGiftTransfer)\n\n    /// The transaction is a drop of original details of an upgraded gift; relevant for regular users only\n    case starTransactionTypeGiftOriginalDetailsDrop(StarTransactionTypeGiftOriginalDetailsDrop)\n\n    /// The transaction is a sale of a received gift; relevant for regular users and channel chats only\n    case starTransactionTypeGiftSale(StarTransactionTypeGiftSale)\n\n    /// The transaction is an upgrade of a gift; relevant for regular users only\n    case starTransactionTypeGiftUpgrade(StarTransactionTypeGiftUpgrade)\n\n    /// The transaction is a purchase of an upgrade of a gift owned by another user or channel; relevant for regular users only\n    case starTransactionTypeGiftUpgradePurchase(StarTransactionTypeGiftUpgradePurchase)\n\n    /// The transaction is a purchase of an upgraded gift for some user or channel; relevant for regular users only\n    case starTransactionTypeUpgradedGiftPurchase(StarTransactionTypeUpgradedGiftPurchase)\n\n    /// The transaction is a sale of an upgraded gift; relevant for regular users only\n    case starTransactionTypeUpgradedGiftSale(StarTransactionTypeUpgradedGiftSale)\n\n    /// The transaction is a sending of a paid reaction to a message in a channel chat by the current user; relevant for regular users only\n    case starTransactionTypeChannelPaidReactionSend(StarTransactionTypeChannelPaidReactionSend)\n\n    /// The transaction is a receiving of a paid reaction to a message by the channel chat; relevant for channel chats only\n    case starTransactionTypeChannelPaidReactionReceive(StarTransactionTypeChannelPaidReactionReceive)\n\n    /// The transaction is a receiving of a commission from an affiliate program; relevant for regular users, bots and channel chats only\n    case starTransactionTypeAffiliateProgramCommission(StarTransactionTypeAffiliateProgramCommission)\n\n    /// The transaction is a sending of a paid message; relevant for regular users only\n    case starTransactionTypePaidMessageSend(StarTransactionTypePaidMessageSend)\n\n    /// The transaction is a receiving of a paid message; relevant for regular users, supergroup and channel chats only\n    case starTransactionTypePaidMessageReceive(StarTransactionTypePaidMessageReceive)\n\n    /// The transaction is a sending of a paid group call message; relevant for regular users only\n    case starTransactionTypePaidGroupCallMessageSend(StarTransactionTypePaidGroupCallMessageSend)\n\n    /// The transaction is a receiving of a paid group call message; relevant for regular users and channel chats only\n    case starTransactionTypePaidGroupCallMessageReceive(StarTransactionTypePaidGroupCallMessageReceive)\n\n    /// The transaction is a sending of a paid group reaction; relevant for regular users only\n    case starTransactionTypePaidGroupCallReactionSend(StarTransactionTypePaidGroupCallReactionSend)\n\n    /// The transaction is a receiving of a paid group call reaction; relevant for regular users and channel chats only\n    case starTransactionTypePaidGroupCallReactionReceive(StarTransactionTypePaidGroupCallReactionReceive)\n\n    /// The transaction is a payment for a suggested post; relevant for regular users only\n    case starTransactionTypeSuggestedPostPaymentSend(StarTransactionTypeSuggestedPostPaymentSend)\n\n    /// The transaction is a receiving of a payment for a suggested post by the channel chat; relevant for channel chats only\n    case starTransactionTypeSuggestedPostPaymentReceive(StarTransactionTypeSuggestedPostPaymentReceive)\n\n    /// The transaction is a purchase of Telegram Premium subscription; relevant for regular users and bots only\n    case starTransactionTypePremiumPurchase(StarTransactionTypePremiumPurchase)\n\n    /// The transaction is a transfer of Telegram Stars to a business bot; relevant for regular users only\n    case starTransactionTypeBusinessBotTransferSend(StarTransactionTypeBusinessBotTransferSend)\n\n    /// The transaction is a transfer of Telegram Stars from a business account; relevant for bots only\n    case starTransactionTypeBusinessBotTransferReceive(StarTransactionTypeBusinessBotTransferReceive)\n\n    /// The transaction is a payment for search of posts in public Telegram channels; relevant for regular users only\n    case starTransactionTypePublicPostSearch\n\n    /// The transaction is a transaction of an unsupported type\n    case starTransactionTypeUnsupported\n\n\n    private enum Kind: String, Codable {\n        case starTransactionTypePremiumBotDeposit\n        case starTransactionTypeAppStoreDeposit\n        case starTransactionTypeGooglePlayDeposit\n        case starTransactionTypeFragmentDeposit\n        case starTransactionTypeUserDeposit\n        case starTransactionTypeGiveawayDeposit\n        case starTransactionTypeFragmentWithdrawal\n        case starTransactionTypeTelegramAdsWithdrawal\n        case starTransactionTypeTelegramApiUsage\n        case starTransactionTypeBotPaidMediaPurchase\n        case starTransactionTypeBotPaidMediaSale\n        case starTransactionTypeChannelPaidMediaPurchase\n        case starTransactionTypeChannelPaidMediaSale\n        case starTransactionTypeBotInvoicePurchase\n        case starTransactionTypeBotInvoiceSale\n        case starTransactionTypeBotSubscriptionPurchase\n        case starTransactionTypeBotSubscriptionSale\n        case starTransactionTypeChannelSubscriptionPurchase\n        case starTransactionTypeChannelSubscriptionSale\n        case starTransactionTypeGiftAuctionBid\n        case starTransactionTypeGiftPurchase\n        case starTransactionTypeGiftPurchaseOffer\n        case starTransactionTypeGiftTransfer\n        case starTransactionTypeGiftOriginalDetailsDrop\n        case starTransactionTypeGiftSale\n        case starTransactionTypeGiftUpgrade\n        case starTransactionTypeGiftUpgradePurchase\n        case starTransactionTypeUpgradedGiftPurchase\n        case starTransactionTypeUpgradedGiftSale\n        case starTransactionTypeChannelPaidReactionSend\n        case starTransactionTypeChannelPaidReactionReceive\n        case starTransactionTypeAffiliateProgramCommission\n        case starTransactionTypePaidMessageSend\n        case starTransactionTypePaidMessageReceive\n        case starTransactionTypePaidGroupCallMessageSend\n        case starTransactionTypePaidGroupCallMessageReceive\n        case starTransactionTypePaidGroupCallReactionSend\n        case starTransactionTypePaidGroupCallReactionReceive\n        case starTransactionTypeSuggestedPostPaymentSend\n        case starTransactionTypeSuggestedPostPaymentReceive\n        case starTransactionTypePremiumPurchase\n        case starTransactionTypeBusinessBotTransferSend\n        case starTransactionTypeBusinessBotTransferReceive\n        case starTransactionTypePublicPostSearch\n        case starTransactionTypeUnsupported\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .starTransactionTypePremiumBotDeposit:\n            self = .starTransactionTypePremiumBotDeposit\n        case .starTransactionTypeAppStoreDeposit:\n            self = .starTransactionTypeAppStoreDeposit\n        case .starTransactionTypeGooglePlayDeposit:\n            self = .starTransactionTypeGooglePlayDeposit\n        case .starTransactionTypeFragmentDeposit:\n            self = .starTransactionTypeFragmentDeposit\n        case .starTransactionTypeUserDeposit:\n            let value = try StarTransactionTypeUserDeposit(from: decoder)\n            self = .starTransactionTypeUserDeposit(value)\n        case .starTransactionTypeGiveawayDeposit:\n            let value = try StarTransactionTypeGiveawayDeposit(from: decoder)\n            self = .starTransactionTypeGiveawayDeposit(value)\n        case .starTransactionTypeFragmentWithdrawal:\n            let value = try StarTransactionTypeFragmentWithdrawal(from: decoder)\n            self = .starTransactionTypeFragmentWithdrawal(value)\n        case .starTransactionTypeTelegramAdsWithdrawal:\n            self = .starTransactionTypeTelegramAdsWithdrawal\n        case .starTransactionTypeTelegramApiUsage:\n            let value = try StarTransactionTypeTelegramApiUsage(from: decoder)\n            self = .starTransactionTypeTelegramApiUsage(value)\n        case .starTransactionTypeBotPaidMediaPurchase:\n            let value = try StarTransactionTypeBotPaidMediaPurchase(from: decoder)\n            self = .starTransactionTypeBotPaidMediaPurchase(value)\n        case .starTransactionTypeBotPaidMediaSale:\n            let value = try StarTransactionTypeBotPaidMediaSale(from: decoder)\n            self = .starTransactionTypeBotPaidMediaSale(value)\n        case .starTransactionTypeChannelPaidMediaPurchase:\n            let value = try StarTransactionTypeChannelPaidMediaPurchase(from: decoder)\n            self = .starTransactionTypeChannelPaidMediaPurchase(value)\n        case .starTransactionTypeChannelPaidMediaSale:\n            let value = try StarTransactionTypeChannelPaidMediaSale(from: decoder)\n            self = .starTransactionTypeChannelPaidMediaSale(value)\n        case .starTransactionTypeBotInvoicePurchase:\n            let value = try StarTransactionTypeBotInvoicePurchase(from: decoder)\n            self = .starTransactionTypeBotInvoicePurchase(value)\n        case .starTransactionTypeBotInvoiceSale:\n            let value = try StarTransactionTypeBotInvoiceSale(from: decoder)\n            self = .starTransactionTypeBotInvoiceSale(value)\n        case .starTransactionTypeBotSubscriptionPurchase:\n            let value = try StarTransactionTypeBotSubscriptionPurchase(from: decoder)\n            self = .starTransactionTypeBotSubscriptionPurchase(value)\n        case .starTransactionTypeBotSubscriptionSale:\n            let value = try StarTransactionTypeBotSubscriptionSale(from: decoder)\n            self = .starTransactionTypeBotSubscriptionSale(value)\n        case .starTransactionTypeChannelSubscriptionPurchase:\n            let value = try StarTransactionTypeChannelSubscriptionPurchase(from: decoder)\n            self = .starTransactionTypeChannelSubscriptionPurchase(value)\n        case .starTransactionTypeChannelSubscriptionSale:\n            let value = try StarTransactionTypeChannelSubscriptionSale(from: decoder)\n            self = .starTransactionTypeChannelSubscriptionSale(value)\n        case .starTransactionTypeGiftAuctionBid:\n            let value = try StarTransactionTypeGiftAuctionBid(from: decoder)\n            self = .starTransactionTypeGiftAuctionBid(value)\n        case .starTransactionTypeGiftPurchase:\n            let value = try StarTransactionTypeGiftPurchase(from: decoder)\n            self = .starTransactionTypeGiftPurchase(value)\n        case .starTransactionTypeGiftPurchaseOffer:\n            let value = try StarTransactionTypeGiftPurchaseOffer(from: decoder)\n            self = .starTransactionTypeGiftPurchaseOffer(value)\n        case .starTransactionTypeGiftTransfer:\n            let value = try StarTransactionTypeGiftTransfer(from: decoder)\n            self = .starTransactionTypeGiftTransfer(value)\n        case .starTransactionTypeGiftOriginalDetailsDrop:\n            let value = try StarTransactionTypeGiftOriginalDetailsDrop(from: decoder)\n            self = .starTransactionTypeGiftOriginalDetailsDrop(value)\n        case .starTransactionTypeGiftSale:\n            let value = try StarTransactionTypeGiftSale(from: decoder)\n            self = .starTransactionTypeGiftSale(value)\n        case .starTransactionTypeGiftUpgrade:\n            let value = try StarTransactionTypeGiftUpgrade(from: decoder)\n            self = .starTransactionTypeGiftUpgrade(value)\n        case .starTransactionTypeGiftUpgradePurchase:\n            let value = try StarTransactionTypeGiftUpgradePurchase(from: decoder)\n            self = .starTransactionTypeGiftUpgradePurchase(value)\n        case .starTransactionTypeUpgradedGiftPurchase:\n            let value = try StarTransactionTypeUpgradedGiftPurchase(from: decoder)\n            self = .starTransactionTypeUpgradedGiftPurchase(value)\n        case .starTransactionTypeUpgradedGiftSale:\n            let value = try StarTransactionTypeUpgradedGiftSale(from: decoder)\n            self = .starTransactionTypeUpgradedGiftSale(value)\n        case .starTransactionTypeChannelPaidReactionSend:\n            let value = try StarTransactionTypeChannelPaidReactionSend(from: decoder)\n            self = .starTransactionTypeChannelPaidReactionSend(value)\n        case .starTransactionTypeChannelPaidReactionReceive:\n            let value = try StarTransactionTypeChannelPaidReactionReceive(from: decoder)\n            self = .starTransactionTypeChannelPaidReactionReceive(value)\n        case .starTransactionTypeAffiliateProgramCommission:\n            let value = try StarTransactionTypeAffiliateProgramCommission(from: decoder)\n            self = .starTransactionTypeAffiliateProgramCommission(value)\n        case .starTransactionTypePaidMessageSend:\n            let value = try StarTransactionTypePaidMessageSend(from: decoder)\n            self = .starTransactionTypePaidMessageSend(value)\n        case .starTransactionTypePaidMessageReceive:\n            let value = try StarTransactionTypePaidMessageReceive(from: decoder)\n            self = .starTransactionTypePaidMessageReceive(value)\n        case .starTransactionTypePaidGroupCallMessageSend:\n            let value = try StarTransactionTypePaidGroupCallMessageSend(from: decoder)\n            self = .starTransactionTypePaidGroupCallMessageSend(value)\n        case .starTransactionTypePaidGroupCallMessageReceive:\n            let value = try StarTransactionTypePaidGroupCallMessageReceive(from: decoder)\n            self = .starTransactionTypePaidGroupCallMessageReceive(value)\n        case .starTransactionTypePaidGroupCallReactionSend:\n            let value = try StarTransactionTypePaidGroupCallReactionSend(from: decoder)\n            self = .starTransactionTypePaidGroupCallReactionSend(value)\n        case .starTransactionTypePaidGroupCallReactionReceive:\n            let value = try StarTransactionTypePaidGroupCallReactionReceive(from: decoder)\n            self = .starTransactionTypePaidGroupCallReactionReceive(value)\n        case .starTransactionTypeSuggestedPostPaymentSend:\n            let value = try StarTransactionTypeSuggestedPostPaymentSend(from: decoder)\n            self = .starTransactionTypeSuggestedPostPaymentSend(value)\n        case .starTransactionTypeSuggestedPostPaymentReceive:\n            let value = try StarTransactionTypeSuggestedPostPaymentReceive(from: decoder)\n            self = .starTransactionTypeSuggestedPostPaymentReceive(value)\n        case .starTransactionTypePremiumPurchase:\n            let value = try StarTransactionTypePremiumPurchase(from: decoder)\n            self = .starTransactionTypePremiumPurchase(value)\n        case .starTransactionTypeBusinessBotTransferSend:\n            let value = try StarTransactionTypeBusinessBotTransferSend(from: decoder)\n            self = .starTransactionTypeBusinessBotTransferSend(value)\n        case .starTransactionTypeBusinessBotTransferReceive:\n            let value = try StarTransactionTypeBusinessBotTransferReceive(from: decoder)\n            self = .starTransactionTypeBusinessBotTransferReceive(value)\n        case .starTransactionTypePublicPostSearch:\n            self = .starTransactionTypePublicPostSearch\n        case .starTransactionTypeUnsupported:\n            self = .starTransactionTypeUnsupported\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .starTransactionTypePremiumBotDeposit:\n            try container.encode(Kind.starTransactionTypePremiumBotDeposit, forKey: .type)\n        case .starTransactionTypeAppStoreDeposit:\n            try container.encode(Kind.starTransactionTypeAppStoreDeposit, forKey: .type)\n        case .starTransactionTypeGooglePlayDeposit:\n            try container.encode(Kind.starTransactionTypeGooglePlayDeposit, forKey: .type)\n        case .starTransactionTypeFragmentDeposit:\n            try container.encode(Kind.starTransactionTypeFragmentDeposit, forKey: .type)\n        case .starTransactionTypeUserDeposit(let value):\n            try container.encode(Kind.starTransactionTypeUserDeposit, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeGiveawayDeposit(let value):\n            try container.encode(Kind.starTransactionTypeGiveawayDeposit, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeFragmentWithdrawal(let value):\n            try container.encode(Kind.starTransactionTypeFragmentWithdrawal, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeTelegramAdsWithdrawal:\n            try container.encode(Kind.starTransactionTypeTelegramAdsWithdrawal, forKey: .type)\n        case .starTransactionTypeTelegramApiUsage(let value):\n            try container.encode(Kind.starTransactionTypeTelegramApiUsage, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeBotPaidMediaPurchase(let value):\n            try container.encode(Kind.starTransactionTypeBotPaidMediaPurchase, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeBotPaidMediaSale(let value):\n            try container.encode(Kind.starTransactionTypeBotPaidMediaSale, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeChannelPaidMediaPurchase(let value):\n            try container.encode(Kind.starTransactionTypeChannelPaidMediaPurchase, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeChannelPaidMediaSale(let value):\n            try container.encode(Kind.starTransactionTypeChannelPaidMediaSale, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeBotInvoicePurchase(let value):\n            try container.encode(Kind.starTransactionTypeBotInvoicePurchase, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeBotInvoiceSale(let value):\n            try container.encode(Kind.starTransactionTypeBotInvoiceSale, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeBotSubscriptionPurchase(let value):\n            try container.encode(Kind.starTransactionTypeBotSubscriptionPurchase, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeBotSubscriptionSale(let value):\n            try container.encode(Kind.starTransactionTypeBotSubscriptionSale, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeChannelSubscriptionPurchase(let value):\n            try container.encode(Kind.starTransactionTypeChannelSubscriptionPurchase, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeChannelSubscriptionSale(let value):\n            try container.encode(Kind.starTransactionTypeChannelSubscriptionSale, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeGiftAuctionBid(let value):\n            try container.encode(Kind.starTransactionTypeGiftAuctionBid, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeGiftPurchase(let value):\n            try container.encode(Kind.starTransactionTypeGiftPurchase, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeGiftPurchaseOffer(let value):\n            try container.encode(Kind.starTransactionTypeGiftPurchaseOffer, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeGiftTransfer(let value):\n            try container.encode(Kind.starTransactionTypeGiftTransfer, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeGiftOriginalDetailsDrop(let value):\n            try container.encode(Kind.starTransactionTypeGiftOriginalDetailsDrop, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeGiftSale(let value):\n            try container.encode(Kind.starTransactionTypeGiftSale, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeGiftUpgrade(let value):\n            try container.encode(Kind.starTransactionTypeGiftUpgrade, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeGiftUpgradePurchase(let value):\n            try container.encode(Kind.starTransactionTypeGiftUpgradePurchase, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeUpgradedGiftPurchase(let value):\n            try container.encode(Kind.starTransactionTypeUpgradedGiftPurchase, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeUpgradedGiftSale(let value):\n            try container.encode(Kind.starTransactionTypeUpgradedGiftSale, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeChannelPaidReactionSend(let value):\n            try container.encode(Kind.starTransactionTypeChannelPaidReactionSend, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeChannelPaidReactionReceive(let value):\n            try container.encode(Kind.starTransactionTypeChannelPaidReactionReceive, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeAffiliateProgramCommission(let value):\n            try container.encode(Kind.starTransactionTypeAffiliateProgramCommission, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypePaidMessageSend(let value):\n            try container.encode(Kind.starTransactionTypePaidMessageSend, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypePaidMessageReceive(let value):\n            try container.encode(Kind.starTransactionTypePaidMessageReceive, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypePaidGroupCallMessageSend(let value):\n            try container.encode(Kind.starTransactionTypePaidGroupCallMessageSend, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypePaidGroupCallMessageReceive(let value):\n            try container.encode(Kind.starTransactionTypePaidGroupCallMessageReceive, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypePaidGroupCallReactionSend(let value):\n            try container.encode(Kind.starTransactionTypePaidGroupCallReactionSend, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypePaidGroupCallReactionReceive(let value):\n            try container.encode(Kind.starTransactionTypePaidGroupCallReactionReceive, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeSuggestedPostPaymentSend(let value):\n            try container.encode(Kind.starTransactionTypeSuggestedPostPaymentSend, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeSuggestedPostPaymentReceive(let value):\n            try container.encode(Kind.starTransactionTypeSuggestedPostPaymentReceive, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypePremiumPurchase(let value):\n            try container.encode(Kind.starTransactionTypePremiumPurchase, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeBusinessBotTransferSend(let value):\n            try container.encode(Kind.starTransactionTypeBusinessBotTransferSend, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypeBusinessBotTransferReceive(let value):\n            try container.encode(Kind.starTransactionTypeBusinessBotTransferReceive, forKey: .type)\n            try value.encode(to: encoder)\n        case .starTransactionTypePublicPostSearch:\n            try container.encode(Kind.starTransactionTypePublicPostSearch, forKey: .type)\n        case .starTransactionTypeUnsupported:\n            try container.encode(Kind.starTransactionTypeUnsupported, forKey: .type)\n        }\n    }\n}\n\n/// The transaction is a deposit of Telegram Stars by another user; relevant for regular users only\npublic struct StarTransactionTypeUserDeposit: Codable, Equatable, Hashable {\n\n    /// The sticker to be shown in the transaction information; may be null if unknown\n    public let sticker: Sticker?\n\n    /// Identifier of the user who gifted Telegram Stars; 0 if the user was anonymous\n    public let userId: Int64\n\n\n    public init(\n        sticker: Sticker?,\n        userId: Int64\n    ) {\n        self.sticker = sticker\n        self.userId = userId\n    }\n}\n\n/// The transaction is a deposit of Telegram Stars from a giveaway; relevant for regular users only\npublic struct StarTransactionTypeGiveawayDeposit: Codable, Equatable, Hashable {\n\n    /// Identifier of a supergroup or a channel chat that created the giveaway\n    public let chatId: Int64\n\n    /// Identifier of the message with the giveaway; may be 0 or an identifier of a deleted message\n    public let giveawayMessageId: Int64\n\n\n    public init(\n        chatId: Int64,\n        giveawayMessageId: Int64\n    ) {\n        self.chatId = chatId\n        self.giveawayMessageId = giveawayMessageId\n    }\n}\n\n/// The transaction is a withdrawal of earned Telegram Stars to Fragment; relevant for regular users, bots, supergroup and channel chats only\npublic struct StarTransactionTypeFragmentWithdrawal: Codable, Equatable, Hashable {\n\n    /// State of the withdrawal; may be null for refunds from Fragment\n    public let withdrawalState: RevenueWithdrawalState?\n\n\n    public init(withdrawalState: RevenueWithdrawalState?) {\n        self.withdrawalState = withdrawalState\n    }\n}\n\n/// The transaction is a payment for Telegram API usage; relevant for bots only\npublic struct StarTransactionTypeTelegramApiUsage: Codable, Equatable, Hashable {\n\n    /// The number of billed requests\n    public let requestCount: Int\n\n\n    public init(requestCount: Int) {\n        self.requestCount = requestCount\n    }\n}\n\n/// The transaction is a purchase of paid media from a bot or a business account by the current user; relevant for regular users only\npublic struct StarTransactionTypeBotPaidMediaPurchase: Codable, Equatable, Hashable {\n\n    /// The bought media if the transaction wasn't refunded\n    public let media: [PaidMedia]\n\n    /// Identifier of the bot or the business account user who sent the paid media\n    public let userId: Int64\n\n\n    public init(\n        media: [PaidMedia],\n        userId: Int64\n    ) {\n        self.media = media\n        self.userId = userId\n    }\n}\n\n/// The transaction is a sale of paid media by the bot or a business account managed by the bot; relevant for bots only\npublic struct StarTransactionTypeBotPaidMediaSale: Codable, Equatable, Hashable {\n\n    /// Information about the affiliate which received commission from the transaction; may be null if none\n    public let affiliate: AffiliateInfo?\n\n    /// The bought media\n    public let media: [PaidMedia]\n\n    /// Bot-provided payload\n    public let payload: String\n\n    /// Identifier of the user who bought the media\n    public let userId: Int64\n\n\n    public init(\n        affiliate: AffiliateInfo?,\n        media: [PaidMedia],\n        payload: String,\n        userId: Int64\n    ) {\n        self.affiliate = affiliate\n        self.media = media\n        self.payload = payload\n        self.userId = userId\n    }\n}\n\n/// The transaction is a purchase of paid media from a channel by the current user; relevant for regular users only\npublic struct StarTransactionTypeChannelPaidMediaPurchase: Codable, Equatable, Hashable {\n\n    /// Identifier of the channel chat that sent the paid media\n    public let chatId: Int64\n\n    /// The bought media if the transaction wasn't refunded\n    public let media: [PaidMedia]\n\n    /// Identifier of the corresponding message with paid media; may be 0 or an identifier of a deleted message\n    public let messageId: Int64\n\n\n    public init(\n        chatId: Int64,\n        media: [PaidMedia],\n        messageId: Int64\n    ) {\n        self.chatId = chatId\n        self.media = media\n        self.messageId = messageId\n    }\n}\n\n/// The transaction is a sale of paid media by the channel chat; relevant for channel chats only\npublic struct StarTransactionTypeChannelPaidMediaSale: Codable, Equatable, Hashable {\n\n    /// The bought media\n    public let media: [PaidMedia]\n\n    /// Identifier of the corresponding message with paid media; may be 0 or an identifier of a deleted message\n    public let messageId: Int64\n\n    /// Identifier of the user who bought the media\n    public let userId: Int64\n\n\n    public init(\n        media: [PaidMedia],\n        messageId: Int64,\n        userId: Int64\n    ) {\n        self.media = media\n        self.messageId = messageId\n        self.userId = userId\n    }\n}\n\n/// The transaction is a purchase of a product from a bot or a business account by the current user; relevant for regular users only\npublic struct StarTransactionTypeBotInvoicePurchase: Codable, Equatable, Hashable {\n\n    /// Information about the bought product\n    public let productInfo: ProductInfo\n\n    /// Identifier of the bot or the business account user who created the invoice\n    public let userId: Int64\n\n\n    public init(\n        productInfo: ProductInfo,\n        userId: Int64\n    ) {\n        self.productInfo = productInfo\n        self.userId = userId\n    }\n}\n\n/// The transaction is a sale of a product by the bot; relevant for bots only\npublic struct StarTransactionTypeBotInvoiceSale: Codable, Equatable, Hashable {\n\n    /// Information about the affiliate which received commission from the transaction; may be null if none\n    public let affiliate: AffiliateInfo?\n\n    /// Invoice payload\n    public let invoicePayload: Data\n\n    /// Information about the bought product\n    public let productInfo: ProductInfo\n\n    /// Identifier of the user who bought the product\n    public let userId: Int64\n\n\n    public init(\n        affiliate: AffiliateInfo?,\n        invoicePayload: Data,\n        productInfo: ProductInfo,\n        userId: Int64\n    ) {\n        self.affiliate = affiliate\n        self.invoicePayload = invoicePayload\n        self.productInfo = productInfo\n        self.userId = userId\n    }\n}\n\n/// The transaction is a purchase of a subscription from a bot or a business account by the current user; relevant for regular users only\npublic struct StarTransactionTypeBotSubscriptionPurchase: Codable, Equatable, Hashable {\n\n    /// Information about the bought subscription\n    public let productInfo: ProductInfo\n\n    /// The number of seconds between consecutive Telegram Star debitings\n    public let subscriptionPeriod: Int\n\n    /// Identifier of the bot or the business account user who created the subscription link\n    public let userId: Int64\n\n\n    public init(\n        productInfo: ProductInfo,\n        subscriptionPeriod: Int,\n        userId: Int64\n    ) {\n        self.productInfo = productInfo\n        self.subscriptionPeriod = subscriptionPeriod\n        self.userId = userId\n    }\n}\n\n/// The transaction is a sale of a subscription by the bot; relevant for bots only\npublic struct StarTransactionTypeBotSubscriptionSale: Codable, Equatable, Hashable {\n\n    /// Information about the affiliate which received commission from the transaction; may be null if none\n    public let affiliate: AffiliateInfo?\n\n    /// Invoice payload\n    public let invoicePayload: Data\n\n    /// Information about the bought subscription\n    public let productInfo: ProductInfo\n\n    /// The number of seconds between consecutive Telegram Star debitings\n    public let subscriptionPeriod: Int\n\n    /// Identifier of the user who bought the subscription\n    public let userId: Int64\n\n\n    public init(\n        affiliate: AffiliateInfo?,\n        invoicePayload: Data,\n        productInfo: ProductInfo,\n        subscriptionPeriod: Int,\n        userId: Int64\n    ) {\n        self.affiliate = affiliate\n        self.invoicePayload = invoicePayload\n        self.productInfo = productInfo\n        self.subscriptionPeriod = subscriptionPeriod\n        self.userId = userId\n    }\n}\n\n/// The transaction is a purchase of a subscription to a channel chat by the current user; relevant for regular users only\npublic struct StarTransactionTypeChannelSubscriptionPurchase: Codable, Equatable, Hashable {\n\n    /// Identifier of the channel chat that created the subscription\n    public let chatId: Int64\n\n    /// The number of seconds between consecutive Telegram Star debitings\n    public let subscriptionPeriod: Int\n\n\n    public init(\n        chatId: Int64,\n        subscriptionPeriod: Int\n    ) {\n        self.chatId = chatId\n        self.subscriptionPeriod = subscriptionPeriod\n    }\n}\n\n/// The transaction is a sale of a subscription by the channel chat; relevant for channel chats only\npublic struct StarTransactionTypeChannelSubscriptionSale: Codable, Equatable, Hashable {\n\n    /// The number of seconds between consecutive Telegram Star debitings\n    public let subscriptionPeriod: Int\n\n    /// Identifier of the user who bought the subscription\n    public let userId: Int64\n\n\n    public init(\n        subscriptionPeriod: Int,\n        userId: Int64\n    ) {\n        self.subscriptionPeriod = subscriptionPeriod\n        self.userId = userId\n    }\n}\n\n/// The transaction is a bid on a gift auction; relevant for regular users only\npublic struct StarTransactionTypeGiftAuctionBid: Codable, Equatable, Hashable {\n\n    /// The gift\n    public let gift: Gift\n\n    /// Identifier of the user who will receive the gift\n    public let ownerId: MessageSender\n\n\n    public init(\n        gift: Gift,\n        ownerId: MessageSender\n    ) {\n        self.gift = gift\n        self.ownerId = ownerId\n    }\n}\n\n/// The transaction is a purchase of a regular gift; relevant for regular users and bots only\npublic struct StarTransactionTypeGiftPurchase: Codable, Equatable, Hashable {\n\n    /// The gift\n    public let gift: Gift\n\n    /// Identifier of the user or the channel that received the gift\n    public let ownerId: MessageSender\n\n\n    public init(\n        gift: Gift,\n        ownerId: MessageSender\n    ) {\n        self.gift = gift\n        self.ownerId = ownerId\n    }\n}\n\n/// The transaction is an offer of gift purchase; relevant for regular users only\npublic struct StarTransactionTypeGiftPurchaseOffer: Codable, Equatable, Hashable {\n\n    /// The gift\n    public let gift: UpgradedGift\n\n\n    public init(gift: UpgradedGift) {\n        self.gift = gift\n    }\n}\n\n/// The transaction is a transfer of an upgraded gift; relevant for regular users only\npublic struct StarTransactionTypeGiftTransfer: Codable, Equatable, Hashable {\n\n    /// The gift\n    public let gift: UpgradedGift\n\n    /// Identifier of the user or the channel that received the gift\n    public let ownerId: MessageSender\n\n\n    public init(\n        gift: UpgradedGift,\n        ownerId: MessageSender\n    ) {\n        self.gift = gift\n        self.ownerId = ownerId\n    }\n}\n\n/// The transaction is a drop of original details of an upgraded gift; relevant for regular users only\npublic struct StarTransactionTypeGiftOriginalDetailsDrop: Codable, Equatable, Hashable {\n\n    /// The gift\n    public let gift: UpgradedGift\n\n    /// Identifier of the user or the channel that owns the gift\n    public let ownerId: MessageSender\n\n\n    public init(\n        gift: UpgradedGift,\n        ownerId: MessageSender\n    ) {\n        self.gift = gift\n        self.ownerId = ownerId\n    }\n}\n\n/// The transaction is a sale of a received gift; relevant for regular users and channel chats only\npublic struct StarTransactionTypeGiftSale: Codable, Equatable, Hashable {\n\n    /// The gift\n    public let gift: Gift\n\n    /// Identifier of the user who sent the gift\n    public let userId: Int64\n\n\n    public init(\n        gift: Gift,\n        userId: Int64\n    ) {\n        self.gift = gift\n        self.userId = userId\n    }\n}\n\n/// The transaction is an upgrade of a gift; relevant for regular users only\npublic struct StarTransactionTypeGiftUpgrade: Codable, Equatable, Hashable {\n\n    /// The upgraded gift\n    public let gift: UpgradedGift\n\n    /// Identifier of the user who initially sent the gift\n    public let userId: Int64\n\n\n    public init(\n        gift: UpgradedGift,\n        userId: Int64\n    ) {\n        self.gift = gift\n        self.userId = userId\n    }\n}\n\n/// The transaction is a purchase of an upgrade of a gift owned by another user or channel; relevant for regular users only\npublic struct StarTransactionTypeGiftUpgradePurchase: Codable, Equatable, Hashable {\n\n    /// The gift\n    public let gift: Gift\n\n    /// Owner of the upgraded gift\n    public let ownerId: MessageSender\n\n\n    public init(\n        gift: Gift,\n        ownerId: MessageSender\n    ) {\n        self.gift = gift\n        self.ownerId = ownerId\n    }\n}\n\n/// The transaction is a purchase of an upgraded gift for some user or channel; relevant for regular users only\npublic struct StarTransactionTypeUpgradedGiftPurchase: Codable, Equatable, Hashable {\n\n    /// The gift\n    public let gift: UpgradedGift\n\n    /// Identifier of the user who sold the gift\n    public let userId: Int64\n\n\n    public init(\n        gift: UpgradedGift,\n        userId: Int64\n    ) {\n        self.gift = gift\n        self.userId = userId\n    }\n}\n\n/// The transaction is a sale of an upgraded gift; relevant for regular users only\npublic struct StarTransactionTypeUpgradedGiftSale: Codable, Equatable, Hashable {\n\n    /// The number of Telegram Stars received by the Telegram for each 1000 Telegram Stars received by the seller of the gift\n    public let commissionPerMille: Int\n\n    /// The Telegram Star amount that was received by Telegram; can be negative for refunds\n    public let commissionStarAmount: StarAmount\n\n    /// The gift\n    public let gift: UpgradedGift\n\n    /// Identifier of the user who bought the gift\n    public let userId: Int64\n\n    /// True, if the gift was sold through a purchase offer\n    public let viaOffer: Bool\n\n\n    public init(\n        commissionPerMille: Int,\n        commissionStarAmount: StarAmount,\n        gift: UpgradedGift,\n        userId: Int64,\n        viaOffer: Bool\n    ) {\n        self.commissionPerMille = commissionPerMille\n        self.commissionStarAmount = commissionStarAmount\n        self.gift = gift\n        self.userId = userId\n        self.viaOffer = viaOffer\n    }\n}\n\n/// The transaction is a sending of a paid reaction to a message in a channel chat by the current user; relevant for regular users only\npublic struct StarTransactionTypeChannelPaidReactionSend: Codable, Equatable, Hashable {\n\n    /// Identifier of the channel chat\n    public let chatId: Int64\n\n    /// Identifier of the reacted message; may be 0 or an identifier of a deleted message\n    public let messageId: Int64\n\n\n    public init(\n        chatId: Int64,\n        messageId: Int64\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n/// The transaction is a receiving of a paid reaction to a message by the channel chat; relevant for channel chats only\npublic struct StarTransactionTypeChannelPaidReactionReceive: Codable, Equatable, Hashable {\n\n    /// Identifier of the reacted message; may be 0 or an identifier of a deleted message\n    public let messageId: Int64\n\n    /// Identifier of the user who added the paid reaction\n    public let userId: Int64\n\n\n    public init(\n        messageId: Int64,\n        userId: Int64\n    ) {\n        self.messageId = messageId\n        self.userId = userId\n    }\n}\n\n/// The transaction is a receiving of a commission from an affiliate program; relevant for regular users, bots and channel chats only\npublic struct StarTransactionTypeAffiliateProgramCommission: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat that created the affiliate program\n    public let chatId: Int64\n\n    /// The number of Telegram Stars received by the affiliate for each 1000 Telegram Stars received by the program owner\n    public let commissionPerMille: Int\n\n\n    public init(\n        chatId: Int64,\n        commissionPerMille: Int\n    ) {\n        self.chatId = chatId\n        self.commissionPerMille = commissionPerMille\n    }\n}\n\n/// The transaction is a sending of a paid message; relevant for regular users only\npublic struct StarTransactionTypePaidMessageSend: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat that received the payment\n    public let chatId: Int64\n\n    /// Number of sent paid messages\n    public let messageCount: Int\n\n\n    public init(\n        chatId: Int64,\n        messageCount: Int\n    ) {\n        self.chatId = chatId\n        self.messageCount = messageCount\n    }\n}\n\n/// The transaction is a receiving of a paid message; relevant for regular users, supergroup and channel chats only\npublic struct StarTransactionTypePaidMessageReceive: Codable, Equatable, Hashable {\n\n    /// The number of Telegram Stars received by the Telegram for each 1000 Telegram Stars paid for message sending\n    public let commissionPerMille: Int\n\n    /// The Telegram Star amount that was received by Telegram; can be negative for refunds\n    public let commissionStarAmount: StarAmount\n\n    /// Number of received paid messages\n    public let messageCount: Int\n\n    /// Identifier of the sender of the message\n    public let senderId: MessageSender\n\n\n    public init(\n        commissionPerMille: Int,\n        commissionStarAmount: StarAmount,\n        messageCount: Int,\n        senderId: MessageSender\n    ) {\n        self.commissionPerMille = commissionPerMille\n        self.commissionStarAmount = commissionStarAmount\n        self.messageCount = messageCount\n        self.senderId = senderId\n    }\n}\n\n/// The transaction is a sending of a paid group call message; relevant for regular users only\npublic struct StarTransactionTypePaidGroupCallMessageSend: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat that received the payment\n    public let chatId: Int64\n\n\n    public init(chatId: Int64) {\n        self.chatId = chatId\n    }\n}\n\n/// The transaction is a receiving of a paid group call message; relevant for regular users and channel chats only\npublic struct StarTransactionTypePaidGroupCallMessageReceive: Codable, Equatable, Hashable {\n\n    /// The number of Telegram Stars received by the Telegram for each 1000 Telegram Stars paid for message sending\n    public let commissionPerMille: Int\n\n    /// The Telegram Star amount that was received by Telegram; can be negative for refunds\n    public let commissionStarAmount: StarAmount\n\n    /// Identifier of the sender of the message\n    public let senderId: MessageSender\n\n\n    public init(\n        commissionPerMille: Int,\n        commissionStarAmount: StarAmount,\n        senderId: MessageSender\n    ) {\n        self.commissionPerMille = commissionPerMille\n        self.commissionStarAmount = commissionStarAmount\n        self.senderId = senderId\n    }\n}\n\n/// The transaction is a sending of a paid group reaction; relevant for regular users only\npublic struct StarTransactionTypePaidGroupCallReactionSend: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat that received the payment\n    public let chatId: Int64\n\n\n    public init(chatId: Int64) {\n        self.chatId = chatId\n    }\n}\n\n/// The transaction is a receiving of a paid group call reaction; relevant for regular users and channel chats only\npublic struct StarTransactionTypePaidGroupCallReactionReceive: Codable, Equatable, Hashable {\n\n    /// The number of Telegram Stars received by the Telegram for each 1000 Telegram Stars paid for reaction sending\n    public let commissionPerMille: Int\n\n    /// The Telegram Star amount that was received by Telegram; can be negative for refunds\n    public let commissionStarAmount: StarAmount\n\n    /// Identifier of the sender of the reaction\n    public let senderId: MessageSender\n\n\n    public init(\n        commissionPerMille: Int,\n        commissionStarAmount: StarAmount,\n        senderId: MessageSender\n    ) {\n        self.commissionPerMille = commissionPerMille\n        self.commissionStarAmount = commissionStarAmount\n        self.senderId = senderId\n    }\n}\n\n/// The transaction is a payment for a suggested post; relevant for regular users only\npublic struct StarTransactionTypeSuggestedPostPaymentSend: Codable, Equatable, Hashable {\n\n    /// Identifier of the channel chat that posted the post\n    public let chatId: Int64\n\n\n    public init(chatId: Int64) {\n        self.chatId = chatId\n    }\n}\n\n/// The transaction is a receiving of a payment for a suggested post by the channel chat; relevant for channel chats only\npublic struct StarTransactionTypeSuggestedPostPaymentReceive: Codable, Equatable, Hashable {\n\n    /// Identifier of the user who paid for the suggested post\n    public let userId: Int64\n\n\n    public init(userId: Int64) {\n        self.userId = userId\n    }\n}\n\n/// The transaction is a purchase of Telegram Premium subscription; relevant for regular users and bots only\npublic struct StarTransactionTypePremiumPurchase: Codable, Equatable, Hashable {\n\n    /// Number of months the Telegram Premium subscription will be active\n    public let monthCount: Int\n\n    /// A sticker to be shown in the transaction information; may be null if unknown\n    public let sticker: Sticker?\n\n    /// Identifier of the user who received the Telegram Premium subscription\n    public let userId: Int64\n\n\n    public init(\n        monthCount: Int,\n        sticker: Sticker?,\n        userId: Int64\n    ) {\n        self.monthCount = monthCount\n        self.sticker = sticker\n        self.userId = userId\n    }\n}\n\n/// The transaction is a transfer of Telegram Stars to a business bot; relevant for regular users only\npublic struct StarTransactionTypeBusinessBotTransferSend: Codable, Equatable, Hashable {\n\n    /// Identifier of the bot that received Telegram Stars\n    public let userId: Int64\n\n\n    public init(userId: Int64) {\n        self.userId = userId\n    }\n}\n\n/// The transaction is a transfer of Telegram Stars from a business account; relevant for bots only\npublic struct StarTransactionTypeBusinessBotTransferReceive: Codable, Equatable, Hashable {\n\n    /// Identifier of the user who sent Telegram Stars\n    public let userId: Int64\n\n\n    public init(userId: Int64) {\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StarTransactions.swift",
    "content": "//\n//  StarTransactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of Telegram Star transactions\npublic struct StarTransactions: Codable, Equatable, Hashable {\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// The amount of owned Telegram Stars\n    public let starAmount: StarAmount\n\n    /// List of transactions with Telegram Stars\n    public let transactions: [StarTransaction]\n\n\n    public init(\n        nextOffset: String,\n        starAmount: StarAmount,\n        transactions: [StarTransaction]\n    ) {\n        self.nextOffset = nextOffset\n        self.starAmount = starAmount\n        self.transactions = transactions\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StartGroupCallRecording.swift",
    "content": "//\n//  StartGroupCallRecording.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Starts recording of an active group call; for video chats only. Requires groupCall.can_be_managed right\npublic struct StartGroupCallRecording: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// Pass true to record a video file instead of an audio file\n    public let recordVideo: Bool?\n\n    /// Group call recording title; 0-64 characters\n    public let title: String?\n\n    /// Pass true to use portrait orientation for video instead of landscape one\n    public let usePortraitOrientation: Bool?\n\n\n    public init(\n        groupCallId: Int?,\n        recordVideo: Bool?,\n        title: String?,\n        usePortraitOrientation: Bool?\n    ) {\n        self.groupCallId = groupCallId\n        self.recordVideo = recordVideo\n        self.title = title\n        self.usePortraitOrientation = usePortraitOrientation\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StartGroupCallScreenSharing.swift",
    "content": "//\n//  StartGroupCallScreenSharing.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Starts screen sharing in a joined group call; not supported in live stories. Returns join response payload for tgcalls\npublic struct StartGroupCallScreenSharing: Codable, Equatable, Hashable {\n\n    /// Screen sharing audio channel synchronization source identifier; received from tgcalls\n    public let audioSourceId: Int?\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// Group call join payload; received from tgcalls\n    public let payload: String?\n\n\n    public init(\n        audioSourceId: Int?,\n        groupCallId: Int?,\n        payload: String?\n    ) {\n        self.audioSourceId = audioSourceId\n        self.groupCallId = groupCallId\n        self.payload = payload\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StartLiveStory.swift",
    "content": "//\n//  StartLiveStory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Starts a new live story on behalf of a chat; requires can_post_stories administrator right for channel chats\npublic struct StartLiveStory: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat that will start the live story. Pass Saved Messages chat identifier when starting a live story on behalf of the current user, or a channel chat identifier\n    public let chatId: Int64?\n\n    /// Pass true to allow viewers of the story to send messages\n    public let enableMessages: Bool?\n\n    /// Pass true to create an RTMP stream instead of an ordinary group call\n    public let isRtmpStream: Bool?\n\n    /// The minimum number of Telegram Stars that must be paid by viewers for each sent message to the call; 0-getOption(\"paid_group_call_message_star_count_max\")\n    public let paidMessageStarCount: Int64?\n\n    /// The privacy settings for the story; ignored for stories posted on behalf of channel chats\n    public let privacySettings: StoryPrivacySettings?\n\n    /// Pass true if the content of the story must be protected from screenshotting\n    public let protectContent: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        enableMessages: Bool?,\n        isRtmpStream: Bool?,\n        paidMessageStarCount: Int64?,\n        privacySettings: StoryPrivacySettings?,\n        protectContent: Bool?\n    ) {\n        self.chatId = chatId\n        self.enableMessages = enableMessages\n        self.isRtmpStream = isRtmpStream\n        self.paidMessageStarCount = paidMessageStarCount\n        self.privacySettings = privacySettings\n        self.protectContent = protectContent\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StartLiveStoryResult.swift",
    "content": "//\n//  StartLiveStoryResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents result of starting a live story\npublic indirect enum StartLiveStoryResult: Codable, Equatable, Hashable {\n\n    /// The live story was successfully posted\n    case startLiveStoryResultOk(StartLiveStoryResultOk)\n\n    /// The live story failed to post with an error to be handled\n    case startLiveStoryResultFail(StartLiveStoryResultFail)\n\n\n    private enum Kind: String, Codable {\n        case startLiveStoryResultOk\n        case startLiveStoryResultFail\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .startLiveStoryResultOk:\n            let value = try StartLiveStoryResultOk(from: decoder)\n            self = .startLiveStoryResultOk(value)\n        case .startLiveStoryResultFail:\n            let value = try StartLiveStoryResultFail(from: decoder)\n            self = .startLiveStoryResultFail(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .startLiveStoryResultOk(let value):\n            try container.encode(Kind.startLiveStoryResultOk, forKey: .type)\n            try value.encode(to: encoder)\n        case .startLiveStoryResultFail(let value):\n            try container.encode(Kind.startLiveStoryResultFail, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The live story was successfully posted\npublic struct StartLiveStoryResultOk: Codable, Equatable, Hashable {\n\n    /// The live story\n    public let story: Story\n\n\n    public init(story: Story) {\n        self.story = story\n    }\n}\n\n/// The live story failed to post with an error to be handled\npublic struct StartLiveStoryResultFail: Codable, Equatable, Hashable {\n\n    /// Type of the error; other error types may be returned as regular errors\n    public let errorType: CanPostStoryResult\n\n\n    public init(errorType: CanPostStoryResult) {\n        self.errorType = errorType\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StartScheduledGroupCall.swift",
    "content": "//\n//  StartScheduledGroupCall.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.47-971684a3\n//  https://github.com/tdlib/td/tree/971684a3\n//\n\nimport Foundation\n\n\n/// Starts a scheduled group call\npublic struct StartScheduledGroupCall: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n\n    public init(groupCallId: Int?) {\n        self.groupCallId = groupCallId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StartScheduledVideoChat.swift",
    "content": "//\n//  StartScheduledVideoChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Starts a scheduled video chat\npublic struct StartScheduledVideoChat: Codable, Equatable, Hashable {\n\n    /// Group call identifier of the video chat\n    public let groupCallId: Int?\n\n\n    public init(groupCallId: Int?) {\n        self.groupCallId = groupCallId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StatisticalGraph.swift",
    "content": "//\n//  StatisticalGraph.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a statistical graph\npublic indirect enum StatisticalGraph: Codable, Equatable, Hashable {\n\n    /// A graph data\n    case statisticalGraphData(StatisticalGraphData)\n\n    /// The graph data to be asynchronously loaded through getStatisticalGraph\n    case statisticalGraphAsync(StatisticalGraphAsync)\n\n    /// An error message to be shown to the user instead of the graph\n    case statisticalGraphError(StatisticalGraphError)\n\n\n    private enum Kind: String, Codable {\n        case statisticalGraphData\n        case statisticalGraphAsync\n        case statisticalGraphError\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .statisticalGraphData:\n            let value = try StatisticalGraphData(from: decoder)\n            self = .statisticalGraphData(value)\n        case .statisticalGraphAsync:\n            let value = try StatisticalGraphAsync(from: decoder)\n            self = .statisticalGraphAsync(value)\n        case .statisticalGraphError:\n            let value = try StatisticalGraphError(from: decoder)\n            self = .statisticalGraphError(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .statisticalGraphData(let value):\n            try container.encode(Kind.statisticalGraphData, forKey: .type)\n            try value.encode(to: encoder)\n        case .statisticalGraphAsync(let value):\n            try container.encode(Kind.statisticalGraphAsync, forKey: .type)\n            try value.encode(to: encoder)\n        case .statisticalGraphError(let value):\n            try container.encode(Kind.statisticalGraphError, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A graph data\npublic struct StatisticalGraphData: Codable, Equatable, Hashable {\n\n    /// Graph data in JSON format\n    public let jsonData: String\n\n    /// If non-empty, a token which can be used to receive a zoomed in graph\n    public let zoomToken: String\n\n\n    public init(\n        jsonData: String,\n        zoomToken: String\n    ) {\n        self.jsonData = jsonData\n        self.zoomToken = zoomToken\n    }\n}\n\n/// The graph data to be asynchronously loaded through getStatisticalGraph\npublic struct StatisticalGraphAsync: Codable, Equatable, Hashable {\n\n    /// The token to use for data loading\n    public let token: String\n\n\n    public init(token: String) {\n        self.token = token\n    }\n}\n\n/// An error message to be shown to the user instead of the graph\npublic struct StatisticalGraphError: Codable, Equatable, Hashable {\n\n    /// The error message\n    public let errorMessage: String\n\n\n    public init(errorMessage: String) {\n        self.errorMessage = errorMessage\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StatisticalValue.swift",
    "content": "//\n//  StatisticalValue.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A value with information about its recent changes\npublic struct StatisticalValue: Codable, Equatable, Hashable {\n\n    /// The growth rate of the value, as a percentage\n    public let growthRatePercentage: Double\n\n    /// The value for the previous day\n    public let previousValue: Double\n\n    /// The current value\n    public let value: Double\n\n\n    public init(\n        growthRatePercentage: Double,\n        previousValue: Double,\n        value: Double\n    ) {\n        self.growthRatePercentage = growthRatePercentage\n        self.previousValue = previousValue\n        self.value = value\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Sticker.swift",
    "content": "//\n//  Sticker.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a sticker\npublic struct Sticker: Codable, Equatable, Hashable, Identifiable {\n\n    /// Emoji corresponding to the sticker; may be empty if unknown\n    public let emoji: String\n\n    /// Sticker format\n    public let format: StickerFormat\n\n    /// Sticker's full type\n    public let fullType: StickerFullType\n\n    /// Sticker height; as defined by the sender\n    public let height: Int\n\n    /// Unique sticker identifier within the set; 0 if none\n    public let id: TdInt64\n\n    /// Identifier of the sticker set to which the sticker belongs; 0 if none\n    public let setId: TdInt64\n\n    /// File containing the sticker\n    public let sticker: File\n\n    /// Sticker thumbnail in WEBP or JPEG format; may be null\n    public let thumbnail: Thumbnail?\n\n    /// Sticker width; as defined by the sender\n    public let width: Int\n\n\n    public init(\n        emoji: String,\n        format: StickerFormat,\n        fullType: StickerFullType,\n        height: Int,\n        id: TdInt64,\n        setId: TdInt64,\n        sticker: File,\n        thumbnail: Thumbnail?,\n        width: Int\n    ) {\n        self.emoji = emoji\n        self.format = format\n        self.fullType = fullType\n        self.height = height\n        self.id = id\n        self.setId = setId\n        self.sticker = sticker\n        self.thumbnail = thumbnail\n        self.width = width\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StickerFormat.swift",
    "content": "//\n//  StickerFormat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes format of a sticker\npublic indirect enum StickerFormat: Codable, Equatable, Hashable {\n\n    /// The sticker is an image in WEBP format\n    case stickerFormatWebp\n\n    /// The sticker is an animation in TGS format\n    case stickerFormatTgs\n\n    /// The sticker is a video in WEBM format\n    case stickerFormatWebm\n\n\n    private enum Kind: String, Codable {\n        case stickerFormatWebp\n        case stickerFormatTgs\n        case stickerFormatWebm\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .stickerFormatWebp:\n            self = .stickerFormatWebp\n        case .stickerFormatTgs:\n            self = .stickerFormatTgs\n        case .stickerFormatWebm:\n            self = .stickerFormatWebm\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .stickerFormatWebp:\n            try container.encode(Kind.stickerFormatWebp, forKey: .type)\n        case .stickerFormatTgs:\n            try container.encode(Kind.stickerFormatTgs, forKey: .type)\n        case .stickerFormatWebm:\n            try container.encode(Kind.stickerFormatWebm, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StickerFullType.swift",
    "content": "//\n//  StickerFullType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains full information about sticker type\npublic indirect enum StickerFullType: Codable, Equatable, Hashable {\n\n    /// The sticker is a regular sticker\n    case stickerFullTypeRegular(StickerFullTypeRegular)\n\n    /// The sticker is a mask in WEBP format to be placed on photos or videos\n    case stickerFullTypeMask(StickerFullTypeMask)\n\n    /// The sticker is a custom emoji to be used inside message text and caption. Currently, only Telegram Premium users can use custom emoji\n    case stickerFullTypeCustomEmoji(StickerFullTypeCustomEmoji)\n\n\n    private enum Kind: String, Codable {\n        case stickerFullTypeRegular\n        case stickerFullTypeMask\n        case stickerFullTypeCustomEmoji\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .stickerFullTypeRegular:\n            let value = try StickerFullTypeRegular(from: decoder)\n            self = .stickerFullTypeRegular(value)\n        case .stickerFullTypeMask:\n            let value = try StickerFullTypeMask(from: decoder)\n            self = .stickerFullTypeMask(value)\n        case .stickerFullTypeCustomEmoji:\n            let value = try StickerFullTypeCustomEmoji(from: decoder)\n            self = .stickerFullTypeCustomEmoji(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .stickerFullTypeRegular(let value):\n            try container.encode(Kind.stickerFullTypeRegular, forKey: .type)\n            try value.encode(to: encoder)\n        case .stickerFullTypeMask(let value):\n            try container.encode(Kind.stickerFullTypeMask, forKey: .type)\n            try value.encode(to: encoder)\n        case .stickerFullTypeCustomEmoji(let value):\n            try container.encode(Kind.stickerFullTypeCustomEmoji, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The sticker is a regular sticker\npublic struct StickerFullTypeRegular: Codable, Equatable, Hashable {\n\n    /// Premium animation of the sticker; may be null. If present, only Telegram Premium users can use the sticker\n    public let premiumAnimation: File?\n\n\n    public init(premiumAnimation: File?) {\n        self.premiumAnimation = premiumAnimation\n    }\n}\n\n/// The sticker is a mask in WEBP format to be placed on photos or videos\npublic struct StickerFullTypeMask: Codable, Equatable, Hashable {\n\n    /// Position where the mask is placed; may be null\n    public let maskPosition: MaskPosition?\n\n\n    public init(maskPosition: MaskPosition?) {\n        self.maskPosition = maskPosition\n    }\n}\n\n/// The sticker is a custom emoji to be used inside message text and caption. Currently, only Telegram Premium users can use custom emoji\npublic struct StickerFullTypeCustomEmoji: Codable, Equatable, Hashable {\n\n    /// Identifier of the custom emoji\n    public let customEmojiId: TdInt64\n\n    /// True, if the sticker must be repainted to a text color in messages, the color of the Telegram Premium badge in emoji status, white color on chat photos, or another appropriate color in other places\n    public let needsRepainting: Bool\n\n\n    public init(\n        customEmojiId: TdInt64,\n        needsRepainting: Bool\n    ) {\n        self.customEmojiId = customEmojiId\n        self.needsRepainting = needsRepainting\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StickerSet.swift",
    "content": "//\n//  StickerSet.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a sticker set\npublic struct StickerSet: Codable, Equatable, Hashable, Identifiable {\n\n    /// A list of emojis corresponding to the stickers in the same order. The list is only for informational purposes, because a sticker is always sent with a fixed emoji from the corresponding Sticker object\n    public let emojis: [Emojis]\n\n    /// Identifier of the sticker set\n    public let id: TdInt64\n\n    /// True, if stickers in the sticker set are custom emoji that can be used as chat emoji status; for custom emoji sticker sets only\n    public let isAllowedAsChatEmojiStatus: Bool\n\n    /// True, if the sticker set has been archived. A sticker set can't be installed and archived simultaneously\n    public let isArchived: Bool\n\n    /// True, if the sticker set has been installed by the current user\n    public let isInstalled: Bool\n\n    /// True, if the sticker set is official\n    public let isOfficial: Bool\n\n    /// True, if the sticker set is owned by the current user\n    public let isOwned: Bool\n\n    /// True for already viewed trending sticker sets\n    public let isViewed: Bool\n\n    /// Name of the sticker set\n    public let name: String\n\n    /// True, if stickers in the sticker set are custom emoji that must be repainted; for custom emoji sticker sets only\n    public let needsRepainting: Bool\n\n    /// Type of the stickers in the set\n    public let stickerType: StickerType\n\n    /// List of stickers in this set\n    public let stickers: [Sticker]\n\n    /// Sticker set thumbnail in WEBP, TGS, or WEBM format with width and height 100; may be null. The file can be downloaded only before the thumbnail is changed\n    public let thumbnail: Thumbnail?\n\n    /// Sticker set thumbnail's outline; may be null if unknown\n    public let thumbnailOutline: Outline?\n\n    /// Title of the sticker set\n    public let title: String\n\n\n    public init(\n        emojis: [Emojis],\n        id: TdInt64,\n        isAllowedAsChatEmojiStatus: Bool,\n        isArchived: Bool,\n        isInstalled: Bool,\n        isOfficial: Bool,\n        isOwned: Bool,\n        isViewed: Bool,\n        name: String,\n        needsRepainting: Bool,\n        stickerType: StickerType,\n        stickers: [Sticker],\n        thumbnail: Thumbnail?,\n        thumbnailOutline: Outline?,\n        title: String\n    ) {\n        self.emojis = emojis\n        self.id = id\n        self.isAllowedAsChatEmojiStatus = isAllowedAsChatEmojiStatus\n        self.isArchived = isArchived\n        self.isInstalled = isInstalled\n        self.isOfficial = isOfficial\n        self.isOwned = isOwned\n        self.isViewed = isViewed\n        self.name = name\n        self.needsRepainting = needsRepainting\n        self.stickerType = stickerType\n        self.stickers = stickers\n        self.thumbnail = thumbnail\n        self.thumbnailOutline = thumbnailOutline\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StickerSetInfo.swift",
    "content": "//\n//  StickerSetInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents short information about a sticker set\npublic struct StickerSetInfo: Codable, Equatable, Hashable, Identifiable {\n\n    /// Up to the first 5 stickers from the set, depending on the context. If the application needs more stickers the full sticker set needs to be requested\n    public let covers: [Sticker]\n\n    /// Identifier of the sticker set\n    public let id: TdInt64\n\n    /// True, if stickers in the sticker set are custom emoji that can be used as chat emoji status; for custom emoji sticker sets only\n    public let isAllowedAsChatEmojiStatus: Bool\n\n    /// True, if the sticker set has been archived. A sticker set can't be installed and archived simultaneously\n    public let isArchived: Bool\n\n    /// True, if the sticker set has been installed by the current user\n    public let isInstalled: Bool\n\n    /// True, if the sticker set is official\n    public let isOfficial: Bool\n\n    /// True, if the sticker set is owned by the current user\n    public let isOwned: Bool\n\n    /// True for already viewed trending sticker sets\n    public let isViewed: Bool\n\n    /// Name of the sticker set\n    public let name: String\n\n    /// True, if stickers in the sticker set are custom emoji that must be repainted; for custom emoji sticker sets only\n    public let needsRepainting: Bool\n\n    /// Total number of stickers in the set\n    public let size: Int\n\n    /// Type of the stickers in the set\n    public let stickerType: StickerType\n\n    /// Sticker set thumbnail in WEBP, TGS, or WEBM format with width and height 100; may be null. The file can be downloaded only before the thumbnail is changed\n    public let thumbnail: Thumbnail?\n\n    /// Sticker set thumbnail's outline; may be null if unknown\n    public let thumbnailOutline: Outline?\n\n    /// Title of the sticker set\n    public let title: String\n\n\n    public init(\n        covers: [Sticker],\n        id: TdInt64,\n        isAllowedAsChatEmojiStatus: Bool,\n        isArchived: Bool,\n        isInstalled: Bool,\n        isOfficial: Bool,\n        isOwned: Bool,\n        isViewed: Bool,\n        name: String,\n        needsRepainting: Bool,\n        size: Int,\n        stickerType: StickerType,\n        thumbnail: Thumbnail?,\n        thumbnailOutline: Outline?,\n        title: String\n    ) {\n        self.covers = covers\n        self.id = id\n        self.isAllowedAsChatEmojiStatus = isAllowedAsChatEmojiStatus\n        self.isArchived = isArchived\n        self.isInstalled = isInstalled\n        self.isOfficial = isOfficial\n        self.isOwned = isOwned\n        self.isViewed = isViewed\n        self.name = name\n        self.needsRepainting = needsRepainting\n        self.size = size\n        self.stickerType = stickerType\n        self.thumbnail = thumbnail\n        self.thumbnailOutline = thumbnailOutline\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StickerSets.swift",
    "content": "//\n//  StickerSets.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of sticker sets\npublic struct StickerSets: Codable, Equatable, Hashable {\n\n    /// List of sticker sets\n    public let sets: [StickerSetInfo]\n\n    /// Approximate total number of sticker sets found\n    public let totalCount: Int\n\n\n    public init(\n        sets: [StickerSetInfo],\n        totalCount: Int\n    ) {\n        self.sets = sets\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StickerType.swift",
    "content": "//\n//  StickerType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of sticker\npublic indirect enum StickerType: Codable, Equatable, Hashable {\n\n    /// The sticker is a regular sticker\n    case stickerTypeRegular\n\n    /// The sticker is a mask in WEBP format to be placed on photos or videos\n    case stickerTypeMask\n\n    /// The sticker is a custom emoji to be used inside message text and caption\n    case stickerTypeCustomEmoji\n\n\n    private enum Kind: String, Codable {\n        case stickerTypeRegular\n        case stickerTypeMask\n        case stickerTypeCustomEmoji\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .stickerTypeRegular:\n            self = .stickerTypeRegular\n        case .stickerTypeMask:\n            self = .stickerTypeMask\n        case .stickerTypeCustomEmoji:\n            self = .stickerTypeCustomEmoji\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .stickerTypeRegular:\n            try container.encode(Kind.stickerTypeRegular, forKey: .type)\n        case .stickerTypeMask:\n            try container.encode(Kind.stickerTypeMask, forKey: .type)\n        case .stickerTypeCustomEmoji:\n            try container.encode(Kind.stickerTypeCustomEmoji, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Stickers.swift",
    "content": "//\n//  Stickers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of stickers\npublic struct Stickers: Codable, Equatable, Hashable {\n\n    /// List of stickers\n    public let stickers: [Sticker]\n\n\n    public init(stickers: [Sticker]) {\n        self.stickers = stickers\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StopBusinessPoll.swift",
    "content": "//\n//  StopBusinessPoll.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Stops a poll sent on behalf of a business account; for bots only\npublic struct StopBusinessPoll: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection on behalf of which the message with the poll was sent\n    public let businessConnectionId: String?\n\n    /// The chat the message belongs to\n    public let chatId: Int64?\n\n    /// Identifier of the message containing the poll\n    public let messageId: Int64?\n\n    /// The new message reply markup; pass null if none\n    public let replyMarkup: ReplyMarkup?\n\n\n    public init(\n        businessConnectionId: String?,\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.chatId = chatId\n        self.messageId = messageId\n        self.replyMarkup = replyMarkup\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StopPoll.swift",
    "content": "//\n//  StopPoll.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Stops a poll\npublic struct StopPoll: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the poll belongs\n    public let chatId: Int64?\n\n    /// Identifier of the message containing the poll. Use messageProperties.can_be_edited to check whether the poll can be stopped\n    public let messageId: Int64?\n\n    /// The new message reply markup; pass null if none; for bots only\n    public let replyMarkup: ReplyMarkup?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        replyMarkup: ReplyMarkup?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.replyMarkup = replyMarkup\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StorageStatistics.swift",
    "content": "//\n//  StorageStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains the exact storage usage statistics split by chats and file type\npublic struct StorageStatistics: Codable, Equatable, Hashable {\n\n    /// Statistics split by chats\n    public let byChat: [StorageStatisticsByChat]\n\n    /// Total number of files\n    public let count: Int\n\n    /// Total size of files, in bytes\n    public let size: Int64\n\n\n    public init(\n        byChat: [StorageStatisticsByChat],\n        count: Int,\n        size: Int64\n    ) {\n        self.byChat = byChat\n        self.count = count\n        self.size = size\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StorageStatisticsByChat.swift",
    "content": "//\n//  StorageStatisticsByChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains the storage usage statistics for a specific chat\npublic struct StorageStatisticsByChat: Codable, Equatable, Hashable {\n\n    /// Statistics split by file types\n    public let byFileType: [StorageStatisticsByFileType]\n\n    /// Chat identifier; 0 if none\n    public let chatId: Int64\n\n    /// Total number of files in the chat\n    public let count: Int\n\n    /// Total size of the files in the chat, in bytes\n    public let size: Int64\n\n\n    public init(\n        byFileType: [StorageStatisticsByFileType],\n        chatId: Int64,\n        count: Int,\n        size: Int64\n    ) {\n        self.byFileType = byFileType\n        self.chatId = chatId\n        self.count = count\n        self.size = size\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StorageStatisticsByFileType.swift",
    "content": "//\n//  StorageStatisticsByFileType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains the storage usage statistics for a specific file type\npublic struct StorageStatisticsByFileType: Codable, Equatable, Hashable {\n\n    /// Total number of files\n    public let count: Int\n\n    /// File type\n    public let fileType: FileType\n\n    /// Total size of the files, in bytes\n    public let size: Int64\n\n\n    public init(\n        count: Int,\n        fileType: FileType,\n        size: Int64\n    ) {\n        self.count = count\n        self.fileType = fileType\n        self.size = size\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StorageStatisticsFast.swift",
    "content": "//\n//  StorageStatisticsFast.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains approximate storage usage statistics, excluding files of unknown file type\npublic struct StorageStatisticsFast: Codable, Equatable, Hashable {\n\n    /// Size of the database\n    public let databaseSize: Int64\n\n    /// Approximate number of files\n    public let fileCount: Int\n\n    /// Approximate total size of files, in bytes\n    public let filesSize: Int64\n\n    /// Size of the language pack database\n    public let languagePackDatabaseSize: Int64\n\n    /// Size of the TDLib internal log\n    public let logSize: Int64\n\n\n    public init(\n        databaseSize: Int64,\n        fileCount: Int,\n        filesSize: Int64,\n        languagePackDatabaseSize: Int64,\n        logSize: Int64\n    ) {\n        self.databaseSize = databaseSize\n        self.fileCount = fileCount\n        self.filesSize = filesSize\n        self.languagePackDatabaseSize = languagePackDatabaseSize\n        self.logSize = logSize\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StorePaymentPurpose.swift",
    "content": "//\n//  StorePaymentPurpose.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a purpose of an in-store payment\npublic indirect enum StorePaymentPurpose: Codable, Equatable, Hashable {\n\n    /// The user subscribing to Telegram Premium\n    case storePaymentPurposePremiumSubscription(StorePaymentPurposePremiumSubscription)\n\n    /// The user gifting Telegram Premium to another user\n    case storePaymentPurposePremiumGift(StorePaymentPurposePremiumGift)\n\n    /// The user boosting a chat by creating Telegram Premium gift codes for other users\n    case storePaymentPurposePremiumGiftCodes(StorePaymentPurposePremiumGiftCodes)\n\n    /// The user creating a Telegram Premium giveaway\n    case storePaymentPurposePremiumGiveaway(StorePaymentPurposePremiumGiveaway)\n\n    /// The user creating a Telegram Star giveaway\n    case storePaymentPurposeStarGiveaway(StorePaymentPurposeStarGiveaway)\n\n    /// The user buying Telegram Stars\n    case storePaymentPurposeStars(StorePaymentPurposeStars)\n\n    /// The user buying Telegram Stars for other users\n    case storePaymentPurposeGiftedStars(StorePaymentPurposeGiftedStars)\n\n\n    private enum Kind: String, Codable {\n        case storePaymentPurposePremiumSubscription\n        case storePaymentPurposePremiumGift\n        case storePaymentPurposePremiumGiftCodes\n        case storePaymentPurposePremiumGiveaway\n        case storePaymentPurposeStarGiveaway\n        case storePaymentPurposeStars\n        case storePaymentPurposeGiftedStars\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .storePaymentPurposePremiumSubscription:\n            let value = try StorePaymentPurposePremiumSubscription(from: decoder)\n            self = .storePaymentPurposePremiumSubscription(value)\n        case .storePaymentPurposePremiumGift:\n            let value = try StorePaymentPurposePremiumGift(from: decoder)\n            self = .storePaymentPurposePremiumGift(value)\n        case .storePaymentPurposePremiumGiftCodes:\n            let value = try StorePaymentPurposePremiumGiftCodes(from: decoder)\n            self = .storePaymentPurposePremiumGiftCodes(value)\n        case .storePaymentPurposePremiumGiveaway:\n            let value = try StorePaymentPurposePremiumGiveaway(from: decoder)\n            self = .storePaymentPurposePremiumGiveaway(value)\n        case .storePaymentPurposeStarGiveaway:\n            let value = try StorePaymentPurposeStarGiveaway(from: decoder)\n            self = .storePaymentPurposeStarGiveaway(value)\n        case .storePaymentPurposeStars:\n            let value = try StorePaymentPurposeStars(from: decoder)\n            self = .storePaymentPurposeStars(value)\n        case .storePaymentPurposeGiftedStars:\n            let value = try StorePaymentPurposeGiftedStars(from: decoder)\n            self = .storePaymentPurposeGiftedStars(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .storePaymentPurposePremiumSubscription(let value):\n            try container.encode(Kind.storePaymentPurposePremiumSubscription, forKey: .type)\n            try value.encode(to: encoder)\n        case .storePaymentPurposePremiumGift(let value):\n            try container.encode(Kind.storePaymentPurposePremiumGift, forKey: .type)\n            try value.encode(to: encoder)\n        case .storePaymentPurposePremiumGiftCodes(let value):\n            try container.encode(Kind.storePaymentPurposePremiumGiftCodes, forKey: .type)\n            try value.encode(to: encoder)\n        case .storePaymentPurposePremiumGiveaway(let value):\n            try container.encode(Kind.storePaymentPurposePremiumGiveaway, forKey: .type)\n            try value.encode(to: encoder)\n        case .storePaymentPurposeStarGiveaway(let value):\n            try container.encode(Kind.storePaymentPurposeStarGiveaway, forKey: .type)\n            try value.encode(to: encoder)\n        case .storePaymentPurposeStars(let value):\n            try container.encode(Kind.storePaymentPurposeStars, forKey: .type)\n            try value.encode(to: encoder)\n        case .storePaymentPurposeGiftedStars(let value):\n            try container.encode(Kind.storePaymentPurposeGiftedStars, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The user subscribing to Telegram Premium\npublic struct StorePaymentPurposePremiumSubscription: Codable, Equatable, Hashable {\n\n    /// Pass true if this is a restore of a Telegram Premium purchase; only for App Store\n    public let isRestore: Bool\n\n    /// Pass true if this is an upgrade from a monthly subscription to early subscription; only for App Store\n    public let isUpgrade: Bool\n\n\n    public init(\n        isRestore: Bool,\n        isUpgrade: Bool\n    ) {\n        self.isRestore = isRestore\n        self.isUpgrade = isUpgrade\n    }\n}\n\n/// The user gifting Telegram Premium to another user\npublic struct StorePaymentPurposePremiumGift: Codable, Equatable, Hashable {\n\n    /// Paid amount, in the smallest units of the currency\n    public let amount: Int64\n\n    /// ISO 4217 currency code of the payment currency\n    public let currency: String\n\n    /// Text to show along with the gift codes; 0-getOption(\"gift_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed\n    public let text: FormattedText\n\n    /// Identifiers of the user which will receive Telegram Premium\n    public let userId: Int64\n\n\n    public init(\n        amount: Int64,\n        currency: String,\n        text: FormattedText,\n        userId: Int64\n    ) {\n        self.amount = amount\n        self.currency = currency\n        self.text = text\n        self.userId = userId\n    }\n}\n\n/// The user boosting a chat by creating Telegram Premium gift codes for other users\npublic struct StorePaymentPurposePremiumGiftCodes: Codable, Equatable, Hashable {\n\n    /// Paid amount, in the smallest units of the currency\n    public let amount: Int64\n\n    /// Identifier of the supergroup or channel chat, which will be automatically boosted by the users for duration of the Premium subscription and which is administered by the user\n    public let boostedChatId: Int64\n\n    /// ISO 4217 currency code of the payment currency\n    public let currency: String\n\n    /// Text to show along with the gift codes; 0-getOption(\"gift_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed\n    public let text: FormattedText\n\n    /// Identifiers of the users which can activate the gift codes\n    public let userIds: [Int64]\n\n\n    public init(\n        amount: Int64,\n        boostedChatId: Int64,\n        currency: String,\n        text: FormattedText,\n        userIds: [Int64]\n    ) {\n        self.amount = amount\n        self.boostedChatId = boostedChatId\n        self.currency = currency\n        self.text = text\n        self.userIds = userIds\n    }\n}\n\n/// The user creating a Telegram Premium giveaway\npublic struct StorePaymentPurposePremiumGiveaway: Codable, Equatable, Hashable {\n\n    /// Paid amount, in the smallest units of the currency\n    public let amount: Int64\n\n    /// ISO 4217 currency code of the payment currency\n    public let currency: String\n\n    /// Giveaway parameters\n    public let parameters: GiveawayParameters\n\n\n    public init(\n        amount: Int64,\n        currency: String,\n        parameters: GiveawayParameters\n    ) {\n        self.amount = amount\n        self.currency = currency\n        self.parameters = parameters\n    }\n}\n\n/// The user creating a Telegram Star giveaway\npublic struct StorePaymentPurposeStarGiveaway: Codable, Equatable, Hashable {\n\n    /// Paid amount, in the smallest units of the currency\n    public let amount: Int64\n\n    /// ISO 4217 currency code of the payment currency\n    public let currency: String\n\n    /// Giveaway parameters\n    public let parameters: GiveawayParameters\n\n    /// The number of Telegram Stars to be distributed through the giveaway\n    public let starCount: Int64\n\n    /// The number of users to receive Telegram Stars\n    public let winnerCount: Int\n\n\n    public init(\n        amount: Int64,\n        currency: String,\n        parameters: GiveawayParameters,\n        starCount: Int64,\n        winnerCount: Int\n    ) {\n        self.amount = amount\n        self.currency = currency\n        self.parameters = parameters\n        self.starCount = starCount\n        self.winnerCount = winnerCount\n    }\n}\n\n/// The user buying Telegram Stars\npublic struct StorePaymentPurposeStars: Codable, Equatable, Hashable {\n\n    /// Paid amount, in the smallest units of the currency\n    public let amount: Int64\n\n    /// Identifier of the chat that is supposed to receive the Telegram Stars; pass 0 if none\n    public let chatId: Int64\n\n    /// ISO 4217 currency code of the payment currency\n    public let currency: String\n\n    /// Number of bought Telegram Stars\n    public let starCount: Int64\n\n\n    public init(\n        amount: Int64,\n        chatId: Int64,\n        currency: String,\n        starCount: Int64\n    ) {\n        self.amount = amount\n        self.chatId = chatId\n        self.currency = currency\n        self.starCount = starCount\n    }\n}\n\n/// The user buying Telegram Stars for other users\npublic struct StorePaymentPurposeGiftedStars: Codable, Equatable, Hashable {\n\n    /// Paid amount, in the smallest units of the currency\n    public let amount: Int64\n\n    /// ISO 4217 currency code of the payment currency\n    public let currency: String\n\n    /// Number of bought Telegram Stars\n    public let starCount: Int64\n\n    /// Identifier of the user to which Telegram Stars are gifted\n    public let userId: Int64\n\n\n    public init(\n        amount: Int64,\n        currency: String,\n        starCount: Int64,\n        userId: Int64\n    ) {\n        self.amount = amount\n        self.currency = currency\n        self.starCount = starCount\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StoreTransaction.swift",
    "content": "//\n//  StoreTransaction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an in-store transaction\npublic indirect enum StoreTransaction: Codable, Equatable, Hashable {\n\n    /// A purchase through App Store\n    case storeTransactionAppStore(StoreTransactionAppStore)\n\n    /// A purchase through Google Play\n    case storeTransactionGooglePlay(StoreTransactionGooglePlay)\n\n\n    private enum Kind: String, Codable {\n        case storeTransactionAppStore\n        case storeTransactionGooglePlay\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .storeTransactionAppStore:\n            let value = try StoreTransactionAppStore(from: decoder)\n            self = .storeTransactionAppStore(value)\n        case .storeTransactionGooglePlay:\n            let value = try StoreTransactionGooglePlay(from: decoder)\n            self = .storeTransactionGooglePlay(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .storeTransactionAppStore(let value):\n            try container.encode(Kind.storeTransactionAppStore, forKey: .type)\n            try value.encode(to: encoder)\n        case .storeTransactionGooglePlay(let value):\n            try container.encode(Kind.storeTransactionGooglePlay, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A purchase through App Store\npublic struct StoreTransactionAppStore: Codable, Equatable, Hashable {\n\n    /// App Store receipt\n    public let receipt: Data\n\n\n    public init(receipt: Data) {\n        self.receipt = receipt\n    }\n}\n\n/// A purchase through Google Play\npublic struct StoreTransactionGooglePlay: Codable, Equatable, Hashable {\n\n    /// Application package name\n    public let packageName: String\n\n    /// Google Play purchase token\n    public let purchaseToken: String\n\n    /// Identifier of the purchased store product\n    public let storeProductId: String\n\n\n    public init(\n        packageName: String,\n        purchaseToken: String,\n        storeProductId: String\n    ) {\n        self.packageName = packageName\n        self.purchaseToken = purchaseToken\n        self.storeProductId = storeProductId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Stories.swift",
    "content": "//\n//  Stories.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of stories\npublic struct Stories: Codable, Equatable, Hashable {\n\n    /// Identifiers of the pinned stories; returned only in getChatPostedToChatPageStories with from_story_id == 0\n    public let pinnedStoryIds: [Int]\n\n    /// The list of stories\n    public let stories: [Story]\n\n    /// Approximate total number of stories found\n    public let totalCount: Int\n\n\n    public init(\n        pinnedStoryIds: [Int],\n        stories: [Story],\n        totalCount: Int\n    ) {\n        self.pinnedStoryIds = pinnedStoryIds\n        self.stories = stories\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Story.swift",
    "content": "//\n//  Story.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a story\npublic struct Story: Codable, Equatable, Hashable, Identifiable {\n\n    /// Identifiers of story albums to which the story is added; only for manageable stories\n    public let albumIds: [Int]\n\n    /// Clickable areas to be shown on the story content\n    public let areas: [StoryArea]\n\n    /// True, if the story can be added to an album using createStoryAlbum and addStoryAlbumStories\n    public let canBeAddedToAlbum: Bool\n\n    /// True, if the story can be deleted\n    public let canBeDeleted: Bool\n\n    /// True, if the story can be edited\n    public let canBeEdited: Bool\n\n    /// True, if the story can be forwarded as a message or reposted as a story. Otherwise, screenshotting and saving of the story content must be also forbidden\n    public let canBeForwarded: Bool\n\n    /// True, if the story can be replied in the chat with the user who posted the story\n    public let canBeReplied: Bool\n\n    /// True, if interactions with the story can be received through getStoryInteractions\n    public let canGetInteractions: Bool\n\n    /// True, if the story statistics are available through getStoryStatistics\n    public let canGetStatistics: Bool\n\n    /// True, if the story privacy settings can be changed\n    public let canSetPrivacySettings: Bool\n\n    /// True, if the story's is_posted_to_chat_page value can be changed\n    public let canToggleIsPostedToChatPage: Bool\n\n    /// Caption of the story\n    public let caption: FormattedText\n\n    /// Type of the chosen reaction; may be null if none\n    public let chosenReactionType: ReactionType?\n\n    /// Content of the story\n    public let content: StoryContent\n\n    /// Point in time (Unix timestamp) when the story was published\n    public let date: Int\n\n    /// True, if users viewed the story can't be received, because the story has expired more than getOption(\"story_viewers_expiration_delay\") seconds ago\n    public let hasExpiredViewers: Bool\n\n    /// Unique story identifier among stories posted by the given chat\n    public let id: Int\n\n    /// Information about interactions with the story; may be null if the story isn't owned or there were no interactions\n    public let interactionInfo: StoryInteractionInfo?\n\n    /// True, if the story is being edited by the current user\n    public let isBeingEdited: Bool\n\n    /// True, if the story is being posted by the current user\n    public let isBeingPosted: Bool\n\n    /// True, if the story was edited\n    public let isEdited: Bool\n\n    /// True, if the story is saved in the profile of the chat that posted it and will be available there after expiration\n    public let isPostedToChatPage: Bool\n\n    /// True, if the story is visible only for the current user\n    public let isVisibleOnlyForSelf: Bool\n\n    /// Identifier of the chat that posted the story\n    public let posterChatId: Int64\n\n    /// Identifier of the user or chat that posted the story; may be null if the story is posted on behalf of the poster_chat_id\n    public let posterId: MessageSender?\n\n    /// Privacy rules affecting story visibility; may be approximate for non-owned stories\n    public let privacySettings: StoryPrivacySettings\n\n    /// Information about the original story; may be null if the story wasn't reposted\n    public let repostInfo: StoryRepostInfo?\n\n\n    public init(\n        albumIds: [Int],\n        areas: [StoryArea],\n        canBeAddedToAlbum: Bool,\n        canBeDeleted: Bool,\n        canBeEdited: Bool,\n        canBeForwarded: Bool,\n        canBeReplied: Bool,\n        canGetInteractions: Bool,\n        canGetStatistics: Bool,\n        canSetPrivacySettings: Bool,\n        canToggleIsPostedToChatPage: Bool,\n        caption: FormattedText,\n        chosenReactionType: ReactionType?,\n        content: StoryContent,\n        date: Int,\n        hasExpiredViewers: Bool,\n        id: Int,\n        interactionInfo: StoryInteractionInfo?,\n        isBeingEdited: Bool,\n        isBeingPosted: Bool,\n        isEdited: Bool,\n        isPostedToChatPage: Bool,\n        isVisibleOnlyForSelf: Bool,\n        posterChatId: Int64,\n        posterId: MessageSender?,\n        privacySettings: StoryPrivacySettings,\n        repostInfo: StoryRepostInfo?\n    ) {\n        self.albumIds = albumIds\n        self.areas = areas\n        self.canBeAddedToAlbum = canBeAddedToAlbum\n        self.canBeDeleted = canBeDeleted\n        self.canBeEdited = canBeEdited\n        self.canBeForwarded = canBeForwarded\n        self.canBeReplied = canBeReplied\n        self.canGetInteractions = canGetInteractions\n        self.canGetStatistics = canGetStatistics\n        self.canSetPrivacySettings = canSetPrivacySettings\n        self.canToggleIsPostedToChatPage = canToggleIsPostedToChatPage\n        self.caption = caption\n        self.chosenReactionType = chosenReactionType\n        self.content = content\n        self.date = date\n        self.hasExpiredViewers = hasExpiredViewers\n        self.id = id\n        self.interactionInfo = interactionInfo\n        self.isBeingEdited = isBeingEdited\n        self.isBeingPosted = isBeingPosted\n        self.isEdited = isEdited\n        self.isPostedToChatPage = isPostedToChatPage\n        self.isVisibleOnlyForSelf = isVisibleOnlyForSelf\n        self.posterChatId = posterChatId\n        self.posterId = posterId\n        self.privacySettings = privacySettings\n        self.repostInfo = repostInfo\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StoryAlbum.swift",
    "content": "//\n//  StoryAlbum.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes album of stories\npublic struct StoryAlbum: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique identifier of the album\n    public let id: Int\n\n    /// Name of the album\n    public let name: String\n\n    /// Icon of the album; may be null if none\n    public let photoIcon: Photo?\n\n    /// Video icon of the album; may be null if none\n    public let videoIcon: Video?\n\n\n    public init(\n        id: Int,\n        name: String,\n        photoIcon: Photo?,\n        videoIcon: Video?\n    ) {\n        self.id = id\n        self.name = name\n        self.photoIcon = photoIcon\n        self.videoIcon = videoIcon\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StoryAlbums.swift",
    "content": "//\n//  StoryAlbums.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of story albums\npublic struct StoryAlbums: Codable, Equatable, Hashable {\n\n    /// List of story albums\n    public let albums: [StoryAlbum]\n\n\n    public init(albums: [StoryAlbum]) {\n        self.albums = albums\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StoryArea.swift",
    "content": "//\n//  StoryArea.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a clickable rectangle area on a story media\npublic struct StoryArea: Codable, Equatable, Hashable {\n\n    /// Position of the area\n    public let position: StoryAreaPosition\n\n    /// Type of the area\n    public let type: StoryAreaType\n\n\n    public init(\n        position: StoryAreaPosition,\n        type: StoryAreaType\n    ) {\n        self.position = position\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StoryAreaPosition.swift",
    "content": "//\n//  StoryAreaPosition.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes position of a clickable rectangle area on a story media\npublic struct StoryAreaPosition: Codable, Equatable, Hashable {\n\n    /// The radius of the rectangle corner rounding, as a percentage of the media width\n    public let cornerRadiusPercentage: Double\n\n    /// The height of the rectangle, as a percentage of the media height\n    public let heightPercentage: Double\n\n    /// Clockwise rotation angle of the rectangle, in degrees; 0-360\n    public let rotationAngle: Double\n\n    /// The width of the rectangle, as a percentage of the media width\n    public let widthPercentage: Double\n\n    /// The abscissa of the rectangle's center, as a percentage of the media width\n    public let xPercentage: Double\n\n    /// The ordinate of the rectangle's center, as a percentage of the media height\n    public let yPercentage: Double\n\n\n    public init(\n        cornerRadiusPercentage: Double,\n        heightPercentage: Double,\n        rotationAngle: Double,\n        widthPercentage: Double,\n        xPercentage: Double,\n        yPercentage: Double\n    ) {\n        self.cornerRadiusPercentage = cornerRadiusPercentage\n        self.heightPercentage = heightPercentage\n        self.rotationAngle = rotationAngle\n        self.widthPercentage = widthPercentage\n        self.xPercentage = xPercentage\n        self.yPercentage = yPercentage\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StoryAreaType.swift",
    "content": "//\n//  StoryAreaType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of clickable area on a story media\npublic indirect enum StoryAreaType: Codable, Equatable, Hashable {\n\n    /// An area pointing to a location\n    case storyAreaTypeLocation(StoryAreaTypeLocation)\n\n    /// An area pointing to a venue\n    case storyAreaTypeVenue(StoryAreaTypeVenue)\n\n    /// An area pointing to a suggested reaction. App needs to show a clickable reaction on the area and call setStoryReaction when the are is clicked\n    case storyAreaTypeSuggestedReaction(StoryAreaTypeSuggestedReaction)\n\n    /// An area pointing to a message\n    case storyAreaTypeMessage(StoryAreaTypeMessage)\n\n    /// An area pointing to a HTTP or tg:// link\n    case storyAreaTypeLink(StoryAreaTypeLink)\n\n    /// An area with information about weather\n    case storyAreaTypeWeather(StoryAreaTypeWeather)\n\n    /// An area with an upgraded gift\n    case storyAreaTypeUpgradedGift(StoryAreaTypeUpgradedGift)\n\n\n    private enum Kind: String, Codable {\n        case storyAreaTypeLocation\n        case storyAreaTypeVenue\n        case storyAreaTypeSuggestedReaction\n        case storyAreaTypeMessage\n        case storyAreaTypeLink\n        case storyAreaTypeWeather\n        case storyAreaTypeUpgradedGift\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .storyAreaTypeLocation:\n            let value = try StoryAreaTypeLocation(from: decoder)\n            self = .storyAreaTypeLocation(value)\n        case .storyAreaTypeVenue:\n            let value = try StoryAreaTypeVenue(from: decoder)\n            self = .storyAreaTypeVenue(value)\n        case .storyAreaTypeSuggestedReaction:\n            let value = try StoryAreaTypeSuggestedReaction(from: decoder)\n            self = .storyAreaTypeSuggestedReaction(value)\n        case .storyAreaTypeMessage:\n            let value = try StoryAreaTypeMessage(from: decoder)\n            self = .storyAreaTypeMessage(value)\n        case .storyAreaTypeLink:\n            let value = try StoryAreaTypeLink(from: decoder)\n            self = .storyAreaTypeLink(value)\n        case .storyAreaTypeWeather:\n            let value = try StoryAreaTypeWeather(from: decoder)\n            self = .storyAreaTypeWeather(value)\n        case .storyAreaTypeUpgradedGift:\n            let value = try StoryAreaTypeUpgradedGift(from: decoder)\n            self = .storyAreaTypeUpgradedGift(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .storyAreaTypeLocation(let value):\n            try container.encode(Kind.storyAreaTypeLocation, forKey: .type)\n            try value.encode(to: encoder)\n        case .storyAreaTypeVenue(let value):\n            try container.encode(Kind.storyAreaTypeVenue, forKey: .type)\n            try value.encode(to: encoder)\n        case .storyAreaTypeSuggestedReaction(let value):\n            try container.encode(Kind.storyAreaTypeSuggestedReaction, forKey: .type)\n            try value.encode(to: encoder)\n        case .storyAreaTypeMessage(let value):\n            try container.encode(Kind.storyAreaTypeMessage, forKey: .type)\n            try value.encode(to: encoder)\n        case .storyAreaTypeLink(let value):\n            try container.encode(Kind.storyAreaTypeLink, forKey: .type)\n            try value.encode(to: encoder)\n        case .storyAreaTypeWeather(let value):\n            try container.encode(Kind.storyAreaTypeWeather, forKey: .type)\n            try value.encode(to: encoder)\n        case .storyAreaTypeUpgradedGift(let value):\n            try container.encode(Kind.storyAreaTypeUpgradedGift, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// An area pointing to a location\npublic struct StoryAreaTypeLocation: Codable, Equatable, Hashable {\n\n    /// Address of the location; may be null if unknown\n    public let address: LocationAddress?\n\n    /// The location\n    public let location: Location\n\n\n    public init(\n        address: LocationAddress?,\n        location: Location\n    ) {\n        self.address = address\n        self.location = location\n    }\n}\n\n/// An area pointing to a venue\npublic struct StoryAreaTypeVenue: Codable, Equatable, Hashable {\n\n    /// Information about the venue\n    public let venue: Venue\n\n\n    public init(venue: Venue) {\n        self.venue = venue\n    }\n}\n\n/// An area pointing to a suggested reaction. App needs to show a clickable reaction on the area and call setStoryReaction when the are is clicked\npublic struct StoryAreaTypeSuggestedReaction: Codable, Equatable, Hashable {\n\n    /// True, if reaction has a dark background\n    public let isDark: Bool\n\n    /// True, if reaction corner is flipped\n    public let isFlipped: Bool\n\n    /// Type of the reaction\n    public let reactionType: ReactionType\n\n    /// Number of times the reaction was added\n    public let totalCount: Int\n\n\n    public init(\n        isDark: Bool,\n        isFlipped: Bool,\n        reactionType: ReactionType,\n        totalCount: Int\n    ) {\n        self.isDark = isDark\n        self.isFlipped = isFlipped\n        self.reactionType = reactionType\n        self.totalCount = totalCount\n    }\n}\n\n/// An area pointing to a message\npublic struct StoryAreaTypeMessage: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat with the message\n    public let chatId: Int64\n\n    /// Identifier of the message\n    public let messageId: Int64\n\n\n    public init(\n        chatId: Int64,\n        messageId: Int64\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n/// An area pointing to a HTTP or tg:// link\npublic struct StoryAreaTypeLink: Codable, Equatable, Hashable {\n\n    /// HTTP or tg:// URL to be opened when the area is clicked\n    public let url: String\n\n\n    public init(url: String) {\n        self.url = url\n    }\n}\n\n/// An area with information about weather\npublic struct StoryAreaTypeWeather: Codable, Equatable, Hashable {\n\n    /// A color of the area background in the ARGB format\n    public let backgroundColor: Int\n\n    /// Emoji representing the weather\n    public let emoji: String\n\n    /// Temperature, in degree Celsius\n    public let temperature: Double\n\n\n    public init(\n        backgroundColor: Int,\n        emoji: String,\n        temperature: Double\n    ) {\n        self.backgroundColor = backgroundColor\n        self.emoji = emoji\n        self.temperature = temperature\n    }\n}\n\n/// An area with an upgraded gift\npublic struct StoryAreaTypeUpgradedGift: Codable, Equatable, Hashable {\n\n    /// Unique name of the upgraded gift\n    public let giftName: String\n\n\n    public init(giftName: String) {\n        self.giftName = giftName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StoryContent.swift",
    "content": "//\n//  StoryContent.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains the content of a story\npublic indirect enum StoryContent: Codable, Equatable, Hashable {\n\n    /// A photo story\n    case storyContentPhoto(StoryContentPhoto)\n\n    /// A video story\n    case storyContentVideo(StoryContentVideo)\n\n    /// A live story\n    case storyContentLive(StoryContentLive)\n\n    /// A story content that is not supported in the current TDLib version\n    case storyContentUnsupported\n\n\n    private enum Kind: String, Codable {\n        case storyContentPhoto\n        case storyContentVideo\n        case storyContentLive\n        case storyContentUnsupported\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .storyContentPhoto:\n            let value = try StoryContentPhoto(from: decoder)\n            self = .storyContentPhoto(value)\n        case .storyContentVideo:\n            let value = try StoryContentVideo(from: decoder)\n            self = .storyContentVideo(value)\n        case .storyContentLive:\n            let value = try StoryContentLive(from: decoder)\n            self = .storyContentLive(value)\n        case .storyContentUnsupported:\n            self = .storyContentUnsupported\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .storyContentPhoto(let value):\n            try container.encode(Kind.storyContentPhoto, forKey: .type)\n            try value.encode(to: encoder)\n        case .storyContentVideo(let value):\n            try container.encode(Kind.storyContentVideo, forKey: .type)\n            try value.encode(to: encoder)\n        case .storyContentLive(let value):\n            try container.encode(Kind.storyContentLive, forKey: .type)\n            try value.encode(to: encoder)\n        case .storyContentUnsupported:\n            try container.encode(Kind.storyContentUnsupported, forKey: .type)\n        }\n    }\n}\n\n/// A photo story\npublic struct StoryContentPhoto: Codable, Equatable, Hashable {\n\n    /// The photo\n    public let photo: Photo\n\n\n    public init(photo: Photo) {\n        self.photo = photo\n    }\n}\n\n/// A video story\npublic struct StoryContentVideo: Codable, Equatable, Hashable {\n\n    /// Alternative version of the video in MPEG4 format, encoded with H.264 codec; may be null\n    public let alternativeVideo: StoryVideo?\n\n    /// The video in MPEG4 format\n    public let video: StoryVideo\n\n\n    public init(\n        alternativeVideo: StoryVideo?,\n        video: StoryVideo\n    ) {\n        self.alternativeVideo = alternativeVideo\n        self.video = video\n    }\n}\n\n/// A live story\npublic struct StoryContentLive: Codable, Equatable, Hashable {\n\n    /// Identifier of the corresponding group call. The group call can be received through the method getGroupCall\n    public let groupCallId: Int\n\n    /// True, if the call is an RTMP stream instead of an ordinary group call\n    public let isRtmpStream: Bool\n\n\n    public init(\n        groupCallId: Int,\n        isRtmpStream: Bool\n    ) {\n        self.groupCallId = groupCallId\n        self.isRtmpStream = isRtmpStream\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StoryContentType.swift",
    "content": "//\n//  StoryContentType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains the type of the content of a story\npublic indirect enum StoryContentType: Codable, Equatable, Hashable {\n\n    /// A photo story\n    case storyContentTypePhoto\n\n    /// A video story\n    case storyContentTypeVideo\n\n    /// A live story\n    case storyContentTypeLive\n\n    /// A story of unknown content type\n    case storyContentTypeUnsupported\n\n\n    private enum Kind: String, Codable {\n        case storyContentTypePhoto\n        case storyContentTypeVideo\n        case storyContentTypeLive\n        case storyContentTypeUnsupported\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .storyContentTypePhoto:\n            self = .storyContentTypePhoto\n        case .storyContentTypeVideo:\n            self = .storyContentTypeVideo\n        case .storyContentTypeLive:\n            self = .storyContentTypeLive\n        case .storyContentTypeUnsupported:\n            self = .storyContentTypeUnsupported\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .storyContentTypePhoto:\n            try container.encode(Kind.storyContentTypePhoto, forKey: .type)\n        case .storyContentTypeVideo:\n            try container.encode(Kind.storyContentTypeVideo, forKey: .type)\n        case .storyContentTypeLive:\n            try container.encode(Kind.storyContentTypeLive, forKey: .type)\n        case .storyContentTypeUnsupported:\n            try container.encode(Kind.storyContentTypeUnsupported, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StoryFullId.swift",
    "content": "//\n//  StoryFullId.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains identifier of a story along with identifier of the chat that posted it\npublic struct StoryFullId: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat that posted the story\n    public let posterChatId: Int64\n\n    /// Unique story identifier among stories of the chat\n    public let storyId: Int\n\n\n    public init(\n        posterChatId: Int64,\n        storyId: Int\n    ) {\n        self.posterChatId = posterChatId\n        self.storyId = storyId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StoryInfo.swift",
    "content": "//\n//  StoryInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains basic information about a story\npublic struct StoryInfo: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the story was published\n    public let date: Int\n\n    /// True, if the story is available only to close friends\n    public let isForCloseFriends: Bool\n\n    /// True, if the story is a live story\n    public let isLive: Bool\n\n    /// Unique story identifier among stories of the chat\n    public let storyId: Int\n\n\n    public init(\n        date: Int,\n        isForCloseFriends: Bool,\n        isLive: Bool,\n        storyId: Int\n    ) {\n        self.date = date\n        self.isForCloseFriends = isForCloseFriends\n        self.isLive = isLive\n        self.storyId = storyId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StoryInteraction.swift",
    "content": "//\n//  StoryInteraction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents interaction with a story\npublic struct StoryInteraction: Codable, Equatable, Hashable {\n\n    /// Identifier of the user or chat that made the interaction\n    public let actorId: MessageSender\n\n    /// Block list to which the actor is added; may be null if none or for chat stories\n    public let blockList: BlockList?\n\n    /// Approximate point in time (Unix timestamp) when the interaction happened\n    public let interactionDate: Int\n\n    /// Type of the interaction\n    public let type: StoryInteractionType\n\n\n    public init(\n        actorId: MessageSender,\n        blockList: BlockList?,\n        interactionDate: Int,\n        type: StoryInteractionType\n    ) {\n        self.actorId = actorId\n        self.blockList = blockList\n        self.interactionDate = interactionDate\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StoryInteractionInfo.swift",
    "content": "//\n//  StoryInteractionInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about interactions with a story\npublic struct StoryInteractionInfo: Codable, Equatable, Hashable {\n\n    /// Number of times the story was forwarded; 0 if none or unknown\n    public let forwardCount: Int\n\n    /// Number of reactions added to the story; 0 if none or unknown\n    public let reactionCount: Int\n\n    /// Identifiers of at most 3 recent viewers of the story\n    public let recentViewerUserIds: [Int64]\n\n    /// Number of times the story was viewed\n    public let viewCount: Int\n\n\n    public init(\n        forwardCount: Int,\n        reactionCount: Int,\n        recentViewerUserIds: [Int64],\n        viewCount: Int\n    ) {\n        self.forwardCount = forwardCount\n        self.reactionCount = reactionCount\n        self.recentViewerUserIds = recentViewerUserIds\n        self.viewCount = viewCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StoryInteractionType.swift",
    "content": "//\n//  StoryInteractionType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of interaction with a story\npublic indirect enum StoryInteractionType: Codable, Equatable, Hashable {\n\n    /// A view of the story\n    case storyInteractionTypeView(StoryInteractionTypeView)\n\n    /// A forward of the story as a message\n    case storyInteractionTypeForward(StoryInteractionTypeForward)\n\n    /// A repost of the story as a story\n    case storyInteractionTypeRepost(StoryInteractionTypeRepost)\n\n\n    private enum Kind: String, Codable {\n        case storyInteractionTypeView\n        case storyInteractionTypeForward\n        case storyInteractionTypeRepost\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .storyInteractionTypeView:\n            let value = try StoryInteractionTypeView(from: decoder)\n            self = .storyInteractionTypeView(value)\n        case .storyInteractionTypeForward:\n            let value = try StoryInteractionTypeForward(from: decoder)\n            self = .storyInteractionTypeForward(value)\n        case .storyInteractionTypeRepost:\n            let value = try StoryInteractionTypeRepost(from: decoder)\n            self = .storyInteractionTypeRepost(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .storyInteractionTypeView(let value):\n            try container.encode(Kind.storyInteractionTypeView, forKey: .type)\n            try value.encode(to: encoder)\n        case .storyInteractionTypeForward(let value):\n            try container.encode(Kind.storyInteractionTypeForward, forKey: .type)\n            try value.encode(to: encoder)\n        case .storyInteractionTypeRepost(let value):\n            try container.encode(Kind.storyInteractionTypeRepost, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A view of the story\npublic struct StoryInteractionTypeView: Codable, Equatable, Hashable {\n\n    /// Type of the reaction that was chosen by the viewer; may be null if none\n    public let chosenReactionType: ReactionType?\n\n\n    public init(chosenReactionType: ReactionType?) {\n        self.chosenReactionType = chosenReactionType\n    }\n}\n\n/// A forward of the story as a message\npublic struct StoryInteractionTypeForward: Codable, Equatable, Hashable {\n\n    /// The message with story forward\n    public let message: Message\n\n\n    public init(message: Message) {\n        self.message = message\n    }\n}\n\n/// A repost of the story as a story\npublic struct StoryInteractionTypeRepost: Codable, Equatable, Hashable {\n\n    /// The reposted story\n    public let story: Story\n\n\n    public init(story: Story) {\n        self.story = story\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StoryInteractions.swift",
    "content": "//\n//  StoryInteractions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of interactions with a story\npublic struct StoryInteractions: Codable, Equatable, Hashable {\n\n    /// List of story interactions\n    public let interactions: [StoryInteraction]\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// Approximate total number of interactions found\n    public let totalCount: Int\n\n    /// Approximate total number of found forwards and reposts; always 0 for chat stories\n    public let totalForwardCount: Int\n\n    /// Approximate total number of found reactions; always 0 for chat stories\n    public let totalReactionCount: Int\n\n\n    public init(\n        interactions: [StoryInteraction],\n        nextOffset: String,\n        totalCount: Int,\n        totalForwardCount: Int,\n        totalReactionCount: Int\n    ) {\n        self.interactions = interactions\n        self.nextOffset = nextOffset\n        self.totalCount = totalCount\n        self.totalForwardCount = totalForwardCount\n        self.totalReactionCount = totalReactionCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StoryList.swift",
    "content": "//\n//  StoryList.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a list of stories\npublic indirect enum StoryList: Codable, Equatable, Hashable {\n\n    /// The list of stories, shown in the main chat list and folder chat lists\n    case storyListMain\n\n    /// The list of stories, shown in the Arvhive chat list\n    case storyListArchive\n\n\n    private enum Kind: String, Codable {\n        case storyListMain\n        case storyListArchive\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .storyListMain:\n            self = .storyListMain\n        case .storyListArchive:\n            self = .storyListArchive\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .storyListMain:\n            try container.encode(Kind.storyListMain, forKey: .type)\n        case .storyListArchive:\n            try container.encode(Kind.storyListArchive, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StoryOrigin.swift",
    "content": "//\n//  StoryOrigin.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about the origin of a story that was reposted\npublic indirect enum StoryOrigin: Codable, Equatable, Hashable {\n\n    /// The original story was a public story that was posted by a known chat\n    case storyOriginPublicStory(StoryOriginPublicStory)\n\n    /// The original story was posted by an unknown user\n    case storyOriginHiddenUser(StoryOriginHiddenUser)\n\n\n    private enum Kind: String, Codable {\n        case storyOriginPublicStory\n        case storyOriginHiddenUser\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .storyOriginPublicStory:\n            let value = try StoryOriginPublicStory(from: decoder)\n            self = .storyOriginPublicStory(value)\n        case .storyOriginHiddenUser:\n            let value = try StoryOriginHiddenUser(from: decoder)\n            self = .storyOriginHiddenUser(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .storyOriginPublicStory(let value):\n            try container.encode(Kind.storyOriginPublicStory, forKey: .type)\n            try value.encode(to: encoder)\n        case .storyOriginHiddenUser(let value):\n            try container.encode(Kind.storyOriginHiddenUser, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The original story was a public story that was posted by a known chat\npublic struct StoryOriginPublicStory: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat that posted original story\n    public let chatId: Int64\n\n    /// Story identifier of the original story\n    public let storyId: Int\n\n\n    public init(\n        chatId: Int64,\n        storyId: Int\n    ) {\n        self.chatId = chatId\n        self.storyId = storyId\n    }\n}\n\n/// The original story was posted by an unknown user\npublic struct StoryOriginHiddenUser: Codable, Equatable, Hashable {\n\n    /// Name of the user or the chat that posted the story\n    public let posterName: String\n\n\n    public init(posterName: String) {\n        self.posterName = posterName\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StoryPrivacySettings.swift",
    "content": "//\n//  StoryPrivacySettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes privacy settings of a story\npublic indirect enum StoryPrivacySettings: Codable, Equatable, Hashable {\n\n    /// The story can be viewed by everyone\n    case storyPrivacySettingsEveryone(StoryPrivacySettingsEveryone)\n\n    /// The story can be viewed by all contacts except chosen users\n    case storyPrivacySettingsContacts(StoryPrivacySettingsContacts)\n\n    /// The story can be viewed by all close friends\n    case storyPrivacySettingsCloseFriends\n\n    /// The story can be viewed by certain specified users\n    case storyPrivacySettingsSelectedUsers(StoryPrivacySettingsSelectedUsers)\n\n\n    private enum Kind: String, Codable {\n        case storyPrivacySettingsEveryone\n        case storyPrivacySettingsContacts\n        case storyPrivacySettingsCloseFriends\n        case storyPrivacySettingsSelectedUsers\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .storyPrivacySettingsEveryone:\n            let value = try StoryPrivacySettingsEveryone(from: decoder)\n            self = .storyPrivacySettingsEveryone(value)\n        case .storyPrivacySettingsContacts:\n            let value = try StoryPrivacySettingsContacts(from: decoder)\n            self = .storyPrivacySettingsContacts(value)\n        case .storyPrivacySettingsCloseFriends:\n            self = .storyPrivacySettingsCloseFriends\n        case .storyPrivacySettingsSelectedUsers:\n            let value = try StoryPrivacySettingsSelectedUsers(from: decoder)\n            self = .storyPrivacySettingsSelectedUsers(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .storyPrivacySettingsEveryone(let value):\n            try container.encode(Kind.storyPrivacySettingsEveryone, forKey: .type)\n            try value.encode(to: encoder)\n        case .storyPrivacySettingsContacts(let value):\n            try container.encode(Kind.storyPrivacySettingsContacts, forKey: .type)\n            try value.encode(to: encoder)\n        case .storyPrivacySettingsCloseFriends:\n            try container.encode(Kind.storyPrivacySettingsCloseFriends, forKey: .type)\n        case .storyPrivacySettingsSelectedUsers(let value):\n            try container.encode(Kind.storyPrivacySettingsSelectedUsers, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The story can be viewed by everyone\npublic struct StoryPrivacySettingsEveryone: Codable, Equatable, Hashable {\n\n    /// Identifiers of the users that can't see the story; always unknown and empty for non-owned stories\n    public let exceptUserIds: [Int64]\n\n\n    public init(exceptUserIds: [Int64]) {\n        self.exceptUserIds = exceptUserIds\n    }\n}\n\n/// The story can be viewed by all contacts except chosen users\npublic struct StoryPrivacySettingsContacts: Codable, Equatable, Hashable {\n\n    /// User identifiers of the contacts that can't see the story; always unknown and empty for non-owned stories\n    public let exceptUserIds: [Int64]\n\n\n    public init(exceptUserIds: [Int64]) {\n        self.exceptUserIds = exceptUserIds\n    }\n}\n\n/// The story can be viewed by certain specified users\npublic struct StoryPrivacySettingsSelectedUsers: Codable, Equatable, Hashable {\n\n    /// Identifiers of the users; always unknown and empty for non-owned stories\n    public let userIds: [Int64]\n\n\n    public init(userIds: [Int64]) {\n        self.userIds = userIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StoryRepostInfo.swift",
    "content": "//\n//  StoryRepostInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about original story that was reposted\npublic struct StoryRepostInfo: Codable, Equatable, Hashable {\n\n    /// True, if story content was modified during reposting; otherwise, story wasn't modified\n    public let isContentModified: Bool\n\n    /// Origin of the story that was reposted\n    public let origin: StoryOrigin\n\n\n    public init(\n        isContentModified: Bool,\n        origin: StoryOrigin\n    ) {\n        self.isContentModified = isContentModified\n        self.origin = origin\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StoryStatistics.swift",
    "content": "//\n//  StoryStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A detailed statistics about a story\npublic struct StoryStatistics: Codable, Equatable, Hashable {\n\n    /// A graph containing number of story views and shares\n    public let storyInteractionGraph: StatisticalGraph\n\n    /// A graph containing number of story reactions\n    public let storyReactionGraph: StatisticalGraph\n\n\n    public init(\n        storyInteractionGraph: StatisticalGraph,\n        storyReactionGraph: StatisticalGraph\n    ) {\n        self.storyInteractionGraph = storyInteractionGraph\n        self.storyReactionGraph = storyReactionGraph\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/StoryVideo.swift",
    "content": "//\n//  StoryVideo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a video file posted as a story\npublic struct StoryVideo: Codable, Equatable, Hashable {\n\n    /// Timestamp of the frame used as video thumbnail\n    public let coverFrameTimestamp: Double\n\n    /// Duration of the video, in seconds\n    public let duration: Double\n\n    /// True, if stickers were added to the video. The list of corresponding sticker sets can be received using getAttachedStickerSets\n    public let hasStickers: Bool\n\n    /// Video height\n    public let height: Int\n\n    /// True, if the video has no sound\n    public let isAnimation: Bool\n\n    /// Video minithumbnail; may be null\n    public let minithumbnail: Minithumbnail?\n\n    /// Size of file prefix, which is expected to be preloaded, in bytes\n    public let preloadPrefixSize: Int\n\n    /// Video thumbnail in JPEG or MPEG4 format; may be null\n    public let thumbnail: Thumbnail?\n\n    /// File containing the video\n    public let video: File\n\n    /// Video width\n    public let width: Int\n\n\n    public init(\n        coverFrameTimestamp: Double,\n        duration: Double,\n        hasStickers: Bool,\n        height: Int,\n        isAnimation: Bool,\n        minithumbnail: Minithumbnail?,\n        preloadPrefixSize: Int,\n        thumbnail: Thumbnail?,\n        video: File,\n        width: Int\n    ) {\n        self.coverFrameTimestamp = coverFrameTimestamp\n        self.duration = duration\n        self.hasStickers = hasStickers\n        self.height = height\n        self.isAnimation = isAnimation\n        self.minithumbnail = minithumbnail\n        self.preloadPrefixSize = preloadPrefixSize\n        self.thumbnail = thumbnail\n        self.video = video\n        self.width = width\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SuggestUserBirthdate.swift",
    "content": "//\n//  SuggestUserBirthdate.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Suggests a birthdate to another regular user with common messages and allowing non-paid messages\npublic struct SuggestUserBirthdate: Codable, Equatable, Hashable {\n\n    /// Birthdate to suggest\n    public let birthdate: Birthdate?\n\n    /// User identifier\n    public let userId: Int64?\n\n\n    public init(\n        birthdate: Birthdate?,\n        userId: Int64?\n    ) {\n        self.birthdate = birthdate\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SuggestUserProfilePhoto.swift",
    "content": "//\n//  SuggestUserProfilePhoto.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Suggests a profile photo to another regular user with common messages and allowing non-paid messages\npublic struct SuggestUserProfilePhoto: Codable, Equatable, Hashable {\n\n    /// Profile photo to suggest; inputChatPhotoPrevious isn't supported in this function\n    public let photo: InputChatPhoto?\n\n    /// User identifier\n    public let userId: Int64?\n\n\n    public init(\n        photo: InputChatPhoto?,\n        userId: Int64?\n    ) {\n        self.photo = photo\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SuggestedAction.swift",
    "content": "//\n//  SuggestedAction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an action suggested to the current user\npublic indirect enum SuggestedAction: Codable, Equatable, Hashable {\n\n    /// Suggests the user to enable archive_and_mute_new_chats_from_unknown_users setting in archiveChatListSettings\n    case suggestedActionEnableArchiveAndMuteNewChats\n\n    /// Suggests the user to check whether they still remember their 2-step verification password\n    case suggestedActionCheckPassword\n\n    /// Suggests the user to check whether authorization phone number is correct and change the phone number if it is inaccessible\n    case suggestedActionCheckPhoneNumber\n\n    /// Suggests the user to view a hint about the meaning of one and two check marks on sent messages\n    case suggestedActionViewChecksHint\n\n    /// Suggests the user to convert specified supergroup to a broadcast group\n    case suggestedActionConvertToBroadcastGroup(SuggestedActionConvertToBroadcastGroup)\n\n    /// Suggests the user to set a 2-step verification password to be able to log in again\n    case suggestedActionSetPassword(SuggestedActionSetPassword)\n\n    /// Suggests the user to upgrade the Premium subscription from monthly payments to annual payments\n    case suggestedActionUpgradePremium\n\n    /// Suggests the user to restore a recently expired Premium subscription\n    case suggestedActionRestorePremium\n\n    /// Suggests the user to subscribe to the Premium subscription with annual payments\n    case suggestedActionSubscribeToAnnualPremium\n\n    /// Suggests the user to gift Telegram Premium to friends for Christmas\n    case suggestedActionGiftPremiumForChristmas\n\n    /// Suggests the user to set birthdate\n    case suggestedActionSetBirthdate\n\n    /// Suggests the user to set profile photo\n    case suggestedActionSetProfilePhoto\n\n    /// Suggests the user to extend their expiring Telegram Premium subscription\n    case suggestedActionExtendPremium(SuggestedActionExtendPremium)\n\n    /// Suggests the user to extend their expiring Telegram Star subscriptions. Call getStarSubscriptions with only_expiring == true to get the number of expiring subscriptions and the number of required to buy Telegram Stars\n    case suggestedActionExtendStarSubscriptions\n\n    /// A custom suggestion to be shown at the top of the chat list\n    case suggestedActionCustom(SuggestedActionCustom)\n\n    /// Suggests the user to add login email address. Call isLoginEmailAddressRequired, and then setLoginEmailAddress or checkLoginEmailAddressCode to change the login email address\n    case suggestedActionSetLoginEmailAddress(SuggestedActionSetLoginEmailAddress)\n\n    /// Suggests the user to add a passkey for login using addLoginPasskey\n    case suggestedActionAddLoginPasskey\n\n\n    private enum Kind: String, Codable {\n        case suggestedActionEnableArchiveAndMuteNewChats\n        case suggestedActionCheckPassword\n        case suggestedActionCheckPhoneNumber\n        case suggestedActionViewChecksHint\n        case suggestedActionConvertToBroadcastGroup\n        case suggestedActionSetPassword\n        case suggestedActionUpgradePremium\n        case suggestedActionRestorePremium\n        case suggestedActionSubscribeToAnnualPremium\n        case suggestedActionGiftPremiumForChristmas\n        case suggestedActionSetBirthdate\n        case suggestedActionSetProfilePhoto\n        case suggestedActionExtendPremium\n        case suggestedActionExtendStarSubscriptions\n        case suggestedActionCustom\n        case suggestedActionSetLoginEmailAddress\n        case suggestedActionAddLoginPasskey\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .suggestedActionEnableArchiveAndMuteNewChats:\n            self = .suggestedActionEnableArchiveAndMuteNewChats\n        case .suggestedActionCheckPassword:\n            self = .suggestedActionCheckPassword\n        case .suggestedActionCheckPhoneNumber:\n            self = .suggestedActionCheckPhoneNumber\n        case .suggestedActionViewChecksHint:\n            self = .suggestedActionViewChecksHint\n        case .suggestedActionConvertToBroadcastGroup:\n            let value = try SuggestedActionConvertToBroadcastGroup(from: decoder)\n            self = .suggestedActionConvertToBroadcastGroup(value)\n        case .suggestedActionSetPassword:\n            let value = try SuggestedActionSetPassword(from: decoder)\n            self = .suggestedActionSetPassword(value)\n        case .suggestedActionUpgradePremium:\n            self = .suggestedActionUpgradePremium\n        case .suggestedActionRestorePremium:\n            self = .suggestedActionRestorePremium\n        case .suggestedActionSubscribeToAnnualPremium:\n            self = .suggestedActionSubscribeToAnnualPremium\n        case .suggestedActionGiftPremiumForChristmas:\n            self = .suggestedActionGiftPremiumForChristmas\n        case .suggestedActionSetBirthdate:\n            self = .suggestedActionSetBirthdate\n        case .suggestedActionSetProfilePhoto:\n            self = .suggestedActionSetProfilePhoto\n        case .suggestedActionExtendPremium:\n            let value = try SuggestedActionExtendPremium(from: decoder)\n            self = .suggestedActionExtendPremium(value)\n        case .suggestedActionExtendStarSubscriptions:\n            self = .suggestedActionExtendStarSubscriptions\n        case .suggestedActionCustom:\n            let value = try SuggestedActionCustom(from: decoder)\n            self = .suggestedActionCustom(value)\n        case .suggestedActionSetLoginEmailAddress:\n            let value = try SuggestedActionSetLoginEmailAddress(from: decoder)\n            self = .suggestedActionSetLoginEmailAddress(value)\n        case .suggestedActionAddLoginPasskey:\n            self = .suggestedActionAddLoginPasskey\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .suggestedActionEnableArchiveAndMuteNewChats:\n            try container.encode(Kind.suggestedActionEnableArchiveAndMuteNewChats, forKey: .type)\n        case .suggestedActionCheckPassword:\n            try container.encode(Kind.suggestedActionCheckPassword, forKey: .type)\n        case .suggestedActionCheckPhoneNumber:\n            try container.encode(Kind.suggestedActionCheckPhoneNumber, forKey: .type)\n        case .suggestedActionViewChecksHint:\n            try container.encode(Kind.suggestedActionViewChecksHint, forKey: .type)\n        case .suggestedActionConvertToBroadcastGroup(let value):\n            try container.encode(Kind.suggestedActionConvertToBroadcastGroup, forKey: .type)\n            try value.encode(to: encoder)\n        case .suggestedActionSetPassword(let value):\n            try container.encode(Kind.suggestedActionSetPassword, forKey: .type)\n            try value.encode(to: encoder)\n        case .suggestedActionUpgradePremium:\n            try container.encode(Kind.suggestedActionUpgradePremium, forKey: .type)\n        case .suggestedActionRestorePremium:\n            try container.encode(Kind.suggestedActionRestorePremium, forKey: .type)\n        case .suggestedActionSubscribeToAnnualPremium:\n            try container.encode(Kind.suggestedActionSubscribeToAnnualPremium, forKey: .type)\n        case .suggestedActionGiftPremiumForChristmas:\n            try container.encode(Kind.suggestedActionGiftPremiumForChristmas, forKey: .type)\n        case .suggestedActionSetBirthdate:\n            try container.encode(Kind.suggestedActionSetBirthdate, forKey: .type)\n        case .suggestedActionSetProfilePhoto:\n            try container.encode(Kind.suggestedActionSetProfilePhoto, forKey: .type)\n        case .suggestedActionExtendPremium(let value):\n            try container.encode(Kind.suggestedActionExtendPremium, forKey: .type)\n            try value.encode(to: encoder)\n        case .suggestedActionExtendStarSubscriptions:\n            try container.encode(Kind.suggestedActionExtendStarSubscriptions, forKey: .type)\n        case .suggestedActionCustom(let value):\n            try container.encode(Kind.suggestedActionCustom, forKey: .type)\n            try value.encode(to: encoder)\n        case .suggestedActionSetLoginEmailAddress(let value):\n            try container.encode(Kind.suggestedActionSetLoginEmailAddress, forKey: .type)\n            try value.encode(to: encoder)\n        case .suggestedActionAddLoginPasskey:\n            try container.encode(Kind.suggestedActionAddLoginPasskey, forKey: .type)\n        }\n    }\n}\n\n/// Suggests the user to convert specified supergroup to a broadcast group\npublic struct SuggestedActionConvertToBroadcastGroup: Codable, Equatable, Hashable {\n\n    /// Supergroup identifier\n    public let supergroupId: Int64\n\n\n    public init(supergroupId: Int64) {\n        self.supergroupId = supergroupId\n    }\n}\n\n/// Suggests the user to set a 2-step verification password to be able to log in again\npublic struct SuggestedActionSetPassword: Codable, Equatable, Hashable {\n\n    /// The number of days to pass between consecutive authorizations if the user declines to set password; if 0, then the user is advised to set the password for security reasons\n    public let authorizationDelay: Int\n\n\n    public init(authorizationDelay: Int) {\n        self.authorizationDelay = authorizationDelay\n    }\n}\n\n/// Suggests the user to extend their expiring Telegram Premium subscription\npublic struct SuggestedActionExtendPremium: Codable, Equatable, Hashable {\n\n    /// A URL for managing Telegram Premium subscription\n    public let managePremiumSubscriptionUrl: String\n\n\n    public init(managePremiumSubscriptionUrl: String) {\n        self.managePremiumSubscriptionUrl = managePremiumSubscriptionUrl\n    }\n}\n\n/// A custom suggestion to be shown at the top of the chat list\npublic struct SuggestedActionCustom: Codable, Equatable, Hashable {\n\n    public let description: FormattedText\n\n    /// Unique name of the suggestion\n    public let name: String\n\n    /// Title of the suggestion\n    public let title: FormattedText\n\n    /// The link to open when the suggestion is clicked\n    public let url: String\n\n\n    public init(\n        description: FormattedText,\n        name: String,\n        title: FormattedText,\n        url: String\n    ) {\n        self.description = description\n        self.name = name\n        self.title = title\n        self.url = url\n    }\n}\n\n/// Suggests the user to add login email address. Call isLoginEmailAddressRequired, and then setLoginEmailAddress or checkLoginEmailAddressCode to change the login email address\npublic struct SuggestedActionSetLoginEmailAddress: Codable, Equatable, Hashable {\n\n    /// True, if the suggested action can be hidden using hideSuggestedAction. Otherwise, the user must not be able to use the application without setting up the email address\n    public let canBeHidden: Bool\n\n\n    public init(canBeHidden: Bool) {\n        self.canBeHidden = canBeHidden\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SuggestedPostInfo.swift",
    "content": "//\n//  SuggestedPostInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a suggested post. If the post can be approved or declined, then changes to the post can be also suggested. Use sendMessage with reply to the message and suggested post information to suggest message changes. Use addOffer to suggest price or time changes\npublic struct SuggestedPostInfo: Codable, Equatable, Hashable {\n\n    /// True, if the suggested post can be approved by the current user using approveSuggestedPost; updates aren't sent when value of this field changes\n    public let canBeApproved: Bool\n\n    /// True, if the suggested post can be declined by the current user using declineSuggestedPost; updates aren't sent when value of this field changes\n    public let canBeDeclined: Bool\n\n    /// Price of the suggested post; may be null if the post is non-paid\n    public let price: SuggestedPostPrice?\n\n    /// Point in time (Unix timestamp) when the post is expected to be published; 0 if the specific date isn't set yet\n    public let sendDate: Int\n\n    /// State of the post\n    public let state: SuggestedPostState\n\n\n    public init(\n        canBeApproved: Bool,\n        canBeDeclined: Bool,\n        price: SuggestedPostPrice?,\n        sendDate: Int,\n        state: SuggestedPostState\n    ) {\n        self.canBeApproved = canBeApproved\n        self.canBeDeclined = canBeDeclined\n        self.price = price\n        self.sendDate = sendDate\n        self.state = state\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SuggestedPostPrice.swift",
    "content": "//\n//  SuggestedPostPrice.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes price of a suggested post\npublic indirect enum SuggestedPostPrice: Codable, Equatable, Hashable {\n\n    /// Describes price of a suggested post in Telegram Stars\n    case suggestedPostPriceStar(SuggestedPostPriceStar)\n\n    /// Describes price of a suggested post in Toncoins\n    case suggestedPostPriceTon(SuggestedPostPriceTon)\n\n\n    private enum Kind: String, Codable {\n        case suggestedPostPriceStar\n        case suggestedPostPriceTon\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .suggestedPostPriceStar:\n            let value = try SuggestedPostPriceStar(from: decoder)\n            self = .suggestedPostPriceStar(value)\n        case .suggestedPostPriceTon:\n            let value = try SuggestedPostPriceTon(from: decoder)\n            self = .suggestedPostPriceTon(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .suggestedPostPriceStar(let value):\n            try container.encode(Kind.suggestedPostPriceStar, forKey: .type)\n            try value.encode(to: encoder)\n        case .suggestedPostPriceTon(let value):\n            try container.encode(Kind.suggestedPostPriceTon, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Describes price of a suggested post in Telegram Stars\npublic struct SuggestedPostPriceStar: Codable, Equatable, Hashable {\n\n    /// The Telegram Star amount expected to be paid for the post; getOption(\"suggested_post_star_count_min\")-getOption(\"suggested_post_star_count_max\")\n    public let starCount: Int64\n\n\n    public init(starCount: Int64) {\n        self.starCount = starCount\n    }\n}\n\n/// Describes price of a suggested post in Toncoins\npublic struct SuggestedPostPriceTon: Codable, Equatable, Hashable {\n\n    /// The amount of 1/100 of Toncoin expected to be paid for the post; getOption(\"suggested_post_toncoin_cent_count_min\")-getOption(\"suggested_post_toncoin_cent_count_max\")\n    public let toncoinCentCount: Int64\n\n\n    public init(toncoinCentCount: Int64) {\n        self.toncoinCentCount = toncoinCentCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SuggestedPostRefundReason.swift",
    "content": "//\n//  SuggestedPostRefundReason.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes reason for refund of the payment for a suggested post\npublic indirect enum SuggestedPostRefundReason: Codable, Equatable, Hashable {\n\n    /// The post was refunded, because it was deleted by channel administrators in less than getOption(\"suggested_post_lifetime_min\") seconds\n    case suggestedPostRefundReasonPostDeleted\n\n    /// The post was refunded, because the payment for the post was refunded\n    case suggestedPostRefundReasonPaymentRefunded\n\n\n    private enum Kind: String, Codable {\n        case suggestedPostRefundReasonPostDeleted\n        case suggestedPostRefundReasonPaymentRefunded\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .suggestedPostRefundReasonPostDeleted:\n            self = .suggestedPostRefundReasonPostDeleted\n        case .suggestedPostRefundReasonPaymentRefunded:\n            self = .suggestedPostRefundReasonPaymentRefunded\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .suggestedPostRefundReasonPostDeleted:\n            try container.encode(Kind.suggestedPostRefundReasonPostDeleted, forKey: .type)\n        case .suggestedPostRefundReasonPaymentRefunded:\n            try container.encode(Kind.suggestedPostRefundReasonPaymentRefunded, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SuggestedPostState.swift",
    "content": "//\n//  SuggestedPostState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes state of a suggested post\npublic indirect enum SuggestedPostState: Codable, Equatable, Hashable {\n\n    /// The post must be approved or declined\n    case suggestedPostStatePending\n\n    /// The post was approved\n    case suggestedPostStateApproved\n\n    /// The post was declined\n    case suggestedPostStateDeclined\n\n\n    private enum Kind: String, Codable {\n        case suggestedPostStatePending\n        case suggestedPostStateApproved\n        case suggestedPostStateDeclined\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .suggestedPostStatePending:\n            self = .suggestedPostStatePending\n        case .suggestedPostStateApproved:\n            self = .suggestedPostStateApproved\n        case .suggestedPostStateDeclined:\n            self = .suggestedPostStateDeclined\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .suggestedPostStatePending:\n            try container.encode(Kind.suggestedPostStatePending, forKey: .type)\n        case .suggestedPostStateApproved:\n            try container.encode(Kind.suggestedPostStateApproved, forKey: .type)\n        case .suggestedPostStateDeclined:\n            try container.encode(Kind.suggestedPostStateDeclined, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SummarizeMessage.swift",
    "content": "//\n//  SummarizeMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Summarizes content of the message with non-empty summary_language_code\npublic struct SummarizeMessage: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the message belongs\n    public let chatId: Int64?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n    /// Tone of the summarization; see translateText.tone for the list of supported values\n    public let tone: String?\n\n    /// Pass a language code to which the summary will be translated; pass an empty string if translation isn't needed. See translateText.to_language_code for the list of supported values\n    public let translateToLanguageCode: String?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        tone: String?,\n        translateToLanguageCode: String?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.tone = tone\n        self.translateToLanguageCode = translateToLanguageCode\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Supergroup.swift",
    "content": "//\n//  Supergroup.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a supergroup or channel with zero or more members (subscribers in the case of channels). From the point of view of the system, a channel is a special kind of a supergroup: only administrators can post and see the list of members, and posts from all administrators use the name and photo of the channel instead of individual names and profile photos. Unlike supergroups, channels can have an unlimited number of subscribers\npublic struct Supergroup: Codable, Equatable, Hashable, Identifiable {\n\n    /// State of active stories of the supergroup or channel; may be null if there are no active stories\n    public let activeStoryState: ActiveStoryState?\n\n    /// Approximate boost level for the chat\n    public let boostLevel: Int\n\n    /// Point in time (Unix timestamp) when the current user joined, or the point in time when the supergroup or channel was created, in case the user is not a member\n    public let date: Int\n\n    /// True, if automatic translation of messages is enabled in the channel\n    public let hasAutomaticTranslation: Bool\n\n    /// True, if the channel has direct messages group\n    public let hasDirectMessagesGroup: Bool\n\n    /// True, if the supergroup is a forum, which topics are shown in the same way as in channel direct messages groups\n    public let hasForumTabs: Bool\n\n    /// True, if the channel has a discussion group, or the supergroup is the designated discussion group for a channel\n    public let hasLinkedChat: Bool\n\n    /// True, if the supergroup is connected to a location, i.e. the supergroup is a location-based supergroup\n    public let hasLocation: Bool\n\n    /// Supergroup or channel identifier\n    public let id: Int64\n\n    /// True, if the supergroup is a direct messages group for a channel chat that is administered by the current user\n    public let isAdministeredDirectMessagesGroup: Bool\n\n    /// True, if the supergroup is a broadcast group, i.e. only administrators can send messages and there is no limit on the number of members\n    public let isBroadcastGroup: Bool\n\n    /// True, if the supergroup is a channel\n    public let isChannel: Bool\n\n    /// True, if the supergroup is a direct message group for a channel chat\n    public let isDirectMessagesGroup: Bool\n\n    /// True, if the supergroup is a forum with topics\n    public let isForum: Bool\n\n    /// True, if the slow mode is enabled in the supergroup\n    public let isSlowModeEnabled: Bool\n\n    /// True, if all users directly joining the supergroup need to be approved by supergroup administrators. May be true only for non-broadcast supergroups with username, location, or a linked chat\n    public let joinByRequest: Bool\n\n    /// True, if users need to join the supergroup before they can send messages. May be false only for discussion supergroups and channel direct messages groups\n    public let joinToSendMessages: Bool\n\n    /// Number of members in the supergroup or channel; 0 if unknown. Currently, it is guaranteed to be known only if the supergroup or channel was received through getChatSimilarChats, getChatsToPostStories, getCreatedPublicChats, getGroupsInCommon, getInactiveSupergroupChats, getRecommendedChats, getSuitableDiscussionChats, getUserPrivacySettingRules, getVideoChatAvailableParticipants, searchPublicChats, or in chatFolderInviteLinkInfo.missing_chat_ids, or in userFullInfo.personal_chat_id, or for chats with messages or stories from publicForwards and foundStories\n    public let memberCount: Int\n\n    /// Number of Telegram Stars that must be paid by non-administrator users of the supergroup chat for each sent message\n    public let paidMessageStarCount: Int64\n\n    /// Information about the restrictions that must be applied to the corresponding supergroup or channel chat; may be null if none\n    public let restrictionInfo: RestrictionInfo?\n\n    /// True, if messages sent to the channel have information about the sender user. This field is only applicable to channels\n    public let showMessageSender: Bool\n\n    /// True, if messages sent to the channel contains name of the sender. This field is only applicable to channels\n    public let signMessages: Bool\n\n    /// Status of the current user in the supergroup or channel\n    public let status: ChatMemberStatus\n\n    /// Usernames of the supergroup or channel; may be null\n    public let usernames: Usernames?\n\n    /// Information about verification status of the supergroup or channel; may be null if none\n    public let verificationStatus: VerificationStatus?\n\n\n    public init(\n        activeStoryState: ActiveStoryState?,\n        boostLevel: Int,\n        date: Int,\n        hasAutomaticTranslation: Bool,\n        hasDirectMessagesGroup: Bool,\n        hasForumTabs: Bool,\n        hasLinkedChat: Bool,\n        hasLocation: Bool,\n        id: Int64,\n        isAdministeredDirectMessagesGroup: Bool,\n        isBroadcastGroup: Bool,\n        isChannel: Bool,\n        isDirectMessagesGroup: Bool,\n        isForum: Bool,\n        isSlowModeEnabled: Bool,\n        joinByRequest: Bool,\n        joinToSendMessages: Bool,\n        memberCount: Int,\n        paidMessageStarCount: Int64,\n        restrictionInfo: RestrictionInfo?,\n        showMessageSender: Bool,\n        signMessages: Bool,\n        status: ChatMemberStatus,\n        usernames: Usernames?,\n        verificationStatus: VerificationStatus?\n    ) {\n        self.activeStoryState = activeStoryState\n        self.boostLevel = boostLevel\n        self.date = date\n        self.hasAutomaticTranslation = hasAutomaticTranslation\n        self.hasDirectMessagesGroup = hasDirectMessagesGroup\n        self.hasForumTabs = hasForumTabs\n        self.hasLinkedChat = hasLinkedChat\n        self.hasLocation = hasLocation\n        self.id = id\n        self.isAdministeredDirectMessagesGroup = isAdministeredDirectMessagesGroup\n        self.isBroadcastGroup = isBroadcastGroup\n        self.isChannel = isChannel\n        self.isDirectMessagesGroup = isDirectMessagesGroup\n        self.isForum = isForum\n        self.isSlowModeEnabled = isSlowModeEnabled\n        self.joinByRequest = joinByRequest\n        self.joinToSendMessages = joinToSendMessages\n        self.memberCount = memberCount\n        self.paidMessageStarCount = paidMessageStarCount\n        self.restrictionInfo = restrictionInfo\n        self.showMessageSender = showMessageSender\n        self.signMessages = signMessages\n        self.status = status\n        self.usernames = usernames\n        self.verificationStatus = verificationStatus\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SupergroupFullInfo.swift",
    "content": "//\n//  SupergroupFullInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains full information about a supergroup or channel\npublic struct SupergroupFullInfo: Codable, Equatable, Hashable {\n\n    /// Number of privileged users in the supergroup or channel; 0 if unknown\n    public let administratorCount: Int\n\n    /// Number of users banned from chat; 0 if unknown\n    public let bannedCount: Int\n\n    /// List of commands of bots in the group\n    public let botCommands: [BotCommands]\n\n    /// Information about verification status of the supergroup or the channel provided by a bot; may be null if none or unknown\n    public let botVerification: BotVerification?\n\n    /// True, if paid messages can be enabled in the supergroup chat; for supergroup only\n    public let canEnablePaidMessages: Bool\n\n    /// True, if paid reaction can be enabled in the channel chat; for channels only\n    public let canEnablePaidReaction: Bool\n\n    /// True, if members of the chat can be retrieved via getSupergroupMembers or searchChatMembers\n    public let canGetMembers: Bool\n\n    /// True, if the supergroup or channel revenue statistics are available\n    public let canGetRevenueStatistics: Bool\n\n    /// True, if the supergroup or channel Telegram Star revenue statistics are available\n    public let canGetStarRevenueStatistics: Bool\n\n    /// True, if the supergroup or channel statistics are available\n    public let canGetStatistics: Bool\n\n    /// True, if the chat can have sponsored messages. The value of this field is only available to the owner of the chat\n    public let canHaveSponsoredMessages: Bool\n\n    /// True, if non-administrators and non-bots can be hidden in responses to getSupergroupMembers and searchChatMembers for non-administrators\n    public let canHideMembers: Bool\n\n    /// True, if the user can send a gift to the supergroup or channel using sendGift or transferGift\n    public let canSendGift: Bool\n\n    /// True, if the supergroup location can be changed\n    public let canSetLocation: Bool\n\n    /// True, if the supergroup sticker set can be changed\n    public let canSetStickerSet: Bool\n\n    /// True, if aggressive anti-spam checks can be enabled or disabled in the supergroup\n    public let canToggleAggressiveAntiSpam: Bool\n\n    /// Identifier of the custom emoji sticker set that can be used in the supergroup without Telegram Premium subscription; 0 if none\n    public let customEmojiStickerSetId: TdInt64\n\n    public let description: String\n\n    /// Chat identifier of a direct messages group for the channel, or a channel, for which the supergroup is the designated direct messages group; 0 if none\n    public let directMessagesChatId: Int64\n\n    /// Number of saved to profile gifts for channels without can_post_messages administrator right, otherwise, the total number of received gifts\n    public let giftCount: Int\n\n    /// True, if aggressive anti-spam checks are enabled in the supergroup. The value of this field is only available to chat administrators\n    public let hasAggressiveAntiSpamEnabled: Bool\n\n    /// True, if non-administrators can receive only administrators and bots using getSupergroupMembers or searchChatMembers\n    public let hasHiddenMembers: Bool\n\n    /// True, if paid media can be sent and forwarded to the channel chat; for channels only\n    public let hasPaidMediaAllowed: Bool\n\n    /// True, if the supergroup or channel has pinned stories\n    public let hasPinnedStories: Bool\n\n    /// Primary invite link for the chat; may be null. For chat administrators with can_invite_users right only\n    public let inviteLink: ChatInviteLink?\n\n    /// True, if new chat members will have access to old messages. In public, discussion, of forum groups and all channels, old messages are always available, so this option affects only private non-forum supergroups without a linked chat. The value of this field is only available to chat administrators\n    public let isAllHistoryAvailable: Bool\n\n    /// Chat identifier of a discussion group for the channel, or a channel, for which the supergroup is the designated discussion group; 0 if none or unknown\n    public let linkedChatId: Int64\n\n    /// Location to which the supergroup is connected; may be null if none\n    public let location: ChatLocation?\n\n    /// The main tab chosen by the administrators of the channel; may be null if not chosen manually\n    public let mainProfileTab: ProfileTab?\n\n    /// Number of members in the supergroup or channel; 0 if unknown\n    public let memberCount: Int\n\n    /// Number of times the current user boosted the supergroup or channel\n    public let myBoostCount: Int\n\n    /// Number of Telegram Stars that must be paid by the current user for each sent message to the supergroup\n    public let outgoingPaidMessageStarCount: Int64\n\n    /// Chat photo; may be null if empty or unknown. If non-null, then it is the same photo as in chat.photo\n    public let photo: ChatPhoto?\n\n    /// Number of restricted users in the supergroup; 0 if unknown\n    public let restrictedCount: Int\n\n    /// Delay between consecutive sent messages for non-administrator supergroup members, in seconds\n    public let slowModeDelay: Int\n\n    /// Time left before next message can be sent in the supergroup, in seconds. An updateSupergroupFullInfo update is not triggered when value of this field changes, but both new and old values are non-zero\n    public let slowModeDelayExpiresIn: Double\n\n    /// Identifier of the supergroup sticker set that must be shown before user sticker sets; 0 if none\n    public let stickerSetId: TdInt64\n\n    /// Number of times the supergroup must be boosted by a user to ignore slow mode and chat permission restrictions; 0 if unspecified\n    public let unrestrictBoostCount: Int\n\n    /// Identifier of the basic group from which supergroup was upgraded; 0 if none\n    public let upgradedFromBasicGroupId: Int64\n\n    /// Identifier of the last message in the basic group from which supergroup was upgraded; 0 if none\n    public let upgradedFromMaxMessageId: Int64\n\n\n    public init(\n        administratorCount: Int,\n        bannedCount: Int,\n        botCommands: [BotCommands],\n        botVerification: BotVerification?,\n        canEnablePaidMessages: Bool,\n        canEnablePaidReaction: Bool,\n        canGetMembers: Bool,\n        canGetRevenueStatistics: Bool,\n        canGetStarRevenueStatistics: Bool,\n        canGetStatistics: Bool,\n        canHaveSponsoredMessages: Bool,\n        canHideMembers: Bool,\n        canSendGift: Bool,\n        canSetLocation: Bool,\n        canSetStickerSet: Bool,\n        canToggleAggressiveAntiSpam: Bool,\n        customEmojiStickerSetId: TdInt64,\n        description: String,\n        directMessagesChatId: Int64,\n        giftCount: Int,\n        hasAggressiveAntiSpamEnabled: Bool,\n        hasHiddenMembers: Bool,\n        hasPaidMediaAllowed: Bool,\n        hasPinnedStories: Bool,\n        inviteLink: ChatInviteLink?,\n        isAllHistoryAvailable: Bool,\n        linkedChatId: Int64,\n        location: ChatLocation?,\n        mainProfileTab: ProfileTab?,\n        memberCount: Int,\n        myBoostCount: Int,\n        outgoingPaidMessageStarCount: Int64,\n        photo: ChatPhoto?,\n        restrictedCount: Int,\n        slowModeDelay: Int,\n        slowModeDelayExpiresIn: Double,\n        stickerSetId: TdInt64,\n        unrestrictBoostCount: Int,\n        upgradedFromBasicGroupId: Int64,\n        upgradedFromMaxMessageId: Int64\n    ) {\n        self.administratorCount = administratorCount\n        self.bannedCount = bannedCount\n        self.botCommands = botCommands\n        self.botVerification = botVerification\n        self.canEnablePaidMessages = canEnablePaidMessages\n        self.canEnablePaidReaction = canEnablePaidReaction\n        self.canGetMembers = canGetMembers\n        self.canGetRevenueStatistics = canGetRevenueStatistics\n        self.canGetStarRevenueStatistics = canGetStarRevenueStatistics\n        self.canGetStatistics = canGetStatistics\n        self.canHaveSponsoredMessages = canHaveSponsoredMessages\n        self.canHideMembers = canHideMembers\n        self.canSendGift = canSendGift\n        self.canSetLocation = canSetLocation\n        self.canSetStickerSet = canSetStickerSet\n        self.canToggleAggressiveAntiSpam = canToggleAggressiveAntiSpam\n        self.customEmojiStickerSetId = customEmojiStickerSetId\n        self.description = description\n        self.directMessagesChatId = directMessagesChatId\n        self.giftCount = giftCount\n        self.hasAggressiveAntiSpamEnabled = hasAggressiveAntiSpamEnabled\n        self.hasHiddenMembers = hasHiddenMembers\n        self.hasPaidMediaAllowed = hasPaidMediaAllowed\n        self.hasPinnedStories = hasPinnedStories\n        self.inviteLink = inviteLink\n        self.isAllHistoryAvailable = isAllHistoryAvailable\n        self.linkedChatId = linkedChatId\n        self.location = location\n        self.mainProfileTab = mainProfileTab\n        self.memberCount = memberCount\n        self.myBoostCount = myBoostCount\n        self.outgoingPaidMessageStarCount = outgoingPaidMessageStarCount\n        self.photo = photo\n        self.restrictedCount = restrictedCount\n        self.slowModeDelay = slowModeDelay\n        self.slowModeDelayExpiresIn = slowModeDelayExpiresIn\n        self.stickerSetId = stickerSetId\n        self.unrestrictBoostCount = unrestrictBoostCount\n        self.upgradedFromBasicGroupId = upgradedFromBasicGroupId\n        self.upgradedFromMaxMessageId = upgradedFromMaxMessageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SupergroupMembersFilter.swift",
    "content": "//\n//  SupergroupMembersFilter.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Specifies the kind of chat members to return in getSupergroupMembers\npublic indirect enum SupergroupMembersFilter: Codable, Equatable, Hashable {\n\n    /// Returns recently active users in reverse chronological order\n    case supergroupMembersFilterRecent\n\n    /// Returns contacts of the user, which are members of the supergroup or channel\n    case supergroupMembersFilterContacts(SupergroupMembersFilterContacts)\n\n    /// Returns the owner and administrators\n    case supergroupMembersFilterAdministrators\n\n    /// Used to search for supergroup or channel members via a (string) query\n    case supergroupMembersFilterSearch(SupergroupMembersFilterSearch)\n\n    /// Returns restricted supergroup members; can be used only by administrators\n    case supergroupMembersFilterRestricted(SupergroupMembersFilterRestricted)\n\n    /// Returns users banned from the supergroup or channel; can be used only by administrators\n    case supergroupMembersFilterBanned(SupergroupMembersFilterBanned)\n\n    /// Returns users which can be mentioned in the supergroup\n    case supergroupMembersFilterMention(SupergroupMembersFilterMention)\n\n    /// Returns bot members of the supergroup or channel\n    case supergroupMembersFilterBots\n\n\n    private enum Kind: String, Codable {\n        case supergroupMembersFilterRecent\n        case supergroupMembersFilterContacts\n        case supergroupMembersFilterAdministrators\n        case supergroupMembersFilterSearch\n        case supergroupMembersFilterRestricted\n        case supergroupMembersFilterBanned\n        case supergroupMembersFilterMention\n        case supergroupMembersFilterBots\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .supergroupMembersFilterRecent:\n            self = .supergroupMembersFilterRecent\n        case .supergroupMembersFilterContacts:\n            let value = try SupergroupMembersFilterContacts(from: decoder)\n            self = .supergroupMembersFilterContacts(value)\n        case .supergroupMembersFilterAdministrators:\n            self = .supergroupMembersFilterAdministrators\n        case .supergroupMembersFilterSearch:\n            let value = try SupergroupMembersFilterSearch(from: decoder)\n            self = .supergroupMembersFilterSearch(value)\n        case .supergroupMembersFilterRestricted:\n            let value = try SupergroupMembersFilterRestricted(from: decoder)\n            self = .supergroupMembersFilterRestricted(value)\n        case .supergroupMembersFilterBanned:\n            let value = try SupergroupMembersFilterBanned(from: decoder)\n            self = .supergroupMembersFilterBanned(value)\n        case .supergroupMembersFilterMention:\n            let value = try SupergroupMembersFilterMention(from: decoder)\n            self = .supergroupMembersFilterMention(value)\n        case .supergroupMembersFilterBots:\n            self = .supergroupMembersFilterBots\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .supergroupMembersFilterRecent:\n            try container.encode(Kind.supergroupMembersFilterRecent, forKey: .type)\n        case .supergroupMembersFilterContacts(let value):\n            try container.encode(Kind.supergroupMembersFilterContacts, forKey: .type)\n            try value.encode(to: encoder)\n        case .supergroupMembersFilterAdministrators:\n            try container.encode(Kind.supergroupMembersFilterAdministrators, forKey: .type)\n        case .supergroupMembersFilterSearch(let value):\n            try container.encode(Kind.supergroupMembersFilterSearch, forKey: .type)\n            try value.encode(to: encoder)\n        case .supergroupMembersFilterRestricted(let value):\n            try container.encode(Kind.supergroupMembersFilterRestricted, forKey: .type)\n            try value.encode(to: encoder)\n        case .supergroupMembersFilterBanned(let value):\n            try container.encode(Kind.supergroupMembersFilterBanned, forKey: .type)\n            try value.encode(to: encoder)\n        case .supergroupMembersFilterMention(let value):\n            try container.encode(Kind.supergroupMembersFilterMention, forKey: .type)\n            try value.encode(to: encoder)\n        case .supergroupMembersFilterBots:\n            try container.encode(Kind.supergroupMembersFilterBots, forKey: .type)\n        }\n    }\n}\n\n/// Returns contacts of the user, which are members of the supergroup or channel\npublic struct SupergroupMembersFilterContacts: Codable, Equatable, Hashable {\n\n    /// Query to search for\n    public let query: String\n\n\n    public init(query: String) {\n        self.query = query\n    }\n}\n\n/// Used to search for supergroup or channel members via a (string) query\npublic struct SupergroupMembersFilterSearch: Codable, Equatable, Hashable {\n\n    /// Query to search for\n    public let query: String\n\n\n    public init(query: String) {\n        self.query = query\n    }\n}\n\n/// Returns restricted supergroup members; can be used only by administrators\npublic struct SupergroupMembersFilterRestricted: Codable, Equatable, Hashable {\n\n    /// Query to search for\n    public let query: String\n\n\n    public init(query: String) {\n        self.query = query\n    }\n}\n\n/// Returns users banned from the supergroup or channel; can be used only by administrators\npublic struct SupergroupMembersFilterBanned: Codable, Equatable, Hashable {\n\n    /// Query to search for\n    public let query: String\n\n\n    public init(query: String) {\n        self.query = query\n    }\n}\n\n/// Returns users which can be mentioned in the supergroup\npublic struct SupergroupMembersFilterMention: Codable, Equatable, Hashable {\n\n    /// Query to search for\n    public let query: String\n\n    /// Identifier of the topic in which the users will be mentioned; pass null if none\n    public let topicId: MessageTopic?\n\n\n    public init(\n        query: String,\n        topicId: MessageTopic?\n    ) {\n        self.query = query\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/SynchronizeLanguagePack.swift",
    "content": "//\n//  SynchronizeLanguagePack.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Fetches the latest versions of all strings from a language pack in the current localization target from the server. This method doesn't need to be called explicitly for the current used/base language packs. Can be called before authorization\npublic struct SynchronizeLanguagePack: Codable, Equatable, Hashable {\n\n    /// Language pack identifier\n    public let languagePackId: String?\n\n\n    public init(languagePackId: String?) {\n        self.languagePackId = languagePackId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TMeUrl.swift",
    "content": "//\n//  TMeUrl.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a URL linking to an internal Telegram entity\npublic struct TMeUrl: Codable, Equatable, Hashable {\n\n    /// Type of the URL\n    public let type: TMeUrlType\n\n    /// URL\n    public let url: String\n\n\n    public init(\n        type: TMeUrlType,\n        url: String\n    ) {\n        self.type = type\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TMeUrlType.swift",
    "content": "//\n//  TMeUrlType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the type of URL linking to an internal Telegram entity\npublic indirect enum TMeUrlType: Codable, Equatable, Hashable {\n\n    /// A URL linking to a user\n    case tMeUrlTypeUser(TMeUrlTypeUser)\n\n    /// A URL linking to a public supergroup or channel\n    case tMeUrlTypeSupergroup(TMeUrlTypeSupergroup)\n\n    /// A chat invite link\n    case tMeUrlTypeChatInvite(TMeUrlTypeChatInvite)\n\n    /// A URL linking to a sticker set\n    case tMeUrlTypeStickerSet(TMeUrlTypeStickerSet)\n\n\n    private enum Kind: String, Codable {\n        case tMeUrlTypeUser\n        case tMeUrlTypeSupergroup\n        case tMeUrlTypeChatInvite\n        case tMeUrlTypeStickerSet\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .tMeUrlTypeUser:\n            let value = try TMeUrlTypeUser(from: decoder)\n            self = .tMeUrlTypeUser(value)\n        case .tMeUrlTypeSupergroup:\n            let value = try TMeUrlTypeSupergroup(from: decoder)\n            self = .tMeUrlTypeSupergroup(value)\n        case .tMeUrlTypeChatInvite:\n            let value = try TMeUrlTypeChatInvite(from: decoder)\n            self = .tMeUrlTypeChatInvite(value)\n        case .tMeUrlTypeStickerSet:\n            let value = try TMeUrlTypeStickerSet(from: decoder)\n            self = .tMeUrlTypeStickerSet(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .tMeUrlTypeUser(let value):\n            try container.encode(Kind.tMeUrlTypeUser, forKey: .type)\n            try value.encode(to: encoder)\n        case .tMeUrlTypeSupergroup(let value):\n            try container.encode(Kind.tMeUrlTypeSupergroup, forKey: .type)\n            try value.encode(to: encoder)\n        case .tMeUrlTypeChatInvite(let value):\n            try container.encode(Kind.tMeUrlTypeChatInvite, forKey: .type)\n            try value.encode(to: encoder)\n        case .tMeUrlTypeStickerSet(let value):\n            try container.encode(Kind.tMeUrlTypeStickerSet, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A URL linking to a user\npublic struct TMeUrlTypeUser: Codable, Equatable, Hashable {\n\n    /// Identifier of the user\n    public let userId: Int64\n\n\n    public init(userId: Int64) {\n        self.userId = userId\n    }\n}\n\n/// A URL linking to a public supergroup or channel\npublic struct TMeUrlTypeSupergroup: Codable, Equatable, Hashable {\n\n    /// Identifier of the supergroup or channel\n    public let supergroupId: Int64\n\n\n    public init(supergroupId: Int64) {\n        self.supergroupId = supergroupId\n    }\n}\n\n/// A chat invite link\npublic struct TMeUrlTypeChatInvite: Codable, Equatable, Hashable {\n\n    /// Information about the chat invite link\n    public let info: ChatInviteLinkInfo\n\n\n    public init(info: ChatInviteLinkInfo) {\n        self.info = info\n    }\n}\n\n/// A URL linking to a sticker set\npublic struct TMeUrlTypeStickerSet: Codable, Equatable, Hashable {\n\n    /// Identifier of the sticker set\n    public let stickerSetId: TdInt64\n\n\n    public init(stickerSetId: TdInt64) {\n        self.stickerSetId = stickerSetId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TMeUrls.swift",
    "content": "//\n//  TMeUrls.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of t.me URLs\npublic struct TMeUrls: Codable, Equatable, Hashable {\n\n    /// List of URLs\n    public let urls: [TMeUrl]\n\n\n    public init(urls: [TMeUrl]) {\n        self.urls = urls\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TargetChat.swift",
    "content": "//\n//  TargetChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the target chat to be opened\npublic indirect enum TargetChat: Codable, Equatable, Hashable {\n\n    /// The currently opened chat and forum topic must be kept\n    case targetChatCurrent\n\n    /// The chat needs to be chosen by the user among chats of the specified types\n    case targetChatChosen(TargetChatChosen)\n\n    /// The chat needs to be open with the provided internal link\n    case targetChatInternalLink(TargetChatInternalLink)\n\n\n    private enum Kind: String, Codable {\n        case targetChatCurrent\n        case targetChatChosen\n        case targetChatInternalLink\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .targetChatCurrent:\n            self = .targetChatCurrent\n        case .targetChatChosen:\n            let value = try TargetChatChosen(from: decoder)\n            self = .targetChatChosen(value)\n        case .targetChatInternalLink:\n            let value = try TargetChatInternalLink(from: decoder)\n            self = .targetChatInternalLink(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .targetChatCurrent:\n            try container.encode(Kind.targetChatCurrent, forKey: .type)\n        case .targetChatChosen(let value):\n            try container.encode(Kind.targetChatChosen, forKey: .type)\n            try value.encode(to: encoder)\n        case .targetChatInternalLink(let value):\n            try container.encode(Kind.targetChatInternalLink, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The chat needs to be chosen by the user among chats of the specified types\npublic struct TargetChatChosen: Codable, Equatable, Hashable {\n\n    /// Allowed types for the chat\n    public let types: TargetChatTypes\n\n\n    public init(types: TargetChatTypes) {\n        self.types = types\n    }\n}\n\n/// The chat needs to be open with the provided internal link\npublic struct TargetChatInternalLink: Codable, Equatable, Hashable {\n\n    /// An internal link pointing to the chat\n    public let link: InternalLinkType\n\n\n    public init(link: InternalLinkType) {\n        self.link = link\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TargetChatTypes.swift",
    "content": "//\n//  TargetChatTypes.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes allowed types for the target chat\npublic struct TargetChatTypes: Codable, Equatable, Hashable {\n\n    /// True, if private chats with other bots are allowed\n    public let allowBotChats: Bool\n\n    /// True, if channel chats are allowed\n    public let allowChannelChats: Bool\n\n    /// True, if basic group and supergroup chats are allowed\n    public let allowGroupChats: Bool\n\n    /// True, if private chats with ordinary users are allowed\n    public let allowUserChats: Bool\n\n\n    public init(\n        allowBotChats: Bool,\n        allowChannelChats: Bool,\n        allowGroupChats: Bool,\n        allowUserChats: Bool\n    ) {\n        self.allowBotChats = allowBotChats\n        self.allowChannelChats = allowChannelChats\n        self.allowGroupChats = allowGroupChats\n        self.allowUserChats = allowUserChats\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TelegramPaymentPurpose.swift",
    "content": "//\n//  TelegramPaymentPurpose.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a purpose of a payment toward Telegram\npublic indirect enum TelegramPaymentPurpose: Codable, Equatable, Hashable {\n\n    /// The user gifting Telegram Premium to another user\n    case telegramPaymentPurposePremiumGift(TelegramPaymentPurposePremiumGift)\n\n    /// The user boosting a chat by creating Telegram Premium gift codes for other users\n    case telegramPaymentPurposePremiumGiftCodes(TelegramPaymentPurposePremiumGiftCodes)\n\n    /// The user creating a Telegram Premium giveaway\n    case telegramPaymentPurposePremiumGiveaway(TelegramPaymentPurposePremiumGiveaway)\n\n    /// The user buying Telegram Stars\n    case telegramPaymentPurposeStars(TelegramPaymentPurposeStars)\n\n    /// The user buying Telegram Stars for other users\n    case telegramPaymentPurposeGiftedStars(TelegramPaymentPurposeGiftedStars)\n\n    /// The user creating a Telegram Star giveaway\n    case telegramPaymentPurposeStarGiveaway(TelegramPaymentPurposeStarGiveaway)\n\n    /// The user joins a chat and subscribes to regular payments in Telegram Stars\n    case telegramPaymentPurposeJoinChat(TelegramPaymentPurposeJoinChat)\n\n\n    private enum Kind: String, Codable {\n        case telegramPaymentPurposePremiumGift\n        case telegramPaymentPurposePremiumGiftCodes\n        case telegramPaymentPurposePremiumGiveaway\n        case telegramPaymentPurposeStars\n        case telegramPaymentPurposeGiftedStars\n        case telegramPaymentPurposeStarGiveaway\n        case telegramPaymentPurposeJoinChat\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .telegramPaymentPurposePremiumGift:\n            let value = try TelegramPaymentPurposePremiumGift(from: decoder)\n            self = .telegramPaymentPurposePremiumGift(value)\n        case .telegramPaymentPurposePremiumGiftCodes:\n            let value = try TelegramPaymentPurposePremiumGiftCodes(from: decoder)\n            self = .telegramPaymentPurposePremiumGiftCodes(value)\n        case .telegramPaymentPurposePremiumGiveaway:\n            let value = try TelegramPaymentPurposePremiumGiveaway(from: decoder)\n            self = .telegramPaymentPurposePremiumGiveaway(value)\n        case .telegramPaymentPurposeStars:\n            let value = try TelegramPaymentPurposeStars(from: decoder)\n            self = .telegramPaymentPurposeStars(value)\n        case .telegramPaymentPurposeGiftedStars:\n            let value = try TelegramPaymentPurposeGiftedStars(from: decoder)\n            self = .telegramPaymentPurposeGiftedStars(value)\n        case .telegramPaymentPurposeStarGiveaway:\n            let value = try TelegramPaymentPurposeStarGiveaway(from: decoder)\n            self = .telegramPaymentPurposeStarGiveaway(value)\n        case .telegramPaymentPurposeJoinChat:\n            let value = try TelegramPaymentPurposeJoinChat(from: decoder)\n            self = .telegramPaymentPurposeJoinChat(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .telegramPaymentPurposePremiumGift(let value):\n            try container.encode(Kind.telegramPaymentPurposePremiumGift, forKey: .type)\n            try value.encode(to: encoder)\n        case .telegramPaymentPurposePremiumGiftCodes(let value):\n            try container.encode(Kind.telegramPaymentPurposePremiumGiftCodes, forKey: .type)\n            try value.encode(to: encoder)\n        case .telegramPaymentPurposePremiumGiveaway(let value):\n            try container.encode(Kind.telegramPaymentPurposePremiumGiveaway, forKey: .type)\n            try value.encode(to: encoder)\n        case .telegramPaymentPurposeStars(let value):\n            try container.encode(Kind.telegramPaymentPurposeStars, forKey: .type)\n            try value.encode(to: encoder)\n        case .telegramPaymentPurposeGiftedStars(let value):\n            try container.encode(Kind.telegramPaymentPurposeGiftedStars, forKey: .type)\n            try value.encode(to: encoder)\n        case .telegramPaymentPurposeStarGiveaway(let value):\n            try container.encode(Kind.telegramPaymentPurposeStarGiveaway, forKey: .type)\n            try value.encode(to: encoder)\n        case .telegramPaymentPurposeJoinChat(let value):\n            try container.encode(Kind.telegramPaymentPurposeJoinChat, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The user gifting Telegram Premium to another user\npublic struct TelegramPaymentPurposePremiumGift: Codable, Equatable, Hashable {\n\n    /// Paid amount, in the smallest units of the currency\n    public let amount: Int64\n\n    /// ISO 4217 currency code of the payment currency, or \"XTR\" for payments in Telegram Stars\n    public let currency: String\n\n    /// Number of months the Telegram Premium subscription will be active for the user\n    public let monthCount: Int\n\n    /// Text to show to the user receiving Telegram Premium; 0-getOption(\"gift_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed\n    public let text: FormattedText\n\n    /// Identifier of the user which will receive Telegram Premium\n    public let userId: Int64\n\n\n    public init(\n        amount: Int64,\n        currency: String,\n        monthCount: Int,\n        text: FormattedText,\n        userId: Int64\n    ) {\n        self.amount = amount\n        self.currency = currency\n        self.monthCount = monthCount\n        self.text = text\n        self.userId = userId\n    }\n}\n\n/// The user boosting a chat by creating Telegram Premium gift codes for other users\npublic struct TelegramPaymentPurposePremiumGiftCodes: Codable, Equatable, Hashable {\n\n    /// Paid amount, in the smallest units of the currency\n    public let amount: Int64\n\n    /// Identifier of the supergroup or channel chat, which will be automatically boosted by the users for duration of the Premium subscription and which is administered by the user\n    public let boostedChatId: Int64\n\n    /// ISO 4217 currency code of the payment currency\n    public let currency: String\n\n    /// Number of months the Telegram Premium subscription will be active for the users\n    public let monthCount: Int\n\n    /// Text to show along with the gift codes; 0-getOption(\"gift_text_length_max\") characters. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities are allowed\n    public let text: FormattedText\n\n    /// Identifiers of the users which can activate the gift codes\n    public let userIds: [Int64]\n\n\n    public init(\n        amount: Int64,\n        boostedChatId: Int64,\n        currency: String,\n        monthCount: Int,\n        text: FormattedText,\n        userIds: [Int64]\n    ) {\n        self.amount = amount\n        self.boostedChatId = boostedChatId\n        self.currency = currency\n        self.monthCount = monthCount\n        self.text = text\n        self.userIds = userIds\n    }\n}\n\n/// The user creating a Telegram Premium giveaway\npublic struct TelegramPaymentPurposePremiumGiveaway: Codable, Equatable, Hashable {\n\n    /// Paid amount, in the smallest units of the currency\n    public let amount: Int64\n\n    /// ISO 4217 currency code of the payment currency\n    public let currency: String\n\n    /// Number of months the Telegram Premium subscription will be active for the users\n    public let monthCount: Int\n\n    /// Giveaway parameters\n    public let parameters: GiveawayParameters\n\n    /// Number of users which will be able to activate the gift codes\n    public let winnerCount: Int\n\n\n    public init(\n        amount: Int64,\n        currency: String,\n        monthCount: Int,\n        parameters: GiveawayParameters,\n        winnerCount: Int\n    ) {\n        self.amount = amount\n        self.currency = currency\n        self.monthCount = monthCount\n        self.parameters = parameters\n        self.winnerCount = winnerCount\n    }\n}\n\n/// The user buying Telegram Stars\npublic struct TelegramPaymentPurposeStars: Codable, Equatable, Hashable {\n\n    /// Paid amount, in the smallest units of the currency\n    public let amount: Int64\n\n    /// Identifier of the chat that is supposed to receive the Telegram Stars; pass 0 if none\n    public let chatId: Int64\n\n    /// ISO 4217 currency code of the payment currency\n    public let currency: String\n\n    /// Number of bought Telegram Stars\n    public let starCount: Int64\n\n\n    public init(\n        amount: Int64,\n        chatId: Int64,\n        currency: String,\n        starCount: Int64\n    ) {\n        self.amount = amount\n        self.chatId = chatId\n        self.currency = currency\n        self.starCount = starCount\n    }\n}\n\n/// The user buying Telegram Stars for other users\npublic struct TelegramPaymentPurposeGiftedStars: Codable, Equatable, Hashable {\n\n    /// Paid amount, in the smallest units of the currency\n    public let amount: Int64\n\n    /// ISO 4217 currency code of the payment currency\n    public let currency: String\n\n    /// Number of bought Telegram Stars\n    public let starCount: Int64\n\n    /// Identifier of the user to which Telegram Stars are gifted\n    public let userId: Int64\n\n\n    public init(\n        amount: Int64,\n        currency: String,\n        starCount: Int64,\n        userId: Int64\n    ) {\n        self.amount = amount\n        self.currency = currency\n        self.starCount = starCount\n        self.userId = userId\n    }\n}\n\n/// The user creating a Telegram Star giveaway\npublic struct TelegramPaymentPurposeStarGiveaway: Codable, Equatable, Hashable {\n\n    /// Paid amount, in the smallest units of the currency\n    public let amount: Int64\n\n    /// ISO 4217 currency code of the payment currency\n    public let currency: String\n\n    /// Giveaway parameters\n    public let parameters: GiveawayParameters\n\n    /// The number of Telegram Stars to be distributed through the giveaway\n    public let starCount: Int64\n\n    /// The number of users to receive Telegram Stars\n    public let winnerCount: Int\n\n\n    public init(\n        amount: Int64,\n        currency: String,\n        parameters: GiveawayParameters,\n        starCount: Int64,\n        winnerCount: Int\n    ) {\n        self.amount = amount\n        self.currency = currency\n        self.parameters = parameters\n        self.starCount = starCount\n        self.winnerCount = winnerCount\n    }\n}\n\n/// The user joins a chat and subscribes to regular payments in Telegram Stars\npublic struct TelegramPaymentPurposeJoinChat: Codable, Equatable, Hashable {\n\n    /// Invite link to use\n    public let inviteLink: String\n\n\n    public init(inviteLink: String) {\n        self.inviteLink = inviteLink\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TemporaryPasswordState.swift",
    "content": "//\n//  TemporaryPasswordState.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns information about the availability of a temporary password, which can be used for payments\npublic struct TemporaryPasswordState: Codable, Equatable, Hashable {\n\n    /// True, if a temporary password is available\n    public let hasPassword: Bool\n\n    /// Time left before the temporary password expires, in seconds\n    public let validFor: Int\n\n\n    public init(\n        hasPassword: Bool,\n        validFor: Int\n    ) {\n        self.hasPassword = hasPassword\n        self.validFor = validFor\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TerminateAllOtherSessions.swift",
    "content": "//\n//  TerminateAllOtherSessions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Terminates all other sessions of the current user\npublic struct TerminateAllOtherSessions: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TerminateSession.swift",
    "content": "//\n//  TerminateSession.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Terminates a session of the current user\npublic struct TerminateSession: Codable, Equatable, Hashable {\n\n    /// Session identifier\n    public let sessionId: TdInt64?\n\n\n    public init(sessionId: TdInt64?) {\n        self.sessionId = sessionId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TermsOfService.swift",
    "content": "//\n//  TermsOfService.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains Telegram terms of service\npublic struct TermsOfService: Codable, Equatable, Hashable {\n\n    /// The minimum age of a user to be able to accept the terms; 0 if age isn't restricted\n    public let minUserAge: Int\n\n    /// True, if a blocking popup with terms of service must be shown to the user\n    public let showPopup: Bool\n\n    /// Text of the terms of service\n    public let text: FormattedText\n\n\n    public init(\n        minUserAge: Int,\n        showPopup: Bool,\n        text: FormattedText\n    ) {\n        self.minUserAge = minUserAge\n        self.showPopup = showPopup\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TestBytes.swift",
    "content": "//\n//  TestBytes.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A simple object containing a sequence of bytes; for testing only\npublic struct TestBytes: Codable, Equatable, Hashable {\n\n    /// Bytes\n    public let value: Data\n\n\n    public init(value: Data) {\n        self.value = value\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TestCallBytes.swift",
    "content": "//\n//  TestCallBytes.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the received bytes; for testing only. This is an offline method. Can be called before authorization\npublic struct TestCallBytes: Codable, Equatable, Hashable {\n\n    /// Bytes to return\n    public let x: Data?\n\n\n    public init(x: Data?) {\n        self.x = x\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TestCallEmpty.swift",
    "content": "//\n//  TestCallEmpty.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Does nothing; for testing only. This is an offline method. Can be called before authorization\npublic struct TestCallEmpty: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TestCallString.swift",
    "content": "//\n//  TestCallString.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the received string; for testing only. This is an offline method. Can be called before authorization\npublic struct TestCallString: Codable, Equatable, Hashable {\n\n    /// String to return\n    public let x: String?\n\n\n    public init(x: String?) {\n        self.x = x\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TestCallVectorInt.swift",
    "content": "//\n//  TestCallVectorInt.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the received vector of numbers; for testing only. This is an offline method. Can be called before authorization\npublic struct TestCallVectorInt: Codable, Equatable, Hashable {\n\n    /// Vector of numbers to return\n    public let x: [Int]?\n\n\n    public init(x: [Int]?) {\n        self.x = x\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TestCallVectorIntObject.swift",
    "content": "//\n//  TestCallVectorIntObject.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the received vector of objects containing a number; for testing only. This is an offline method. Can be called before authorization\npublic struct TestCallVectorIntObject: Codable, Equatable, Hashable {\n\n    /// Vector of objects to return\n    public let x: [TestInt]?\n\n\n    public init(x: [TestInt]?) {\n        self.x = x\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TestCallVectorString.swift",
    "content": "//\n//  TestCallVectorString.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the received vector of strings; for testing only. This is an offline method. Can be called before authorization\npublic struct TestCallVectorString: Codable, Equatable, Hashable {\n\n    /// Vector of strings to return\n    public let x: [String]?\n\n\n    public init(x: [String]?) {\n        self.x = x\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TestCallVectorStringObject.swift",
    "content": "//\n//  TestCallVectorStringObject.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the received vector of objects containing a string; for testing only. This is an offline method. Can be called before authorization\npublic struct TestCallVectorStringObject: Codable, Equatable, Hashable {\n\n    /// Vector of objects to return\n    public let x: [TestString]?\n\n\n    public init(x: [TestString]?) {\n        self.x = x\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TestGetDifference.swift",
    "content": "//\n//  TestGetDifference.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Forces an updates.getDifference call to the Telegram servers; for testing only\npublic struct TestGetDifference: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TestInt.swift",
    "content": "//\n//  TestInt.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A simple object containing a number; for testing only\npublic struct TestInt: Codable, Equatable, Hashable {\n\n    /// Number\n    public let value: Int\n\n\n    public init(value: Int) {\n        self.value = value\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TestNetwork.swift",
    "content": "//\n//  TestNetwork.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends a simple network request to the Telegram servers; for testing only. Can be called before authorization\npublic struct TestNetwork: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TestProxy.swift",
    "content": "//\n//  TestProxy.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends a simple network request to the Telegram servers via proxy; for testing only. Can be called before authorization\npublic struct TestProxy: Codable, Equatable, Hashable {\n\n    /// Identifier of a datacenter with which to test connection\n    public let dcId: Int?\n\n    /// The proxy to test\n    public let proxy: Proxy?\n\n    /// The maximum overall timeout for the request\n    public let timeout: Double?\n\n\n    public init(\n        dcId: Int?,\n        proxy: Proxy?,\n        timeout: Double?\n    ) {\n        self.dcId = dcId\n        self.proxy = proxy\n        self.timeout = timeout\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TestReturnError.swift",
    "content": "//\n//  TestReturnError.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the specified error and ensures that the Error object is used; for testing only. Can be called synchronously\npublic struct TestReturnError: Codable, Equatable, Hashable {\n\n    /// The error to be returned\n    public let error: Error?\n\n\n    public init(error: Error?) {\n        self.error = error\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TestSquareInt.swift",
    "content": "//\n//  TestSquareInt.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Returns the squared received number; for testing only. This is an offline method. Can be called before authorization\npublic struct TestSquareInt: Codable, Equatable, Hashable {\n\n    /// Number to square\n    public let x: Int?\n\n\n    public init(x: Int?) {\n        self.x = x\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TestString.swift",
    "content": "//\n//  TestString.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A simple object containing a string; for testing only\npublic struct TestString: Codable, Equatable, Hashable {\n\n    /// String\n    public let value: String\n\n\n    public init(value: String) {\n        self.value = value\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TestUseUpdate.swift",
    "content": "//\n//  TestUseUpdate.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Does nothing and ensures that the Update object is used; for testing only. This is an offline method. Can be called before authorization\npublic struct TestUseUpdate: Codable, Equatable, Hashable {\n\n\n    public init() {}\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TestVectorInt.swift",
    "content": "//\n//  TestVectorInt.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A simple object containing a vector of numbers; for testing only\npublic struct TestVectorInt: Codable, Equatable, Hashable {\n\n    /// Vector of numbers\n    public let value: [Int]\n\n\n    public init(value: [Int]) {\n        self.value = value\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TestVectorIntObject.swift",
    "content": "//\n//  TestVectorIntObject.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A simple object containing a vector of objects that hold a number; for testing only\npublic struct TestVectorIntObject: Codable, Equatable, Hashable {\n\n    /// Vector of objects\n    public let value: [TestInt]\n\n\n    public init(value: [TestInt]) {\n        self.value = value\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TestVectorString.swift",
    "content": "//\n//  TestVectorString.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A simple object containing a vector of strings; for testing only\npublic struct TestVectorString: Codable, Equatable, Hashable {\n\n    /// Vector of strings\n    public let value: [String]\n\n\n    public init(value: [String]) {\n        self.value = value\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TestVectorStringObject.swift",
    "content": "//\n//  TestVectorStringObject.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A simple object containing a vector of objects that hold a string; for testing only\npublic struct TestVectorStringObject: Codable, Equatable, Hashable {\n\n    /// Vector of objects\n    public let value: [TestString]\n\n\n    public init(value: [TestString]) {\n        self.value = value\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Text.swift",
    "content": "//\n//  Text.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains some text\npublic struct Text: Codable, Equatable, Hashable {\n\n    /// Text\n    public let text: String\n\n\n    public init(text: String) {\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TextCompositionStyle.swift",
    "content": "//\n//  TextCompositionStyle.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a style that can be used to compose a text\npublic struct TextCompositionStyle: Codable, Equatable, Hashable {\n\n    /// User identifier of the creator of the style; 0 if none of unknown\n    public let creatorUserId: Int64\n\n    /// Identifier of the custom emoji corresponding to the style; 0 if none\n    public let customEmojiId: TdInt64\n\n    /// Example of the style usage in English; may be null if unknown\n    public let englishExample: TextCompositionStyleExample?\n\n    /// Number of users that installed the style; for created custom styles only; 0 if unknown\n    public let installCount: Int\n\n    /// True, if the user is creator of the style\n    public let isCreator: Bool\n\n    /// True, if the style is created by a user\n    public let isCustom: Bool\n\n    /// Name of the style\n    public let name: String\n\n    /// Prompt of the style; for created custom styles only\n    public let prompt: String\n\n    /// Title of the style in the user application's language\n    public let title: String\n\n\n    public init(\n        creatorUserId: Int64,\n        customEmojiId: TdInt64,\n        englishExample: TextCompositionStyleExample?,\n        installCount: Int,\n        isCreator: Bool,\n        isCustom: Bool,\n        name: String,\n        prompt: String,\n        title: String\n    ) {\n        self.creatorUserId = creatorUserId\n        self.customEmojiId = customEmojiId\n        self.englishExample = englishExample\n        self.installCount = installCount\n        self.isCreator = isCreator\n        self.isCustom = isCustom\n        self.name = name\n        self.prompt = prompt\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TextCompositionStyleExample.swift",
    "content": "//\n//  TextCompositionStyleExample.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains an example of text composition style usage\npublic struct TextCompositionStyleExample: Codable, Equatable, Hashable {\n\n    /// The text after the style was applied to the source text\n    public let resultText: FormattedText\n\n    /// Source text\n    public let sourceText: FormattedText\n\n\n    public init(\n        resultText: FormattedText,\n        sourceText: FormattedText\n    ) {\n        self.resultText = resultText\n        self.sourceText = sourceText\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TextEntities.swift",
    "content": "//\n//  TextEntities.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of text entities\npublic struct TextEntities: Codable, Equatable, Hashable {\n\n    /// List of text entities\n    public let entities: [TextEntity]\n\n\n    public init(entities: [TextEntity]) {\n        self.entities = entities\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TextEntity.swift",
    "content": "//\n//  TextEntity.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a part of the text that needs to be formatted in some unusual way\npublic struct TextEntity: Codable, Equatable, Hashable {\n\n    /// Length of the entity, in UTF-16 code units\n    public let length: Int\n\n    /// Offset of the entity, in UTF-16 code units\n    public let offset: Int\n\n    /// Type of the entity\n    public let type: TextEntityType\n\n\n    public init(\n        length: Int,\n        offset: Int,\n        type: TextEntityType\n    ) {\n        self.length = length\n        self.offset = offset\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TextEntityType.swift",
    "content": "//\n//  TextEntityType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a part of the text which must be formatted differently\npublic indirect enum TextEntityType: Codable, Equatable, Hashable {\n\n    /// A mention of a user, a supergroup, or a channel by their username\n    case textEntityTypeMention\n\n    /// A hashtag text, beginning with \"#\" and optionally containing a chat username at the end\n    case textEntityTypeHashtag\n\n    /// A cashtag text, beginning with \"$\", consisting of capital English letters (e.g., \"$USD\"), and optionally containing a chat username at the end\n    case textEntityTypeCashtag\n\n    /// A bot command, beginning with \"/\"\n    case textEntityTypeBotCommand\n\n    /// An HTTP URL\n    case textEntityTypeUrl\n\n    /// An email address\n    case textEntityTypeEmailAddress\n\n    /// A phone number\n    case textEntityTypePhoneNumber\n\n    /// A bank card number. The getBankCardInfo method can be used to get information about the bank card\n    case textEntityTypeBankCardNumber\n\n    /// A bold text\n    case textEntityTypeBold\n\n    /// An italic text\n    case textEntityTypeItalic\n\n    /// An underlined text\n    case textEntityTypeUnderline\n\n    /// A strikethrough text\n    case textEntityTypeStrikethrough\n\n    /// A spoiler text\n    case textEntityTypeSpoiler\n\n    /// Text that must be formatted as if inside a code HTML tag\n    case textEntityTypeCode\n\n    /// Text that must be formatted as if inside a pre HTML tag\n    case textEntityTypePre\n\n    /// Text that must be formatted as if inside pre, and code HTML tags\n    case textEntityTypePreCode(TextEntityTypePreCode)\n\n    /// Text that must be formatted as if inside a blockquote HTML tag; not supported in secret chats\n    case textEntityTypeBlockQuote\n\n    /// Text that must be formatted as if inside a blockquote HTML tag and collapsed by default to 3 lines with the ability to show full text; not supported in secret chats\n    case textEntityTypeExpandableBlockQuote\n\n    /// A text description shown instead of a raw URL\n    case textEntityTypeTextUrl(TextEntityTypeTextUrl)\n\n    /// A text shows instead of a raw mention of the user (e.g., when the user has no username)\n    case textEntityTypeMentionName(TextEntityTypeMentionName)\n\n    /// A custom emoji. The text behind a custom emoji must be an emoji. Only premium users can use premium custom emoji\n    case textEntityTypeCustomEmoji(TextEntityTypeCustomEmoji)\n\n    /// A media timestamp\n    case textEntityTypeMediaTimestamp(TextEntityTypeMediaTimestamp)\n\n    /// A date and time\n    case textEntityTypeDateTime(TextEntityTypeDateTime)\n\n\n    private enum Kind: String, Codable {\n        case textEntityTypeMention\n        case textEntityTypeHashtag\n        case textEntityTypeCashtag\n        case textEntityTypeBotCommand\n        case textEntityTypeUrl\n        case textEntityTypeEmailAddress\n        case textEntityTypePhoneNumber\n        case textEntityTypeBankCardNumber\n        case textEntityTypeBold\n        case textEntityTypeItalic\n        case textEntityTypeUnderline\n        case textEntityTypeStrikethrough\n        case textEntityTypeSpoiler\n        case textEntityTypeCode\n        case textEntityTypePre\n        case textEntityTypePreCode\n        case textEntityTypeBlockQuote\n        case textEntityTypeExpandableBlockQuote\n        case textEntityTypeTextUrl\n        case textEntityTypeMentionName\n        case textEntityTypeCustomEmoji\n        case textEntityTypeMediaTimestamp\n        case textEntityTypeDateTime\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .textEntityTypeMention:\n            self = .textEntityTypeMention\n        case .textEntityTypeHashtag:\n            self = .textEntityTypeHashtag\n        case .textEntityTypeCashtag:\n            self = .textEntityTypeCashtag\n        case .textEntityTypeBotCommand:\n            self = .textEntityTypeBotCommand\n        case .textEntityTypeUrl:\n            self = .textEntityTypeUrl\n        case .textEntityTypeEmailAddress:\n            self = .textEntityTypeEmailAddress\n        case .textEntityTypePhoneNumber:\n            self = .textEntityTypePhoneNumber\n        case .textEntityTypeBankCardNumber:\n            self = .textEntityTypeBankCardNumber\n        case .textEntityTypeBold:\n            self = .textEntityTypeBold\n        case .textEntityTypeItalic:\n            self = .textEntityTypeItalic\n        case .textEntityTypeUnderline:\n            self = .textEntityTypeUnderline\n        case .textEntityTypeStrikethrough:\n            self = .textEntityTypeStrikethrough\n        case .textEntityTypeSpoiler:\n            self = .textEntityTypeSpoiler\n        case .textEntityTypeCode:\n            self = .textEntityTypeCode\n        case .textEntityTypePre:\n            self = .textEntityTypePre\n        case .textEntityTypePreCode:\n            let value = try TextEntityTypePreCode(from: decoder)\n            self = .textEntityTypePreCode(value)\n        case .textEntityTypeBlockQuote:\n            self = .textEntityTypeBlockQuote\n        case .textEntityTypeExpandableBlockQuote:\n            self = .textEntityTypeExpandableBlockQuote\n        case .textEntityTypeTextUrl:\n            let value = try TextEntityTypeTextUrl(from: decoder)\n            self = .textEntityTypeTextUrl(value)\n        case .textEntityTypeMentionName:\n            let value = try TextEntityTypeMentionName(from: decoder)\n            self = .textEntityTypeMentionName(value)\n        case .textEntityTypeCustomEmoji:\n            let value = try TextEntityTypeCustomEmoji(from: decoder)\n            self = .textEntityTypeCustomEmoji(value)\n        case .textEntityTypeMediaTimestamp:\n            let value = try TextEntityTypeMediaTimestamp(from: decoder)\n            self = .textEntityTypeMediaTimestamp(value)\n        case .textEntityTypeDateTime:\n            let value = try TextEntityTypeDateTime(from: decoder)\n            self = .textEntityTypeDateTime(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .textEntityTypeMention:\n            try container.encode(Kind.textEntityTypeMention, forKey: .type)\n        case .textEntityTypeHashtag:\n            try container.encode(Kind.textEntityTypeHashtag, forKey: .type)\n        case .textEntityTypeCashtag:\n            try container.encode(Kind.textEntityTypeCashtag, forKey: .type)\n        case .textEntityTypeBotCommand:\n            try container.encode(Kind.textEntityTypeBotCommand, forKey: .type)\n        case .textEntityTypeUrl:\n            try container.encode(Kind.textEntityTypeUrl, forKey: .type)\n        case .textEntityTypeEmailAddress:\n            try container.encode(Kind.textEntityTypeEmailAddress, forKey: .type)\n        case .textEntityTypePhoneNumber:\n            try container.encode(Kind.textEntityTypePhoneNumber, forKey: .type)\n        case .textEntityTypeBankCardNumber:\n            try container.encode(Kind.textEntityTypeBankCardNumber, forKey: .type)\n        case .textEntityTypeBold:\n            try container.encode(Kind.textEntityTypeBold, forKey: .type)\n        case .textEntityTypeItalic:\n            try container.encode(Kind.textEntityTypeItalic, forKey: .type)\n        case .textEntityTypeUnderline:\n            try container.encode(Kind.textEntityTypeUnderline, forKey: .type)\n        case .textEntityTypeStrikethrough:\n            try container.encode(Kind.textEntityTypeStrikethrough, forKey: .type)\n        case .textEntityTypeSpoiler:\n            try container.encode(Kind.textEntityTypeSpoiler, forKey: .type)\n        case .textEntityTypeCode:\n            try container.encode(Kind.textEntityTypeCode, forKey: .type)\n        case .textEntityTypePre:\n            try container.encode(Kind.textEntityTypePre, forKey: .type)\n        case .textEntityTypePreCode(let value):\n            try container.encode(Kind.textEntityTypePreCode, forKey: .type)\n            try value.encode(to: encoder)\n        case .textEntityTypeBlockQuote:\n            try container.encode(Kind.textEntityTypeBlockQuote, forKey: .type)\n        case .textEntityTypeExpandableBlockQuote:\n            try container.encode(Kind.textEntityTypeExpandableBlockQuote, forKey: .type)\n        case .textEntityTypeTextUrl(let value):\n            try container.encode(Kind.textEntityTypeTextUrl, forKey: .type)\n            try value.encode(to: encoder)\n        case .textEntityTypeMentionName(let value):\n            try container.encode(Kind.textEntityTypeMentionName, forKey: .type)\n            try value.encode(to: encoder)\n        case .textEntityTypeCustomEmoji(let value):\n            try container.encode(Kind.textEntityTypeCustomEmoji, forKey: .type)\n            try value.encode(to: encoder)\n        case .textEntityTypeMediaTimestamp(let value):\n            try container.encode(Kind.textEntityTypeMediaTimestamp, forKey: .type)\n            try value.encode(to: encoder)\n        case .textEntityTypeDateTime(let value):\n            try container.encode(Kind.textEntityTypeDateTime, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Text that must be formatted as if inside pre, and code HTML tags\npublic struct TextEntityTypePreCode: Codable, Equatable, Hashable {\n\n    /// Programming language of the code; as defined by the sender\n    public let language: String\n\n\n    public init(language: String) {\n        self.language = language\n    }\n}\n\n/// A text description shown instead of a raw URL\npublic struct TextEntityTypeTextUrl: Codable, Equatable, Hashable {\n\n    /// HTTP or tg:// URL to be opened when the link is clicked\n    public let url: String\n\n\n    public init(url: String) {\n        self.url = url\n    }\n}\n\n/// A text shows instead of a raw mention of the user (e.g., when the user has no username)\npublic struct TextEntityTypeMentionName: Codable, Equatable, Hashable {\n\n    /// Identifier of the mentioned user\n    public let userId: Int64\n\n\n    public init(userId: Int64) {\n        self.userId = userId\n    }\n}\n\n/// A custom emoji. The text behind a custom emoji must be an emoji. Only premium users can use premium custom emoji\npublic struct TextEntityTypeCustomEmoji: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the custom emoji\n    public let customEmojiId: TdInt64\n\n\n    public init(customEmojiId: TdInt64) {\n        self.customEmojiId = customEmojiId\n    }\n}\n\n/// A media timestamp\npublic struct TextEntityTypeMediaTimestamp: Codable, Equatable, Hashable {\n\n    /// Timestamp from which a video/audio/video note/voice note/story playing must start, in seconds. The media can be in the content or the link preview of the current message, or in the same places in the replied message\n    public let mediaTimestamp: Int\n\n\n    public init(mediaTimestamp: Int) {\n        self.mediaTimestamp = mediaTimestamp\n    }\n}\n\n/// A date and time\npublic struct TextEntityTypeDateTime: Codable, Equatable, Hashable {\n\n    /// Date and time formatting type; may be null if none and the original text must not be changed\n    public let formattingType: DateTimeFormattingType?\n\n    /// Point in time (Unix timestamp) representing the date and time\n    public let unixTime: Int\n\n\n    public init(\n        formattingType: DateTimeFormattingType?,\n        unixTime: Int\n    ) {\n        self.formattingType = formattingType\n        self.unixTime = unixTime\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TextParseMode.swift",
    "content": "//\n//  TextParseMode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the way the text needs to be parsed for text entities\npublic indirect enum TextParseMode: Codable, Equatable, Hashable {\n\n    /// The text uses Markdown-style formatting\n    case textParseModeMarkdown(TextParseModeMarkdown)\n\n    /// The text uses HTML-style formatting. The same as Telegram Bot API \"HTML\" parse mode\n    case textParseModeHTML\n\n\n    private enum Kind: String, Codable {\n        case textParseModeMarkdown\n        case textParseModeHTML\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .textParseModeMarkdown:\n            let value = try TextParseModeMarkdown(from: decoder)\n            self = .textParseModeMarkdown(value)\n        case .textParseModeHTML:\n            self = .textParseModeHTML\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .textParseModeMarkdown(let value):\n            try container.encode(Kind.textParseModeMarkdown, forKey: .type)\n            try value.encode(to: encoder)\n        case .textParseModeHTML:\n            try container.encode(Kind.textParseModeHTML, forKey: .type)\n        }\n    }\n}\n\n/// The text uses Markdown-style formatting\npublic struct TextParseModeMarkdown: Codable, Equatable, Hashable {\n\n    /// Version of the parser: 0 or 1 - Telegram Bot API \"Markdown\" parse mode, 2 - Telegram Bot API \"MarkdownV2\" parse mode\n    public let version: Int\n\n\n    public init(version: Int) {\n        self.version = version\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TextQuote.swift",
    "content": "//\n//  TextQuote.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes manually or automatically chosen quote from another message\npublic struct TextQuote: Codable, Equatable, Hashable {\n\n    /// True, if the quote was manually chosen by the message sender\n    public let isManual: Bool\n\n    /// Approximate quote position in the original message in UTF-16 code units as specified by the message sender\n    public let position: Int\n\n    /// Text of the quote. Only Bold, Italic, Underline, Strikethrough, Spoiler, CustomEmoji, and DateTime entities can be present in the text\n    public let text: FormattedText\n\n\n    public init(\n        isManual: Bool,\n        position: Int,\n        text: FormattedText\n    ) {\n        self.isManual = isManual\n        self.position = position\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ThemeParameters.swift",
    "content": "//\n//  ThemeParameters.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains parameters of the application theme\npublic struct ThemeParameters: Codable, Equatable, Hashable {\n\n    /// An accent color of the text in the RGB format\n    public let accentTextColor: Int\n\n    /// A color of the background in the RGB format\n    public let backgroundColor: Int\n\n    /// A color of the bottom bar background in the RGB format\n    public let bottomBarBackgroundColor: Int\n\n    /// A color of the buttons in the RGB format\n    public let buttonColor: Int\n\n    /// A color of text on the buttons in the RGB format\n    public let buttonTextColor: Int\n\n    /// A color of the text for destructive actions in the RGB format\n    public let destructiveTextColor: Int\n\n    /// A color of the header background in the RGB format\n    public let headerBackgroundColor: Int\n\n    /// A color of hints in the RGB format\n    public let hintColor: Int\n\n    /// A color of links in the RGB format\n    public let linkColor: Int\n\n    /// A secondary color for the background in the RGB format\n    public let secondaryBackgroundColor: Int\n\n    /// A color of the section background in the RGB format\n    public let sectionBackgroundColor: Int\n\n    /// A color of text on the section headers in the RGB format\n    public let sectionHeaderTextColor: Int\n\n    /// A color of the section separator in the RGB format\n    public let sectionSeparatorColor: Int\n\n    /// A color of the subtitle text in the RGB format\n    public let subtitleTextColor: Int\n\n    /// A color of text in the RGB format\n    public let textColor: Int\n\n\n    public init(\n        accentTextColor: Int,\n        backgroundColor: Int,\n        bottomBarBackgroundColor: Int,\n        buttonColor: Int,\n        buttonTextColor: Int,\n        destructiveTextColor: Int,\n        headerBackgroundColor: Int,\n        hintColor: Int,\n        linkColor: Int,\n        secondaryBackgroundColor: Int,\n        sectionBackgroundColor: Int,\n        sectionHeaderTextColor: Int,\n        sectionSeparatorColor: Int,\n        subtitleTextColor: Int,\n        textColor: Int\n    ) {\n        self.accentTextColor = accentTextColor\n        self.backgroundColor = backgroundColor\n        self.bottomBarBackgroundColor = bottomBarBackgroundColor\n        self.buttonColor = buttonColor\n        self.buttonTextColor = buttonTextColor\n        self.destructiveTextColor = destructiveTextColor\n        self.headerBackgroundColor = headerBackgroundColor\n        self.hintColor = hintColor\n        self.linkColor = linkColor\n        self.secondaryBackgroundColor = secondaryBackgroundColor\n        self.sectionBackgroundColor = sectionBackgroundColor\n        self.sectionHeaderTextColor = sectionHeaderTextColor\n        self.sectionSeparatorColor = sectionSeparatorColor\n        self.subtitleTextColor = subtitleTextColor\n        self.textColor = textColor\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ThemeSettings.swift",
    "content": "//\n//  ThemeSettings.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes theme settings\npublic struct ThemeSettings: Codable, Equatable, Hashable {\n\n    /// Theme accent color in ARGB format\n    public let accentColor: Int\n\n    /// If true, the freeform gradient fill needs to be animated on every sent message\n    public let animateOutgoingMessageFill: Bool\n\n    /// The background to be used in chats; may be null\n    public let background: Background?\n\n    /// Base theme for this theme\n    public let baseTheme: BuiltInTheme\n\n    /// Accent color of outgoing messages in ARGB format\n    public let outgoingMessageAccentColor: Int\n\n    /// The fill to be used as a background for outgoing messages; may be null if the fill from the base theme must be used instead\n    public let outgoingMessageFill: BackgroundFill?\n\n\n    public init(\n        accentColor: Int,\n        animateOutgoingMessageFill: Bool,\n        background: Background?,\n        baseTheme: BuiltInTheme,\n        outgoingMessageAccentColor: Int,\n        outgoingMessageFill: BackgroundFill?\n    ) {\n        self.accentColor = accentColor\n        self.animateOutgoingMessageFill = animateOutgoingMessageFill\n        self.background = background\n        self.baseTheme = baseTheme\n        self.outgoingMessageAccentColor = outgoingMessageAccentColor\n        self.outgoingMessageFill = outgoingMessageFill\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Thumbnail.swift",
    "content": "//\n//  Thumbnail.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a thumbnail\npublic struct Thumbnail: Codable, Equatable, Hashable {\n\n    /// The thumbnail\n    public let file: File\n\n    /// Thumbnail format\n    public let format: ThumbnailFormat\n\n    /// Thumbnail height\n    public let height: Int\n\n    /// Thumbnail width\n    public let width: Int\n\n\n    public init(\n        file: File,\n        format: ThumbnailFormat,\n        height: Int,\n        width: Int\n    ) {\n        self.file = file\n        self.format = format\n        self.height = height\n        self.width = width\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ThumbnailFormat.swift",
    "content": "//\n//  ThumbnailFormat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes format of a thumbnail\npublic indirect enum ThumbnailFormat: Codable, Equatable, Hashable {\n\n    /// The thumbnail is in JPEG format\n    case thumbnailFormatJpeg\n\n    /// The thumbnail is in static GIF format. It will be used only for some bot inline query results\n    case thumbnailFormatGif\n\n    /// The thumbnail is in MPEG4 format. It will be used only for some animations and videos\n    case thumbnailFormatMpeg4\n\n    /// The thumbnail is in PNG format. It will be used only for background patterns\n    case thumbnailFormatPng\n\n    /// The thumbnail is in TGS format. It will be used only for sticker sets\n    case thumbnailFormatTgs\n\n    /// The thumbnail is in WEBM format. It will be used only for sticker sets\n    case thumbnailFormatWebm\n\n    /// The thumbnail is in WEBP format. It will be used only for some stickers and sticker sets\n    case thumbnailFormatWebp\n\n\n    private enum Kind: String, Codable {\n        case thumbnailFormatJpeg\n        case thumbnailFormatGif\n        case thumbnailFormatMpeg4\n        case thumbnailFormatPng\n        case thumbnailFormatTgs\n        case thumbnailFormatWebm\n        case thumbnailFormatWebp\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .thumbnailFormatJpeg:\n            self = .thumbnailFormatJpeg\n        case .thumbnailFormatGif:\n            self = .thumbnailFormatGif\n        case .thumbnailFormatMpeg4:\n            self = .thumbnailFormatMpeg4\n        case .thumbnailFormatPng:\n            self = .thumbnailFormatPng\n        case .thumbnailFormatTgs:\n            self = .thumbnailFormatTgs\n        case .thumbnailFormatWebm:\n            self = .thumbnailFormatWebm\n        case .thumbnailFormatWebp:\n            self = .thumbnailFormatWebp\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .thumbnailFormatJpeg:\n            try container.encode(Kind.thumbnailFormatJpeg, forKey: .type)\n        case .thumbnailFormatGif:\n            try container.encode(Kind.thumbnailFormatGif, forKey: .type)\n        case .thumbnailFormatMpeg4:\n            try container.encode(Kind.thumbnailFormatMpeg4, forKey: .type)\n        case .thumbnailFormatPng:\n            try container.encode(Kind.thumbnailFormatPng, forKey: .type)\n        case .thumbnailFormatTgs:\n            try container.encode(Kind.thumbnailFormatTgs, forKey: .type)\n        case .thumbnailFormatWebm:\n            try container.encode(Kind.thumbnailFormatWebm, forKey: .type)\n        case .thumbnailFormatWebp:\n            try container.encode(Kind.thumbnailFormatWebp, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TimeZone.swift",
    "content": "//\n//  TimeZone.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a time zone\npublic struct TimeZone: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique time zone identifier\n    public let id: String\n\n    /// Time zone name\n    public let name: String\n\n    /// Current UTC time offset for the time zone\n    public let utcTimeOffset: Int\n\n\n    public init(\n        id: String,\n        name: String,\n        utcTimeOffset: Int\n    ) {\n        self.id = id\n        self.name = name\n        self.utcTimeOffset = utcTimeOffset\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TimeZones.swift",
    "content": "//\n//  TimeZones.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of time zones\npublic struct TimeZones: Codable, Equatable, Hashable {\n\n    /// A list of time zones\n    public let timeZones: [TimeZone]\n\n\n    public init(timeZones: [TimeZone]) {\n        self.timeZones = timeZones\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleAllDownloadsArePaused.swift",
    "content": "//\n//  ToggleAllDownloadsArePaused.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes pause state of all files in the file download list\npublic struct ToggleAllDownloadsArePaused: Codable, Equatable, Hashable {\n\n    /// Pass true to pause all downloads; pass false to unpause them\n    public let arePaused: Bool?\n\n\n    public init(arePaused: Bool?) {\n        self.arePaused = arePaused\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleBotCanManageEmojiStatus.swift",
    "content": "//\n//  ToggleBotCanManageEmojiStatus.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether the bot can manage emoji status of the current user\npublic struct ToggleBotCanManageEmojiStatus: Codable, Equatable, Hashable {\n\n    /// User identifier of the bot\n    public let botUserId: Int64?\n\n    /// Pass true if the bot is allowed to change emoji status of the user; pass false otherwise\n    public let canManageEmojiStatus: Bool?\n\n\n    public init(\n        botUserId: Int64?,\n        canManageEmojiStatus: Bool?\n    ) {\n        self.botUserId = botUserId\n        self.canManageEmojiStatus = canManageEmojiStatus\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleBotIsAddedToAttachmentMenu.swift",
    "content": "//\n//  ToggleBotIsAddedToAttachmentMenu.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Adds or removes a bot to attachment and side menu. Bot can be added to the menu, only if userTypeBot.can_be_added_to_attachment_menu == true\npublic struct ToggleBotIsAddedToAttachmentMenu: Codable, Equatable, Hashable {\n\n    /// Pass true if the current user allowed the bot to send them messages. Ignored if is_added is false\n    public let allowWriteAccess: Bool?\n\n    /// Bot's user identifier\n    public let botUserId: Int64?\n\n    /// Pass true to add the bot to attachment menu; pass false to remove the bot from attachment menu\n    public let isAdded: Bool?\n\n\n    public init(\n        allowWriteAccess: Bool?,\n        botUserId: Int64?,\n        isAdded: Bool?\n    ) {\n        self.allowWriteAccess = allowWriteAccess\n        self.botUserId = botUserId\n        self.isAdded = isAdded\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleBotUsernameIsActive.swift",
    "content": "//\n//  ToggleBotUsernameIsActive.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes active state for a username of a bot. The editable username can be disabled only if there are other active usernames. May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached. Can be called only if userTypeBot.can_be_edited == true\npublic struct ToggleBotUsernameIsActive: Codable, Equatable, Hashable {\n\n    /// Identifier of the target bot\n    public let botUserId: Int64?\n\n    /// Pass true to activate the username; pass false to disable it\n    public let isActive: Bool?\n\n    /// The username to change\n    public let username: String?\n\n\n    public init(\n        botUserId: Int64?,\n        isActive: Bool?,\n        username: String?\n    ) {\n        self.botUserId = botUserId\n        self.isActive = isActive\n        self.username = username\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleBusinessConnectedBotChatIsPaused.swift",
    "content": "//\n//  ToggleBusinessConnectedBotChatIsPaused.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Pauses or resumes the connected business bot in a specific chat\npublic struct ToggleBusinessConnectedBotChatIsPaused: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Pass true to pause the connected bot in the chat; pass false to resume the bot\n    public let isPaused: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        isPaused: Bool?\n    ) {\n        self.chatId = chatId\n        self.isPaused = isPaused\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleChatDefaultDisableNotification.swift",
    "content": "//\n//  ToggleChatDefaultDisableNotification.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the value of the default disable_notification parameter, used when a message is sent to a chat\npublic struct ToggleChatDefaultDisableNotification: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// New value of default_disable_notification\n    public let defaultDisableNotification: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        defaultDisableNotification: Bool?\n    ) {\n        self.chatId = chatId\n        self.defaultDisableNotification = defaultDisableNotification\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleChatFolderTags.swift",
    "content": "//\n//  ToggleChatFolderTags.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether chat folder tags are enabled\npublic struct ToggleChatFolderTags: Codable, Equatable, Hashable {\n\n    /// Pass true to enable folder tags; pass false to disable them\n    public let areTagsEnabled: Bool?\n\n\n    public init(areTagsEnabled: Bool?) {\n        self.areTagsEnabled = areTagsEnabled\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleChatGiftNotifications.swift",
    "content": "//\n//  ToggleChatGiftNotifications.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether notifications for new gifts received by a channel chat are sent to the current user; requires can_post_messages administrator right in the chat\npublic struct ToggleChatGiftNotifications: Codable, Equatable, Hashable {\n\n    /// Pass true to enable notifications about new gifts owned by the channel chat; pass false to disable the notifications\n    public let areEnabled: Bool?\n\n    /// Identifier of the channel chat\n    public let chatId: Int64?\n\n\n    public init(\n        areEnabled: Bool?,\n        chatId: Int64?\n    ) {\n        self.areEnabled = areEnabled\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleChatHasProtectedContent.swift",
    "content": "//\n//  ToggleChatHasProtectedContent.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the ability of users to save, forward, or copy chat content. Requires owner privileges in basic groups, supergroups and channels. Requires Telegram Premium to enable protected content in private chats. Not available in Saved Messages and private chats with bots or support accounts\npublic struct ToggleChatHasProtectedContent: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// New value of has_protected_content\n    public let hasProtectedContent: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        hasProtectedContent: Bool?\n    ) {\n        self.chatId = chatId\n        self.hasProtectedContent = hasProtectedContent\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleChatIsMarkedAsUnread.swift",
    "content": "//\n//  ToggleChatIsMarkedAsUnread.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the marked as unread state of a chat\npublic struct ToggleChatIsMarkedAsUnread: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// New value of is_marked_as_unread\n    public let isMarkedAsUnread: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        isMarkedAsUnread: Bool?\n    ) {\n        self.chatId = chatId\n        self.isMarkedAsUnread = isMarkedAsUnread\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleChatIsPinned.swift",
    "content": "//\n//  ToggleChatIsPinned.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the pinned state of a chat. There can be up to getOption(\"pinned_chat_count_max\")/getOption(\"pinned_archived_chat_count_max\") pinned non-secret chats and the same number of secret chats in the main/archive chat list. The limit can be increased with Telegram Premium\npublic struct ToggleChatIsPinned: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Chat list in which to change the pinned state of the chat\n    public let chatList: ChatList?\n\n    /// Pass true to pin the chat; pass false to unpin it\n    public let isPinned: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        chatList: ChatList?,\n        isPinned: Bool?\n    ) {\n        self.chatId = chatId\n        self.chatList = chatList\n        self.isPinned = isPinned\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleChatIsTranslatable.swift",
    "content": "//\n//  ToggleChatIsTranslatable.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the translatable state of a chat\npublic struct ToggleChatIsTranslatable: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// New value of is_translatable\n    public let isTranslatable: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        isTranslatable: Bool?\n    ) {\n        self.chatId = chatId\n        self.isTranslatable = isTranslatable\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleChatViewAsTopics.swift",
    "content": "//\n//  ToggleChatViewAsTopics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the view_as_topics setting of a forum chat or Saved Messages\npublic struct ToggleChatViewAsTopics: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// New value of view_as_topics\n    public let viewAsTopics: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        viewAsTopics: Bool?\n    ) {\n        self.chatId = chatId\n        self.viewAsTopics = viewAsTopics\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleDirectMessagesChatTopicCanSendUnpaidMessages.swift",
    "content": "//\n//  ToggleDirectMessagesChatTopicCanSendUnpaidMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Allows to send unpaid messages to the given topic of the channel direct messages chat administered by the current user\npublic struct ToggleDirectMessagesChatTopicCanSendUnpaidMessages: Codable, Equatable, Hashable {\n\n    /// Pass true to allow unpaid messages; pass false to disallow unpaid messages\n    public let canSendUnpaidMessages: Bool?\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Pass true to refund the user previously paid messages\n    public let refundPayments: Bool?\n\n    /// Identifier of the topic\n    public let topicId: Int64?\n\n\n    public init(\n        canSendUnpaidMessages: Bool?,\n        chatId: Int64?,\n        refundPayments: Bool?,\n        topicId: Int64?\n    ) {\n        self.canSendUnpaidMessages = canSendUnpaidMessages\n        self.chatId = chatId\n        self.refundPayments = refundPayments\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleDownloadIsPaused.swift",
    "content": "//\n//  ToggleDownloadIsPaused.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes pause state of a file in the file download list\npublic struct ToggleDownloadIsPaused: Codable, Equatable, Hashable {\n\n    /// Identifier of the downloaded file\n    public let fileId: Int?\n\n    /// Pass true if the download is paused\n    public let isPaused: Bool?\n\n\n    public init(\n        fileId: Int?,\n        isPaused: Bool?\n    ) {\n        self.fileId = fileId\n        self.isPaused = isPaused\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleForumTopicIsClosed.swift",
    "content": "//\n//  ToggleForumTopicIsClosed.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether a topic is closed in a forum supergroup chat; requires can_manage_topics administrator right in the supergroup unless the user is creator of the topic\npublic struct ToggleForumTopicIsClosed: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n    /// Forum topic identifier\n    public let forumTopicId: Int?\n\n    /// Pass true to close the topic; pass false to reopen it\n    public let isClosed: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        isClosed: Bool?\n    ) {\n        self.chatId = chatId\n        self.forumTopicId = forumTopicId\n        self.isClosed = isClosed\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleForumTopicIsPinned.swift",
    "content": "//\n//  ToggleForumTopicIsPinned.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the pinned state of a topic in a forum supergroup chat or a chat with a bot with topics; requires can_manage_topics administrator right in the supergroup. There can be up to getOption(\"pinned_forum_topic_count_max\") pinned forum topics\npublic struct ToggleForumTopicIsPinned: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Forum topic identifier\n    public let forumTopicId: Int?\n\n    /// Pass true to pin the topic; pass false to unpin it\n    public let isPinned: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        forumTopicId: Int?,\n        isPinned: Bool?\n    ) {\n        self.chatId = chatId\n        self.forumTopicId = forumTopicId\n        self.isPinned = isPinned\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleGeneralForumTopicIsHidden.swift",
    "content": "//\n//  ToggleGeneralForumTopicIsHidden.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether a General topic is hidden in a forum supergroup chat; requires can_manage_topics administrator right in the supergroup\npublic struct ToggleGeneralForumTopicIsHidden: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n    /// Pass true to hide and close the General topic; pass false to unhide it\n    public let isHidden: Bool?\n\n\n    public init(\n        chatId: Int64?,\n        isHidden: Bool?\n    ) {\n        self.chatId = chatId\n        self.isHidden = isHidden\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleGiftIsSaved.swift",
    "content": "//\n//  ToggleGiftIsSaved.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether a gift is shown on the current user's or the channel's profile page; requires can_post_messages administrator right in the channel chat\npublic struct ToggleGiftIsSaved: Codable, Equatable, Hashable {\n\n    /// Pass true to display the gift on the user's or the channel's profile page; pass false to remove it from the profile page\n    public let isSaved: Bool?\n\n    /// Identifier of the gift\n    public let receivedGiftId: String?\n\n\n    public init(\n        isSaved: Bool?,\n        receivedGiftId: String?\n    ) {\n        self.isSaved = isSaved\n        self.receivedGiftId = receivedGiftId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleGroupCallAreMessagesAllowed.swift",
    "content": "//\n//  ToggleGroupCallAreMessagesAllowed.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether participants of a group call can send messages there. Requires groupCall.can_toggle_are_messages_allowed right\npublic struct ToggleGroupCallAreMessagesAllowed: Codable, Equatable, Hashable {\n\n    /// New value of the are_messages_allowed setting\n    public let areMessagesAllowed: Bool?\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n\n    public init(\n        areMessagesAllowed: Bool?,\n        groupCallId: Int?\n    ) {\n        self.areMessagesAllowed = areMessagesAllowed\n        self.groupCallId = groupCallId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleGroupCallEnabledStartNotification.swift",
    "content": "//\n//  ToggleGroupCallEnabledStartNotification.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.47-971684a3\n//  https://github.com/tdlib/td/tree/971684a3\n//\n\nimport Foundation\n\n\n/// Toggles whether the current user will receive a notification when the group call starts; scheduled group calls only\npublic struct ToggleGroupCallEnabledStartNotification: Codable, Equatable, Hashable {\n\n    /// New value of the enabled_start_notification setting\n    public let enabledStartNotification: Bool?\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n\n    public init(\n        enabledStartNotification: Bool?,\n        groupCallId: Int?\n    ) {\n        self.enabledStartNotification = enabledStartNotification\n        self.groupCallId = groupCallId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleGroupCallIsMyVideoEnabled.swift",
    "content": "//\n//  ToggleGroupCallIsMyVideoEnabled.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether current user's video is enabled\npublic struct ToggleGroupCallIsMyVideoEnabled: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// Pass true if the current user's video is enabled\n    public let isMyVideoEnabled: Bool?\n\n\n    public init(\n        groupCallId: Int?,\n        isMyVideoEnabled: Bool?\n    ) {\n        self.groupCallId = groupCallId\n        self.isMyVideoEnabled = isMyVideoEnabled\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleGroupCallIsMyVideoPaused.swift",
    "content": "//\n//  ToggleGroupCallIsMyVideoPaused.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether current user's video is paused\npublic struct ToggleGroupCallIsMyVideoPaused: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// Pass true if the current user's video is paused\n    public let isMyVideoPaused: Bool?\n\n\n    public init(\n        groupCallId: Int?,\n        isMyVideoPaused: Bool?\n    ) {\n        self.groupCallId = groupCallId\n        self.isMyVideoPaused = isMyVideoPaused\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleGroupCallMuteNewParticipants.swift",
    "content": "//\n//  ToggleGroupCallMuteNewParticipants.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.47-971684a3\n//  https://github.com/tdlib/td/tree/971684a3\n//\n\nimport Foundation\n\n\n/// Toggles whether new participants of a group call can be unmuted only by administrators of the group call. Requires groupCall.can_toggle_mute_new_participants group call flag\npublic struct ToggleGroupCallMuteNewParticipants: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// New value of the mute_new_participants setting\n    public let muteNewParticipants: Bool?\n\n\n    public init(\n        groupCallId: Int?,\n        muteNewParticipants: Bool?\n    ) {\n        self.groupCallId = groupCallId\n        self.muteNewParticipants = muteNewParticipants\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleGroupCallParticipantIsHandRaised.swift",
    "content": "//\n//  ToggleGroupCallParticipantIsHandRaised.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether a group call participant hand is rased; for video chats only\npublic struct ToggleGroupCallParticipantIsHandRaised: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// Pass true if the user's hand needs to be raised. Only self hand can be raised. Requires groupCall.can_be_managed right to lower other's hand\n    public let isHandRaised: Bool?\n\n    /// Participant identifier\n    public let participantId: MessageSender?\n\n\n    public init(\n        groupCallId: Int?,\n        isHandRaised: Bool?,\n        participantId: MessageSender?\n    ) {\n        self.groupCallId = groupCallId\n        self.isHandRaised = isHandRaised\n        self.participantId = participantId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleGroupCallParticipantIsMuted.swift",
    "content": "//\n//  ToggleGroupCallParticipantIsMuted.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether a participant of an active group call is muted, unmuted, or allowed to unmute themselves; not supported for live stories\npublic struct ToggleGroupCallParticipantIsMuted: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// Pass true to mute the user; pass false to unmute them\n    public let isMuted: Bool?\n\n    /// Participant identifier\n    public let participantId: MessageSender?\n\n\n    public init(\n        groupCallId: Int?,\n        isMuted: Bool?,\n        participantId: MessageSender?\n    ) {\n        self.groupCallId = groupCallId\n        self.isMuted = isMuted\n        self.participantId = participantId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleGroupCallScreenSharingIsPaused.swift",
    "content": "//\n//  ToggleGroupCallScreenSharingIsPaused.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Pauses or unpauses screen sharing in a joined group call; not supported in live stories\npublic struct ToggleGroupCallScreenSharingIsPaused: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// Pass true to pause screen sharing; pass false to unpause it\n    public let isPaused: Bool?\n\n\n    public init(\n        groupCallId: Int?,\n        isPaused: Bool?\n    ) {\n        self.groupCallId = groupCallId\n        self.isPaused = isPaused\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleHasSponsoredMessagesEnabled.swift",
    "content": "//\n//  ToggleHasSponsoredMessagesEnabled.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether the current user has sponsored messages enabled. The setting has no effect for users without Telegram Premium for which sponsored messages are always enabled\npublic struct ToggleHasSponsoredMessagesEnabled: Codable, Equatable, Hashable {\n\n    /// Pass true to enable sponsored messages for the current user; false to disable them\n    public let hasSponsoredMessagesEnabled: Bool?\n\n\n    public init(hasSponsoredMessagesEnabled: Bool?) {\n        self.hasSponsoredMessagesEnabled = hasSponsoredMessagesEnabled\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TogglePaidMessageReactionIsAnonymous.swift",
    "content": "//\n//  TogglePaidMessageReactionIsAnonymous.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.44-28c6f2e9\n//  https://github.com/tdlib/td/tree/28c6f2e9\n//\n\nimport Foundation\n\n\n/// Changes whether the paid message reaction of the user to a message is anonymous. The message must have paid reaction added by the user\npublic struct TogglePaidMessageReactionIsAnonymous: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the message belongs\n    public let chatId: Int64?\n\n    /// Pass true to make paid reaction of the user on the message anonymous; pass false to make the user's profile visible among top reactors\n    public let isAnonymous: Bool?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        isAnonymous: Bool?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.isAnonymous = isAnonymous\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleSavedMessagesTopicIsPinned.swift",
    "content": "//\n//  ToggleSavedMessagesTopicIsPinned.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the pinned state of a Saved Messages topic. There can be up to getOption(\"pinned_saved_messages_topic_count_max\") pinned topics. The limit can be increased with Telegram Premium\npublic struct ToggleSavedMessagesTopicIsPinned: Codable, Equatable, Hashable {\n\n    /// Pass true to pin the topic; pass false to unpin it\n    public let isPinned: Bool?\n\n    /// Identifier of Saved Messages topic to pin or unpin\n    public let savedMessagesTopicId: Int64?\n\n\n    public init(\n        isPinned: Bool?,\n        savedMessagesTopicId: Int64?\n    ) {\n        self.isPinned = isPinned\n        self.savedMessagesTopicId = savedMessagesTopicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleSessionCanAcceptCalls.swift",
    "content": "//\n//  ToggleSessionCanAcceptCalls.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether a session can accept incoming calls\npublic struct ToggleSessionCanAcceptCalls: Codable, Equatable, Hashable {\n\n    /// Pass true to allow accepting incoming calls by the session; pass false otherwise\n    public let canAcceptCalls: Bool?\n\n    /// Session identifier\n    public let sessionId: TdInt64?\n\n\n    public init(\n        canAcceptCalls: Bool?,\n        sessionId: TdInt64?\n    ) {\n        self.canAcceptCalls = canAcceptCalls\n        self.sessionId = sessionId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleSessionCanAcceptSecretChats.swift",
    "content": "//\n//  ToggleSessionCanAcceptSecretChats.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether a session can accept incoming secret chats\npublic struct ToggleSessionCanAcceptSecretChats: Codable, Equatable, Hashable {\n\n    /// Pass true to allow accepting secret chats by the session; pass false otherwise\n    public let canAcceptSecretChats: Bool?\n\n    /// Session identifier\n    public let sessionId: TdInt64?\n\n\n    public init(\n        canAcceptSecretChats: Bool?,\n        sessionId: TdInt64?\n    ) {\n        self.canAcceptSecretChats = canAcceptSecretChats\n        self.sessionId = sessionId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleStoryIsPostedToChatPage.swift",
    "content": "//\n//  ToggleStoryIsPostedToChatPage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether a story is accessible after expiration. Can be called only if story.can_toggle_is_posted_to_chat_page == true\npublic struct ToggleStoryIsPostedToChatPage: Codable, Equatable, Hashable {\n\n    /// Pass true to make the story accessible after expiration; pass false to make it private\n    public let isPostedToChatPage: Bool?\n\n    /// Identifier of the story\n    public let storyId: Int?\n\n    /// Identifier of the chat that posted the story\n    public let storyPosterChatId: Int64?\n\n\n    public init(\n        isPostedToChatPage: Bool?,\n        storyId: Int?,\n        storyPosterChatId: Int64?\n    ) {\n        self.isPostedToChatPage = isPostedToChatPage\n        self.storyId = storyId\n        self.storyPosterChatId = storyPosterChatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleSupergroupCanHaveSponsoredMessages.swift",
    "content": "//\n//  ToggleSupergroupCanHaveSponsoredMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether sponsored messages are shown in the channel chat; requires owner privileges in the channel. The chat must have at least chatBoostFeatures.min_sponsored_message_disable_boost_level boost level to disable sponsored messages\npublic struct ToggleSupergroupCanHaveSponsoredMessages: Codable, Equatable, Hashable {\n\n    /// The new value of can_have_sponsored_messages\n    public let canHaveSponsoredMessages: Bool?\n\n    /// The identifier of the channel\n    public let supergroupId: Int64?\n\n\n    public init(\n        canHaveSponsoredMessages: Bool?,\n        supergroupId: Int64?\n    ) {\n        self.canHaveSponsoredMessages = canHaveSponsoredMessages\n        self.supergroupId = supergroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleSupergroupHasAggressiveAntiSpamEnabled.swift",
    "content": "//\n//  ToggleSupergroupHasAggressiveAntiSpamEnabled.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether aggressive anti-spam checks are enabled in the supergroup. Can be called only if supergroupFullInfo.can_toggle_aggressive_anti_spam == true\npublic struct ToggleSupergroupHasAggressiveAntiSpamEnabled: Codable, Equatable, Hashable {\n\n    /// The new value of has_aggressive_anti_spam_enabled\n    public let hasAggressiveAntiSpamEnabled: Bool?\n\n    /// The identifier of the supergroup, which isn't a broadcast group\n    public let supergroupId: Int64?\n\n\n    public init(\n        hasAggressiveAntiSpamEnabled: Bool?,\n        supergroupId: Int64?\n    ) {\n        self.hasAggressiveAntiSpamEnabled = hasAggressiveAntiSpamEnabled\n        self.supergroupId = supergroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleSupergroupHasAutomaticTranslation.swift",
    "content": "//\n//  ToggleSupergroupHasAutomaticTranslation.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether messages are automatically translated in the channel chat; requires can_change_info administrator right in the channel. The chat must have at least chatBoostFeatures.min_automatic_translation_boost_level boost level to enable automatic translation\npublic struct ToggleSupergroupHasAutomaticTranslation: Codable, Equatable, Hashable {\n\n    /// The new value of has_automatic_translation\n    public let hasAutomaticTranslation: Bool?\n\n    /// The identifier of the channel\n    public let supergroupId: Int64?\n\n\n    public init(\n        hasAutomaticTranslation: Bool?,\n        supergroupId: Int64?\n    ) {\n        self.hasAutomaticTranslation = hasAutomaticTranslation\n        self.supergroupId = supergroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleSupergroupHasHiddenMembers.swift",
    "content": "//\n//  ToggleSupergroupHasHiddenMembers.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether non-administrators can receive only administrators and bots using getSupergroupMembers or searchChatMembers. Can be called only if supergroupFullInfo.can_hide_members == true\npublic struct ToggleSupergroupHasHiddenMembers: Codable, Equatable, Hashable {\n\n    /// New value of has_hidden_members\n    public let hasHiddenMembers: Bool?\n\n    /// Identifier of the supergroup\n    public let supergroupId: Int64?\n\n\n    public init(\n        hasHiddenMembers: Bool?,\n        supergroupId: Int64?\n    ) {\n        self.hasHiddenMembers = hasHiddenMembers\n        self.supergroupId = supergroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleSupergroupIsAllHistoryAvailable.swift",
    "content": "//\n//  ToggleSupergroupIsAllHistoryAvailable.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether the message history of a supergroup is available to new members; requires can_change_info member right\npublic struct ToggleSupergroupIsAllHistoryAvailable: Codable, Equatable, Hashable {\n\n    /// The new value of is_all_history_available\n    public let isAllHistoryAvailable: Bool?\n\n    /// The identifier of the supergroup\n    public let supergroupId: Int64?\n\n\n    public init(\n        isAllHistoryAvailable: Bool?,\n        supergroupId: Int64?\n    ) {\n        self.isAllHistoryAvailable = isAllHistoryAvailable\n        self.supergroupId = supergroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleSupergroupIsBroadcastGroup.swift",
    "content": "//\n//  ToggleSupergroupIsBroadcastGroup.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Upgrades supergroup to a broadcast group; requires owner privileges in the supergroup\npublic struct ToggleSupergroupIsBroadcastGroup: Codable, Equatable, Hashable {\n\n    /// Identifier of the supergroup\n    public let supergroupId: Int64?\n\n\n    public init(supergroupId: Int64?) {\n        self.supergroupId = supergroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleSupergroupIsForum.swift",
    "content": "//\n//  ToggleSupergroupIsForum.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether the supergroup is a forum; requires owner privileges in the supergroup. Discussion supergroups can't be converted to forums\npublic struct ToggleSupergroupIsForum: Codable, Equatable, Hashable {\n\n    /// New value of has_forum_tabs; ignored if is_forum is false\n    public let hasForumTabs: Bool?\n\n    /// New value of is_forum\n    public let isForum: Bool?\n\n    /// Identifier of the supergroup\n    public let supergroupId: Int64?\n\n\n    public init(\n        hasForumTabs: Bool?,\n        isForum: Bool?,\n        supergroupId: Int64?\n    ) {\n        self.hasForumTabs = hasForumTabs\n        self.isForum = isForum\n        self.supergroupId = supergroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleSupergroupJoinByRequest.swift",
    "content": "//\n//  ToggleSupergroupJoinByRequest.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether all users directly joining the supergroup need to be approved by supergroup administrators; requires can_restrict_members administrator right\npublic struct ToggleSupergroupJoinByRequest: Codable, Equatable, Hashable {\n\n    /// New value of join_by_request\n    public let joinByRequest: Bool?\n\n    /// Identifier of the supergroup that isn't a broadcast group and isn't a channel direct message group\n    public let supergroupId: Int64?\n\n\n    public init(\n        joinByRequest: Bool?,\n        supergroupId: Int64?\n    ) {\n        self.joinByRequest = joinByRequest\n        self.supergroupId = supergroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleSupergroupJoinToSendMessages.swift",
    "content": "//\n//  ToggleSupergroupJoinToSendMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether joining is mandatory to send messages to a discussion supergroup; requires can_restrict_members administrator right\npublic struct ToggleSupergroupJoinToSendMessages: Codable, Equatable, Hashable {\n\n    /// New value of join_to_send_messages\n    public let joinToSendMessages: Bool?\n\n    /// Identifier of the supergroup that isn't a broadcast group\n    public let supergroupId: Int64?\n\n\n    public init(\n        joinToSendMessages: Bool?,\n        supergroupId: Int64?\n    ) {\n        self.joinToSendMessages = joinToSendMessages\n        self.supergroupId = supergroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleSupergroupSignMessages.swift",
    "content": "//\n//  ToggleSupergroupSignMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether sender signature or link to the account is added to sent messages in a channel; requires can_change_info member right\npublic struct ToggleSupergroupSignMessages: Codable, Equatable, Hashable {\n\n    /// New value of show_message_sender\n    public let showMessageSender: Bool?\n\n    /// New value of sign_messages\n    public let signMessages: Bool?\n\n    /// Identifier of the channel\n    public let supergroupId: Int64?\n\n\n    public init(\n        showMessageSender: Bool?,\n        signMessages: Bool?,\n        supergroupId: Int64?\n    ) {\n        self.showMessageSender = showMessageSender\n        self.signMessages = signMessages\n        self.supergroupId = supergroupId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleSupergroupUsernameIsActive.swift",
    "content": "//\n//  ToggleSupergroupUsernameIsActive.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes active state for a username of a supergroup or channel, requires owner privileges in the supergroup or channel. The editable username can't be disabled. May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\npublic struct ToggleSupergroupUsernameIsActive: Codable, Equatable, Hashable {\n\n    /// Pass true to activate the username; pass false to disable it\n    public let isActive: Bool?\n\n    /// Identifier of the supergroup or channel\n    public let supergroupId: Int64?\n\n    /// The username to change\n    public let username: String?\n\n\n    public init(\n        isActive: Bool?,\n        supergroupId: Int64?,\n        username: String?\n    ) {\n        self.isActive = isActive\n        self.supergroupId = supergroupId\n        self.username = username\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleUsernameIsActive.swift",
    "content": "//\n//  ToggleUsernameIsActive.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes active state for a username of the current user. The editable username can't be disabled. May return an error with a message \"USERNAMES_ACTIVE_TOO_MUCH\" if the maximum number of active usernames has been reached\npublic struct ToggleUsernameIsActive: Codable, Equatable, Hashable {\n\n    /// Pass true to activate the username; pass false to disable it\n    public let isActive: Bool?\n\n    /// The username to change\n    public let username: String?\n\n\n    public init(\n        isActive: Bool?,\n        username: String?\n    ) {\n        self.isActive = isActive\n        self.username = username\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleVideoChatEnabledStartNotification.swift",
    "content": "//\n//  ToggleVideoChatEnabledStartNotification.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether the current user will receive a notification when the video chat starts; for scheduled video chats only\npublic struct ToggleVideoChatEnabledStartNotification: Codable, Equatable, Hashable {\n\n    /// New value of the enabled_start_notification setting\n    public let enabledStartNotification: Bool?\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n\n    public init(\n        enabledStartNotification: Bool?,\n        groupCallId: Int?\n    ) {\n        self.enabledStartNotification = enabledStartNotification\n        self.groupCallId = groupCallId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ToggleVideoChatMuteNewParticipants.swift",
    "content": "//\n//  ToggleVideoChatMuteNewParticipants.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Toggles whether new participants of a video chat can be unmuted only by administrators of the video chat. Requires groupCall.can_toggle_mute_new_participants right\npublic struct ToggleVideoChatMuteNewParticipants: Codable, Equatable, Hashable {\n\n    /// Group call identifier\n    public let groupCallId: Int?\n\n    /// New value of the mute_new_participants setting\n    public let muteNewParticipants: Bool?\n\n\n    public init(\n        groupCallId: Int?,\n        muteNewParticipants: Bool?\n    ) {\n        self.groupCallId = groupCallId\n        self.muteNewParticipants = muteNewParticipants\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TonRevenueStatistics.swift",
    "content": "//\n//  TonRevenueStatistics.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A detailed statistics about Toncoins earned by the current user\npublic struct TonRevenueStatistics: Codable, Equatable, Hashable {\n\n    /// A graph containing amount of revenue in a given day\n    public let revenueByDayGraph: StatisticalGraph\n\n    /// Amount of earned revenue\n    public let status: TonRevenueStatus\n\n    /// Current conversion rate of nanotoncoin to USD cents\n    public let usdRate: Double\n\n\n    public init(\n        revenueByDayGraph: StatisticalGraph,\n        status: TonRevenueStatus,\n        usdRate: Double\n    ) {\n        self.revenueByDayGraph = revenueByDayGraph\n        self.status = status\n        self.usdRate = usdRate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TonRevenueStatus.swift",
    "content": "//\n//  TonRevenueStatus.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about Toncoins earned by the current user\npublic struct TonRevenueStatus: Codable, Equatable, Hashable {\n\n    /// The Toncoin amount that is available for withdrawal; in the smallest units of the cryptocurrency\n    public let availableAmount: TdInt64\n\n    /// The Toncoin amount that isn't withdrawn yet; in the smallest units of the cryptocurrency\n    public let balanceAmount: TdInt64\n\n    /// Total Toncoin amount earned; in the smallest units of the cryptocurrency\n    public let totalAmount: TdInt64\n\n    /// True, if Toncoins can be withdrawn\n    public let withdrawalEnabled: Bool\n\n\n    public init(\n        availableAmount: TdInt64,\n        balanceAmount: TdInt64,\n        totalAmount: TdInt64,\n        withdrawalEnabled: Bool\n    ) {\n        self.availableAmount = availableAmount\n        self.balanceAmount = balanceAmount\n        self.totalAmount = totalAmount\n        self.withdrawalEnabled = withdrawalEnabled\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TonTransaction.swift",
    "content": "//\n//  TonTransaction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a transaction changing the amount of owned Toncoins\npublic struct TonTransaction: Codable, Equatable, Hashable, Identifiable {\n\n    /// Point in time (Unix timestamp) when the transaction was completed\n    public let date: Int\n\n    /// Unique identifier of the transaction\n    public let id: String\n\n    /// True, if the transaction is a refund of a previous transaction\n    public let isRefund: Bool\n\n    /// The amount of added owned Toncoins; negative for outgoing transactions\n    public let tonAmount: Int64\n\n    /// Type of the transaction\n    public let type: TonTransactionType\n\n\n    public init(\n        date: Int,\n        id: String,\n        isRefund: Bool,\n        tonAmount: Int64,\n        type: TonTransactionType\n    ) {\n        self.date = date\n        self.id = id\n        self.isRefund = isRefund\n        self.tonAmount = tonAmount\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TonTransactionType.swift",
    "content": "//\n//  TonTransactionType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes type of transaction with Toncoins\npublic indirect enum TonTransactionType: Codable, Equatable, Hashable {\n\n    /// The transaction is a deposit of Toncoins from Fragment\n    case tonTransactionTypeFragmentDeposit(TonTransactionTypeFragmentDeposit)\n\n    /// The transaction is a withdrawal of earned Toncoins to Fragment\n    case tonTransactionTypeFragmentWithdrawal(TonTransactionTypeFragmentWithdrawal)\n\n    /// The transaction is a payment for a suggested post\n    case tonTransactionTypeSuggestedPostPayment(TonTransactionTypeSuggestedPostPayment)\n\n    /// The transaction is an offer of gift purchase\n    case tonTransactionTypeGiftPurchaseOffer(TonTransactionTypeGiftPurchaseOffer)\n\n    /// The transaction is a purchase of an upgraded gift for some user or channel\n    case tonTransactionTypeUpgradedGiftPurchase(TonTransactionTypeUpgradedGiftPurchase)\n\n    /// The transaction is a sale of an upgraded gift\n    case tonTransactionTypeUpgradedGiftSale(TonTransactionTypeUpgradedGiftSale)\n\n    /// The transaction is a payment for stake dice throw\n    case tonTransactionTypeStakeDiceStake\n\n    /// The transaction is a payment for successful stake dice throw\n    case tonTransactionTypeStakeDicePayout\n\n    /// The transaction is a transaction of an unsupported type\n    case tonTransactionTypeUnsupported\n\n\n    private enum Kind: String, Codable {\n        case tonTransactionTypeFragmentDeposit\n        case tonTransactionTypeFragmentWithdrawal\n        case tonTransactionTypeSuggestedPostPayment\n        case tonTransactionTypeGiftPurchaseOffer\n        case tonTransactionTypeUpgradedGiftPurchase\n        case tonTransactionTypeUpgradedGiftSale\n        case tonTransactionTypeStakeDiceStake\n        case tonTransactionTypeStakeDicePayout\n        case tonTransactionTypeUnsupported\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .tonTransactionTypeFragmentDeposit:\n            let value = try TonTransactionTypeFragmentDeposit(from: decoder)\n            self = .tonTransactionTypeFragmentDeposit(value)\n        case .tonTransactionTypeFragmentWithdrawal:\n            let value = try TonTransactionTypeFragmentWithdrawal(from: decoder)\n            self = .tonTransactionTypeFragmentWithdrawal(value)\n        case .tonTransactionTypeSuggestedPostPayment:\n            let value = try TonTransactionTypeSuggestedPostPayment(from: decoder)\n            self = .tonTransactionTypeSuggestedPostPayment(value)\n        case .tonTransactionTypeGiftPurchaseOffer:\n            let value = try TonTransactionTypeGiftPurchaseOffer(from: decoder)\n            self = .tonTransactionTypeGiftPurchaseOffer(value)\n        case .tonTransactionTypeUpgradedGiftPurchase:\n            let value = try TonTransactionTypeUpgradedGiftPurchase(from: decoder)\n            self = .tonTransactionTypeUpgradedGiftPurchase(value)\n        case .tonTransactionTypeUpgradedGiftSale:\n            let value = try TonTransactionTypeUpgradedGiftSale(from: decoder)\n            self = .tonTransactionTypeUpgradedGiftSale(value)\n        case .tonTransactionTypeStakeDiceStake:\n            self = .tonTransactionTypeStakeDiceStake\n        case .tonTransactionTypeStakeDicePayout:\n            self = .tonTransactionTypeStakeDicePayout\n        case .tonTransactionTypeUnsupported:\n            self = .tonTransactionTypeUnsupported\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .tonTransactionTypeFragmentDeposit(let value):\n            try container.encode(Kind.tonTransactionTypeFragmentDeposit, forKey: .type)\n            try value.encode(to: encoder)\n        case .tonTransactionTypeFragmentWithdrawal(let value):\n            try container.encode(Kind.tonTransactionTypeFragmentWithdrawal, forKey: .type)\n            try value.encode(to: encoder)\n        case .tonTransactionTypeSuggestedPostPayment(let value):\n            try container.encode(Kind.tonTransactionTypeSuggestedPostPayment, forKey: .type)\n            try value.encode(to: encoder)\n        case .tonTransactionTypeGiftPurchaseOffer(let value):\n            try container.encode(Kind.tonTransactionTypeGiftPurchaseOffer, forKey: .type)\n            try value.encode(to: encoder)\n        case .tonTransactionTypeUpgradedGiftPurchase(let value):\n            try container.encode(Kind.tonTransactionTypeUpgradedGiftPurchase, forKey: .type)\n            try value.encode(to: encoder)\n        case .tonTransactionTypeUpgradedGiftSale(let value):\n            try container.encode(Kind.tonTransactionTypeUpgradedGiftSale, forKey: .type)\n            try value.encode(to: encoder)\n        case .tonTransactionTypeStakeDiceStake:\n            try container.encode(Kind.tonTransactionTypeStakeDiceStake, forKey: .type)\n        case .tonTransactionTypeStakeDicePayout:\n            try container.encode(Kind.tonTransactionTypeStakeDicePayout, forKey: .type)\n        case .tonTransactionTypeUnsupported:\n            try container.encode(Kind.tonTransactionTypeUnsupported, forKey: .type)\n        }\n    }\n}\n\n/// The transaction is a deposit of Toncoins from Fragment\npublic struct TonTransactionTypeFragmentDeposit: Codable, Equatable, Hashable {\n\n    /// True, if the transaction is a gift from another user\n    public let isGift: Bool\n\n    /// The sticker to be shown in the transaction information; may be null if unknown\n    public let sticker: Sticker?\n\n\n    public init(\n        isGift: Bool,\n        sticker: Sticker?\n    ) {\n        self.isGift = isGift\n        self.sticker = sticker\n    }\n}\n\n/// The transaction is a withdrawal of earned Toncoins to Fragment\npublic struct TonTransactionTypeFragmentWithdrawal: Codable, Equatable, Hashable {\n\n    /// State of the withdrawal; may be null for refunds from Fragment\n    public let withdrawalState: RevenueWithdrawalState?\n\n\n    public init(withdrawalState: RevenueWithdrawalState?) {\n        self.withdrawalState = withdrawalState\n    }\n}\n\n/// The transaction is a payment for a suggested post\npublic struct TonTransactionTypeSuggestedPostPayment: Codable, Equatable, Hashable {\n\n    /// Identifier of the channel chat that posted the post\n    public let chatId: Int64\n\n\n    public init(chatId: Int64) {\n        self.chatId = chatId\n    }\n}\n\n/// The transaction is an offer of gift purchase\npublic struct TonTransactionTypeGiftPurchaseOffer: Codable, Equatable, Hashable {\n\n    /// The gift\n    public let gift: UpgradedGift\n\n\n    public init(gift: UpgradedGift) {\n        self.gift = gift\n    }\n}\n\n/// The transaction is a purchase of an upgraded gift for some user or channel\npublic struct TonTransactionTypeUpgradedGiftPurchase: Codable, Equatable, Hashable {\n\n    /// The gift\n    public let gift: UpgradedGift\n\n    /// Identifier of the user who sold the gift\n    public let userId: Int64\n\n\n    public init(\n        gift: UpgradedGift,\n        userId: Int64\n    ) {\n        self.gift = gift\n        self.userId = userId\n    }\n}\n\n/// The transaction is a sale of an upgraded gift\npublic struct TonTransactionTypeUpgradedGiftSale: Codable, Equatable, Hashable {\n\n    /// The number of Toncoins received by the Telegram for each 1000 Toncoins received by the seller of the gift\n    public let commissionPerMille: Int\n\n    /// The Toncoin amount that was received by the Telegram; in the smallest units of the currency\n    public let commissionToncoinAmount: Int64\n\n    /// The gift\n    public let gift: UpgradedGift\n\n    /// Identifier of the user who bought the gift\n    public let userId: Int64\n\n    /// True, if the gift was sold through a purchase offer\n    public let viaOffer: Bool\n\n\n    public init(\n        commissionPerMille: Int,\n        commissionToncoinAmount: Int64,\n        gift: UpgradedGift,\n        userId: Int64,\n        viaOffer: Bool\n    ) {\n        self.commissionPerMille = commissionPerMille\n        self.commissionToncoinAmount = commissionToncoinAmount\n        self.gift = gift\n        self.userId = userId\n        self.viaOffer = viaOffer\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TonTransactions.swift",
    "content": "//\n//  TonTransactions.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of Toncoin transactions\npublic struct TonTransactions: Codable, Equatable, Hashable {\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// The total amount of owned Toncoins\n    public let tonAmount: Int64\n\n    /// List of Toncoin transactions\n    public let transactions: [TonTransaction]\n\n\n    public init(\n        nextOffset: String,\n        tonAmount: Int64,\n        transactions: [TonTransaction]\n    ) {\n        self.nextOffset = nextOffset\n        self.tonAmount = tonAmount\n        self.transactions = transactions\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TopChatCategory.swift",
    "content": "//\n//  TopChatCategory.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents the categories of chats for which a list of frequently used chats can be retrieved\npublic indirect enum TopChatCategory: Codable, Equatable, Hashable {\n\n    /// A category containing frequently used private chats with non-bot users\n    case topChatCategoryUsers\n\n    /// A category containing frequently used private chats with bot users\n    case topChatCategoryBots\n\n    /// A category containing frequently used basic groups and supergroups\n    case topChatCategoryGroups\n\n    /// A category containing frequently used channels\n    case topChatCategoryChannels\n\n    /// A category containing frequently used chats with inline bots sorted by their usage in inline mode\n    case topChatCategoryInlineBots\n\n    /// A category containing frequently used chats with bots, which were used as guest bots\n    case topChatCategoryGuestBots\n\n    /// A category containing frequently used chats with bots, which Web Apps were opened\n    case topChatCategoryWebAppBots\n\n    /// A category containing frequently used chats used for calls\n    case topChatCategoryCalls\n\n    /// A category containing frequently used chats used to forward messages\n    case topChatCategoryForwardChats\n\n\n    private enum Kind: String, Codable {\n        case topChatCategoryUsers\n        case topChatCategoryBots\n        case topChatCategoryGroups\n        case topChatCategoryChannels\n        case topChatCategoryInlineBots\n        case topChatCategoryGuestBots\n        case topChatCategoryWebAppBots\n        case topChatCategoryCalls\n        case topChatCategoryForwardChats\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .topChatCategoryUsers:\n            self = .topChatCategoryUsers\n        case .topChatCategoryBots:\n            self = .topChatCategoryBots\n        case .topChatCategoryGroups:\n            self = .topChatCategoryGroups\n        case .topChatCategoryChannels:\n            self = .topChatCategoryChannels\n        case .topChatCategoryInlineBots:\n            self = .topChatCategoryInlineBots\n        case .topChatCategoryGuestBots:\n            self = .topChatCategoryGuestBots\n        case .topChatCategoryWebAppBots:\n            self = .topChatCategoryWebAppBots\n        case .topChatCategoryCalls:\n            self = .topChatCategoryCalls\n        case .topChatCategoryForwardChats:\n            self = .topChatCategoryForwardChats\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .topChatCategoryUsers:\n            try container.encode(Kind.topChatCategoryUsers, forKey: .type)\n        case .topChatCategoryBots:\n            try container.encode(Kind.topChatCategoryBots, forKey: .type)\n        case .topChatCategoryGroups:\n            try container.encode(Kind.topChatCategoryGroups, forKey: .type)\n        case .topChatCategoryChannels:\n            try container.encode(Kind.topChatCategoryChannels, forKey: .type)\n        case .topChatCategoryInlineBots:\n            try container.encode(Kind.topChatCategoryInlineBots, forKey: .type)\n        case .topChatCategoryGuestBots:\n            try container.encode(Kind.topChatCategoryGuestBots, forKey: .type)\n        case .topChatCategoryWebAppBots:\n            try container.encode(Kind.topChatCategoryWebAppBots, forKey: .type)\n        case .topChatCategoryCalls:\n            try container.encode(Kind.topChatCategoryCalls, forKey: .type)\n        case .topChatCategoryForwardChats:\n            try container.encode(Kind.topChatCategoryForwardChats, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TransactionDirection.swift",
    "content": "//\n//  TransactionDirection.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes direction of transactions in a transaction list\npublic indirect enum TransactionDirection: Codable, Equatable, Hashable {\n\n    /// The transaction is incoming and increases the amount of owned currency\n    case transactionDirectionIncoming\n\n    /// The transaction is outgoing and decreases the amount of owned currency\n    case transactionDirectionOutgoing\n\n\n    private enum Kind: String, Codable {\n        case transactionDirectionIncoming\n        case transactionDirectionOutgoing\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .transactionDirectionIncoming:\n            self = .transactionDirectionIncoming\n        case .transactionDirectionOutgoing:\n            self = .transactionDirectionOutgoing\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .transactionDirectionIncoming:\n            try container.encode(Kind.transactionDirectionIncoming, forKey: .type)\n        case .transactionDirectionOutgoing:\n            try container.encode(Kind.transactionDirectionOutgoing, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TransferBusinessAccountStars.swift",
    "content": "//\n//  TransferBusinessAccountStars.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Transfers Telegram Stars from the business account to the business bot; for bots only\npublic struct TransferBusinessAccountStars: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection\n    public let businessConnectionId: String?\n\n    /// Number of Telegram Stars to transfer\n    public let starCount: Int64?\n\n\n    public init(\n        businessConnectionId: String?,\n        starCount: Int64?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.starCount = starCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TransferChatOwnership.swift",
    "content": "//\n//  TransferChatOwnership.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Changes the owner of a chat; for basic groups, supergroups and channel chats only; requires owner privileges in the chat. Use the method canTransferOwnership to check whether the ownership can be transferred from the current session\npublic struct TransferChatOwnership: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// The 2-step verification password of the current user\n    public let password: String?\n\n    /// Identifier of the user to which transfer the ownership. The ownership can't be transferred to a bot or to a deleted user\n    public let userId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        password: String?,\n        userId: Int64?\n    ) {\n        self.chatId = chatId\n        self.password = password\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TransferGift.swift",
    "content": "//\n//  TransferGift.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Sends an upgraded gift to another user or channel chat\npublic struct TransferGift: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection on behalf of which to send the request; for bots only\n    public let businessConnectionId: String?\n\n    /// Identifier of the user or the channel chat that will receive the gift\n    public let newOwnerId: MessageSender?\n\n    /// Identifier of the gift\n    public let receivedGiftId: String?\n\n    /// The Telegram Star amount required to pay for the transfer\n    public let starCount: Int64?\n\n\n    public init(\n        businessConnectionId: String?,\n        newOwnerId: MessageSender?,\n        receivedGiftId: String?,\n        starCount: Int64?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.newOwnerId = newOwnerId\n        self.receivedGiftId = receivedGiftId\n        self.starCount = starCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TranslateMessageText.swift",
    "content": "//\n//  TranslateMessageText.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Extracts text or caption of the given message and translates it to the given language; must not be used in secret chats. If the current user is a Telegram Premium user, then text formatting is preserved\npublic struct TranslateMessageText: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to which the message belongs\n    public let chatId: Int64?\n\n    /// Identifier of the message\n    public let messageId: Int64?\n\n    /// Language code of the language to which the message is translated. See translateText.to_language_code for the list of supported values\n    public let toLanguageCode: String?\n\n    /// Tone of the translation; see translateText.tone for the list of supported values\n    public let tone: String?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?,\n        toLanguageCode: String?,\n        tone: String?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.toLanguageCode = toLanguageCode\n        self.tone = tone\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TranslateText.swift",
    "content": "//\n//  TranslateText.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Translates a text to the given language; must not be used in secret chats. If the current user is a Telegram Premium user, then text formatting is preserved\npublic struct TranslateText: Codable, Equatable, Hashable {\n\n    /// Text to translate\n    public let text: FormattedText?\n\n    /// Language code of the language to which the message is translated. Must be one of \"af\", \"sq\", \"am\", \"ar\", \"hy\", \"az\", \"eu\", \"be\", \"bn\", \"bs\", \"bg\", \"ca\", \"ceb\", \"zh-CN\", \"zh\", \"zh-Hans\", \"zh-TW\", \"zh-Hant\", \"co\", \"hr\", \"cs\", \"da\", \"nl\", \"en\", \"eo\", \"et\", \"fi\", \"fr\", \"fy\", \"gl\", \"ka\", \"de\", \"el\", \"gu\", \"ht\", \"ha\", \"haw\", \"he\", \"iw\", \"hi\", \"hmn\", \"hu\", \"is\", \"ig\", \"id\", \"in\", \"ga\", \"it\", \"ja\", \"jv\", \"kn\", \"kk\", \"km\", \"rw\", \"ko\", \"ku\", \"ky\", \"lo\", \"la\", \"lv\", \"lt\", \"lb\", \"mk\", \"mg\", \"ms\", \"ml\", \"mt\", \"mi\", \"mr\", \"mn\", \"my\", \"ne\", \"no\", \"ny\", \"or\", \"ps\", \"fa\", \"pl\", \"pt\", \"pa\", \"ro\", \"ru\", \"sm\", \"gd\", \"sr\", \"st\", \"sn\", \"sd\", \"si\", \"sk\", \"sl\", \"so\", \"es\", \"su\", \"sw\", \"sv\", \"tl\", \"tg\", \"ta\", \"tt\", \"te\", \"th\", \"tr\", \"tk\", \"uk\", \"ur\", \"ug\", \"uz\", \"vi\", \"cy\", \"xh\", \"yi\", \"ji\", \"yo\", \"zu\"\n    public let toLanguageCode: String?\n\n    /// Tone of the translation; must be one of \"\", \"formal\", \"neutral\", \"casual\"; defaults to \"neutral\"\n    public let tone: String?\n\n\n    public init(\n        text: FormattedText?,\n        toLanguageCode: String?,\n        tone: String?\n    ) {\n        self.text = text\n        self.toLanguageCode = toLanguageCode\n        self.tone = tone\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/TrendingStickerSets.swift",
    "content": "//\n//  TrendingStickerSets.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of trending sticker sets\npublic struct TrendingStickerSets: Codable, Equatable, Hashable {\n\n    /// True, if the list contains sticker sets with premium stickers\n    public let isPremium: Bool\n\n    /// List of trending sticker sets\n    public let sets: [StickerSetInfo]\n\n    /// Approximate total number of trending sticker sets\n    public let totalCount: Int\n\n\n    public init(\n        isPremium: Bool,\n        sets: [StickerSetInfo],\n        totalCount: Int\n    ) {\n        self.isPremium = isPremium\n        self.sets = sets\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UnconfirmedSession.swift",
    "content": "//\n//  UnconfirmedSession.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about an unconfirmed session\npublic struct UnconfirmedSession: Codable, Equatable, Hashable, Identifiable {\n\n    /// Model of the device that was used for the session creation, as provided by the application\n    public let deviceModel: String\n\n    /// Session identifier\n    public let id: TdInt64\n\n    /// A human-readable description of the location from which the session was created, based on the IP address\n    public let location: String\n\n    /// Point in time (Unix timestamp) when the user has logged in\n    public let logInDate: Int\n\n\n    public init(\n        deviceModel: String,\n        id: TdInt64,\n        location: String,\n        logInDate: Int\n    ) {\n        self.deviceModel = deviceModel\n        self.id = id\n        self.location = location\n        self.logInDate = logInDate\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UnpinAllChatMessages.swift",
    "content": "//\n//  UnpinAllChatMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes all pinned messages from a chat; requires can_pin_messages member right if the chat is a basic group or supergroup, or can_edit_messages administrator right if the chat is a channel\npublic struct UnpinAllChatMessages: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UnpinAllDirectMessagesChatTopicMessages.swift",
    "content": "//\n//  UnpinAllDirectMessagesChatTopicMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes all pinned messages from the topic in a channel direct messages chat administered by the current user\npublic struct UnpinAllDirectMessagesChatTopicMessages: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n    /// Topic identifier\n    public let topicId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        topicId: Int64?\n    ) {\n        self.chatId = chatId\n        self.topicId = topicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UnpinAllForumTopicMessages.swift",
    "content": "//\n//  UnpinAllForumTopicMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes all pinned messages from a topic in a forum supergroup chat or a chat with a bot with topics; requires can_pin_messages member right in the supergroup\npublic struct UnpinAllForumTopicMessages: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n    /// Forum topic identifier in which messages will be unpinned\n    public let forumTopicId: Int?\n\n\n    public init(\n        chatId: Int64?,\n        forumTopicId: Int?\n    ) {\n        self.chatId = chatId\n        self.forumTopicId = forumTopicId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UnpinAllMessageThreadMessages.swift",
    "content": "//\n//  UnpinAllMessageThreadMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.53-bdec6af5\n//  https://github.com/tdlib/td/tree/bdec6af5\n//\n\nimport Foundation\n\n\n/// Removes all pinned messages from a forum topic; requires can_pin_messages member right in the supergroup\npublic struct UnpinAllMessageThreadMessages: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n    /// Message thread identifier in which messages will be unpinned\n    public let messageThreadId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageThreadId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageThreadId = messageThreadId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UnpinChatMessage.swift",
    "content": "//\n//  UnpinChatMessage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Removes a pinned message from a chat; requires can_pin_messages member right if the chat is a basic group or supergroup, or can_edit_messages administrator right if the chat is a channel\npublic struct UnpinChatMessage: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64?\n\n    /// Identifier of the removed pinned message\n    public let messageId: Int64?\n\n\n    public init(\n        chatId: Int64?,\n        messageId: Int64?\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UnreadReaction.swift",
    "content": "//\n//  UnreadReaction.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about an unread reaction to a message\npublic struct UnreadReaction: Codable, Equatable, Hashable {\n\n    /// True, if the reaction was added with a big animation\n    public let isBig: Bool\n\n    /// Identifier of the sender, added the reaction\n    public let senderId: MessageSender\n\n    /// Type of the reaction\n    public let type: ReactionType\n\n\n    public init(\n        isBig: Bool,\n        senderId: MessageSender,\n        type: ReactionType\n    ) {\n        self.isBig = isBig\n        self.senderId = senderId\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Update.swift",
    "content": "//\n//  Update.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains notifications about data changes\npublic indirect enum Update: Codable, Equatable, Hashable {\n\n    /// The user authorization state has changed\n    case updateAuthorizationState(UpdateAuthorizationState)\n\n    /// A new message was received; can also be an outgoing message\n    case updateNewMessage(UpdateNewMessage)\n\n    /// A request to send a message has reached the Telegram server. This doesn't mean that the message will be sent successfully. This update is sent only if the option \"use_quick_ack\" is set to true. This update may be sent multiple times for the same message\n    case updateMessageSendAcknowledged(UpdateMessageSendAcknowledged)\n\n    /// A message has been successfully sent\n    case updateMessageSendSucceeded(UpdateMessageSendSucceeded)\n\n    /// A message failed to send. Be aware that some messages being sent can be irrecoverably deleted, in which case updateDeleteMessages will be received instead of this update\n    case updateMessageSendFailed(UpdateMessageSendFailed)\n\n    /// The message content has changed\n    case updateMessageContent(UpdateMessageContent)\n\n    /// A message was edited. Changes in the message content will come in a separate updateMessageContent\n    case updateMessageEdited(UpdateMessageEdited)\n\n    /// The message pinned state was changed\n    case updateMessageIsPinned(UpdateMessageIsPinned)\n\n    /// The information about interactions with a message has changed\n    case updateMessageInteractionInfo(UpdateMessageInteractionInfo)\n\n    /// The message content was opened. Updates voice note messages to \"listened\", video note messages to \"viewed\" and starts the self-destruct timer\n    case updateMessageContentOpened(UpdateMessageContentOpened)\n\n    /// A message with an unread mention was read\n    case updateMessageMentionRead(UpdateMessageMentionRead)\n\n    /// The list of unread reactions added to a message was changed\n    case updateMessageUnreadReactions(UpdateMessageUnreadReactions)\n\n    /// Unread votes were added or removed from a poll message\n    case updateMessageContainsUnreadPollVotes(UpdateMessageContainsUnreadPollVotes)\n\n    /// A fact-check added to a message was changed\n    case updateMessageFactCheck(UpdateMessageFactCheck)\n\n    /// Information about suggested post of a message was changed\n    case updateMessageSuggestedPostInfo(UpdateMessageSuggestedPostInfo)\n\n    /// A message with a live location was viewed. When the update is received, the application is expected to update the live location\n    case updateMessageLiveLocationViewed(UpdateMessageLiveLocationViewed)\n\n    /// An automatically scheduled message with video has been successfully sent after conversion\n    case updateVideoPublished(UpdateVideoPublished)\n\n    /// A new chat has been loaded/created. This update is guaranteed to come before the chat identifier is returned to the application. The chat field changes will be reported through separate updates\n    case updateNewChat(UpdateNewChat)\n\n    /// The title of a chat was changed\n    case updateChatTitle(UpdateChatTitle)\n\n    /// A chat photo was changed\n    case updateChatPhoto(UpdateChatPhoto)\n\n    /// Chat accent colors have changed\n    case updateChatAccentColors(UpdateChatAccentColors)\n\n    /// Chat permissions were changed\n    case updateChatPermissions(UpdateChatPermissions)\n\n    /// The last message of a chat was changed\n    case updateChatLastMessage(UpdateChatLastMessage)\n\n    /// The position of a chat in a chat list has changed. An updateChatLastMessage or updateChatDraftMessage update might be sent instead of the update\n    case updateChatPosition(UpdateChatPosition)\n\n    /// A chat was added to a chat list\n    case updateChatAddedToList(UpdateChatAddedToList)\n\n    /// A chat was removed from a chat list\n    case updateChatRemovedFromList(UpdateChatRemovedFromList)\n\n    /// Incoming messages were read or the number of unread messages has been changed\n    case updateChatReadInbox(UpdateChatReadInbox)\n\n    /// Outgoing messages were read\n    case updateChatReadOutbox(UpdateChatReadOutbox)\n\n    /// The chat action bar was changed\n    case updateChatActionBar(UpdateChatActionBar)\n\n    /// The bar for managing business bot was changed in a chat\n    case updateChatBusinessBotManageBar(UpdateChatBusinessBotManageBar)\n\n    /// The chat available reactions were changed\n    case updateChatAvailableReactions(UpdateChatAvailableReactions)\n\n    /// A chat draft has changed. Be aware that the update may come in the currently opened chat but with old content of the draft. If the user has changed the content of the draft, this update mustn't be applied\n    case updateChatDraftMessage(UpdateChatDraftMessage)\n\n    /// Chat emoji status has changed\n    case updateChatEmojiStatus(UpdateChatEmojiStatus)\n\n    /// The message sender that is selected to send messages in a chat has changed\n    case updateChatMessageSender(UpdateChatMessageSender)\n\n    /// The message auto-delete or self-destruct timer setting for a chat was changed\n    case updateChatMessageAutoDeleteTime(UpdateChatMessageAutoDeleteTime)\n\n    /// Notification settings for a chat were changed\n    case updateChatNotificationSettings(UpdateChatNotificationSettings)\n\n    /// The chat pending join requests were changed\n    case updateChatPendingJoinRequests(UpdateChatPendingJoinRequests)\n\n    /// The chat reply markup was changed\n    case updateChatReplyMarkup(UpdateChatReplyMarkup)\n\n    /// The chat background was changed\n    case updateChatBackground(UpdateChatBackground)\n\n    /// The chat theme was changed\n    case updateChatTheme(UpdateChatTheme)\n\n    /// The chat unread_mention_count has changed\n    case updateChatUnreadMentionCount(UpdateChatUnreadMentionCount)\n\n    /// The chat unread_reaction_count has changed\n    case updateChatUnreadReactionCount(UpdateChatUnreadReactionCount)\n\n    /// The chat unread_poll_vote_count has changed\n    case updateChatUnreadPollVoteCount(UpdateChatUnreadPollVoteCount)\n\n    /// A chat video chat state has changed\n    case updateChatVideoChat(UpdateChatVideoChat)\n\n    /// The value of the default disable_notification parameter, used when a message is sent to the chat, was changed\n    case updateChatDefaultDisableNotification(UpdateChatDefaultDisableNotification)\n\n    /// A chat content was allowed or restricted for saving\n    case updateChatHasProtectedContent(UpdateChatHasProtectedContent)\n\n    /// Translation of chat messages was enabled or disabled\n    case updateChatIsTranslatable(UpdateChatIsTranslatable)\n\n    /// A chat was marked as unread or was read\n    case updateChatIsMarkedAsUnread(UpdateChatIsMarkedAsUnread)\n\n    /// A chat default appearance has changed\n    case updateChatViewAsTopics(UpdateChatViewAsTopics)\n\n    /// A chat was blocked or unblocked\n    case updateChatBlockList(UpdateChatBlockList)\n\n    /// A chat's has_scheduled_messages field has changed\n    case updateChatHasScheduledMessages(UpdateChatHasScheduledMessages)\n\n    /// The list of chat folders or a chat folder has changed\n    case updateChatFolders(UpdateChatFolders)\n\n    /// The number of online group members has changed. This update with non-zero number of online group members is sent only for currently opened chats. There is no guarantee that it is sent just after the number of online users has changed\n    case updateChatOnlineMemberCount(UpdateChatOnlineMemberCount)\n\n    /// Basic information about a Saved Messages topic has changed. This update is guaranteed to come before the topic identifier is returned to the application\n    case updateSavedMessagesTopic(UpdateSavedMessagesTopic)\n\n    /// Number of Saved Messages topics has changed\n    case updateSavedMessagesTopicCount(UpdateSavedMessagesTopicCount)\n\n    /// Basic information about a topic in a channel direct messages chat administered by the current user has changed. This update is guaranteed to come before the topic identifier is returned to the application\n    case updateDirectMessagesChatTopic(UpdateDirectMessagesChatTopic)\n\n    /// Number of messages in a topic has changed; for Saved Messages and channel direct messages chat topics only\n    case updateTopicMessageCount(UpdateTopicMessageCount)\n\n    /// Basic information about a quick reply shortcut has changed. This update is guaranteed to come before the quick shortcut name is returned to the application\n    case updateQuickReplyShortcut(UpdateQuickReplyShortcut)\n\n    /// A quick reply shortcut and all its messages were deleted\n    case updateQuickReplyShortcutDeleted(UpdateQuickReplyShortcutDeleted)\n\n    /// The list of quick reply shortcuts has changed\n    case updateQuickReplyShortcuts(UpdateQuickReplyShortcuts)\n\n    /// The list of quick reply shortcut messages has changed\n    case updateQuickReplyShortcutMessages(UpdateQuickReplyShortcutMessages)\n\n    /// Basic information about a topic in a forum chat was changed\n    case updateForumTopicInfo(UpdateForumTopicInfo)\n\n    /// Information about a topic in a forum chat was changed\n    case updateForumTopic(UpdateForumTopic)\n\n    /// Notification settings for some type of chats were updated\n    case updateScopeNotificationSettings(UpdateScopeNotificationSettings)\n\n    /// Notification settings for reactions were updated\n    case updateReactionNotificationSettings(UpdateReactionNotificationSettings)\n\n    /// A notification was changed\n    case updateNotification(UpdateNotification)\n\n    /// A list of active notifications in a notification group has changed\n    case updateNotificationGroup(UpdateNotificationGroup)\n\n    /// Contains active notifications that were shown on previous application launches. This update is sent only if the message database is used. In that case it comes once before any updateNotification and updateNotificationGroup update\n    case updateActiveNotifications(UpdateActiveNotifications)\n\n    /// Describes whether there are some pending notification updates. Can be used to prevent application from killing, while there are some pending notifications\n    case updateHavePendingNotifications(UpdateHavePendingNotifications)\n\n    /// Some messages were deleted\n    case updateDeleteMessages(UpdateDeleteMessages)\n\n    /// A message sender activity in the chat has changed\n    case updateChatAction(UpdateChatAction)\n\n    /// A new pending text message was received in a chat with a bot. The message must be shown in the chat for at most getOption(\"pending_text_message_period\") seconds, replace any other pending message with the same draft_id, and be deleted whenever any incoming message from the bot in the message thread is received\n    case updatePendingTextMessage(UpdatePendingTextMessage)\n\n    /// The user went online or offline\n    case updateUserStatus(UpdateUserStatus)\n\n    /// Some data of a user has changed. This update is guaranteed to come before the user identifier is returned to the application\n    case updateUser(UpdateUser)\n\n    /// Some data of a basic group has changed. This update is guaranteed to come before the basic group identifier is returned to the application\n    case updateBasicGroup(UpdateBasicGroup)\n\n    /// Some data of a supergroup or a channel has changed. This update is guaranteed to come before the supergroup identifier is returned to the application\n    case updateSupergroup(UpdateSupergroup)\n\n    /// Some data of a secret chat has changed. This update is guaranteed to come before the secret chat identifier is returned to the application\n    case updateSecretChat(UpdateSecretChat)\n\n    /// Some data in userFullInfo has been changed\n    case updateUserFullInfo(UpdateUserFullInfo)\n\n    /// Some data in basicGroupFullInfo has been changed\n    case updateBasicGroupFullInfo(UpdateBasicGroupFullInfo)\n\n    /// Some data in supergroupFullInfo has been changed\n    case updateSupergroupFullInfo(UpdateSupergroupFullInfo)\n\n    /// A service notification from the server was received. Upon receiving this the application must show a popup with the content of the notification\n    case updateServiceNotification(UpdateServiceNotification)\n\n    /// An OAuth authorization request was received\n    case updateNewOauthRequest(UpdateNewOauthRequest)\n\n    /// Information about a file was updated\n    case updateFile(UpdateFile)\n\n    /// The file generation process needs to be started by the application. Use setFileGenerationProgress and finishFileGeneration to generate the file\n    case updateFileGenerationStart(UpdateFileGenerationStart)\n\n    /// File generation is no longer needed\n    case updateFileGenerationStop(UpdateFileGenerationStop)\n\n    /// The state of the file download list has changed\n    case updateFileDownloads(UpdateFileDownloads)\n\n    /// A file was added to the file download list. This update is sent only after file download list is loaded for the first time\n    case updateFileAddedToDownloads(UpdateFileAddedToDownloads)\n\n    /// A file download was changed. This update is sent only after file download list is loaded for the first time\n    case updateFileDownload(UpdateFileDownload)\n\n    /// A file was removed from the file download list. This update is sent only after file download list is loaded for the first time\n    case updateFileRemovedFromDownloads(UpdateFileRemovedFromDownloads)\n\n    /// A request can't be completed unless application verification is performed; for official mobile applications only. The method setApplicationVerificationToken must be called once the verification is completed or failed\n    case updateApplicationVerificationRequired(UpdateApplicationVerificationRequired)\n\n    /// A request can't be completed unless reCAPTCHA verification is performed; for official mobile applications only. The method setApplicationVerificationToken must be called once the verification is completed or failed\n    case updateApplicationRecaptchaVerificationRequired(UpdateApplicationRecaptchaVerificationRequired)\n\n    /// New call was created or information about a call was updated\n    case updateCall(UpdateCall)\n\n    /// Information about a group call was updated\n    case updateGroupCall(UpdateGroupCall)\n\n    /// Information about a group call participant was changed. The updates are sent only after the group call is received through getGroupCall and only if the call is joined or being joined\n    case updateGroupCallParticipant(UpdateGroupCallParticipant)\n\n    /// The list of group call participants that can send and receive encrypted call data has changed; for group calls not bound to a chat only\n    case updateGroupCallParticipants(UpdateGroupCallParticipants)\n\n    /// The verification state of an encrypted group call has changed; for group calls not bound to a chat only\n    case updateGroupCallVerificationState(UpdateGroupCallVerificationState)\n\n    /// A new message was received in a group call\n    case updateNewGroupCallMessage(UpdateNewGroupCallMessage)\n\n    /// A new paid reaction was received in a live story group call\n    case updateNewGroupCallPaidReaction(UpdateNewGroupCallPaidReaction)\n\n    /// A group call message failed to send\n    case updateGroupCallMessageSendFailed(UpdateGroupCallMessageSendFailed)\n\n    /// Some group call messages were deleted\n    case updateGroupCallMessagesDeleted(UpdateGroupCallMessagesDeleted)\n\n    /// The list of top donors in live story group call has changed\n    case updateLiveStoryTopDonors(UpdateLiveStoryTopDonors)\n\n    /// New call signaling data arrived\n    case updateNewCallSignalingData(UpdateNewCallSignalingData)\n\n    /// State of a gift auction was updated\n    case updateGiftAuctionState(UpdateGiftAuctionState)\n\n    /// The list of auctions in which participate the current user has changed\n    case updateActiveGiftAuctions(UpdateActiveGiftAuctions)\n\n    /// Some privacy setting rules have been changed\n    case updateUserPrivacySettingRules(UpdateUserPrivacySettingRules)\n\n    /// Number of unread messages in a chat list has changed. This update is sent only if the message database is used\n    case updateUnreadMessageCount(UpdateUnreadMessageCount)\n\n    /// Number of unread chats, i.e. with unread messages or marked as unread, has changed. This update is sent only if the message database is used\n    case updateUnreadChatCount(UpdateUnreadChatCount)\n\n    /// A story was changed\n    case updateStory(UpdateStory)\n\n    /// A story became inaccessible\n    case updateStoryDeleted(UpdateStoryDeleted)\n\n    /// A story has been successfully posted\n    case updateStoryPostSucceeded(UpdateStoryPostSucceeded)\n\n    /// A story failed to post. If the story posting is canceled, then updateStoryDeleted will be received instead of this update\n    case updateStoryPostFailed(UpdateStoryPostFailed)\n\n    /// The list of active stories posted by a specific chat has changed\n    case updateChatActiveStories(UpdateChatActiveStories)\n\n    /// Number of chats in a story list has changed\n    case updateStoryListChatCount(UpdateStoryListChatCount)\n\n    /// Story stealth mode settings have changed\n    case updateStoryStealthMode(UpdateStoryStealthMode)\n\n    /// Lists of bots which Mini Apps must be allowed to read text from clipboard and must be opened without a warning\n    case updateTrustedMiniAppBots(UpdateTrustedMiniAppBots)\n\n    /// An option changed its value\n    case updateOption(UpdateOption)\n\n    /// A sticker set has changed\n    case updateStickerSet(UpdateStickerSet)\n\n    /// The list of installed sticker sets was updated\n    case updateInstalledStickerSets(UpdateInstalledStickerSets)\n\n    /// The list of trending sticker sets was updated or some of them were viewed\n    case updateTrendingStickerSets(UpdateTrendingStickerSets)\n\n    /// The list of recently used stickers was updated\n    case updateRecentStickers(UpdateRecentStickers)\n\n    /// The list of favorite stickers was updated\n    case updateFavoriteStickers(UpdateFavoriteStickers)\n\n    /// The list of saved animations was updated\n    case updateSavedAnimations(UpdateSavedAnimations)\n\n    /// The list of saved notification sounds was updated. This update may not be sent until information about a notification sound was requested for the first time\n    case updateSavedNotificationSounds(UpdateSavedNotificationSounds)\n\n    /// The default background has changed\n    case updateDefaultBackground(UpdateDefaultBackground)\n\n    /// The list of available emoji chat themes has changed\n    case updateEmojiChatThemes(UpdateEmojiChatThemes)\n\n    /// The list of supported accent colors has changed\n    case updateAccentColors(UpdateAccentColors)\n\n    /// The list of supported accent colors for user profiles has changed\n    case updateProfileAccentColors(UpdateProfileAccentColors)\n\n    /// Some language pack strings have been updated\n    case updateLanguagePackStrings(UpdateLanguagePackStrings)\n\n    /// The connection state has changed. This update must be used only to show a human-readable description of the connection state\n    case updateConnectionState(UpdateConnectionState)\n\n    /// The freeze state of the current user's account has changed\n    case updateFreezeState(UpdateFreezeState)\n\n    /// The parameters for age verification of the current user's account has changed\n    case updateAgeVerificationParameters(UpdateAgeVerificationParameters)\n\n    /// New terms of service must be accepted by the user. If the terms of service are declined, then the deleteAccount method must be called with the reason \"Decline ToS update\"\n    case updateTermsOfService(UpdateTermsOfService)\n\n    /// The first unconfirmed session has changed\n    case updateUnconfirmedSession(UpdateUnconfirmedSession)\n\n    /// The list of bots added to attachment or side menu has changed\n    case updateAttachmentMenuBots(UpdateAttachmentMenuBots)\n\n    /// A message was sent by an opened Web App, so the Web App needs to be closed\n    case updateWebAppMessageSent(UpdateWebAppMessageSent)\n\n    /// The list of active emoji reactions has changed\n    case updateActiveEmojiReactions(UpdateActiveEmojiReactions)\n\n    /// The list of available message effects has changed\n    case updateAvailableMessageEffects(UpdateAvailableMessageEffects)\n\n    /// The type of default reaction has changed\n    case updateDefaultReactionType(UpdateDefaultReactionType)\n\n    /// The type of default paid reaction has changed\n    case updateDefaultPaidReactionType(UpdateDefaultPaidReactionType)\n\n    /// Tags used in Saved Messages or a Saved Messages topic have changed\n    case updateSavedMessagesTags(UpdateSavedMessagesTags)\n\n    /// The list of messages with active live location that need to be updated by the application has changed. The list is persistent across application restarts only if the message database is used\n    case updateActiveLiveLocationMessages(UpdateActiveLiveLocationMessages)\n\n    /// The number of Telegram Stars owned by the current user has changed\n    case updateOwnedStarCount(UpdateOwnedStarCount)\n\n    /// The number of Toncoins owned by the current user has changed\n    case updateOwnedTonCount(UpdateOwnedTonCount)\n\n    /// The revenue earned from sponsored messages in a chat has changed. If chat revenue screen is opened, then getChatRevenueTransactions may be called to fetch new transactions\n    case updateChatRevenueAmount(UpdateChatRevenueAmount)\n\n    /// The Telegram Star revenue earned by a user or a chat has changed. If Telegram Star transaction screen of the chat is opened, then getStarTransactions may be called to fetch new transactions\n    case updateStarRevenueStatus(UpdateStarRevenueStatus)\n\n    /// The Toncoin revenue earned by the current user has changed. If Toncoin transaction screen of the chat is opened, then getTonTransactions may be called to fetch new transactions\n    case updateTonRevenueStatus(UpdateTonRevenueStatus)\n\n    /// The parameters of speech recognition without Telegram Premium subscription has changed\n    case updateSpeechRecognitionTrial(UpdateSpeechRecognitionTrial)\n\n    /// The levels of live story group call messages have changed\n    case updateGroupCallMessageLevels(UpdateGroupCallMessageLevels)\n\n    /// The list of supported dice emojis has changed\n    case updateDiceEmojis(UpdateDiceEmojis)\n\n    /// The stake dice state has changed\n    case updateStakeDiceState(UpdateStakeDiceState)\n\n    /// Some animated emoji message was clicked and a big animated sticker must be played if the message is visible on the screen. chatActionWatchingAnimations with the text of the message needs to be sent if the sticker is played\n    case updateAnimatedEmojiMessageClicked(UpdateAnimatedEmojiMessageClicked)\n\n    /// The parameters of animation search through getOption(\"animation_search_bot_username\") bot has changed\n    case updateAnimationSearchParameters(UpdateAnimationSearchParameters)\n\n    /// The styles supported for text composition have changed\n    case updateTextCompositionStyles(UpdateTextCompositionStyles)\n\n    /// The list of suggested to the user actions has changed\n    case updateSuggestedActions(UpdateSuggestedActions)\n\n    /// Download or upload file speed for the user was limited, but it can be restored by subscription to Telegram Premium. The notification can be postponed until a being downloaded or uploaded file is visible to the user. Use getOption(\"premium_download_speedup\") or getOption(\"premium_upload_speedup\") to get expected speedup after subscription to Telegram Premium\n    case updateSpeedLimitNotification(UpdateSpeedLimitNotification)\n\n    /// The list of contacts that had birthdays recently or will have birthday soon has changed\n    case updateContactCloseBirthdays(UpdateContactCloseBirthdays)\n\n    /// Autosave settings for some type of chats were updated\n    case updateAutosaveSettings(UpdateAutosaveSettings)\n\n    /// A business connection has changed; for bots only\n    case updateBusinessConnection(UpdateBusinessConnection)\n\n    /// A new message was added to a business account; for bots only\n    case updateNewBusinessMessage(UpdateNewBusinessMessage)\n\n    /// A message in a business account was edited; for bots only\n    case updateBusinessMessageEdited(UpdateBusinessMessageEdited)\n\n    /// Messages in a business account were deleted; for bots only\n    case updateBusinessMessagesDeleted(UpdateBusinessMessagesDeleted)\n\n    /// A new incoming inline query; for bots only\n    case updateNewInlineQuery(UpdateNewInlineQuery)\n\n    /// The user has chosen a result of an inline query; for bots only\n    case updateNewChosenInlineResult(UpdateNewChosenInlineResult)\n\n    /// A new incoming guest query; for bots only\n    case updateNewGuestQuery(UpdateNewGuestQuery)\n\n    /// A new incoming callback query; for bots only\n    case updateNewCallbackQuery(UpdateNewCallbackQuery)\n\n    /// A new incoming callback query from a message sent via a bot; for bots only\n    case updateNewInlineCallbackQuery(UpdateNewInlineCallbackQuery)\n\n    /// A new incoming callback query from a business message; for bots only\n    case updateNewBusinessCallbackQuery(UpdateNewBusinessCallbackQuery)\n\n    /// A new incoming shipping query; for bots only. Only for invoices with flexible price\n    case updateNewShippingQuery(UpdateNewShippingQuery)\n\n    /// A new incoming pre-checkout query; for bots only. Contains full information about a checkout\n    case updateNewPreCheckoutQuery(UpdateNewPreCheckoutQuery)\n\n    /// A new incoming event; for bots only\n    case updateNewCustomEvent(UpdateNewCustomEvent)\n\n    /// A new incoming query; for bots only\n    case updateNewCustomQuery(UpdateNewCustomQuery)\n\n    /// A poll was updated; for bots only\n    case updatePoll(UpdatePoll)\n\n    /// A user changed the answer to a poll; for bots only\n    case updatePollAnswer(UpdatePollAnswer)\n\n    /// A bot that can be managed by the current bot was created or updated; for bots only\n    case updateManagedBot(UpdateManagedBot)\n\n    /// User rights changed in a chat; for bots only\n    case updateChatMember(UpdateChatMember)\n\n    /// A user sent a join request to a chat; for bots only\n    case updateNewChatJoinRequest(UpdateNewChatJoinRequest)\n\n    /// A chat boost has changed; for bots only\n    case updateChatBoost(UpdateChatBoost)\n\n    /// User changed its reactions on a message with public reactions; for bots only\n    case updateMessageReaction(UpdateMessageReaction)\n\n    /// Reactions added to a message with anonymous reactions have changed; for bots only\n    case updateMessageReactions(UpdateMessageReactions)\n\n    /// Paid media were purchased by a user; for bots only\n    case updatePaidMediaPurchased(UpdatePaidMediaPurchased)\n\n\n    private enum Kind: String, Codable {\n        case updateAuthorizationState\n        case updateNewMessage\n        case updateMessageSendAcknowledged\n        case updateMessageSendSucceeded\n        case updateMessageSendFailed\n        case updateMessageContent\n        case updateMessageEdited\n        case updateMessageIsPinned\n        case updateMessageInteractionInfo\n        case updateMessageContentOpened\n        case updateMessageMentionRead\n        case updateMessageUnreadReactions\n        case updateMessageContainsUnreadPollVotes\n        case updateMessageFactCheck\n        case updateMessageSuggestedPostInfo\n        case updateMessageLiveLocationViewed\n        case updateVideoPublished\n        case updateNewChat\n        case updateChatTitle\n        case updateChatPhoto\n        case updateChatAccentColors\n        case updateChatPermissions\n        case updateChatLastMessage\n        case updateChatPosition\n        case updateChatAddedToList\n        case updateChatRemovedFromList\n        case updateChatReadInbox\n        case updateChatReadOutbox\n        case updateChatActionBar\n        case updateChatBusinessBotManageBar\n        case updateChatAvailableReactions\n        case updateChatDraftMessage\n        case updateChatEmojiStatus\n        case updateChatMessageSender\n        case updateChatMessageAutoDeleteTime\n        case updateChatNotificationSettings\n        case updateChatPendingJoinRequests\n        case updateChatReplyMarkup\n        case updateChatBackground\n        case updateChatTheme\n        case updateChatUnreadMentionCount\n        case updateChatUnreadReactionCount\n        case updateChatUnreadPollVoteCount\n        case updateChatVideoChat\n        case updateChatDefaultDisableNotification\n        case updateChatHasProtectedContent\n        case updateChatIsTranslatable\n        case updateChatIsMarkedAsUnread\n        case updateChatViewAsTopics\n        case updateChatBlockList\n        case updateChatHasScheduledMessages\n        case updateChatFolders\n        case updateChatOnlineMemberCount\n        case updateSavedMessagesTopic\n        case updateSavedMessagesTopicCount\n        case updateDirectMessagesChatTopic\n        case updateTopicMessageCount\n        case updateQuickReplyShortcut\n        case updateQuickReplyShortcutDeleted\n        case updateQuickReplyShortcuts\n        case updateQuickReplyShortcutMessages\n        case updateForumTopicInfo\n        case updateForumTopic\n        case updateScopeNotificationSettings\n        case updateReactionNotificationSettings\n        case updateNotification\n        case updateNotificationGroup\n        case updateActiveNotifications\n        case updateHavePendingNotifications\n        case updateDeleteMessages\n        case updateChatAction\n        case updatePendingTextMessage\n        case updateUserStatus\n        case updateUser\n        case updateBasicGroup\n        case updateSupergroup\n        case updateSecretChat\n        case updateUserFullInfo\n        case updateBasicGroupFullInfo\n        case updateSupergroupFullInfo\n        case updateServiceNotification\n        case updateNewOauthRequest\n        case updateFile\n        case updateFileGenerationStart\n        case updateFileGenerationStop\n        case updateFileDownloads\n        case updateFileAddedToDownloads\n        case updateFileDownload\n        case updateFileRemovedFromDownloads\n        case updateApplicationVerificationRequired\n        case updateApplicationRecaptchaVerificationRequired\n        case updateCall\n        case updateGroupCall\n        case updateGroupCallParticipant\n        case updateGroupCallParticipants\n        case updateGroupCallVerificationState\n        case updateNewGroupCallMessage\n        case updateNewGroupCallPaidReaction\n        case updateGroupCallMessageSendFailed\n        case updateGroupCallMessagesDeleted\n        case updateLiveStoryTopDonors\n        case updateNewCallSignalingData\n        case updateGiftAuctionState\n        case updateActiveGiftAuctions\n        case updateUserPrivacySettingRules\n        case updateUnreadMessageCount\n        case updateUnreadChatCount\n        case updateStory\n        case updateStoryDeleted\n        case updateStoryPostSucceeded\n        case updateStoryPostFailed\n        case updateChatActiveStories\n        case updateStoryListChatCount\n        case updateStoryStealthMode\n        case updateTrustedMiniAppBots\n        case updateOption\n        case updateStickerSet\n        case updateInstalledStickerSets\n        case updateTrendingStickerSets\n        case updateRecentStickers\n        case updateFavoriteStickers\n        case updateSavedAnimations\n        case updateSavedNotificationSounds\n        case updateDefaultBackground\n        case updateEmojiChatThemes\n        case updateAccentColors\n        case updateProfileAccentColors\n        case updateLanguagePackStrings\n        case updateConnectionState\n        case updateFreezeState\n        case updateAgeVerificationParameters\n        case updateTermsOfService\n        case updateUnconfirmedSession\n        case updateAttachmentMenuBots\n        case updateWebAppMessageSent\n        case updateActiveEmojiReactions\n        case updateAvailableMessageEffects\n        case updateDefaultReactionType\n        case updateDefaultPaidReactionType\n        case updateSavedMessagesTags\n        case updateActiveLiveLocationMessages\n        case updateOwnedStarCount\n        case updateOwnedTonCount\n        case updateChatRevenueAmount\n        case updateStarRevenueStatus\n        case updateTonRevenueStatus\n        case updateSpeechRecognitionTrial\n        case updateGroupCallMessageLevels\n        case updateDiceEmojis\n        case updateStakeDiceState\n        case updateAnimatedEmojiMessageClicked\n        case updateAnimationSearchParameters\n        case updateTextCompositionStyles\n        case updateSuggestedActions\n        case updateSpeedLimitNotification\n        case updateContactCloseBirthdays\n        case updateAutosaveSettings\n        case updateBusinessConnection\n        case updateNewBusinessMessage\n        case updateBusinessMessageEdited\n        case updateBusinessMessagesDeleted\n        case updateNewInlineQuery\n        case updateNewChosenInlineResult\n        case updateNewGuestQuery\n        case updateNewCallbackQuery\n        case updateNewInlineCallbackQuery\n        case updateNewBusinessCallbackQuery\n        case updateNewShippingQuery\n        case updateNewPreCheckoutQuery\n        case updateNewCustomEvent\n        case updateNewCustomQuery\n        case updatePoll\n        case updatePollAnswer\n        case updateManagedBot\n        case updateChatMember\n        case updateNewChatJoinRequest\n        case updateChatBoost\n        case updateMessageReaction\n        case updateMessageReactions\n        case updatePaidMediaPurchased\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .updateAuthorizationState:\n            let value = try UpdateAuthorizationState(from: decoder)\n            self = .updateAuthorizationState(value)\n        case .updateNewMessage:\n            let value = try UpdateNewMessage(from: decoder)\n            self = .updateNewMessage(value)\n        case .updateMessageSendAcknowledged:\n            let value = try UpdateMessageSendAcknowledged(from: decoder)\n            self = .updateMessageSendAcknowledged(value)\n        case .updateMessageSendSucceeded:\n            let value = try UpdateMessageSendSucceeded(from: decoder)\n            self = .updateMessageSendSucceeded(value)\n        case .updateMessageSendFailed:\n            let value = try UpdateMessageSendFailed(from: decoder)\n            self = .updateMessageSendFailed(value)\n        case .updateMessageContent:\n            let value = try UpdateMessageContent(from: decoder)\n            self = .updateMessageContent(value)\n        case .updateMessageEdited:\n            let value = try UpdateMessageEdited(from: decoder)\n            self = .updateMessageEdited(value)\n        case .updateMessageIsPinned:\n            let value = try UpdateMessageIsPinned(from: decoder)\n            self = .updateMessageIsPinned(value)\n        case .updateMessageInteractionInfo:\n            let value = try UpdateMessageInteractionInfo(from: decoder)\n            self = .updateMessageInteractionInfo(value)\n        case .updateMessageContentOpened:\n            let value = try UpdateMessageContentOpened(from: decoder)\n            self = .updateMessageContentOpened(value)\n        case .updateMessageMentionRead:\n            let value = try UpdateMessageMentionRead(from: decoder)\n            self = .updateMessageMentionRead(value)\n        case .updateMessageUnreadReactions:\n            let value = try UpdateMessageUnreadReactions(from: decoder)\n            self = .updateMessageUnreadReactions(value)\n        case .updateMessageContainsUnreadPollVotes:\n            let value = try UpdateMessageContainsUnreadPollVotes(from: decoder)\n            self = .updateMessageContainsUnreadPollVotes(value)\n        case .updateMessageFactCheck:\n            let value = try UpdateMessageFactCheck(from: decoder)\n            self = .updateMessageFactCheck(value)\n        case .updateMessageSuggestedPostInfo:\n            let value = try UpdateMessageSuggestedPostInfo(from: decoder)\n            self = .updateMessageSuggestedPostInfo(value)\n        case .updateMessageLiveLocationViewed:\n            let value = try UpdateMessageLiveLocationViewed(from: decoder)\n            self = .updateMessageLiveLocationViewed(value)\n        case .updateVideoPublished:\n            let value = try UpdateVideoPublished(from: decoder)\n            self = .updateVideoPublished(value)\n        case .updateNewChat:\n            let value = try UpdateNewChat(from: decoder)\n            self = .updateNewChat(value)\n        case .updateChatTitle:\n            let value = try UpdateChatTitle(from: decoder)\n            self = .updateChatTitle(value)\n        case .updateChatPhoto:\n            let value = try UpdateChatPhoto(from: decoder)\n            self = .updateChatPhoto(value)\n        case .updateChatAccentColors:\n            let value = try UpdateChatAccentColors(from: decoder)\n            self = .updateChatAccentColors(value)\n        case .updateChatPermissions:\n            let value = try UpdateChatPermissions(from: decoder)\n            self = .updateChatPermissions(value)\n        case .updateChatLastMessage:\n            let value = try UpdateChatLastMessage(from: decoder)\n            self = .updateChatLastMessage(value)\n        case .updateChatPosition:\n            let value = try UpdateChatPosition(from: decoder)\n            self = .updateChatPosition(value)\n        case .updateChatAddedToList:\n            let value = try UpdateChatAddedToList(from: decoder)\n            self = .updateChatAddedToList(value)\n        case .updateChatRemovedFromList:\n            let value = try UpdateChatRemovedFromList(from: decoder)\n            self = .updateChatRemovedFromList(value)\n        case .updateChatReadInbox:\n            let value = try UpdateChatReadInbox(from: decoder)\n            self = .updateChatReadInbox(value)\n        case .updateChatReadOutbox:\n            let value = try UpdateChatReadOutbox(from: decoder)\n            self = .updateChatReadOutbox(value)\n        case .updateChatActionBar:\n            let value = try UpdateChatActionBar(from: decoder)\n            self = .updateChatActionBar(value)\n        case .updateChatBusinessBotManageBar:\n            let value = try UpdateChatBusinessBotManageBar(from: decoder)\n            self = .updateChatBusinessBotManageBar(value)\n        case .updateChatAvailableReactions:\n            let value = try UpdateChatAvailableReactions(from: decoder)\n            self = .updateChatAvailableReactions(value)\n        case .updateChatDraftMessage:\n            let value = try UpdateChatDraftMessage(from: decoder)\n            self = .updateChatDraftMessage(value)\n        case .updateChatEmojiStatus:\n            let value = try UpdateChatEmojiStatus(from: decoder)\n            self = .updateChatEmojiStatus(value)\n        case .updateChatMessageSender:\n            let value = try UpdateChatMessageSender(from: decoder)\n            self = .updateChatMessageSender(value)\n        case .updateChatMessageAutoDeleteTime:\n            let value = try UpdateChatMessageAutoDeleteTime(from: decoder)\n            self = .updateChatMessageAutoDeleteTime(value)\n        case .updateChatNotificationSettings:\n            let value = try UpdateChatNotificationSettings(from: decoder)\n            self = .updateChatNotificationSettings(value)\n        case .updateChatPendingJoinRequests:\n            let value = try UpdateChatPendingJoinRequests(from: decoder)\n            self = .updateChatPendingJoinRequests(value)\n        case .updateChatReplyMarkup:\n            let value = try UpdateChatReplyMarkup(from: decoder)\n            self = .updateChatReplyMarkup(value)\n        case .updateChatBackground:\n            let value = try UpdateChatBackground(from: decoder)\n            self = .updateChatBackground(value)\n        case .updateChatTheme:\n            let value = try UpdateChatTheme(from: decoder)\n            self = .updateChatTheme(value)\n        case .updateChatUnreadMentionCount:\n            let value = try UpdateChatUnreadMentionCount(from: decoder)\n            self = .updateChatUnreadMentionCount(value)\n        case .updateChatUnreadReactionCount:\n            let value = try UpdateChatUnreadReactionCount(from: decoder)\n            self = .updateChatUnreadReactionCount(value)\n        case .updateChatUnreadPollVoteCount:\n            let value = try UpdateChatUnreadPollVoteCount(from: decoder)\n            self = .updateChatUnreadPollVoteCount(value)\n        case .updateChatVideoChat:\n            let value = try UpdateChatVideoChat(from: decoder)\n            self = .updateChatVideoChat(value)\n        case .updateChatDefaultDisableNotification:\n            let value = try UpdateChatDefaultDisableNotification(from: decoder)\n            self = .updateChatDefaultDisableNotification(value)\n        case .updateChatHasProtectedContent:\n            let value = try UpdateChatHasProtectedContent(from: decoder)\n            self = .updateChatHasProtectedContent(value)\n        case .updateChatIsTranslatable:\n            let value = try UpdateChatIsTranslatable(from: decoder)\n            self = .updateChatIsTranslatable(value)\n        case .updateChatIsMarkedAsUnread:\n            let value = try UpdateChatIsMarkedAsUnread(from: decoder)\n            self = .updateChatIsMarkedAsUnread(value)\n        case .updateChatViewAsTopics:\n            let value = try UpdateChatViewAsTopics(from: decoder)\n            self = .updateChatViewAsTopics(value)\n        case .updateChatBlockList:\n            let value = try UpdateChatBlockList(from: decoder)\n            self = .updateChatBlockList(value)\n        case .updateChatHasScheduledMessages:\n            let value = try UpdateChatHasScheduledMessages(from: decoder)\n            self = .updateChatHasScheduledMessages(value)\n        case .updateChatFolders:\n            let value = try UpdateChatFolders(from: decoder)\n            self = .updateChatFolders(value)\n        case .updateChatOnlineMemberCount:\n            let value = try UpdateChatOnlineMemberCount(from: decoder)\n            self = .updateChatOnlineMemberCount(value)\n        case .updateSavedMessagesTopic:\n            let value = try UpdateSavedMessagesTopic(from: decoder)\n            self = .updateSavedMessagesTopic(value)\n        case .updateSavedMessagesTopicCount:\n            let value = try UpdateSavedMessagesTopicCount(from: decoder)\n            self = .updateSavedMessagesTopicCount(value)\n        case .updateDirectMessagesChatTopic:\n            let value = try UpdateDirectMessagesChatTopic(from: decoder)\n            self = .updateDirectMessagesChatTopic(value)\n        case .updateTopicMessageCount:\n            let value = try UpdateTopicMessageCount(from: decoder)\n            self = .updateTopicMessageCount(value)\n        case .updateQuickReplyShortcut:\n            let value = try UpdateQuickReplyShortcut(from: decoder)\n            self = .updateQuickReplyShortcut(value)\n        case .updateQuickReplyShortcutDeleted:\n            let value = try UpdateQuickReplyShortcutDeleted(from: decoder)\n            self = .updateQuickReplyShortcutDeleted(value)\n        case .updateQuickReplyShortcuts:\n            let value = try UpdateQuickReplyShortcuts(from: decoder)\n            self = .updateQuickReplyShortcuts(value)\n        case .updateQuickReplyShortcutMessages:\n            let value = try UpdateQuickReplyShortcutMessages(from: decoder)\n            self = .updateQuickReplyShortcutMessages(value)\n        case .updateForumTopicInfo:\n            let value = try UpdateForumTopicInfo(from: decoder)\n            self = .updateForumTopicInfo(value)\n        case .updateForumTopic:\n            let value = try UpdateForumTopic(from: decoder)\n            self = .updateForumTopic(value)\n        case .updateScopeNotificationSettings:\n            let value = try UpdateScopeNotificationSettings(from: decoder)\n            self = .updateScopeNotificationSettings(value)\n        case .updateReactionNotificationSettings:\n            let value = try UpdateReactionNotificationSettings(from: decoder)\n            self = .updateReactionNotificationSettings(value)\n        case .updateNotification:\n            let value = try UpdateNotification(from: decoder)\n            self = .updateNotification(value)\n        case .updateNotificationGroup:\n            let value = try UpdateNotificationGroup(from: decoder)\n            self = .updateNotificationGroup(value)\n        case .updateActiveNotifications:\n            let value = try UpdateActiveNotifications(from: decoder)\n            self = .updateActiveNotifications(value)\n        case .updateHavePendingNotifications:\n            let value = try UpdateHavePendingNotifications(from: decoder)\n            self = .updateHavePendingNotifications(value)\n        case .updateDeleteMessages:\n            let value = try UpdateDeleteMessages(from: decoder)\n            self = .updateDeleteMessages(value)\n        case .updateChatAction:\n            let value = try UpdateChatAction(from: decoder)\n            self = .updateChatAction(value)\n        case .updatePendingTextMessage:\n            let value = try UpdatePendingTextMessage(from: decoder)\n            self = .updatePendingTextMessage(value)\n        case .updateUserStatus:\n            let value = try UpdateUserStatus(from: decoder)\n            self = .updateUserStatus(value)\n        case .updateUser:\n            let value = try UpdateUser(from: decoder)\n            self = .updateUser(value)\n        case .updateBasicGroup:\n            let value = try UpdateBasicGroup(from: decoder)\n            self = .updateBasicGroup(value)\n        case .updateSupergroup:\n            let value = try UpdateSupergroup(from: decoder)\n            self = .updateSupergroup(value)\n        case .updateSecretChat:\n            let value = try UpdateSecretChat(from: decoder)\n            self = .updateSecretChat(value)\n        case .updateUserFullInfo:\n            let value = try UpdateUserFullInfo(from: decoder)\n            self = .updateUserFullInfo(value)\n        case .updateBasicGroupFullInfo:\n            let value = try UpdateBasicGroupFullInfo(from: decoder)\n            self = .updateBasicGroupFullInfo(value)\n        case .updateSupergroupFullInfo:\n            let value = try UpdateSupergroupFullInfo(from: decoder)\n            self = .updateSupergroupFullInfo(value)\n        case .updateServiceNotification:\n            let value = try UpdateServiceNotification(from: decoder)\n            self = .updateServiceNotification(value)\n        case .updateNewOauthRequest:\n            let value = try UpdateNewOauthRequest(from: decoder)\n            self = .updateNewOauthRequest(value)\n        case .updateFile:\n            let value = try UpdateFile(from: decoder)\n            self = .updateFile(value)\n        case .updateFileGenerationStart:\n            let value = try UpdateFileGenerationStart(from: decoder)\n            self = .updateFileGenerationStart(value)\n        case .updateFileGenerationStop:\n            let value = try UpdateFileGenerationStop(from: decoder)\n            self = .updateFileGenerationStop(value)\n        case .updateFileDownloads:\n            let value = try UpdateFileDownloads(from: decoder)\n            self = .updateFileDownloads(value)\n        case .updateFileAddedToDownloads:\n            let value = try UpdateFileAddedToDownloads(from: decoder)\n            self = .updateFileAddedToDownloads(value)\n        case .updateFileDownload:\n            let value = try UpdateFileDownload(from: decoder)\n            self = .updateFileDownload(value)\n        case .updateFileRemovedFromDownloads:\n            let value = try UpdateFileRemovedFromDownloads(from: decoder)\n            self = .updateFileRemovedFromDownloads(value)\n        case .updateApplicationVerificationRequired:\n            let value = try UpdateApplicationVerificationRequired(from: decoder)\n            self = .updateApplicationVerificationRequired(value)\n        case .updateApplicationRecaptchaVerificationRequired:\n            let value = try UpdateApplicationRecaptchaVerificationRequired(from: decoder)\n            self = .updateApplicationRecaptchaVerificationRequired(value)\n        case .updateCall:\n            let value = try UpdateCall(from: decoder)\n            self = .updateCall(value)\n        case .updateGroupCall:\n            let value = try UpdateGroupCall(from: decoder)\n            self = .updateGroupCall(value)\n        case .updateGroupCallParticipant:\n            let value = try UpdateGroupCallParticipant(from: decoder)\n            self = .updateGroupCallParticipant(value)\n        case .updateGroupCallParticipants:\n            let value = try UpdateGroupCallParticipants(from: decoder)\n            self = .updateGroupCallParticipants(value)\n        case .updateGroupCallVerificationState:\n            let value = try UpdateGroupCallVerificationState(from: decoder)\n            self = .updateGroupCallVerificationState(value)\n        case .updateNewGroupCallMessage:\n            let value = try UpdateNewGroupCallMessage(from: decoder)\n            self = .updateNewGroupCallMessage(value)\n        case .updateNewGroupCallPaidReaction:\n            let value = try UpdateNewGroupCallPaidReaction(from: decoder)\n            self = .updateNewGroupCallPaidReaction(value)\n        case .updateGroupCallMessageSendFailed:\n            let value = try UpdateGroupCallMessageSendFailed(from: decoder)\n            self = .updateGroupCallMessageSendFailed(value)\n        case .updateGroupCallMessagesDeleted:\n            let value = try UpdateGroupCallMessagesDeleted(from: decoder)\n            self = .updateGroupCallMessagesDeleted(value)\n        case .updateLiveStoryTopDonors:\n            let value = try UpdateLiveStoryTopDonors(from: decoder)\n            self = .updateLiveStoryTopDonors(value)\n        case .updateNewCallSignalingData:\n            let value = try UpdateNewCallSignalingData(from: decoder)\n            self = .updateNewCallSignalingData(value)\n        case .updateGiftAuctionState:\n            let value = try UpdateGiftAuctionState(from: decoder)\n            self = .updateGiftAuctionState(value)\n        case .updateActiveGiftAuctions:\n            let value = try UpdateActiveGiftAuctions(from: decoder)\n            self = .updateActiveGiftAuctions(value)\n        case .updateUserPrivacySettingRules:\n            let value = try UpdateUserPrivacySettingRules(from: decoder)\n            self = .updateUserPrivacySettingRules(value)\n        case .updateUnreadMessageCount:\n            let value = try UpdateUnreadMessageCount(from: decoder)\n            self = .updateUnreadMessageCount(value)\n        case .updateUnreadChatCount:\n            let value = try UpdateUnreadChatCount(from: decoder)\n            self = .updateUnreadChatCount(value)\n        case .updateStory:\n            let value = try UpdateStory(from: decoder)\n            self = .updateStory(value)\n        case .updateStoryDeleted:\n            let value = try UpdateStoryDeleted(from: decoder)\n            self = .updateStoryDeleted(value)\n        case .updateStoryPostSucceeded:\n            let value = try UpdateStoryPostSucceeded(from: decoder)\n            self = .updateStoryPostSucceeded(value)\n        case .updateStoryPostFailed:\n            let value = try UpdateStoryPostFailed(from: decoder)\n            self = .updateStoryPostFailed(value)\n        case .updateChatActiveStories:\n            let value = try UpdateChatActiveStories(from: decoder)\n            self = .updateChatActiveStories(value)\n        case .updateStoryListChatCount:\n            let value = try UpdateStoryListChatCount(from: decoder)\n            self = .updateStoryListChatCount(value)\n        case .updateStoryStealthMode:\n            let value = try UpdateStoryStealthMode(from: decoder)\n            self = .updateStoryStealthMode(value)\n        case .updateTrustedMiniAppBots:\n            let value = try UpdateTrustedMiniAppBots(from: decoder)\n            self = .updateTrustedMiniAppBots(value)\n        case .updateOption:\n            let value = try UpdateOption(from: decoder)\n            self = .updateOption(value)\n        case .updateStickerSet:\n            let value = try UpdateStickerSet(from: decoder)\n            self = .updateStickerSet(value)\n        case .updateInstalledStickerSets:\n            let value = try UpdateInstalledStickerSets(from: decoder)\n            self = .updateInstalledStickerSets(value)\n        case .updateTrendingStickerSets:\n            let value = try UpdateTrendingStickerSets(from: decoder)\n            self = .updateTrendingStickerSets(value)\n        case .updateRecentStickers:\n            let value = try UpdateRecentStickers(from: decoder)\n            self = .updateRecentStickers(value)\n        case .updateFavoriteStickers:\n            let value = try UpdateFavoriteStickers(from: decoder)\n            self = .updateFavoriteStickers(value)\n        case .updateSavedAnimations:\n            let value = try UpdateSavedAnimations(from: decoder)\n            self = .updateSavedAnimations(value)\n        case .updateSavedNotificationSounds:\n            let value = try UpdateSavedNotificationSounds(from: decoder)\n            self = .updateSavedNotificationSounds(value)\n        case .updateDefaultBackground:\n            let value = try UpdateDefaultBackground(from: decoder)\n            self = .updateDefaultBackground(value)\n        case .updateEmojiChatThemes:\n            let value = try UpdateEmojiChatThemes(from: decoder)\n            self = .updateEmojiChatThemes(value)\n        case .updateAccentColors:\n            let value = try UpdateAccentColors(from: decoder)\n            self = .updateAccentColors(value)\n        case .updateProfileAccentColors:\n            let value = try UpdateProfileAccentColors(from: decoder)\n            self = .updateProfileAccentColors(value)\n        case .updateLanguagePackStrings:\n            let value = try UpdateLanguagePackStrings(from: decoder)\n            self = .updateLanguagePackStrings(value)\n        case .updateConnectionState:\n            let value = try UpdateConnectionState(from: decoder)\n            self = .updateConnectionState(value)\n        case .updateFreezeState:\n            let value = try UpdateFreezeState(from: decoder)\n            self = .updateFreezeState(value)\n        case .updateAgeVerificationParameters:\n            let value = try UpdateAgeVerificationParameters(from: decoder)\n            self = .updateAgeVerificationParameters(value)\n        case .updateTermsOfService:\n            let value = try UpdateTermsOfService(from: decoder)\n            self = .updateTermsOfService(value)\n        case .updateUnconfirmedSession:\n            let value = try UpdateUnconfirmedSession(from: decoder)\n            self = .updateUnconfirmedSession(value)\n        case .updateAttachmentMenuBots:\n            let value = try UpdateAttachmentMenuBots(from: decoder)\n            self = .updateAttachmentMenuBots(value)\n        case .updateWebAppMessageSent:\n            let value = try UpdateWebAppMessageSent(from: decoder)\n            self = .updateWebAppMessageSent(value)\n        case .updateActiveEmojiReactions:\n            let value = try UpdateActiveEmojiReactions(from: decoder)\n            self = .updateActiveEmojiReactions(value)\n        case .updateAvailableMessageEffects:\n            let value = try UpdateAvailableMessageEffects(from: decoder)\n            self = .updateAvailableMessageEffects(value)\n        case .updateDefaultReactionType:\n            let value = try UpdateDefaultReactionType(from: decoder)\n            self = .updateDefaultReactionType(value)\n        case .updateDefaultPaidReactionType:\n            let value = try UpdateDefaultPaidReactionType(from: decoder)\n            self = .updateDefaultPaidReactionType(value)\n        case .updateSavedMessagesTags:\n            let value = try UpdateSavedMessagesTags(from: decoder)\n            self = .updateSavedMessagesTags(value)\n        case .updateActiveLiveLocationMessages:\n            let value = try UpdateActiveLiveLocationMessages(from: decoder)\n            self = .updateActiveLiveLocationMessages(value)\n        case .updateOwnedStarCount:\n            let value = try UpdateOwnedStarCount(from: decoder)\n            self = .updateOwnedStarCount(value)\n        case .updateOwnedTonCount:\n            let value = try UpdateOwnedTonCount(from: decoder)\n            self = .updateOwnedTonCount(value)\n        case .updateChatRevenueAmount:\n            let value = try UpdateChatRevenueAmount(from: decoder)\n            self = .updateChatRevenueAmount(value)\n        case .updateStarRevenueStatus:\n            let value = try UpdateStarRevenueStatus(from: decoder)\n            self = .updateStarRevenueStatus(value)\n        case .updateTonRevenueStatus:\n            let value = try UpdateTonRevenueStatus(from: decoder)\n            self = .updateTonRevenueStatus(value)\n        case .updateSpeechRecognitionTrial:\n            let value = try UpdateSpeechRecognitionTrial(from: decoder)\n            self = .updateSpeechRecognitionTrial(value)\n        case .updateGroupCallMessageLevels:\n            let value = try UpdateGroupCallMessageLevels(from: decoder)\n            self = .updateGroupCallMessageLevels(value)\n        case .updateDiceEmojis:\n            let value = try UpdateDiceEmojis(from: decoder)\n            self = .updateDiceEmojis(value)\n        case .updateStakeDiceState:\n            let value = try UpdateStakeDiceState(from: decoder)\n            self = .updateStakeDiceState(value)\n        case .updateAnimatedEmojiMessageClicked:\n            let value = try UpdateAnimatedEmojiMessageClicked(from: decoder)\n            self = .updateAnimatedEmojiMessageClicked(value)\n        case .updateAnimationSearchParameters:\n            let value = try UpdateAnimationSearchParameters(from: decoder)\n            self = .updateAnimationSearchParameters(value)\n        case .updateTextCompositionStyles:\n            let value = try UpdateTextCompositionStyles(from: decoder)\n            self = .updateTextCompositionStyles(value)\n        case .updateSuggestedActions:\n            let value = try UpdateSuggestedActions(from: decoder)\n            self = .updateSuggestedActions(value)\n        case .updateSpeedLimitNotification:\n            let value = try UpdateSpeedLimitNotification(from: decoder)\n            self = .updateSpeedLimitNotification(value)\n        case .updateContactCloseBirthdays:\n            let value = try UpdateContactCloseBirthdays(from: decoder)\n            self = .updateContactCloseBirthdays(value)\n        case .updateAutosaveSettings:\n            let value = try UpdateAutosaveSettings(from: decoder)\n            self = .updateAutosaveSettings(value)\n        case .updateBusinessConnection:\n            let value = try UpdateBusinessConnection(from: decoder)\n            self = .updateBusinessConnection(value)\n        case .updateNewBusinessMessage:\n            let value = try UpdateNewBusinessMessage(from: decoder)\n            self = .updateNewBusinessMessage(value)\n        case .updateBusinessMessageEdited:\n            let value = try UpdateBusinessMessageEdited(from: decoder)\n            self = .updateBusinessMessageEdited(value)\n        case .updateBusinessMessagesDeleted:\n            let value = try UpdateBusinessMessagesDeleted(from: decoder)\n            self = .updateBusinessMessagesDeleted(value)\n        case .updateNewInlineQuery:\n            let value = try UpdateNewInlineQuery(from: decoder)\n            self = .updateNewInlineQuery(value)\n        case .updateNewChosenInlineResult:\n            let value = try UpdateNewChosenInlineResult(from: decoder)\n            self = .updateNewChosenInlineResult(value)\n        case .updateNewGuestQuery:\n            let value = try UpdateNewGuestQuery(from: decoder)\n            self = .updateNewGuestQuery(value)\n        case .updateNewCallbackQuery:\n            let value = try UpdateNewCallbackQuery(from: decoder)\n            self = .updateNewCallbackQuery(value)\n        case .updateNewInlineCallbackQuery:\n            let value = try UpdateNewInlineCallbackQuery(from: decoder)\n            self = .updateNewInlineCallbackQuery(value)\n        case .updateNewBusinessCallbackQuery:\n            let value = try UpdateNewBusinessCallbackQuery(from: decoder)\n            self = .updateNewBusinessCallbackQuery(value)\n        case .updateNewShippingQuery:\n            let value = try UpdateNewShippingQuery(from: decoder)\n            self = .updateNewShippingQuery(value)\n        case .updateNewPreCheckoutQuery:\n            let value = try UpdateNewPreCheckoutQuery(from: decoder)\n            self = .updateNewPreCheckoutQuery(value)\n        case .updateNewCustomEvent:\n            let value = try UpdateNewCustomEvent(from: decoder)\n            self = .updateNewCustomEvent(value)\n        case .updateNewCustomQuery:\n            let value = try UpdateNewCustomQuery(from: decoder)\n            self = .updateNewCustomQuery(value)\n        case .updatePoll:\n            let value = try UpdatePoll(from: decoder)\n            self = .updatePoll(value)\n        case .updatePollAnswer:\n            let value = try UpdatePollAnswer(from: decoder)\n            self = .updatePollAnswer(value)\n        case .updateManagedBot:\n            let value = try UpdateManagedBot(from: decoder)\n            self = .updateManagedBot(value)\n        case .updateChatMember:\n            let value = try UpdateChatMember(from: decoder)\n            self = .updateChatMember(value)\n        case .updateNewChatJoinRequest:\n            let value = try UpdateNewChatJoinRequest(from: decoder)\n            self = .updateNewChatJoinRequest(value)\n        case .updateChatBoost:\n            let value = try UpdateChatBoost(from: decoder)\n            self = .updateChatBoost(value)\n        case .updateMessageReaction:\n            let value = try UpdateMessageReaction(from: decoder)\n            self = .updateMessageReaction(value)\n        case .updateMessageReactions:\n            let value = try UpdateMessageReactions(from: decoder)\n            self = .updateMessageReactions(value)\n        case .updatePaidMediaPurchased:\n            let value = try UpdatePaidMediaPurchased(from: decoder)\n            self = .updatePaidMediaPurchased(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .updateAuthorizationState(let value):\n            try container.encode(Kind.updateAuthorizationState, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateNewMessage(let value):\n            try container.encode(Kind.updateNewMessage, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateMessageSendAcknowledged(let value):\n            try container.encode(Kind.updateMessageSendAcknowledged, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateMessageSendSucceeded(let value):\n            try container.encode(Kind.updateMessageSendSucceeded, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateMessageSendFailed(let value):\n            try container.encode(Kind.updateMessageSendFailed, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateMessageContent(let value):\n            try container.encode(Kind.updateMessageContent, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateMessageEdited(let value):\n            try container.encode(Kind.updateMessageEdited, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateMessageIsPinned(let value):\n            try container.encode(Kind.updateMessageIsPinned, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateMessageInteractionInfo(let value):\n            try container.encode(Kind.updateMessageInteractionInfo, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateMessageContentOpened(let value):\n            try container.encode(Kind.updateMessageContentOpened, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateMessageMentionRead(let value):\n            try container.encode(Kind.updateMessageMentionRead, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateMessageUnreadReactions(let value):\n            try container.encode(Kind.updateMessageUnreadReactions, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateMessageContainsUnreadPollVotes(let value):\n            try container.encode(Kind.updateMessageContainsUnreadPollVotes, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateMessageFactCheck(let value):\n            try container.encode(Kind.updateMessageFactCheck, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateMessageSuggestedPostInfo(let value):\n            try container.encode(Kind.updateMessageSuggestedPostInfo, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateMessageLiveLocationViewed(let value):\n            try container.encode(Kind.updateMessageLiveLocationViewed, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateVideoPublished(let value):\n            try container.encode(Kind.updateVideoPublished, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateNewChat(let value):\n            try container.encode(Kind.updateNewChat, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatTitle(let value):\n            try container.encode(Kind.updateChatTitle, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatPhoto(let value):\n            try container.encode(Kind.updateChatPhoto, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatAccentColors(let value):\n            try container.encode(Kind.updateChatAccentColors, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatPermissions(let value):\n            try container.encode(Kind.updateChatPermissions, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatLastMessage(let value):\n            try container.encode(Kind.updateChatLastMessage, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatPosition(let value):\n            try container.encode(Kind.updateChatPosition, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatAddedToList(let value):\n            try container.encode(Kind.updateChatAddedToList, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatRemovedFromList(let value):\n            try container.encode(Kind.updateChatRemovedFromList, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatReadInbox(let value):\n            try container.encode(Kind.updateChatReadInbox, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatReadOutbox(let value):\n            try container.encode(Kind.updateChatReadOutbox, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatActionBar(let value):\n            try container.encode(Kind.updateChatActionBar, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatBusinessBotManageBar(let value):\n            try container.encode(Kind.updateChatBusinessBotManageBar, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatAvailableReactions(let value):\n            try container.encode(Kind.updateChatAvailableReactions, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatDraftMessage(let value):\n            try container.encode(Kind.updateChatDraftMessage, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatEmojiStatus(let value):\n            try container.encode(Kind.updateChatEmojiStatus, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatMessageSender(let value):\n            try container.encode(Kind.updateChatMessageSender, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatMessageAutoDeleteTime(let value):\n            try container.encode(Kind.updateChatMessageAutoDeleteTime, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatNotificationSettings(let value):\n            try container.encode(Kind.updateChatNotificationSettings, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatPendingJoinRequests(let value):\n            try container.encode(Kind.updateChatPendingJoinRequests, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatReplyMarkup(let value):\n            try container.encode(Kind.updateChatReplyMarkup, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatBackground(let value):\n            try container.encode(Kind.updateChatBackground, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatTheme(let value):\n            try container.encode(Kind.updateChatTheme, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatUnreadMentionCount(let value):\n            try container.encode(Kind.updateChatUnreadMentionCount, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatUnreadReactionCount(let value):\n            try container.encode(Kind.updateChatUnreadReactionCount, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatUnreadPollVoteCount(let value):\n            try container.encode(Kind.updateChatUnreadPollVoteCount, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatVideoChat(let value):\n            try container.encode(Kind.updateChatVideoChat, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatDefaultDisableNotification(let value):\n            try container.encode(Kind.updateChatDefaultDisableNotification, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatHasProtectedContent(let value):\n            try container.encode(Kind.updateChatHasProtectedContent, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatIsTranslatable(let value):\n            try container.encode(Kind.updateChatIsTranslatable, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatIsMarkedAsUnread(let value):\n            try container.encode(Kind.updateChatIsMarkedAsUnread, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatViewAsTopics(let value):\n            try container.encode(Kind.updateChatViewAsTopics, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatBlockList(let value):\n            try container.encode(Kind.updateChatBlockList, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatHasScheduledMessages(let value):\n            try container.encode(Kind.updateChatHasScheduledMessages, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatFolders(let value):\n            try container.encode(Kind.updateChatFolders, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatOnlineMemberCount(let value):\n            try container.encode(Kind.updateChatOnlineMemberCount, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateSavedMessagesTopic(let value):\n            try container.encode(Kind.updateSavedMessagesTopic, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateSavedMessagesTopicCount(let value):\n            try container.encode(Kind.updateSavedMessagesTopicCount, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateDirectMessagesChatTopic(let value):\n            try container.encode(Kind.updateDirectMessagesChatTopic, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateTopicMessageCount(let value):\n            try container.encode(Kind.updateTopicMessageCount, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateQuickReplyShortcut(let value):\n            try container.encode(Kind.updateQuickReplyShortcut, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateQuickReplyShortcutDeleted(let value):\n            try container.encode(Kind.updateQuickReplyShortcutDeleted, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateQuickReplyShortcuts(let value):\n            try container.encode(Kind.updateQuickReplyShortcuts, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateQuickReplyShortcutMessages(let value):\n            try container.encode(Kind.updateQuickReplyShortcutMessages, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateForumTopicInfo(let value):\n            try container.encode(Kind.updateForumTopicInfo, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateForumTopic(let value):\n            try container.encode(Kind.updateForumTopic, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateScopeNotificationSettings(let value):\n            try container.encode(Kind.updateScopeNotificationSettings, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateReactionNotificationSettings(let value):\n            try container.encode(Kind.updateReactionNotificationSettings, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateNotification(let value):\n            try container.encode(Kind.updateNotification, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateNotificationGroup(let value):\n            try container.encode(Kind.updateNotificationGroup, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateActiveNotifications(let value):\n            try container.encode(Kind.updateActiveNotifications, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateHavePendingNotifications(let value):\n            try container.encode(Kind.updateHavePendingNotifications, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateDeleteMessages(let value):\n            try container.encode(Kind.updateDeleteMessages, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatAction(let value):\n            try container.encode(Kind.updateChatAction, forKey: .type)\n            try value.encode(to: encoder)\n        case .updatePendingTextMessage(let value):\n            try container.encode(Kind.updatePendingTextMessage, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateUserStatus(let value):\n            try container.encode(Kind.updateUserStatus, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateUser(let value):\n            try container.encode(Kind.updateUser, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateBasicGroup(let value):\n            try container.encode(Kind.updateBasicGroup, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateSupergroup(let value):\n            try container.encode(Kind.updateSupergroup, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateSecretChat(let value):\n            try container.encode(Kind.updateSecretChat, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateUserFullInfo(let value):\n            try container.encode(Kind.updateUserFullInfo, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateBasicGroupFullInfo(let value):\n            try container.encode(Kind.updateBasicGroupFullInfo, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateSupergroupFullInfo(let value):\n            try container.encode(Kind.updateSupergroupFullInfo, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateServiceNotification(let value):\n            try container.encode(Kind.updateServiceNotification, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateNewOauthRequest(let value):\n            try container.encode(Kind.updateNewOauthRequest, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateFile(let value):\n            try container.encode(Kind.updateFile, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateFileGenerationStart(let value):\n            try container.encode(Kind.updateFileGenerationStart, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateFileGenerationStop(let value):\n            try container.encode(Kind.updateFileGenerationStop, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateFileDownloads(let value):\n            try container.encode(Kind.updateFileDownloads, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateFileAddedToDownloads(let value):\n            try container.encode(Kind.updateFileAddedToDownloads, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateFileDownload(let value):\n            try container.encode(Kind.updateFileDownload, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateFileRemovedFromDownloads(let value):\n            try container.encode(Kind.updateFileRemovedFromDownloads, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateApplicationVerificationRequired(let value):\n            try container.encode(Kind.updateApplicationVerificationRequired, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateApplicationRecaptchaVerificationRequired(let value):\n            try container.encode(Kind.updateApplicationRecaptchaVerificationRequired, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateCall(let value):\n            try container.encode(Kind.updateCall, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateGroupCall(let value):\n            try container.encode(Kind.updateGroupCall, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateGroupCallParticipant(let value):\n            try container.encode(Kind.updateGroupCallParticipant, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateGroupCallParticipants(let value):\n            try container.encode(Kind.updateGroupCallParticipants, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateGroupCallVerificationState(let value):\n            try container.encode(Kind.updateGroupCallVerificationState, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateNewGroupCallMessage(let value):\n            try container.encode(Kind.updateNewGroupCallMessage, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateNewGroupCallPaidReaction(let value):\n            try container.encode(Kind.updateNewGroupCallPaidReaction, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateGroupCallMessageSendFailed(let value):\n            try container.encode(Kind.updateGroupCallMessageSendFailed, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateGroupCallMessagesDeleted(let value):\n            try container.encode(Kind.updateGroupCallMessagesDeleted, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateLiveStoryTopDonors(let value):\n            try container.encode(Kind.updateLiveStoryTopDonors, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateNewCallSignalingData(let value):\n            try container.encode(Kind.updateNewCallSignalingData, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateGiftAuctionState(let value):\n            try container.encode(Kind.updateGiftAuctionState, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateActiveGiftAuctions(let value):\n            try container.encode(Kind.updateActiveGiftAuctions, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateUserPrivacySettingRules(let value):\n            try container.encode(Kind.updateUserPrivacySettingRules, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateUnreadMessageCount(let value):\n            try container.encode(Kind.updateUnreadMessageCount, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateUnreadChatCount(let value):\n            try container.encode(Kind.updateUnreadChatCount, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateStory(let value):\n            try container.encode(Kind.updateStory, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateStoryDeleted(let value):\n            try container.encode(Kind.updateStoryDeleted, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateStoryPostSucceeded(let value):\n            try container.encode(Kind.updateStoryPostSucceeded, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateStoryPostFailed(let value):\n            try container.encode(Kind.updateStoryPostFailed, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatActiveStories(let value):\n            try container.encode(Kind.updateChatActiveStories, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateStoryListChatCount(let value):\n            try container.encode(Kind.updateStoryListChatCount, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateStoryStealthMode(let value):\n            try container.encode(Kind.updateStoryStealthMode, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateTrustedMiniAppBots(let value):\n            try container.encode(Kind.updateTrustedMiniAppBots, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateOption(let value):\n            try container.encode(Kind.updateOption, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateStickerSet(let value):\n            try container.encode(Kind.updateStickerSet, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateInstalledStickerSets(let value):\n            try container.encode(Kind.updateInstalledStickerSets, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateTrendingStickerSets(let value):\n            try container.encode(Kind.updateTrendingStickerSets, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateRecentStickers(let value):\n            try container.encode(Kind.updateRecentStickers, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateFavoriteStickers(let value):\n            try container.encode(Kind.updateFavoriteStickers, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateSavedAnimations(let value):\n            try container.encode(Kind.updateSavedAnimations, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateSavedNotificationSounds(let value):\n            try container.encode(Kind.updateSavedNotificationSounds, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateDefaultBackground(let value):\n            try container.encode(Kind.updateDefaultBackground, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateEmojiChatThemes(let value):\n            try container.encode(Kind.updateEmojiChatThemes, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateAccentColors(let value):\n            try container.encode(Kind.updateAccentColors, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateProfileAccentColors(let value):\n            try container.encode(Kind.updateProfileAccentColors, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateLanguagePackStrings(let value):\n            try container.encode(Kind.updateLanguagePackStrings, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateConnectionState(let value):\n            try container.encode(Kind.updateConnectionState, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateFreezeState(let value):\n            try container.encode(Kind.updateFreezeState, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateAgeVerificationParameters(let value):\n            try container.encode(Kind.updateAgeVerificationParameters, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateTermsOfService(let value):\n            try container.encode(Kind.updateTermsOfService, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateUnconfirmedSession(let value):\n            try container.encode(Kind.updateUnconfirmedSession, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateAttachmentMenuBots(let value):\n            try container.encode(Kind.updateAttachmentMenuBots, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateWebAppMessageSent(let value):\n            try container.encode(Kind.updateWebAppMessageSent, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateActiveEmojiReactions(let value):\n            try container.encode(Kind.updateActiveEmojiReactions, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateAvailableMessageEffects(let value):\n            try container.encode(Kind.updateAvailableMessageEffects, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateDefaultReactionType(let value):\n            try container.encode(Kind.updateDefaultReactionType, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateDefaultPaidReactionType(let value):\n            try container.encode(Kind.updateDefaultPaidReactionType, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateSavedMessagesTags(let value):\n            try container.encode(Kind.updateSavedMessagesTags, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateActiveLiveLocationMessages(let value):\n            try container.encode(Kind.updateActiveLiveLocationMessages, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateOwnedStarCount(let value):\n            try container.encode(Kind.updateOwnedStarCount, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateOwnedTonCount(let value):\n            try container.encode(Kind.updateOwnedTonCount, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatRevenueAmount(let value):\n            try container.encode(Kind.updateChatRevenueAmount, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateStarRevenueStatus(let value):\n            try container.encode(Kind.updateStarRevenueStatus, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateTonRevenueStatus(let value):\n            try container.encode(Kind.updateTonRevenueStatus, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateSpeechRecognitionTrial(let value):\n            try container.encode(Kind.updateSpeechRecognitionTrial, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateGroupCallMessageLevels(let value):\n            try container.encode(Kind.updateGroupCallMessageLevels, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateDiceEmojis(let value):\n            try container.encode(Kind.updateDiceEmojis, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateStakeDiceState(let value):\n            try container.encode(Kind.updateStakeDiceState, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateAnimatedEmojiMessageClicked(let value):\n            try container.encode(Kind.updateAnimatedEmojiMessageClicked, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateAnimationSearchParameters(let value):\n            try container.encode(Kind.updateAnimationSearchParameters, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateTextCompositionStyles(let value):\n            try container.encode(Kind.updateTextCompositionStyles, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateSuggestedActions(let value):\n            try container.encode(Kind.updateSuggestedActions, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateSpeedLimitNotification(let value):\n            try container.encode(Kind.updateSpeedLimitNotification, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateContactCloseBirthdays(let value):\n            try container.encode(Kind.updateContactCloseBirthdays, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateAutosaveSettings(let value):\n            try container.encode(Kind.updateAutosaveSettings, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateBusinessConnection(let value):\n            try container.encode(Kind.updateBusinessConnection, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateNewBusinessMessage(let value):\n            try container.encode(Kind.updateNewBusinessMessage, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateBusinessMessageEdited(let value):\n            try container.encode(Kind.updateBusinessMessageEdited, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateBusinessMessagesDeleted(let value):\n            try container.encode(Kind.updateBusinessMessagesDeleted, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateNewInlineQuery(let value):\n            try container.encode(Kind.updateNewInlineQuery, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateNewChosenInlineResult(let value):\n            try container.encode(Kind.updateNewChosenInlineResult, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateNewGuestQuery(let value):\n            try container.encode(Kind.updateNewGuestQuery, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateNewCallbackQuery(let value):\n            try container.encode(Kind.updateNewCallbackQuery, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateNewInlineCallbackQuery(let value):\n            try container.encode(Kind.updateNewInlineCallbackQuery, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateNewBusinessCallbackQuery(let value):\n            try container.encode(Kind.updateNewBusinessCallbackQuery, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateNewShippingQuery(let value):\n            try container.encode(Kind.updateNewShippingQuery, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateNewPreCheckoutQuery(let value):\n            try container.encode(Kind.updateNewPreCheckoutQuery, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateNewCustomEvent(let value):\n            try container.encode(Kind.updateNewCustomEvent, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateNewCustomQuery(let value):\n            try container.encode(Kind.updateNewCustomQuery, forKey: .type)\n            try value.encode(to: encoder)\n        case .updatePoll(let value):\n            try container.encode(Kind.updatePoll, forKey: .type)\n            try value.encode(to: encoder)\n        case .updatePollAnswer(let value):\n            try container.encode(Kind.updatePollAnswer, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateManagedBot(let value):\n            try container.encode(Kind.updateManagedBot, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatMember(let value):\n            try container.encode(Kind.updateChatMember, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateNewChatJoinRequest(let value):\n            try container.encode(Kind.updateNewChatJoinRequest, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateChatBoost(let value):\n            try container.encode(Kind.updateChatBoost, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateMessageReaction(let value):\n            try container.encode(Kind.updateMessageReaction, forKey: .type)\n            try value.encode(to: encoder)\n        case .updateMessageReactions(let value):\n            try container.encode(Kind.updateMessageReactions, forKey: .type)\n            try value.encode(to: encoder)\n        case .updatePaidMediaPurchased(let value):\n            try container.encode(Kind.updatePaidMediaPurchased, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The user authorization state has changed\npublic struct UpdateAuthorizationState: Codable, Equatable, Hashable {\n\n    /// New authorization state\n    public let authorizationState: AuthorizationState\n\n\n    public init(authorizationState: AuthorizationState) {\n        self.authorizationState = authorizationState\n    }\n}\n\n/// A new message was received; can also be an outgoing message\npublic struct UpdateNewMessage: Codable, Equatable, Hashable {\n\n    /// The new message\n    public let message: Message\n\n\n    public init(message: Message) {\n        self.message = message\n    }\n}\n\n/// A request to send a message has reached the Telegram server. This doesn't mean that the message will be sent successfully. This update is sent only if the option \"use_quick_ack\" is set to true. This update may be sent multiple times for the same message\npublic struct UpdateMessageSendAcknowledged: Codable, Equatable, Hashable {\n\n    /// The chat identifier of the sent message\n    public let chatId: Int64\n\n    /// A temporary message identifier\n    public let messageId: Int64\n\n\n    public init(\n        chatId: Int64,\n        messageId: Int64\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n/// A message has been successfully sent\npublic struct UpdateMessageSendSucceeded: Codable, Equatable, Hashable {\n\n    /// The sent message. Almost any field of the new message can be different from the corresponding field of the original message. For example, the field scheduling_state may change, making the message scheduled, or non-scheduled\n    public let message: Message\n\n    /// The previous temporary message identifier\n    public let oldMessageId: Int64\n\n\n    public init(\n        message: Message,\n        oldMessageId: Int64\n    ) {\n        self.message = message\n        self.oldMessageId = oldMessageId\n    }\n}\n\n/// A message failed to send. Be aware that some messages being sent can be irrecoverably deleted, in which case updateDeleteMessages will be received instead of this update\npublic struct UpdateMessageSendFailed: Codable, Equatable, Hashable {\n\n    /// The cause of the message sending failure\n    public let error: Error\n\n    /// The failed to send message\n    public let message: Message\n\n    /// The previous temporary message identifier\n    public let oldMessageId: Int64\n\n\n    public init(\n        error: Error,\n        message: Message,\n        oldMessageId: Int64\n    ) {\n        self.error = error\n        self.message = message\n        self.oldMessageId = oldMessageId\n    }\n}\n\n/// The message content has changed\npublic struct UpdateMessageContent: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// Message identifier\n    public let messageId: Int64\n\n    /// New message content\n    public let newContent: MessageContent\n\n\n    public init(\n        chatId: Int64,\n        messageId: Int64,\n        newContent: MessageContent\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.newContent = newContent\n    }\n}\n\n/// A message was edited. Changes in the message content will come in a separate updateMessageContent\npublic struct UpdateMessageEdited: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// Point in time (Unix timestamp) when the message was edited\n    public let editDate: Int\n\n    /// Message identifier\n    public let messageId: Int64\n\n    /// New message reply markup; may be null\n    public let replyMarkup: ReplyMarkup?\n\n\n    public init(\n        chatId: Int64,\n        editDate: Int,\n        messageId: Int64,\n        replyMarkup: ReplyMarkup?\n    ) {\n        self.chatId = chatId\n        self.editDate = editDate\n        self.messageId = messageId\n        self.replyMarkup = replyMarkup\n    }\n}\n\n/// The message pinned state was changed\npublic struct UpdateMessageIsPinned: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// True, if the message is pinned\n    public let isPinned: Bool\n\n    /// The message identifier\n    public let messageId: Int64\n\n\n    public init(\n        chatId: Int64,\n        isPinned: Bool,\n        messageId: Int64\n    ) {\n        self.chatId = chatId\n        self.isPinned = isPinned\n        self.messageId = messageId\n    }\n}\n\n/// The information about interactions with a message has changed\npublic struct UpdateMessageInteractionInfo: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// New information about interactions with the message; may be null\n    public let interactionInfo: MessageInteractionInfo?\n\n    /// Message identifier\n    public let messageId: Int64\n\n\n    public init(\n        chatId: Int64,\n        interactionInfo: MessageInteractionInfo?,\n        messageId: Int64\n    ) {\n        self.chatId = chatId\n        self.interactionInfo = interactionInfo\n        self.messageId = messageId\n    }\n}\n\n/// The message content was opened. Updates voice note messages to \"listened\", video note messages to \"viewed\" and starts the self-destruct timer\npublic struct UpdateMessageContentOpened: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// Message identifier\n    public let messageId: Int64\n\n\n    public init(\n        chatId: Int64,\n        messageId: Int64\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n/// A message with an unread mention was read\npublic struct UpdateMessageMentionRead: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// Message identifier\n    public let messageId: Int64\n\n    /// The new number of unread mention messages left in the chat\n    public let unreadMentionCount: Int\n\n\n    public init(\n        chatId: Int64,\n        messageId: Int64,\n        unreadMentionCount: Int\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.unreadMentionCount = unreadMentionCount\n    }\n}\n\n/// The list of unread reactions added to a message was changed\npublic struct UpdateMessageUnreadReactions: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// Message identifier\n    public let messageId: Int64\n\n    /// The new number of messages with unread reactions in the chat\n    public let unreadReactionCount: Int\n\n    /// The new list of unread reactions\n    public let unreadReactions: [UnreadReaction]\n\n\n    public init(\n        chatId: Int64,\n        messageId: Int64,\n        unreadReactionCount: Int,\n        unreadReactions: [UnreadReaction]\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.unreadReactionCount = unreadReactionCount\n        self.unreadReactions = unreadReactions\n    }\n}\n\n/// Unread votes were added or removed from a poll message\npublic struct UpdateMessageContainsUnreadPollVotes: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// True, if the message is a poll message with unread votes\n    public let containsUnreadPollVotes: Bool\n\n    /// Message identifier\n    public let messageId: Int64\n\n    /// The new number of messages with unread poll votes in the chat\n    public let unreadPollVoteCount: Int\n\n\n    public init(\n        chatId: Int64,\n        containsUnreadPollVotes: Bool,\n        messageId: Int64,\n        unreadPollVoteCount: Int\n    ) {\n        self.chatId = chatId\n        self.containsUnreadPollVotes = containsUnreadPollVotes\n        self.messageId = messageId\n        self.unreadPollVoteCount = unreadPollVoteCount\n    }\n}\n\n/// A fact-check added to a message was changed\npublic struct UpdateMessageFactCheck: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// The new fact-check\n    public let factCheck: FactCheck\n\n    /// Message identifier\n    public let messageId: Int64\n\n\n    public init(\n        chatId: Int64,\n        factCheck: FactCheck,\n        messageId: Int64\n    ) {\n        self.chatId = chatId\n        self.factCheck = factCheck\n        self.messageId = messageId\n    }\n}\n\n/// Information about suggested post of a message was changed\npublic struct UpdateMessageSuggestedPostInfo: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// Message identifier\n    public let messageId: Int64\n\n    /// The new information about the suggested post\n    public let suggestedPostInfo: SuggestedPostInfo\n\n\n    public init(\n        chatId: Int64,\n        messageId: Int64,\n        suggestedPostInfo: SuggestedPostInfo\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.suggestedPostInfo = suggestedPostInfo\n    }\n}\n\n/// A message with a live location was viewed. When the update is received, the application is expected to update the live location\npublic struct UpdateMessageLiveLocationViewed: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat with the live location message\n    public let chatId: Int64\n\n    /// Identifier of the message with live location\n    public let messageId: Int64\n\n\n    public init(\n        chatId: Int64,\n        messageId: Int64\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n/// An automatically scheduled message with video has been successfully sent after conversion\npublic struct UpdateVideoPublished: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat with the message\n    public let chatId: Int64\n\n    /// Identifier of the sent message\n    public let messageId: Int64\n\n\n    public init(\n        chatId: Int64,\n        messageId: Int64\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n    }\n}\n\n/// A new chat has been loaded/created. This update is guaranteed to come before the chat identifier is returned to the application. The chat field changes will be reported through separate updates\npublic struct UpdateNewChat: Codable, Equatable, Hashable {\n\n    /// The chat\n    public let chat: Chat\n\n\n    public init(chat: Chat) {\n        self.chat = chat\n    }\n}\n\n/// The title of a chat was changed\npublic struct UpdateChatTitle: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// The new chat title\n    public let title: String\n\n\n    public init(\n        chatId: Int64,\n        title: String\n    ) {\n        self.chatId = chatId\n        self.title = title\n    }\n}\n\n/// A chat photo was changed\npublic struct UpdateChatPhoto: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// The new chat photo; may be null\n    public let photo: ChatPhotoInfo?\n\n\n    public init(\n        chatId: Int64,\n        photo: ChatPhotoInfo?\n    ) {\n        self.chatId = chatId\n        self.photo = photo\n    }\n}\n\n/// Chat accent colors have changed\npublic struct UpdateChatAccentColors: Codable, Equatable, Hashable {\n\n    /// The new chat accent color identifier\n    public let accentColorId: Int\n\n    /// The new identifier of a custom emoji to be shown on the reply header and link preview background; 0 if none\n    public let backgroundCustomEmojiId: TdInt64\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// The new chat profile accent color identifier; -1 if none\n    public let profileAccentColorId: Int\n\n    /// The new identifier of a custom emoji to be shown on the profile background; 0 if none\n    public let profileBackgroundCustomEmojiId: TdInt64\n\n    /// Color scheme based on an upgraded gift to be used for the chat instead of accent_color_id and background_custom_emoji_id; may be null if none\n    public let upgradedGiftColors: UpgradedGiftColors?\n\n\n    public init(\n        accentColorId: Int,\n        backgroundCustomEmojiId: TdInt64,\n        chatId: Int64,\n        profileAccentColorId: Int,\n        profileBackgroundCustomEmojiId: TdInt64,\n        upgradedGiftColors: UpgradedGiftColors?\n    ) {\n        self.accentColorId = accentColorId\n        self.backgroundCustomEmojiId = backgroundCustomEmojiId\n        self.chatId = chatId\n        self.profileAccentColorId = profileAccentColorId\n        self.profileBackgroundCustomEmojiId = profileBackgroundCustomEmojiId\n        self.upgradedGiftColors = upgradedGiftColors\n    }\n}\n\n/// Chat permissions were changed\npublic struct UpdateChatPermissions: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// The new chat permissions\n    public let permissions: ChatPermissions\n\n\n    public init(\n        chatId: Int64,\n        permissions: ChatPermissions\n    ) {\n        self.chatId = chatId\n        self.permissions = permissions\n    }\n}\n\n/// The last message of a chat was changed\npublic struct UpdateChatLastMessage: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// The new last message in the chat; may be null if the last message became unknown. While the last message is unknown, new messages can be added to the chat without corresponding updateNewMessage update\n    public let lastMessage: Message?\n\n    /// The new chat positions in the chat lists\n    public let positions: [ChatPosition]\n\n\n    public init(\n        chatId: Int64,\n        lastMessage: Message?,\n        positions: [ChatPosition]\n    ) {\n        self.chatId = chatId\n        self.lastMessage = lastMessage\n        self.positions = positions\n    }\n}\n\n/// The position of a chat in a chat list has changed. An updateChatLastMessage or updateChatDraftMessage update might be sent instead of the update\npublic struct UpdateChatPosition: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// New chat position. If new order is 0, then the chat needs to be removed from the list\n    public let position: ChatPosition\n\n\n    public init(\n        chatId: Int64,\n        position: ChatPosition\n    ) {\n        self.chatId = chatId\n        self.position = position\n    }\n}\n\n/// A chat was added to a chat list\npublic struct UpdateChatAddedToList: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// The chat list to which the chat was added\n    public let chatList: ChatList\n\n\n    public init(\n        chatId: Int64,\n        chatList: ChatList\n    ) {\n        self.chatId = chatId\n        self.chatList = chatList\n    }\n}\n\n/// A chat was removed from a chat list\npublic struct UpdateChatRemovedFromList: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// The chat list from which the chat was removed\n    public let chatList: ChatList\n\n\n    public init(\n        chatId: Int64,\n        chatList: ChatList\n    ) {\n        self.chatId = chatId\n        self.chatList = chatList\n    }\n}\n\n/// Incoming messages were read or the number of unread messages has been changed\npublic struct UpdateChatReadInbox: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// Identifier of the last read incoming message\n    public let lastReadInboxMessageId: Int64\n\n    /// The number of unread messages left in the chat\n    public let unreadCount: Int\n\n\n    public init(\n        chatId: Int64,\n        lastReadInboxMessageId: Int64,\n        unreadCount: Int\n    ) {\n        self.chatId = chatId\n        self.lastReadInboxMessageId = lastReadInboxMessageId\n        self.unreadCount = unreadCount\n    }\n}\n\n/// Outgoing messages were read\npublic struct UpdateChatReadOutbox: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// Identifier of last read outgoing message\n    public let lastReadOutboxMessageId: Int64\n\n\n    public init(\n        chatId: Int64,\n        lastReadOutboxMessageId: Int64\n    ) {\n        self.chatId = chatId\n        self.lastReadOutboxMessageId = lastReadOutboxMessageId\n    }\n}\n\n/// The chat action bar was changed\npublic struct UpdateChatActionBar: Codable, Equatable, Hashable {\n\n    /// The new value of the action bar; may be null\n    public let actionBar: ChatActionBar?\n\n    /// Chat identifier\n    public let chatId: Int64\n\n\n    public init(\n        actionBar: ChatActionBar?,\n        chatId: Int64\n    ) {\n        self.actionBar = actionBar\n        self.chatId = chatId\n    }\n}\n\n/// The bar for managing business bot was changed in a chat\npublic struct UpdateChatBusinessBotManageBar: Codable, Equatable, Hashable {\n\n    /// The new value of the business bot manage bar; may be null\n    public let businessBotManageBar: BusinessBotManageBar?\n\n    /// Chat identifier\n    public let chatId: Int64\n\n\n    public init(\n        businessBotManageBar: BusinessBotManageBar?,\n        chatId: Int64\n    ) {\n        self.businessBotManageBar = businessBotManageBar\n        self.chatId = chatId\n    }\n}\n\n/// The chat available reactions were changed\npublic struct UpdateChatAvailableReactions: Codable, Equatable, Hashable {\n\n    /// The new reactions, available in the chat\n    public let availableReactions: ChatAvailableReactions\n\n    /// Chat identifier\n    public let chatId: Int64\n\n\n    public init(\n        availableReactions: ChatAvailableReactions,\n        chatId: Int64\n    ) {\n        self.availableReactions = availableReactions\n        self.chatId = chatId\n    }\n}\n\n/// A chat draft has changed. Be aware that the update may come in the currently opened chat but with old content of the draft. If the user has changed the content of the draft, this update mustn't be applied\npublic struct UpdateChatDraftMessage: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// The new draft message; may be null if none\n    public let draftMessage: DraftMessage?\n\n    /// The new chat positions in the chat lists\n    public let positions: [ChatPosition]\n\n\n    public init(\n        chatId: Int64,\n        draftMessage: DraftMessage?,\n        positions: [ChatPosition]\n    ) {\n        self.chatId = chatId\n        self.draftMessage = draftMessage\n        self.positions = positions\n    }\n}\n\n/// Chat emoji status has changed\npublic struct UpdateChatEmojiStatus: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// The new chat emoji status; may be null\n    public let emojiStatus: EmojiStatus?\n\n\n    public init(\n        chatId: Int64,\n        emojiStatus: EmojiStatus?\n    ) {\n        self.chatId = chatId\n        self.emojiStatus = emojiStatus\n    }\n}\n\n/// The message sender that is selected to send messages in a chat has changed\npublic struct UpdateChatMessageSender: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// New value of message_sender_id; may be null if the user can't change message sender\n    public let messageSenderId: MessageSender?\n\n\n    public init(\n        chatId: Int64,\n        messageSenderId: MessageSender?\n    ) {\n        self.chatId = chatId\n        self.messageSenderId = messageSenderId\n    }\n}\n\n/// The message auto-delete or self-destruct timer setting for a chat was changed\npublic struct UpdateChatMessageAutoDeleteTime: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// New value of message_auto_delete_time\n    public let messageAutoDeleteTime: Int\n\n\n    public init(\n        chatId: Int64,\n        messageAutoDeleteTime: Int\n    ) {\n        self.chatId = chatId\n        self.messageAutoDeleteTime = messageAutoDeleteTime\n    }\n}\n\n/// Notification settings for a chat were changed\npublic struct UpdateChatNotificationSettings: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// The new notification settings\n    public let notificationSettings: ChatNotificationSettings\n\n\n    public init(\n        chatId: Int64,\n        notificationSettings: ChatNotificationSettings\n    ) {\n        self.chatId = chatId\n        self.notificationSettings = notificationSettings\n    }\n}\n\n/// The chat pending join requests were changed\npublic struct UpdateChatPendingJoinRequests: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// The new data about pending join requests; may be null\n    public let pendingJoinRequests: ChatJoinRequestsInfo?\n\n\n    public init(\n        chatId: Int64,\n        pendingJoinRequests: ChatJoinRequestsInfo?\n    ) {\n        self.chatId = chatId\n        self.pendingJoinRequests = pendingJoinRequests\n    }\n}\n\n/// The chat reply markup was changed\npublic struct UpdateChatReplyMarkup: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// The message from which the reply markup must be used; may be null if there is no default reply markup in the chat\n    public let replyMarkupMessage: Message?\n\n\n    public init(\n        chatId: Int64,\n        replyMarkupMessage: Message?\n    ) {\n        self.chatId = chatId\n        self.replyMarkupMessage = replyMarkupMessage\n    }\n}\n\n/// The chat background was changed\npublic struct UpdateChatBackground: Codable, Equatable, Hashable {\n\n    /// The new chat background; may be null if background was reset to default\n    public let background: ChatBackground?\n\n    /// Chat identifier\n    public let chatId: Int64\n\n\n    public init(\n        background: ChatBackground?,\n        chatId: Int64\n    ) {\n        self.background = background\n        self.chatId = chatId\n    }\n}\n\n/// The chat theme was changed\npublic struct UpdateChatTheme: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// The new theme of the chat; may be null if theme was reset to default\n    public let theme: ChatTheme?\n\n\n    public init(\n        chatId: Int64,\n        theme: ChatTheme?\n    ) {\n        self.chatId = chatId\n        self.theme = theme\n    }\n}\n\n/// The chat unread_mention_count has changed\npublic struct UpdateChatUnreadMentionCount: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// The number of unread mention messages left in the chat\n    public let unreadMentionCount: Int\n\n\n    public init(\n        chatId: Int64,\n        unreadMentionCount: Int\n    ) {\n        self.chatId = chatId\n        self.unreadMentionCount = unreadMentionCount\n    }\n}\n\n/// The chat unread_reaction_count has changed\npublic struct UpdateChatUnreadReactionCount: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// The number of messages with unread reactions left in the chat\n    public let unreadReactionCount: Int\n\n\n    public init(\n        chatId: Int64,\n        unreadReactionCount: Int\n    ) {\n        self.chatId = chatId\n        self.unreadReactionCount = unreadReactionCount\n    }\n}\n\n/// The chat unread_poll_vote_count has changed\npublic struct UpdateChatUnreadPollVoteCount: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// The number of messages with unread poll votes left in the chat\n    public let unreadPollVoteCount: Int\n\n\n    public init(\n        chatId: Int64,\n        unreadPollVoteCount: Int\n    ) {\n        self.chatId = chatId\n        self.unreadPollVoteCount = unreadPollVoteCount\n    }\n}\n\n/// A chat video chat state has changed\npublic struct UpdateChatVideoChat: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// New value of video_chat\n    public let videoChat: VideoChat\n\n\n    public init(\n        chatId: Int64,\n        videoChat: VideoChat\n    ) {\n        self.chatId = chatId\n        self.videoChat = videoChat\n    }\n}\n\n/// The value of the default disable_notification parameter, used when a message is sent to the chat, was changed\npublic struct UpdateChatDefaultDisableNotification: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// The new default_disable_notification value\n    public let defaultDisableNotification: Bool\n\n\n    public init(\n        chatId: Int64,\n        defaultDisableNotification: Bool\n    ) {\n        self.chatId = chatId\n        self.defaultDisableNotification = defaultDisableNotification\n    }\n}\n\n/// A chat content was allowed or restricted for saving\npublic struct UpdateChatHasProtectedContent: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// New value of has_protected_content\n    public let hasProtectedContent: Bool\n\n\n    public init(\n        chatId: Int64,\n        hasProtectedContent: Bool\n    ) {\n        self.chatId = chatId\n        self.hasProtectedContent = hasProtectedContent\n    }\n}\n\n/// Translation of chat messages was enabled or disabled\npublic struct UpdateChatIsTranslatable: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// New value of is_translatable\n    public let isTranslatable: Bool\n\n\n    public init(\n        chatId: Int64,\n        isTranslatable: Bool\n    ) {\n        self.chatId = chatId\n        self.isTranslatable = isTranslatable\n    }\n}\n\n/// A chat was marked as unread or was read\npublic struct UpdateChatIsMarkedAsUnread: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// New value of is_marked_as_unread\n    public let isMarkedAsUnread: Bool\n\n\n    public init(\n        chatId: Int64,\n        isMarkedAsUnread: Bool\n    ) {\n        self.chatId = chatId\n        self.isMarkedAsUnread = isMarkedAsUnread\n    }\n}\n\n/// A chat default appearance has changed\npublic struct UpdateChatViewAsTopics: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// New value of view_as_topics\n    public let viewAsTopics: Bool\n\n\n    public init(\n        chatId: Int64,\n        viewAsTopics: Bool\n    ) {\n        self.chatId = chatId\n        self.viewAsTopics = viewAsTopics\n    }\n}\n\n/// A chat was blocked or unblocked\npublic struct UpdateChatBlockList: Codable, Equatable, Hashable {\n\n    /// Block list to which the chat is added; may be null if none\n    public let blockList: BlockList?\n\n    /// Chat identifier\n    public let chatId: Int64\n\n\n    public init(\n        blockList: BlockList?,\n        chatId: Int64\n    ) {\n        self.blockList = blockList\n        self.chatId = chatId\n    }\n}\n\n/// A chat's has_scheduled_messages field has changed\npublic struct UpdateChatHasScheduledMessages: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// New value of has_scheduled_messages\n    public let hasScheduledMessages: Bool\n\n\n    public init(\n        chatId: Int64,\n        hasScheduledMessages: Bool\n    ) {\n        self.chatId = chatId\n        self.hasScheduledMessages = hasScheduledMessages\n    }\n}\n\n/// The list of chat folders or a chat folder has changed\npublic struct UpdateChatFolders: Codable, Equatable, Hashable {\n\n    /// True, if folder tags are enabled\n    public let areTagsEnabled: Bool\n\n    /// The new list of chat folders\n    public let chatFolders: [ChatFolderInfo]\n\n    /// Position of the main chat list among chat folders, 0-based\n    public let mainChatListPosition: Int\n\n\n    public init(\n        areTagsEnabled: Bool,\n        chatFolders: [ChatFolderInfo],\n        mainChatListPosition: Int\n    ) {\n        self.areTagsEnabled = areTagsEnabled\n        self.chatFolders = chatFolders\n        self.mainChatListPosition = mainChatListPosition\n    }\n}\n\n/// The number of online group members has changed. This update with non-zero number of online group members is sent only for currently opened chats. There is no guarantee that it is sent just after the number of online users has changed\npublic struct UpdateChatOnlineMemberCount: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64\n\n    /// New number of online members in the chat, or 0 if unknown\n    public let onlineMemberCount: Int\n\n\n    public init(\n        chatId: Int64,\n        onlineMemberCount: Int\n    ) {\n        self.chatId = chatId\n        self.onlineMemberCount = onlineMemberCount\n    }\n}\n\n/// Basic information about a Saved Messages topic has changed. This update is guaranteed to come before the topic identifier is returned to the application\npublic struct UpdateSavedMessagesTopic: Codable, Equatable, Hashable {\n\n    /// New data about the topic\n    public let topic: SavedMessagesTopic\n\n\n    public init(topic: SavedMessagesTopic) {\n        self.topic = topic\n    }\n}\n\n/// Number of Saved Messages topics has changed\npublic struct UpdateSavedMessagesTopicCount: Codable, Equatable, Hashable {\n\n    /// Approximate total number of Saved Messages topics\n    public let topicCount: Int\n\n\n    public init(topicCount: Int) {\n        self.topicCount = topicCount\n    }\n}\n\n/// Basic information about a topic in a channel direct messages chat administered by the current user has changed. This update is guaranteed to come before the topic identifier is returned to the application\npublic struct UpdateDirectMessagesChatTopic: Codable, Equatable, Hashable {\n\n    /// New data about the topic\n    public let topic: DirectMessagesChatTopic\n\n\n    public init(topic: DirectMessagesChatTopic) {\n        self.topic = topic\n    }\n}\n\n/// Number of messages in a topic has changed; for Saved Messages and channel direct messages chat topics only\npublic struct UpdateTopicMessageCount: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat in topic of which the number of messages has changed\n    public let chatId: Int64\n\n    /// Approximate number of messages in the topic\n    public let messageCount: Int\n\n    /// Identifier of the topic\n    public let topicId: MessageTopic\n\n\n    public init(\n        chatId: Int64,\n        messageCount: Int,\n        topicId: MessageTopic\n    ) {\n        self.chatId = chatId\n        self.messageCount = messageCount\n        self.topicId = topicId\n    }\n}\n\n/// Basic information about a quick reply shortcut has changed. This update is guaranteed to come before the quick shortcut name is returned to the application\npublic struct UpdateQuickReplyShortcut: Codable, Equatable, Hashable {\n\n    /// New data about the shortcut\n    public let shortcut: QuickReplyShortcut\n\n\n    public init(shortcut: QuickReplyShortcut) {\n        self.shortcut = shortcut\n    }\n}\n\n/// A quick reply shortcut and all its messages were deleted\npublic struct UpdateQuickReplyShortcutDeleted: Codable, Equatable, Hashable {\n\n    /// The identifier of the deleted shortcut\n    public let shortcutId: Int\n\n\n    public init(shortcutId: Int) {\n        self.shortcutId = shortcutId\n    }\n}\n\n/// The list of quick reply shortcuts has changed\npublic struct UpdateQuickReplyShortcuts: Codable, Equatable, Hashable {\n\n    /// The new list of identifiers of quick reply shortcuts\n    public let shortcutIds: [Int]\n\n\n    public init(shortcutIds: [Int]) {\n        self.shortcutIds = shortcutIds\n    }\n}\n\n/// The list of quick reply shortcut messages has changed\npublic struct UpdateQuickReplyShortcutMessages: Codable, Equatable, Hashable {\n\n    /// The new list of quick reply messages for the shortcut in order from the first to the last sent\n    public let messages: [QuickReplyMessage]\n\n    /// The identifier of the shortcut\n    public let shortcutId: Int\n\n\n    public init(\n        messages: [QuickReplyMessage],\n        shortcutId: Int\n    ) {\n        self.messages = messages\n        self.shortcutId = shortcutId\n    }\n}\n\n/// Basic information about a topic in a forum chat was changed\npublic struct UpdateForumTopicInfo: Codable, Equatable, Hashable {\n\n    /// New information about the topic\n    public let info: ForumTopicInfo\n\n\n    public init(info: ForumTopicInfo) {\n        self.info = info\n    }\n}\n\n/// Information about a topic in a forum chat was changed\npublic struct UpdateForumTopic: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// A draft of a message in the topic; may be null if none\n    public let draftMessage: DraftMessage?\n\n    /// Forum topic identifier of the topic\n    public let forumTopicId: Int\n\n    /// True, if the topic is pinned in the topic list\n    public let isPinned: Bool\n\n    /// Identifier of the last read incoming message\n    public let lastReadInboxMessageId: Int64\n\n    /// Identifier of the last read outgoing message\n    public let lastReadOutboxMessageId: Int64\n\n    /// Notification settings for the topic\n    public let notificationSettings: ChatNotificationSettings\n\n    /// Number of unread messages with a mention/reply in the topic\n    public let unreadMentionCount: Int\n\n    /// Number of messages with unread poll votes in the topic\n    public let unreadPollVoteCount: Int\n\n    /// Number of messages with unread reactions in the topic\n    public let unreadReactionCount: Int\n\n\n    public init(\n        chatId: Int64,\n        draftMessage: DraftMessage?,\n        forumTopicId: Int,\n        isPinned: Bool,\n        lastReadInboxMessageId: Int64,\n        lastReadOutboxMessageId: Int64,\n        notificationSettings: ChatNotificationSettings,\n        unreadMentionCount: Int,\n        unreadPollVoteCount: Int,\n        unreadReactionCount: Int\n    ) {\n        self.chatId = chatId\n        self.draftMessage = draftMessage\n        self.forumTopicId = forumTopicId\n        self.isPinned = isPinned\n        self.lastReadInboxMessageId = lastReadInboxMessageId\n        self.lastReadOutboxMessageId = lastReadOutboxMessageId\n        self.notificationSettings = notificationSettings\n        self.unreadMentionCount = unreadMentionCount\n        self.unreadPollVoteCount = unreadPollVoteCount\n        self.unreadReactionCount = unreadReactionCount\n    }\n}\n\n/// Notification settings for some type of chats were updated\npublic struct UpdateScopeNotificationSettings: Codable, Equatable, Hashable {\n\n    /// The new notification settings\n    public let notificationSettings: ScopeNotificationSettings\n\n    /// Types of chats for which notification settings were updated\n    public let scope: NotificationSettingsScope\n\n\n    public init(\n        notificationSettings: ScopeNotificationSettings,\n        scope: NotificationSettingsScope\n    ) {\n        self.notificationSettings = notificationSettings\n        self.scope = scope\n    }\n}\n\n/// Notification settings for reactions were updated\npublic struct UpdateReactionNotificationSettings: Codable, Equatable, Hashable {\n\n    /// The new notification settings\n    public let notificationSettings: ReactionNotificationSettings\n\n\n    public init(notificationSettings: ReactionNotificationSettings) {\n        self.notificationSettings = notificationSettings\n    }\n}\n\n/// A notification was changed\npublic struct UpdateNotification: Codable, Equatable, Hashable {\n\n    /// Changed notification\n    public let notification: Notification\n\n    /// Unique notification group identifier\n    public let notificationGroupId: Int\n\n\n    public init(\n        notification: Notification,\n        notificationGroupId: Int\n    ) {\n        self.notification = notification\n        self.notificationGroupId = notificationGroupId\n    }\n}\n\n/// A list of active notifications in a notification group has changed\npublic struct UpdateNotificationGroup: Codable, Equatable, Hashable {\n\n    /// List of added group notifications, sorted by notification identifier\n    public let addedNotifications: [Notification]\n\n    /// Identifier of a chat to which all notifications in the group belong\n    public let chatId: Int64\n\n    /// Unique notification group identifier\n    public let notificationGroupId: Int\n\n    /// Chat identifier, which notification settings must be applied to the added notifications\n    public let notificationSettingsChatId: Int64\n\n    /// Identifier of the notification sound to be played; 0 if sound is disabled\n    public let notificationSoundId: TdInt64\n\n    /// Identifiers of removed group notifications, sorted by notification identifier\n    public let removedNotificationIds: [Int]\n\n    /// Total number of unread notifications in the group, can be bigger than number of active notifications\n    public let totalCount: Int\n\n    /// New type of the notification group\n    public let type: NotificationGroupType\n\n\n    public init(\n        addedNotifications: [Notification],\n        chatId: Int64,\n        notificationGroupId: Int,\n        notificationSettingsChatId: Int64,\n        notificationSoundId: TdInt64,\n        removedNotificationIds: [Int],\n        totalCount: Int,\n        type: NotificationGroupType\n    ) {\n        self.addedNotifications = addedNotifications\n        self.chatId = chatId\n        self.notificationGroupId = notificationGroupId\n        self.notificationSettingsChatId = notificationSettingsChatId\n        self.notificationSoundId = notificationSoundId\n        self.removedNotificationIds = removedNotificationIds\n        self.totalCount = totalCount\n        self.type = type\n    }\n}\n\n/// Contains active notifications that were shown on previous application launches. This update is sent only if the message database is used. In that case it comes once before any updateNotification and updateNotificationGroup update\npublic struct UpdateActiveNotifications: Codable, Equatable, Hashable {\n\n    /// Lists of active notification groups\n    public let groups: [NotificationGroup]\n\n\n    public init(groups: [NotificationGroup]) {\n        self.groups = groups\n    }\n}\n\n/// Describes whether there are some pending notification updates. Can be used to prevent application from killing, while there are some pending notifications\npublic struct UpdateHavePendingNotifications: Codable, Equatable, Hashable {\n\n    /// True, if there are some delayed notification updates, which will be sent soon\n    public let haveDelayedNotifications: Bool\n\n    /// True, if there can be some yet unreceived notifications, which are being fetched from the server\n    public let haveUnreceivedNotifications: Bool\n\n\n    public init(\n        haveDelayedNotifications: Bool,\n        haveUnreceivedNotifications: Bool\n    ) {\n        self.haveDelayedNotifications = haveDelayedNotifications\n        self.haveUnreceivedNotifications = haveUnreceivedNotifications\n    }\n}\n\n/// Some messages were deleted\npublic struct UpdateDeleteMessages: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// True, if the messages are deleted only from the cache and can possibly be retrieved again in the future\n    public let fromCache: Bool\n\n    /// True, if the messages are permanently deleted by a user (as opposed to just becoming inaccessible)\n    public let isPermanent: Bool\n\n    /// Identifiers of the deleted messages\n    public let messageIds: [Int64]\n\n\n    public init(\n        chatId: Int64,\n        fromCache: Bool,\n        isPermanent: Bool,\n        messageIds: [Int64]\n    ) {\n        self.chatId = chatId\n        self.fromCache = fromCache\n        self.isPermanent = isPermanent\n        self.messageIds = messageIds\n    }\n}\n\n/// A message sender activity in the chat has changed\npublic struct UpdateChatAction: Codable, Equatable, Hashable {\n\n    /// The action\n    public let action: ChatAction\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// Identifier of a message sender performing the action\n    public let senderId: MessageSender\n\n    /// Identifier of the specific topic in which the action was performed; may be null if none\n    public let topicId: MessageTopic?\n\n\n    public init(\n        action: ChatAction,\n        chatId: Int64,\n        senderId: MessageSender,\n        topicId: MessageTopic?\n    ) {\n        self.action = action\n        self.chatId = chatId\n        self.senderId = senderId\n        self.topicId = topicId\n    }\n}\n\n/// A new pending text message was received in a chat with a bot. The message must be shown in the chat for at most getOption(\"pending_text_message_period\") seconds, replace any other pending message with the same draft_id, and be deleted whenever any incoming message from the bot in the message thread is received\npublic struct UpdatePendingTextMessage: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// Unique identifier of the message draft within the message thread\n    public let draftId: TdInt64\n\n    /// The forum topic identifier in which the message will be sent; 0 if none\n    public let forumTopicId: Int\n\n    /// Text of the pending message\n    public let text: FormattedText\n\n\n    public init(\n        chatId: Int64,\n        draftId: TdInt64,\n        forumTopicId: Int,\n        text: FormattedText\n    ) {\n        self.chatId = chatId\n        self.draftId = draftId\n        self.forumTopicId = forumTopicId\n        self.text = text\n    }\n}\n\n/// The user went online or offline\npublic struct UpdateUserStatus: Codable, Equatable, Hashable {\n\n    /// New status of the user\n    public let status: UserStatus\n\n    /// User identifier\n    public let userId: Int64\n\n\n    public init(\n        status: UserStatus,\n        userId: Int64\n    ) {\n        self.status = status\n        self.userId = userId\n    }\n}\n\n/// Some data of a user has changed. This update is guaranteed to come before the user identifier is returned to the application\npublic struct UpdateUser: Codable, Equatable, Hashable {\n\n    /// New data about the user\n    public let user: User\n\n\n    public init(user: User) {\n        self.user = user\n    }\n}\n\n/// Some data of a basic group has changed. This update is guaranteed to come before the basic group identifier is returned to the application\npublic struct UpdateBasicGroup: Codable, Equatable, Hashable {\n\n    /// New data about the group\n    public let basicGroup: BasicGroup\n\n\n    public init(basicGroup: BasicGroup) {\n        self.basicGroup = basicGroup\n    }\n}\n\n/// Some data of a supergroup or a channel has changed. This update is guaranteed to come before the supergroup identifier is returned to the application\npublic struct UpdateSupergroup: Codable, Equatable, Hashable {\n\n    /// New data about the supergroup\n    public let supergroup: Supergroup\n\n\n    public init(supergroup: Supergroup) {\n        self.supergroup = supergroup\n    }\n}\n\n/// Some data of a secret chat has changed. This update is guaranteed to come before the secret chat identifier is returned to the application\npublic struct UpdateSecretChat: Codable, Equatable, Hashable {\n\n    /// New data about the secret chat\n    public let secretChat: SecretChat\n\n\n    public init(secretChat: SecretChat) {\n        self.secretChat = secretChat\n    }\n}\n\n/// Some data in userFullInfo has been changed\npublic struct UpdateUserFullInfo: Codable, Equatable, Hashable {\n\n    /// New full information about the user\n    public let userFullInfo: UserFullInfo\n\n    /// User identifier\n    public let userId: Int64\n\n\n    public init(\n        userFullInfo: UserFullInfo,\n        userId: Int64\n    ) {\n        self.userFullInfo = userFullInfo\n        self.userId = userId\n    }\n}\n\n/// Some data in basicGroupFullInfo has been changed\npublic struct UpdateBasicGroupFullInfo: Codable, Equatable, Hashable {\n\n    /// New full information about the group\n    public let basicGroupFullInfo: BasicGroupFullInfo\n\n    /// Identifier of a basic group\n    public let basicGroupId: Int64\n\n\n    public init(\n        basicGroupFullInfo: BasicGroupFullInfo,\n        basicGroupId: Int64\n    ) {\n        self.basicGroupFullInfo = basicGroupFullInfo\n        self.basicGroupId = basicGroupId\n    }\n}\n\n/// Some data in supergroupFullInfo has been changed\npublic struct UpdateSupergroupFullInfo: Codable, Equatable, Hashable {\n\n    /// New full information about the supergroup\n    public let supergroupFullInfo: SupergroupFullInfo\n\n    /// Identifier of the supergroup or channel\n    public let supergroupId: Int64\n\n\n    public init(\n        supergroupFullInfo: SupergroupFullInfo,\n        supergroupId: Int64\n    ) {\n        self.supergroupFullInfo = supergroupFullInfo\n        self.supergroupId = supergroupId\n    }\n}\n\n/// A service notification from the server was received. Upon receiving this the application must show a popup with the content of the notification\npublic struct UpdateServiceNotification: Codable, Equatable, Hashable {\n\n    /// Notification content\n    public let content: MessageContent\n\n    /// Notification type. If type begins with \"AUTH_KEY_DROP_\", then two buttons \"Cancel\" and \"Log out\" must be shown under notification; if user presses the second, all local data must be destroyed using Destroy method\n    public let type: String\n\n\n    public init(\n        content: MessageContent,\n        type: String\n    ) {\n        self.content = content\n        self.type = type\n    }\n}\n\n/// An OAuth authorization request was received\npublic struct UpdateNewOauthRequest: Codable, Equatable, Hashable {\n\n    /// A domain of the URL where the user authorizes\n    public let domain: String\n\n    /// Human-readable description of a country and a region from which the authorization is performed, based on the IP address\n    public let location: String\n\n    /// The URL to pass to getOauthLinkInfo; the link is valid for 60 seconds\n    public let url: String\n\n\n    public init(\n        domain: String,\n        location: String,\n        url: String\n    ) {\n        self.domain = domain\n        self.location = location\n        self.url = url\n    }\n}\n\n/// Information about a file was updated\npublic struct UpdateFile: Codable, Equatable, Hashable {\n\n    /// New data about the file\n    public let file: File\n\n\n    public init(file: File) {\n        self.file = file\n    }\n}\n\n/// The file generation process needs to be started by the application. Use setFileGenerationProgress and finishFileGeneration to generate the file\npublic struct UpdateFileGenerationStart: Codable, Equatable, Hashable {\n\n    /// If the conversion is \"#url#\" than original_path contains an HTTP/HTTPS URL of a file that must be downloaded by the application. Otherwise, this is the conversion specified by the application in inputFileGenerated\n    public let conversion: String\n\n    /// The path to a file that must be created and where the new file must be generated by the application. If the application has no access to the path, it can use writeGeneratedFilePart to generate the file\n    public let destinationPath: String\n\n    /// Unique identifier for the generation process\n    public let generationId: TdInt64\n\n    /// The original path specified by the application in inputFileGenerated\n    public let originalPath: String\n\n\n    public init(\n        conversion: String,\n        destinationPath: String,\n        generationId: TdInt64,\n        originalPath: String\n    ) {\n        self.conversion = conversion\n        self.destinationPath = destinationPath\n        self.generationId = generationId\n        self.originalPath = originalPath\n    }\n}\n\n/// File generation is no longer needed\npublic struct UpdateFileGenerationStop: Codable, Equatable, Hashable {\n\n    /// Unique identifier for the generation process\n    public let generationId: TdInt64\n\n\n    public init(generationId: TdInt64) {\n        self.generationId = generationId\n    }\n}\n\n/// The state of the file download list has changed\npublic struct UpdateFileDownloads: Codable, Equatable, Hashable {\n\n    /// Total downloaded size of files in the file download list, in bytes\n    public let downloadedSize: Int64\n\n    /// Total number of files in the file download list\n    public let totalCount: Int\n\n    /// Total size of files in the file download list, in bytes\n    public let totalSize: Int64\n\n\n    public init(\n        downloadedSize: Int64,\n        totalCount: Int,\n        totalSize: Int64\n    ) {\n        self.downloadedSize = downloadedSize\n        self.totalCount = totalCount\n        self.totalSize = totalSize\n    }\n}\n\n/// A file was added to the file download list. This update is sent only after file download list is loaded for the first time\npublic struct UpdateFileAddedToDownloads: Codable, Equatable, Hashable {\n\n    /// New number of being downloaded and recently downloaded files found\n    public let counts: DownloadedFileCounts\n\n    /// The added file download\n    public let fileDownload: FileDownload\n\n\n    public init(\n        counts: DownloadedFileCounts,\n        fileDownload: FileDownload\n    ) {\n        self.counts = counts\n        self.fileDownload = fileDownload\n    }\n}\n\n/// A file download was changed. This update is sent only after file download list is loaded for the first time\npublic struct UpdateFileDownload: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the file downloading was completed; 0 if the file downloading isn't completed\n    public let completeDate: Int\n\n    /// New number of being downloaded and recently downloaded files found\n    public let counts: DownloadedFileCounts\n\n    /// File identifier\n    public let fileId: Int\n\n    /// True, if downloading of the file is paused\n    public let isPaused: Bool\n\n\n    public init(\n        completeDate: Int,\n        counts: DownloadedFileCounts,\n        fileId: Int,\n        isPaused: Bool\n    ) {\n        self.completeDate = completeDate\n        self.counts = counts\n        self.fileId = fileId\n        self.isPaused = isPaused\n    }\n}\n\n/// A file was removed from the file download list. This update is sent only after file download list is loaded for the first time\npublic struct UpdateFileRemovedFromDownloads: Codable, Equatable, Hashable {\n\n    /// New number of being downloaded and recently downloaded files found\n    public let counts: DownloadedFileCounts\n\n    /// File identifier\n    public let fileId: Int\n\n\n    public init(\n        counts: DownloadedFileCounts,\n        fileId: Int\n    ) {\n        self.counts = counts\n        self.fileId = fileId\n    }\n}\n\n/// A request can't be completed unless application verification is performed; for official mobile applications only. The method setApplicationVerificationToken must be called once the verification is completed or failed\npublic struct UpdateApplicationVerificationRequired: Codable, Equatable, Hashable {\n\n    /// Cloud project number to pass to the Play Integrity API on Android\n    public let cloudProjectNumber: TdInt64\n\n    /// Unique base64url-encoded nonce for the classic Play Integrity verification (https://developer.android.com/google/play/integrity/classic) for Android, or a unique string to compare with verify_nonce field from a push notification for iOS\n    public let nonce: String\n\n    /// Unique identifier for the verification process\n    public let verificationId: Int64\n\n\n    public init(\n        cloudProjectNumber: TdInt64,\n        nonce: String,\n        verificationId: Int64\n    ) {\n        self.cloudProjectNumber = cloudProjectNumber\n        self.nonce = nonce\n        self.verificationId = verificationId\n    }\n}\n\n/// A request can't be completed unless reCAPTCHA verification is performed; for official mobile applications only. The method setApplicationVerificationToken must be called once the verification is completed or failed\npublic struct UpdateApplicationRecaptchaVerificationRequired: Codable, Equatable, Hashable {\n\n    /// The action for the check\n    public let action: String\n\n    /// Identifier of the reCAPTCHA key\n    public let recaptchaKeyId: String\n\n    /// Unique identifier for the verification process\n    public let verificationId: Int64\n\n\n    public init(\n        action: String,\n        recaptchaKeyId: String,\n        verificationId: Int64\n    ) {\n        self.action = action\n        self.recaptchaKeyId = recaptchaKeyId\n        self.verificationId = verificationId\n    }\n}\n\n/// New call was created or information about a call was updated\npublic struct UpdateCall: Codable, Equatable, Hashable {\n\n    /// New data about a call\n    public let call: Call\n\n\n    public init(call: Call) {\n        self.call = call\n    }\n}\n\n/// Information about a group call was updated\npublic struct UpdateGroupCall: Codable, Equatable, Hashable {\n\n    /// New data about the group call\n    public let groupCall: GroupCall\n\n\n    public init(groupCall: GroupCall) {\n        self.groupCall = groupCall\n    }\n}\n\n/// Information about a group call participant was changed. The updates are sent only after the group call is received through getGroupCall and only if the call is joined or being joined\npublic struct UpdateGroupCallParticipant: Codable, Equatable, Hashable {\n\n    /// Identifier of the group call\n    public let groupCallId: Int\n\n    /// New data about the participant\n    public let participant: GroupCallParticipant\n\n\n    public init(\n        groupCallId: Int,\n        participant: GroupCallParticipant\n    ) {\n        self.groupCallId = groupCallId\n        self.participant = participant\n    }\n}\n\n/// The list of group call participants that can send and receive encrypted call data has changed; for group calls not bound to a chat only\npublic struct UpdateGroupCallParticipants: Codable, Equatable, Hashable {\n\n    /// Identifier of the group call\n    public let groupCallId: Int\n\n    /// New list of group call participant user identifiers. The identifiers may be invalid or the corresponding users may be unknown. The participants must be shown in the list of group call participants even if there is no information about them\n    public let participantUserIds: [TdInt64]\n\n\n    public init(\n        groupCallId: Int,\n        participantUserIds: [TdInt64]\n    ) {\n        self.groupCallId = groupCallId\n        self.participantUserIds = participantUserIds\n    }\n}\n\n/// The verification state of an encrypted group call has changed; for group calls not bound to a chat only\npublic struct UpdateGroupCallVerificationState: Codable, Equatable, Hashable {\n\n    /// Group call state fingerprint represented as 4 emoji; may be empty if the state isn't verified yet\n    public let emojis: [String]\n\n    /// The call state generation to which the emoji corresponds. If generation is different for two users, then their emoji may be also different\n    public let generation: Int\n\n    /// Identifier of the group call\n    public let groupCallId: Int\n\n\n    public init(\n        emojis: [String],\n        generation: Int,\n        groupCallId: Int\n    ) {\n        self.emojis = emojis\n        self.generation = generation\n        self.groupCallId = groupCallId\n    }\n}\n\n/// A new message was received in a group call\npublic struct UpdateNewGroupCallMessage: Codable, Equatable, Hashable {\n\n    /// Identifier of the group call\n    public let groupCallId: Int\n\n    /// The message\n    public let message: GroupCallMessage\n\n\n    public init(\n        groupCallId: Int,\n        message: GroupCallMessage\n    ) {\n        self.groupCallId = groupCallId\n        self.message = message\n    }\n}\n\n/// A new paid reaction was received in a live story group call\npublic struct UpdateNewGroupCallPaidReaction: Codable, Equatable, Hashable {\n\n    /// Identifier of the group call\n    public let groupCallId: Int\n\n    /// Identifier of the sender of the reaction\n    public let senderId: MessageSender\n\n    /// The number of Telegram Stars that were paid to send the reaction\n    public let starCount: Int64\n\n\n    public init(\n        groupCallId: Int,\n        senderId: MessageSender,\n        starCount: Int64\n    ) {\n        self.groupCallId = groupCallId\n        self.senderId = senderId\n        self.starCount = starCount\n    }\n}\n\n/// A group call message failed to send\npublic struct UpdateGroupCallMessageSendFailed: Codable, Equatable, Hashable {\n\n    /// The cause of the message sending failure\n    public let error: Error\n\n    /// Identifier of the group call\n    public let groupCallId: Int\n\n    /// Message identifier\n    public let messageId: Int\n\n\n    public init(\n        error: Error,\n        groupCallId: Int,\n        messageId: Int\n    ) {\n        self.error = error\n        self.groupCallId = groupCallId\n        self.messageId = messageId\n    }\n}\n\n/// Some group call messages were deleted\npublic struct UpdateGroupCallMessagesDeleted: Codable, Equatable, Hashable {\n\n    /// Identifier of the group call\n    public let groupCallId: Int\n\n    /// Identifiers of the deleted messages\n    public let messageIds: [Int]\n\n\n    public init(\n        groupCallId: Int,\n        messageIds: [Int]\n    ) {\n        self.groupCallId = groupCallId\n        self.messageIds = messageIds\n    }\n}\n\n/// The list of top donors in live story group call has changed\npublic struct UpdateLiveStoryTopDonors: Codable, Equatable, Hashable {\n\n    /// New list of live story donors\n    public let donors: LiveStoryDonors\n\n    /// Identifier of the group call\n    public let groupCallId: Int\n\n\n    public init(\n        donors: LiveStoryDonors,\n        groupCallId: Int\n    ) {\n        self.donors = donors\n        self.groupCallId = groupCallId\n    }\n}\n\n/// New call signaling data arrived\npublic struct UpdateNewCallSignalingData: Codable, Equatable, Hashable {\n\n    /// The call identifier\n    public let callId: Int\n\n    /// The data\n    public let data: Data\n\n\n    public init(\n        callId: Int,\n        data: Data\n    ) {\n        self.callId = callId\n        self.data = data\n    }\n}\n\n/// State of a gift auction was updated\npublic struct UpdateGiftAuctionState: Codable, Equatable, Hashable {\n\n    /// New state of the auction\n    public let state: GiftAuctionState\n\n\n    public init(state: GiftAuctionState) {\n        self.state = state\n    }\n}\n\n/// The list of auctions in which participate the current user has changed\npublic struct UpdateActiveGiftAuctions: Codable, Equatable, Hashable {\n\n    /// New states of the auctions\n    public let states: [GiftAuctionState]\n\n\n    public init(states: [GiftAuctionState]) {\n        self.states = states\n    }\n}\n\n/// Some privacy setting rules have been changed\npublic struct UpdateUserPrivacySettingRules: Codable, Equatable, Hashable {\n\n    /// New privacy rules\n    public let rules: UserPrivacySettingRules\n\n    /// The privacy setting\n    public let setting: UserPrivacySetting\n\n\n    public init(\n        rules: UserPrivacySettingRules,\n        setting: UserPrivacySetting\n    ) {\n        self.rules = rules\n        self.setting = setting\n    }\n}\n\n/// Number of unread messages in a chat list has changed. This update is sent only if the message database is used\npublic struct UpdateUnreadMessageCount: Codable, Equatable, Hashable {\n\n    /// The chat list with changed number of unread messages\n    public let chatList: ChatList\n\n    /// Total number of unread messages\n    public let unreadCount: Int\n\n    /// Total number of unread messages in unmuted chats\n    public let unreadUnmutedCount: Int\n\n\n    public init(\n        chatList: ChatList,\n        unreadCount: Int,\n        unreadUnmutedCount: Int\n    ) {\n        self.chatList = chatList\n        self.unreadCount = unreadCount\n        self.unreadUnmutedCount = unreadUnmutedCount\n    }\n}\n\n/// Number of unread chats, i.e. with unread messages or marked as unread, has changed. This update is sent only if the message database is used\npublic struct UpdateUnreadChatCount: Codable, Equatable, Hashable {\n\n    /// The chat list with changed number of unread messages\n    public let chatList: ChatList\n\n    /// Total number of chats marked as unread\n    public let markedAsUnreadCount: Int\n\n    /// Total number of unmuted chats marked as unread\n    public let markedAsUnreadUnmutedCount: Int\n\n    /// Approximate total number of chats in the chat list\n    public let totalCount: Int\n\n    /// Total number of unread chats\n    public let unreadCount: Int\n\n    /// Total number of unread unmuted chats\n    public let unreadUnmutedCount: Int\n\n\n    public init(\n        chatList: ChatList,\n        markedAsUnreadCount: Int,\n        markedAsUnreadUnmutedCount: Int,\n        totalCount: Int,\n        unreadCount: Int,\n        unreadUnmutedCount: Int\n    ) {\n        self.chatList = chatList\n        self.markedAsUnreadCount = markedAsUnreadCount\n        self.markedAsUnreadUnmutedCount = markedAsUnreadUnmutedCount\n        self.totalCount = totalCount\n        self.unreadCount = unreadCount\n        self.unreadUnmutedCount = unreadUnmutedCount\n    }\n}\n\n/// A story was changed\npublic struct UpdateStory: Codable, Equatable, Hashable {\n\n    /// The new information about the story\n    public let story: Story\n\n\n    public init(story: Story) {\n        self.story = story\n    }\n}\n\n/// A story became inaccessible\npublic struct UpdateStoryDeleted: Codable, Equatable, Hashable {\n\n    /// Story identifier\n    public let storyId: Int\n\n    /// Identifier of the chat that posted the story\n    public let storyPosterChatId: Int64\n\n\n    public init(\n        storyId: Int,\n        storyPosterChatId: Int64\n    ) {\n        self.storyId = storyId\n        self.storyPosterChatId = storyPosterChatId\n    }\n}\n\n/// A story has been successfully posted\npublic struct UpdateStoryPostSucceeded: Codable, Equatable, Hashable {\n\n    /// The previous temporary story identifier\n    public let oldStoryId: Int\n\n    /// The posted story\n    public let story: Story\n\n\n    public init(\n        oldStoryId: Int,\n        story: Story\n    ) {\n        self.oldStoryId = oldStoryId\n        self.story = story\n    }\n}\n\n/// A story failed to post. If the story posting is canceled, then updateStoryDeleted will be received instead of this update\npublic struct UpdateStoryPostFailed: Codable, Equatable, Hashable {\n\n    /// The cause of the story posting failure\n    public let error: Error\n\n    /// Type of the error; may be null if unknown\n    public let errorType: CanPostStoryResult?\n\n    /// The failed to post story\n    public let story: Story\n\n\n    public init(\n        error: Error,\n        errorType: CanPostStoryResult?,\n        story: Story\n    ) {\n        self.error = error\n        self.errorType = errorType\n        self.story = story\n    }\n}\n\n/// The list of active stories posted by a specific chat has changed\npublic struct UpdateChatActiveStories: Codable, Equatable, Hashable {\n\n    /// The new list of active stories\n    public let activeStories: ChatActiveStories\n\n\n    public init(activeStories: ChatActiveStories) {\n        self.activeStories = activeStories\n    }\n}\n\n/// Number of chats in a story list has changed\npublic struct UpdateStoryListChatCount: Codable, Equatable, Hashable {\n\n    /// Approximate total number of chats with active stories in the list\n    public let chatCount: Int\n\n    /// The story list\n    public let storyList: StoryList\n\n\n    public init(\n        chatCount: Int,\n        storyList: StoryList\n    ) {\n        self.chatCount = chatCount\n        self.storyList = storyList\n    }\n}\n\n/// Story stealth mode settings have changed\npublic struct UpdateStoryStealthMode: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) until stealth mode is active; 0 if it is disabled\n    public let activeUntilDate: Int\n\n    /// Point in time (Unix timestamp) when stealth mode can be enabled again; 0 if there is no active cooldown\n    public let cooldownUntilDate: Int\n\n\n    public init(\n        activeUntilDate: Int,\n        cooldownUntilDate: Int\n    ) {\n        self.activeUntilDate = activeUntilDate\n        self.cooldownUntilDate = cooldownUntilDate\n    }\n}\n\n/// Lists of bots which Mini Apps must be allowed to read text from clipboard and must be opened without a warning\npublic struct UpdateTrustedMiniAppBots: Codable, Equatable, Hashable {\n\n    /// List of user identifiers of the bots; the corresponding users may not be sent using updateUser updates and may not be accessible\n    public let botUserIds: [Int64]\n\n\n    public init(botUserIds: [Int64]) {\n        self.botUserIds = botUserIds\n    }\n}\n\n/// An option changed its value\npublic struct UpdateOption: Codable, Equatable, Hashable {\n\n    /// The option name\n    public let name: String\n\n    /// The new option value\n    public let value: OptionValue\n\n\n    public init(\n        name: String,\n        value: OptionValue\n    ) {\n        self.name = name\n        self.value = value\n    }\n}\n\n/// A sticker set has changed\npublic struct UpdateStickerSet: Codable, Equatable, Hashable {\n\n    /// The sticker set\n    public let stickerSet: StickerSet\n\n\n    public init(stickerSet: StickerSet) {\n        self.stickerSet = stickerSet\n    }\n}\n\n/// The list of installed sticker sets was updated\npublic struct UpdateInstalledStickerSets: Codable, Equatable, Hashable {\n\n    /// The new list of installed ordinary sticker sets\n    public let stickerSetIds: [TdInt64]\n\n    /// Type of the affected stickers\n    public let stickerType: StickerType\n\n\n    public init(\n        stickerSetIds: [TdInt64],\n        stickerType: StickerType\n    ) {\n        self.stickerSetIds = stickerSetIds\n        self.stickerType = stickerType\n    }\n}\n\n/// The list of trending sticker sets was updated or some of them were viewed\npublic struct UpdateTrendingStickerSets: Codable, Equatable, Hashable {\n\n    /// The prefix of the list of trending sticker sets with the newest trending sticker sets\n    public let stickerSets: TrendingStickerSets\n\n    /// Type of the affected stickers\n    public let stickerType: StickerType\n\n\n    public init(\n        stickerSets: TrendingStickerSets,\n        stickerType: StickerType\n    ) {\n        self.stickerSets = stickerSets\n        self.stickerType = stickerType\n    }\n}\n\n/// The list of recently used stickers was updated\npublic struct UpdateRecentStickers: Codable, Equatable, Hashable {\n\n    /// True, if the list of stickers attached to photo or video files was updated; otherwise, the list of sent stickers is updated\n    public let isAttached: Bool\n\n    /// The new list of file identifiers of recently used stickers\n    public let stickerIds: [Int]\n\n\n    public init(\n        isAttached: Bool,\n        stickerIds: [Int]\n    ) {\n        self.isAttached = isAttached\n        self.stickerIds = stickerIds\n    }\n}\n\n/// The list of favorite stickers was updated\npublic struct UpdateFavoriteStickers: Codable, Equatable, Hashable {\n\n    /// The new list of file identifiers of favorite stickers\n    public let stickerIds: [Int]\n\n\n    public init(stickerIds: [Int]) {\n        self.stickerIds = stickerIds\n    }\n}\n\n/// The list of saved animations was updated\npublic struct UpdateSavedAnimations: Codable, Equatable, Hashable {\n\n    /// The new list of file identifiers of saved animations\n    public let animationIds: [Int]\n\n\n    public init(animationIds: [Int]) {\n        self.animationIds = animationIds\n    }\n}\n\n/// The list of saved notification sounds was updated. This update may not be sent until information about a notification sound was requested for the first time\npublic struct UpdateSavedNotificationSounds: Codable, Equatable, Hashable {\n\n    /// The new list of identifiers of saved notification sounds\n    public let notificationSoundIds: [TdInt64]\n\n\n    public init(notificationSoundIds: [TdInt64]) {\n        self.notificationSoundIds = notificationSoundIds\n    }\n}\n\n/// The default background has changed\npublic struct UpdateDefaultBackground: Codable, Equatable, Hashable {\n\n    /// The new default background; may be null\n    public let background: Background?\n\n    /// True, if default background for dark theme has changed\n    public let forDarkTheme: Bool\n\n\n    public init(\n        background: Background?,\n        forDarkTheme: Bool\n    ) {\n        self.background = background\n        self.forDarkTheme = forDarkTheme\n    }\n}\n\n/// The list of available emoji chat themes has changed\npublic struct UpdateEmojiChatThemes: Codable, Equatable, Hashable {\n\n    /// The new list of emoji chat themes\n    public let chatThemes: [EmojiChatTheme]\n\n\n    public init(chatThemes: [EmojiChatTheme]) {\n        self.chatThemes = chatThemes\n    }\n}\n\n/// The list of supported accent colors has changed\npublic struct UpdateAccentColors: Codable, Equatable, Hashable {\n\n    /// The list of accent color identifiers, which can be set through setAccentColor and setChatAccentColor. The colors must be shown in the specified order\n    public let availableAccentColorIds: [Int]\n\n    /// Information about supported colors; colors with identifiers 0 (red), 1 (orange), 2 (purple/violet), 3 (green), 4 (cyan), 5 (blue), 6 (pink) must always be supported and aren't included in the list. The exact colors for the accent colors with identifiers 0-6 must be taken from the application theme\n    public let colors: [AccentColor]\n\n\n    public init(\n        availableAccentColorIds: [Int],\n        colors: [AccentColor]\n    ) {\n        self.availableAccentColorIds = availableAccentColorIds\n        self.colors = colors\n    }\n}\n\n/// The list of supported accent colors for user profiles has changed\npublic struct UpdateProfileAccentColors: Codable, Equatable, Hashable {\n\n    /// The list of accent color identifiers, which can be set through setProfileAccentColor and setChatProfileAccentColor. The colors must be shown in the specified order\n    public let availableAccentColorIds: [Int]\n\n    /// Information about supported colors\n    public let colors: [ProfileAccentColor]\n\n\n    public init(\n        availableAccentColorIds: [Int],\n        colors: [ProfileAccentColor]\n    ) {\n        self.availableAccentColorIds = availableAccentColorIds\n        self.colors = colors\n    }\n}\n\n/// Some language pack strings have been updated\npublic struct UpdateLanguagePackStrings: Codable, Equatable, Hashable {\n\n    /// Identifier of the updated language pack\n    public let languagePackId: String\n\n    /// Localization target to which the language pack belongs\n    public let localizationTarget: String\n\n    /// List of changed language pack strings; empty if all strings have changed\n    public let strings: [LanguagePackString]\n\n\n    public init(\n        languagePackId: String,\n        localizationTarget: String,\n        strings: [LanguagePackString]\n    ) {\n        self.languagePackId = languagePackId\n        self.localizationTarget = localizationTarget\n        self.strings = strings\n    }\n}\n\n/// The connection state has changed. This update must be used only to show a human-readable description of the connection state\npublic struct UpdateConnectionState: Codable, Equatable, Hashable {\n\n    /// The new connection state\n    public let state: ConnectionState\n\n\n    public init(state: ConnectionState) {\n        self.state = state\n    }\n}\n\n/// The freeze state of the current user's account has changed\npublic struct UpdateFreezeState: Codable, Equatable, Hashable {\n\n    /// The link to open to send an appeal to unfreeze the account\n    public let appealLink: String\n\n    /// Point in time (Unix timestamp) when the account will be deleted and can't be unfrozen; 0 if the account isn't frozen\n    public let deletionDate: Int\n\n    /// Point in time (Unix timestamp) when the account was frozen; 0 if the account isn't frozen\n    public let freezingDate: Int\n\n    /// True, if the account is frozen\n    public let isFrozen: Bool\n\n\n    public init(\n        appealLink: String,\n        deletionDate: Int,\n        freezingDate: Int,\n        isFrozen: Bool\n    ) {\n        self.appealLink = appealLink\n        self.deletionDate = deletionDate\n        self.freezingDate = freezingDate\n        self.isFrozen = isFrozen\n    }\n}\n\n/// The parameters for age verification of the current user's account has changed\npublic struct UpdateAgeVerificationParameters: Codable, Equatable, Hashable {\n\n    /// Parameters for the age verification; may be null if age verification isn't needed\n    public let parameters: AgeVerificationParameters?\n\n\n    public init(parameters: AgeVerificationParameters?) {\n        self.parameters = parameters\n    }\n}\n\n/// New terms of service must be accepted by the user. If the terms of service are declined, then the deleteAccount method must be called with the reason \"Decline ToS update\"\npublic struct UpdateTermsOfService: Codable, Equatable, Hashable {\n\n    /// The new terms of service\n    public let termsOfService: TermsOfService\n\n    /// Identifier of the terms of service\n    public let termsOfServiceId: String\n\n\n    public init(\n        termsOfService: TermsOfService,\n        termsOfServiceId: String\n    ) {\n        self.termsOfService = termsOfService\n        self.termsOfServiceId = termsOfServiceId\n    }\n}\n\n/// The first unconfirmed session has changed\npublic struct UpdateUnconfirmedSession: Codable, Equatable, Hashable {\n\n    /// The unconfirmed session; may be null if none\n    public let session: UnconfirmedSession?\n\n\n    public init(session: UnconfirmedSession?) {\n        self.session = session\n    }\n}\n\n/// The list of bots added to attachment or side menu has changed\npublic struct UpdateAttachmentMenuBots: Codable, Equatable, Hashable {\n\n    /// The new list of bots. The bots must not be shown on scheduled messages screen\n    public let bots: [AttachmentMenuBot]\n\n\n    public init(bots: [AttachmentMenuBot]) {\n        self.bots = bots\n    }\n}\n\n/// A message was sent by an opened Web App, so the Web App needs to be closed\npublic struct UpdateWebAppMessageSent: Codable, Equatable, Hashable {\n\n    /// Identifier of Web App launch\n    public let webAppLaunchId: TdInt64\n\n\n    public init(webAppLaunchId: TdInt64) {\n        self.webAppLaunchId = webAppLaunchId\n    }\n}\n\n/// The list of active emoji reactions has changed\npublic struct UpdateActiveEmojiReactions: Codable, Equatable, Hashable {\n\n    /// The new list of active emoji reactions\n    public let emojis: [String]\n\n\n    public init(emojis: [String]) {\n        self.emojis = emojis\n    }\n}\n\n/// The list of available message effects has changed\npublic struct UpdateAvailableMessageEffects: Codable, Equatable, Hashable {\n\n    /// The new list of available message effects from emoji reactions\n    public let reactionEffectIds: [TdInt64]\n\n    /// The new list of available message effects from Premium stickers\n    public let stickerEffectIds: [TdInt64]\n\n\n    public init(\n        reactionEffectIds: [TdInt64],\n        stickerEffectIds: [TdInt64]\n    ) {\n        self.reactionEffectIds = reactionEffectIds\n        self.stickerEffectIds = stickerEffectIds\n    }\n}\n\n/// The type of default reaction has changed\npublic struct UpdateDefaultReactionType: Codable, Equatable, Hashable {\n\n    /// The new type of the default reaction\n    public let reactionType: ReactionType\n\n\n    public init(reactionType: ReactionType) {\n        self.reactionType = reactionType\n    }\n}\n\n/// The type of default paid reaction has changed\npublic struct UpdateDefaultPaidReactionType: Codable, Equatable, Hashable {\n\n    /// The new type of the default paid reaction\n    public let type: PaidReactionType\n\n\n    public init(type: PaidReactionType) {\n        self.type = type\n    }\n}\n\n/// Tags used in Saved Messages or a Saved Messages topic have changed\npublic struct UpdateSavedMessagesTags: Codable, Equatable, Hashable {\n\n    /// Identifier of Saved Messages topic which tags were changed; 0 if tags for the whole chat has changed\n    public let savedMessagesTopicId: Int64\n\n    /// The new tags\n    public let tags: SavedMessagesTags\n\n\n    public init(\n        savedMessagesTopicId: Int64,\n        tags: SavedMessagesTags\n    ) {\n        self.savedMessagesTopicId = savedMessagesTopicId\n        self.tags = tags\n    }\n}\n\n/// The list of messages with active live location that need to be updated by the application has changed. The list is persistent across application restarts only if the message database is used\npublic struct UpdateActiveLiveLocationMessages: Codable, Equatable, Hashable {\n\n    /// The list of messages with active live locations\n    public let messages: [Message]\n\n\n    public init(messages: [Message]) {\n        self.messages = messages\n    }\n}\n\n/// The number of Telegram Stars owned by the current user has changed\npublic struct UpdateOwnedStarCount: Codable, Equatable, Hashable {\n\n    /// The new amount of owned Telegram Stars\n    public let starAmount: StarAmount\n\n\n    public init(starAmount: StarAmount) {\n        self.starAmount = starAmount\n    }\n}\n\n/// The number of Toncoins owned by the current user has changed\npublic struct UpdateOwnedTonCount: Codable, Equatable, Hashable {\n\n    /// The new amount of owned Toncoins; in the smallest units of the cryptocurrency\n    public let tonAmount: Int64\n\n\n    public init(tonAmount: Int64) {\n        self.tonAmount = tonAmount\n    }\n}\n\n/// The revenue earned from sponsored messages in a chat has changed. If chat revenue screen is opened, then getChatRevenueTransactions may be called to fetch new transactions\npublic struct UpdateChatRevenueAmount: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat\n    public let chatId: Int64\n\n    /// New amount of earned revenue\n    public let revenueAmount: ChatRevenueAmount\n\n\n    public init(\n        chatId: Int64,\n        revenueAmount: ChatRevenueAmount\n    ) {\n        self.chatId = chatId\n        self.revenueAmount = revenueAmount\n    }\n}\n\n/// The Telegram Star revenue earned by a user or a chat has changed. If Telegram Star transaction screen of the chat is opened, then getStarTransactions may be called to fetch new transactions\npublic struct UpdateStarRevenueStatus: Codable, Equatable, Hashable {\n\n    /// Identifier of the owner of the Telegram Stars\n    public let ownerId: MessageSender\n\n    /// New Telegram Star revenue status\n    public let status: StarRevenueStatus\n\n\n    public init(\n        ownerId: MessageSender,\n        status: StarRevenueStatus\n    ) {\n        self.ownerId = ownerId\n        self.status = status\n    }\n}\n\n/// The Toncoin revenue earned by the current user has changed. If Toncoin transaction screen of the chat is opened, then getTonTransactions may be called to fetch new transactions\npublic struct UpdateTonRevenueStatus: Codable, Equatable, Hashable {\n\n    /// New Toncoin revenue status\n    public let status: TonRevenueStatus\n\n\n    public init(status: TonRevenueStatus) {\n        self.status = status\n    }\n}\n\n/// The parameters of speech recognition without Telegram Premium subscription has changed\npublic struct UpdateSpeechRecognitionTrial: Codable, Equatable, Hashable {\n\n    /// Number of left speech recognition attempts this week\n    public let leftCount: Int\n\n    /// The maximum allowed duration of media for speech recognition without Telegram Premium subscription, in seconds\n    public let maxMediaDuration: Int\n\n    /// Point in time (Unix timestamp) when the weekly number of tries will reset; 0 if unknown\n    public let nextResetDate: Int\n\n    /// The total number of allowed speech recognitions per week; 0 if none\n    public let weeklyCount: Int\n\n\n    public init(\n        leftCount: Int,\n        maxMediaDuration: Int,\n        nextResetDate: Int,\n        weeklyCount: Int\n    ) {\n        self.leftCount = leftCount\n        self.maxMediaDuration = maxMediaDuration\n        self.nextResetDate = nextResetDate\n        self.weeklyCount = weeklyCount\n    }\n}\n\n/// The levels of live story group call messages have changed\npublic struct UpdateGroupCallMessageLevels: Codable, Equatable, Hashable {\n\n    /// New description of the levels in decreasing order of groupCallMessageLevel.min_star_count\n    public let levels: [GroupCallMessageLevel]\n\n\n    public init(levels: [GroupCallMessageLevel]) {\n        self.levels = levels\n    }\n}\n\n/// The list of supported dice emojis has changed\npublic struct UpdateDiceEmojis: Codable, Equatable, Hashable {\n\n    /// The new list of supported dice emojis\n    public let emojis: [String]\n\n\n    public init(emojis: [String]) {\n        self.emojis = emojis\n    }\n}\n\n/// The stake dice state has changed\npublic struct UpdateStakeDiceState: Codable, Equatable, Hashable {\n\n    /// The new state. The state can be used only if it was received recently enough. Otherwise, a new state must be requested using getStakeDiceState\n    public let state: StakeDiceState\n\n\n    public init(state: StakeDiceState) {\n        self.state = state\n    }\n}\n\n/// Some animated emoji message was clicked and a big animated sticker must be played if the message is visible on the screen. chatActionWatchingAnimations with the text of the message needs to be sent if the sticker is played\npublic struct UpdateAnimatedEmojiMessageClicked: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// Message identifier\n    public let messageId: Int64\n\n    /// The animated sticker to be played\n    public let sticker: Sticker\n\n\n    public init(\n        chatId: Int64,\n        messageId: Int64,\n        sticker: Sticker\n    ) {\n        self.chatId = chatId\n        self.messageId = messageId\n        self.sticker = sticker\n    }\n}\n\n/// The parameters of animation search through getOption(\"animation_search_bot_username\") bot has changed\npublic struct UpdateAnimationSearchParameters: Codable, Equatable, Hashable {\n\n    /// The new list of emojis suggested for searching\n    public let emojis: [String]\n\n    /// Name of the animation search provider\n    public let provider: String\n\n\n    public init(\n        emojis: [String],\n        provider: String\n    ) {\n        self.emojis = emojis\n        self.provider = provider\n    }\n}\n\n/// The styles supported for text composition have changed\npublic struct UpdateTextCompositionStyles: Codable, Equatable, Hashable {\n\n    /// The new list of supported styles\n    public let styles: [TextCompositionStyle]\n\n\n    public init(styles: [TextCompositionStyle]) {\n        self.styles = styles\n    }\n}\n\n/// The list of suggested to the user actions has changed\npublic struct UpdateSuggestedActions: Codable, Equatable, Hashable {\n\n    /// Added suggested actions\n    public let addedActions: [SuggestedAction]\n\n    /// Removed suggested actions\n    public let removedActions: [SuggestedAction]\n\n\n    public init(\n        addedActions: [SuggestedAction],\n        removedActions: [SuggestedAction]\n    ) {\n        self.addedActions = addedActions\n        self.removedActions = removedActions\n    }\n}\n\n/// Download or upload file speed for the user was limited, but it can be restored by subscription to Telegram Premium. The notification can be postponed until a being downloaded or uploaded file is visible to the user. Use getOption(\"premium_download_speedup\") or getOption(\"premium_upload_speedup\") to get expected speedup after subscription to Telegram Premium\npublic struct UpdateSpeedLimitNotification: Codable, Equatable, Hashable {\n\n    /// True, if upload speed was limited; false, if download speed was limited\n    public let isUpload: Bool\n\n\n    public init(isUpload: Bool) {\n        self.isUpload = isUpload\n    }\n}\n\n/// The list of contacts that had birthdays recently or will have birthday soon has changed\npublic struct UpdateContactCloseBirthdays: Codable, Equatable, Hashable {\n\n    /// List of contact users with close birthday\n    public let closeBirthdayUsers: [CloseBirthdayUser]\n\n\n    public init(closeBirthdayUsers: [CloseBirthdayUser]) {\n        self.closeBirthdayUsers = closeBirthdayUsers\n    }\n}\n\n/// Autosave settings for some type of chats were updated\npublic struct UpdateAutosaveSettings: Codable, Equatable, Hashable {\n\n    /// Type of chats for which autosave settings were updated\n    public let scope: AutosaveSettingsScope\n\n    /// The new autosave settings; may be null if the settings are reset to default\n    public let settings: ScopeAutosaveSettings?\n\n\n    public init(\n        scope: AutosaveSettingsScope,\n        settings: ScopeAutosaveSettings?\n    ) {\n        self.scope = scope\n        self.settings = settings\n    }\n}\n\n/// A business connection has changed; for bots only\npublic struct UpdateBusinessConnection: Codable, Equatable, Hashable {\n\n    /// New data about the connection\n    public let connection: BusinessConnection\n\n\n    public init(connection: BusinessConnection) {\n        self.connection = connection\n    }\n}\n\n/// A new message was added to a business account; for bots only\npublic struct UpdateNewBusinessMessage: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the business connection\n    public let connectionId: String\n\n    /// The new message\n    public let message: BusinessMessage\n\n\n    public init(\n        connectionId: String,\n        message: BusinessMessage\n    ) {\n        self.connectionId = connectionId\n        self.message = message\n    }\n}\n\n/// A message in a business account was edited; for bots only\npublic struct UpdateBusinessMessageEdited: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the business connection\n    public let connectionId: String\n\n    /// The edited message\n    public let message: BusinessMessage\n\n\n    public init(\n        connectionId: String,\n        message: BusinessMessage\n    ) {\n        self.connectionId = connectionId\n        self.message = message\n    }\n}\n\n/// Messages in a business account were deleted; for bots only\npublic struct UpdateBusinessMessagesDeleted: Codable, Equatable, Hashable {\n\n    /// Identifier of a chat in the business account in which messages were deleted\n    public let chatId: Int64\n\n    /// Unique identifier of the business connection\n    public let connectionId: String\n\n    /// Unique message identifiers of the deleted messages\n    public let messageIds: [Int64]\n\n\n    public init(\n        chatId: Int64,\n        connectionId: String,\n        messageIds: [Int64]\n    ) {\n        self.chatId = chatId\n        self.connectionId = connectionId\n        self.messageIds = messageIds\n    }\n}\n\n/// A new incoming inline query; for bots only\npublic struct UpdateNewInlineQuery: Codable, Equatable, Hashable, Identifiable {\n\n    /// The type of the chat from which the query originated; may be null if unknown\n    public let chatType: ChatType?\n\n    /// Unique query identifier\n    public let id: TdInt64\n\n    /// Offset of the first entry to return\n    public let offset: String\n\n    /// Text of the query\n    public let query: String\n\n    /// Identifier of the user who sent the query\n    public let senderUserId: Int64\n\n    /// User location; may be null\n    public let userLocation: Location?\n\n\n    public init(\n        chatType: ChatType?,\n        id: TdInt64,\n        offset: String,\n        query: String,\n        senderUserId: Int64,\n        userLocation: Location?\n    ) {\n        self.chatType = chatType\n        self.id = id\n        self.offset = offset\n        self.query = query\n        self.senderUserId = senderUserId\n        self.userLocation = userLocation\n    }\n}\n\n/// The user has chosen a result of an inline query; for bots only\npublic struct UpdateNewChosenInlineResult: Codable, Equatable, Hashable {\n\n    /// Identifier of the sent inline message, if known\n    public let inlineMessageId: String\n\n    /// Text of the query\n    public let query: String\n\n    /// Identifier of the chosen result\n    public let resultId: String\n\n    /// Identifier of the user who sent the query\n    public let senderUserId: Int64\n\n    /// User location; may be null\n    public let userLocation: Location?\n\n\n    public init(\n        inlineMessageId: String,\n        query: String,\n        resultId: String,\n        senderUserId: Int64,\n        userLocation: Location?\n    ) {\n        self.inlineMessageId = inlineMessageId\n        self.query = query\n        self.resultId = resultId\n        self.senderUserId = senderUserId\n        self.userLocation = userLocation\n    }\n}\n\n/// A new incoming guest query; for bots only\npublic struct UpdateNewGuestQuery: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique query identifier\n    public let id: TdInt64\n\n    /// The message with the query\n    public let message: Message\n\n    /// The list of reference messages\n    public let referenceMessages: [Message]\n\n\n    public init(\n        id: TdInt64,\n        message: Message,\n        referenceMessages: [Message]\n    ) {\n        self.id = id\n        self.message = message\n        self.referenceMessages = referenceMessages\n    }\n}\n\n/// A new incoming callback query; for bots only\npublic struct UpdateNewCallbackQuery: Codable, Equatable, Hashable, Identifiable {\n\n    /// Identifier of the chat where the query was sent\n    public let chatId: Int64\n\n    /// Identifier that uniquely corresponds to the chat to which the message was sent\n    public let chatInstance: TdInt64\n\n    /// Unique query identifier\n    public let id: TdInt64\n\n    /// Identifier of the message from which the query originated\n    public let messageId: Int64\n\n    /// Query payload\n    public let payload: CallbackQueryPayload\n\n    /// Identifier of the user who sent the query\n    public let senderUserId: Int64\n\n\n    public init(\n        chatId: Int64,\n        chatInstance: TdInt64,\n        id: TdInt64,\n        messageId: Int64,\n        payload: CallbackQueryPayload,\n        senderUserId: Int64\n    ) {\n        self.chatId = chatId\n        self.chatInstance = chatInstance\n        self.id = id\n        self.messageId = messageId\n        self.payload = payload\n        self.senderUserId = senderUserId\n    }\n}\n\n/// A new incoming callback query from a message sent via a bot; for bots only\npublic struct UpdateNewInlineCallbackQuery: Codable, Equatable, Hashable, Identifiable {\n\n    /// An identifier uniquely corresponding to the chat a message was sent to\n    public let chatInstance: TdInt64\n\n    /// Unique query identifier\n    public let id: TdInt64\n\n    /// Identifier of the inline message from which the query originated\n    public let inlineMessageId: String\n\n    /// Query payload\n    public let payload: CallbackQueryPayload\n\n    /// Identifier of the user who sent the query\n    public let senderUserId: Int64\n\n\n    public init(\n        chatInstance: TdInt64,\n        id: TdInt64,\n        inlineMessageId: String,\n        payload: CallbackQueryPayload,\n        senderUserId: Int64\n    ) {\n        self.chatInstance = chatInstance\n        self.id = id\n        self.inlineMessageId = inlineMessageId\n        self.payload = payload\n        self.senderUserId = senderUserId\n    }\n}\n\n/// A new incoming callback query from a business message; for bots only\npublic struct UpdateNewBusinessCallbackQuery: Codable, Equatable, Hashable, Identifiable {\n\n    /// An identifier uniquely corresponding to the chat a message was sent to\n    public let chatInstance: TdInt64\n\n    /// Unique identifier of the business connection\n    public let connectionId: String\n\n    /// Unique query identifier\n    public let id: TdInt64\n\n    /// The message from the business account from which the query originated\n    public let message: BusinessMessage\n\n    /// Query payload\n    public let payload: CallbackQueryPayload\n\n    /// Identifier of the user who sent the query\n    public let senderUserId: Int64\n\n\n    public init(\n        chatInstance: TdInt64,\n        connectionId: String,\n        id: TdInt64,\n        message: BusinessMessage,\n        payload: CallbackQueryPayload,\n        senderUserId: Int64\n    ) {\n        self.chatInstance = chatInstance\n        self.connectionId = connectionId\n        self.id = id\n        self.message = message\n        self.payload = payload\n        self.senderUserId = senderUserId\n    }\n}\n\n/// A new incoming shipping query; for bots only. Only for invoices with flexible price\npublic struct UpdateNewShippingQuery: Codable, Equatable, Hashable, Identifiable {\n\n    /// Unique query identifier\n    public let id: TdInt64\n\n    /// Invoice payload\n    public let invoicePayload: String\n\n    /// Identifier of the user who sent the query\n    public let senderUserId: Int64\n\n    /// User shipping address\n    public let shippingAddress: Address\n\n\n    public init(\n        id: TdInt64,\n        invoicePayload: String,\n        senderUserId: Int64,\n        shippingAddress: Address\n    ) {\n        self.id = id\n        self.invoicePayload = invoicePayload\n        self.senderUserId = senderUserId\n        self.shippingAddress = shippingAddress\n    }\n}\n\n/// A new incoming pre-checkout query; for bots only. Contains full information about a checkout\npublic struct UpdateNewPreCheckoutQuery: Codable, Equatable, Hashable, Identifiable {\n\n    /// Currency for the product price\n    public let currency: String\n\n    /// Unique query identifier\n    public let id: TdInt64\n\n    /// Invoice payload\n    public let invoicePayload: Data\n\n    /// Information about the order; may be null\n    public let orderInfo: OrderInfo?\n\n    /// Identifier of the user who sent the query\n    public let senderUserId: Int64\n\n    /// Identifier of a shipping option chosen by the user; may be empty if not applicable\n    public let shippingOptionId: String\n\n    /// Total price for the product, in the smallest units of the currency\n    public let totalAmount: Int64\n\n\n    public init(\n        currency: String,\n        id: TdInt64,\n        invoicePayload: Data,\n        orderInfo: OrderInfo?,\n        senderUserId: Int64,\n        shippingOptionId: String,\n        totalAmount: Int64\n    ) {\n        self.currency = currency\n        self.id = id\n        self.invoicePayload = invoicePayload\n        self.orderInfo = orderInfo\n        self.senderUserId = senderUserId\n        self.shippingOptionId = shippingOptionId\n        self.totalAmount = totalAmount\n    }\n}\n\n/// A new incoming event; for bots only\npublic struct UpdateNewCustomEvent: Codable, Equatable, Hashable {\n\n    /// A JSON-serialized event\n    public let event: String\n\n\n    public init(event: String) {\n        self.event = event\n    }\n}\n\n/// A new incoming query; for bots only\npublic struct UpdateNewCustomQuery: Codable, Equatable, Hashable, Identifiable {\n\n    /// JSON-serialized query data\n    public let data: String\n\n    /// The query identifier\n    public let id: TdInt64\n\n    /// Query timeout\n    public let timeout: Int\n\n\n    public init(\n        data: String,\n        id: TdInt64,\n        timeout: Int\n    ) {\n        self.data = data\n        self.id = id\n        self.timeout = timeout\n    }\n}\n\n/// A poll was updated; for bots only\npublic struct UpdatePoll: Codable, Equatable, Hashable {\n\n    /// New data about the poll\n    public let poll: Poll\n\n\n    public init(poll: Poll) {\n        self.poll = poll\n    }\n}\n\n/// A user changed the answer to a poll; for bots only\npublic struct UpdatePollAnswer: Codable, Equatable, Hashable {\n\n    /// Unique identifiers of answer options, that were chosen by the user\n    public let optionIds: [String]\n\n    /// 0-based identifiers of answer options, that were chosen by the user\n    public let optionPositions: [Int]\n\n    /// Unique poll identifier\n    public let pollId: TdInt64\n\n    /// Identifier of the message sender that changed the answer to the poll\n    public let voterId: MessageSender\n\n\n    public init(\n        optionIds: [String],\n        optionPositions: [Int],\n        pollId: TdInt64,\n        voterId: MessageSender\n    ) {\n        self.optionIds = optionIds\n        self.optionPositions = optionPositions\n        self.pollId = pollId\n        self.voterId = voterId\n    }\n}\n\n/// A bot that can be managed by the current bot was created or updated; for bots only\npublic struct UpdateManagedBot: Codable, Equatable, Hashable {\n\n    /// Identifier of the created managed bot\n    public let botUserId: Int64\n\n    /// Identifier of the user who created the bot\n    public let userId: Int64\n\n\n    public init(\n        botUserId: Int64,\n        userId: Int64\n    ) {\n        self.botUserId = botUserId\n        self.userId = userId\n    }\n}\n\n/// User rights changed in a chat; for bots only\npublic struct UpdateChatMember: Codable, Equatable, Hashable {\n\n    /// Identifier of the user, changing the rights\n    public let actorUserId: Int64\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// Point in time (Unix timestamp) when the user rights were changed\n    public let date: Int\n\n    /// If user has joined the chat using an invite link, the invite link; may be null\n    public let inviteLink: ChatInviteLink?\n\n    /// New chat member\n    public let newChatMember: ChatMember\n\n    /// Previous chat member\n    public let oldChatMember: ChatMember\n\n    /// True, if the user has joined the chat using an invite link for a chat folder\n    public let viaChatFolderInviteLink: Bool\n\n    /// True, if the user has joined the chat after sending a join request and being approved by an administrator\n    public let viaJoinRequest: Bool\n\n\n    public init(\n        actorUserId: Int64,\n        chatId: Int64,\n        date: Int,\n        inviteLink: ChatInviteLink?,\n        newChatMember: ChatMember,\n        oldChatMember: ChatMember,\n        viaChatFolderInviteLink: Bool,\n        viaJoinRequest: Bool\n    ) {\n        self.actorUserId = actorUserId\n        self.chatId = chatId\n        self.date = date\n        self.inviteLink = inviteLink\n        self.newChatMember = newChatMember\n        self.oldChatMember = oldChatMember\n        self.viaChatFolderInviteLink = viaChatFolderInviteLink\n        self.viaJoinRequest = viaJoinRequest\n    }\n}\n\n/// A user sent a join request to a chat; for bots only\npublic struct UpdateNewChatJoinRequest: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// The invite link, which was used to send join request; may be null\n    public let inviteLink: ChatInviteLink?\n\n    /// Join request\n    public let request: ChatJoinRequest\n\n    /// Chat identifier of the private chat with the user\n    public let userChatId: Int64\n\n\n    public init(\n        chatId: Int64,\n        inviteLink: ChatInviteLink?,\n        request: ChatJoinRequest,\n        userChatId: Int64\n    ) {\n        self.chatId = chatId\n        self.inviteLink = inviteLink\n        self.request = request\n        self.userChatId = userChatId\n    }\n}\n\n/// A chat boost has changed; for bots only\npublic struct UpdateChatBoost: Codable, Equatable, Hashable {\n\n    /// New information about the boost\n    public let boost: ChatBoost\n\n    /// Chat identifier\n    public let chatId: Int64\n\n\n    public init(\n        boost: ChatBoost,\n        chatId: Int64\n    ) {\n        self.boost = boost\n        self.chatId = chatId\n    }\n}\n\n/// User changed its reactions on a message with public reactions; for bots only\npublic struct UpdateMessageReaction: Codable, Equatable, Hashable {\n\n    /// Identifier of the user or chat that changed reactions\n    public let actorId: MessageSender\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// Point in time (Unix timestamp) when the reactions were changed\n    public let date: Int\n\n    /// Message identifier\n    public let messageId: Int64\n\n    /// New list of chosen reactions\n    public let newReactionTypes: [ReactionType]\n\n    /// Old list of chosen reactions\n    public let oldReactionTypes: [ReactionType]\n\n\n    public init(\n        actorId: MessageSender,\n        chatId: Int64,\n        date: Int,\n        messageId: Int64,\n        newReactionTypes: [ReactionType],\n        oldReactionTypes: [ReactionType]\n    ) {\n        self.actorId = actorId\n        self.chatId = chatId\n        self.date = date\n        self.messageId = messageId\n        self.newReactionTypes = newReactionTypes\n        self.oldReactionTypes = oldReactionTypes\n    }\n}\n\n/// Reactions added to a message with anonymous reactions have changed; for bots only\npublic struct UpdateMessageReactions: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64\n\n    /// Point in time (Unix timestamp) when the reactions were changed\n    public let date: Int\n\n    /// Message identifier\n    public let messageId: Int64\n\n    /// The list of reactions added to the message\n    public let reactions: [MessageReaction]\n\n\n    public init(\n        chatId: Int64,\n        date: Int,\n        messageId: Int64,\n        reactions: [MessageReaction]\n    ) {\n        self.chatId = chatId\n        self.date = date\n        self.messageId = messageId\n        self.reactions = reactions\n    }\n}\n\n/// Paid media were purchased by a user; for bots only\npublic struct UpdatePaidMediaPurchased: Codable, Equatable, Hashable {\n\n    /// Bot-specified payload for the paid media\n    public let payload: String\n\n    /// User identifier\n    public let userId: Int64\n\n\n    public init(\n        payload: String,\n        userId: Int64\n    ) {\n        self.payload = payload\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Updates.swift",
    "content": "//\n//  Updates.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of updates\npublic struct Updates: Codable, Equatable, Hashable {\n\n    /// List of updates\n    public let updates: [Update]\n\n\n    public init(updates: [Update]) {\n        self.updates = updates\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UpgradeBasicGroupChatToSupergroupChat.swift",
    "content": "//\n//  UpgradeBasicGroupChatToSupergroupChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Creates a new supergroup from an existing basic group and sends a corresponding messageChatUpgradeTo and messageChatUpgradeFrom; requires owner privileges. Deactivates the original basic group\npublic struct UpgradeBasicGroupChatToSupergroupChat: Codable, Equatable, Hashable {\n\n    /// Identifier of the chat to upgrade\n    public let chatId: Int64?\n\n\n    public init(chatId: Int64?) {\n        self.chatId = chatId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UpgradeGift.swift",
    "content": "//\n//  UpgradeGift.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Upgrades a regular gift\npublic struct UpgradeGift: Codable, Equatable, Hashable {\n\n    /// Unique identifier of business connection on behalf of which to send the request; for bots only\n    public let businessConnectionId: String?\n\n    /// Pass true to keep the original gift text, sender and receiver in the upgraded gift\n    public let keepOriginalDetails: Bool?\n\n    /// Identifier of the gift\n    public let receivedGiftId: String?\n\n    /// The Telegram Star amount required to pay for the upgrade. It the gift has prepaid_upgrade_star_count > 0, then pass 0, otherwise, pass gift.upgrade_star_count\n    public let starCount: Int64?\n\n\n    public init(\n        businessConnectionId: String?,\n        keepOriginalDetails: Bool?,\n        receivedGiftId: String?,\n        starCount: Int64?\n    ) {\n        self.businessConnectionId = businessConnectionId\n        self.keepOriginalDetails = keepOriginalDetails\n        self.receivedGiftId = receivedGiftId\n        self.starCount = starCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UpgradeGiftResult.swift",
    "content": "//\n//  UpgradeGiftResult.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains result of gift upgrading\npublic struct UpgradeGiftResult: Codable, Equatable, Hashable {\n\n    /// True, if the gift can be transferred to another owner\n    public let canBeTransferred: Bool\n\n    /// Number of Telegram Stars that must be paid to drop original details of the upgraded gift; 0 if not available\n    public let dropOriginalDetailsStarCount: Int64\n\n    /// Point in time (Unix timestamp) when the gift can be transferred to the TON blockchain as an NFT; can be in the past\n    public let exportDate: Int\n\n    /// The upgraded gift\n    public let gift: UpgradedGift\n\n    /// True, if the gift is displayed on the user's or the channel's profile page\n    public let isSaved: Bool\n\n    /// Point in time (Unix timestamp) when the gift can be resold to another user; can be in the past; 0 if the gift can't be resold; only for the receiver of the gift\n    public let nextResaleDate: Int\n\n    /// Point in time (Unix timestamp) when the gift can be transferred to another owner; can be in the past; 0 if the gift can be transferred immediately or transfer isn't possible\n    public let nextTransferDate: Int\n\n    /// Unique identifier of the received gift for the current user\n    public let receivedGiftId: String\n\n    /// Number of Telegram Stars that must be paid to transfer the upgraded gift\n    public let transferStarCount: Int64\n\n\n    public init(\n        canBeTransferred: Bool,\n        dropOriginalDetailsStarCount: Int64,\n        exportDate: Int,\n        gift: UpgradedGift,\n        isSaved: Bool,\n        nextResaleDate: Int,\n        nextTransferDate: Int,\n        receivedGiftId: String,\n        transferStarCount: Int64\n    ) {\n        self.canBeTransferred = canBeTransferred\n        self.dropOriginalDetailsStarCount = dropOriginalDetailsStarCount\n        self.exportDate = exportDate\n        self.gift = gift\n        self.isSaved = isSaved\n        self.nextResaleDate = nextResaleDate\n        self.nextTransferDate = nextTransferDate\n        self.receivedGiftId = receivedGiftId\n        self.transferStarCount = transferStarCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UpgradedGift.swift",
    "content": "//\n//  UpgradedGift.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an upgraded gift that can be transferred to another owner or transferred to the TON blockchain as an NFT\npublic struct UpgradedGift: Codable, Equatable, Hashable, Identifiable {\n\n    /// Backdrop of the upgraded gift\n    public let backdrop: UpgradedGiftBackdrop\n\n    /// True, if an offer to purchase the gift can be sent using sendGiftPurchaseOffer\n    public let canSendPurchaseOffer: Bool\n\n    /// Colors that can be set for user's name, background of empty chat photo, replies to messages and link previews; may be null if none or unknown\n    public let colors: UpgradedGiftColors?\n\n    /// Probability that the gift adds to the chance of successful crafting of a new gift; 0 if the gift can't be used for crafting\n    public let craftProbabilityPerMille: Int\n\n    /// Address of the gift NFT in TON blockchain; may be empty if none. Append the address to getOption(\"ton_blockchain_explorer_url\") to get a link with information about the address\n    public let giftAddress: String\n\n    /// Identifier of the user or the chat to which the upgraded gift was assigned from blockchain; may be null if none or unknown\n    public let hostId: MessageSender?\n\n    /// Unique identifier of the gift\n    public let id: TdInt64\n\n    /// True, if the gift was used to craft another gift\n    public let isBurned: Bool\n\n    /// True, if the gift was craft from another gifts\n    public let isCrafted: Bool\n\n    /// True, if the original gift could have been bought only by Telegram Premium subscribers\n    public let isPremium: Bool\n\n    /// True, if the gift can be used to set a theme in a chat\n    public let isThemeAvailable: Bool\n\n    /// The maximum number of gifts that can be upgraded from the same gift\n    public let maxUpgradedCount: Int\n\n    /// Model of the upgraded gift\n    public let model: UpgradedGiftModel\n\n    /// Unique name of the upgraded gift that can be used with internalLinkTypeUpgradedGift or sendResoldGift\n    public let name: String\n\n    /// Unique number of the upgraded gift among gifts upgraded from the same gift\n    public let number: Int\n\n    /// Information about the originally sent gift; may be null if unknown\n    public let originalDetails: UpgradedGiftOriginalDetails?\n\n    /// Address of the gift NFT owner in TON blockchain; may be empty if none. Append the address to getOption(\"ton_blockchain_explorer_url\") to get a link with information about the address\n    public let ownerAddress: String\n\n    /// Identifier of the user or the chat that owns the upgraded gift; may be null if none or unknown\n    public let ownerId: MessageSender?\n\n    /// Name of the owner for the case when owner identifier and address aren't known\n    public let ownerName: String\n\n    /// Identifier of the chat that published the gift; 0 if none\n    public let publisherChatId: Int64\n\n    /// Unique identifier of the regular gift from which the gift was upgraded; may be 0 for short period of time for old gifts from database\n    public let regularGiftId: TdInt64\n\n    /// Resale parameters of the gift; may be null if resale isn't possible\n    public let resaleParameters: GiftResaleParameters?\n\n    /// Symbol of the upgraded gift\n    public let symbol: UpgradedGiftSymbol\n\n    /// The title of the upgraded gift\n    public let title: String\n\n    /// Total number of gifts that were upgraded from the same gift\n    public let totalUpgradedCount: Int\n\n    /// Identifier of the chat for which the gift is used to set a theme; 0 if none or the gift isn't owned by the current user\n    public let usedThemeChatId: Int64\n\n    /// Estimated value of the gift; in the smallest units of the currency; 0 if unavailable\n    public let valueAmount: Int64\n\n    /// ISO 4217 currency code of the currency in which value of the gift is represented; may be empty if unavailable\n    public let valueCurrency: String\n\n    /// Estimated value of the gift in USD; in USD cents; 0 if unavailable\n    public let valueUsdAmount: Int64\n\n\n    public init(\n        backdrop: UpgradedGiftBackdrop,\n        canSendPurchaseOffer: Bool,\n        colors: UpgradedGiftColors?,\n        craftProbabilityPerMille: Int,\n        giftAddress: String,\n        hostId: MessageSender?,\n        id: TdInt64,\n        isBurned: Bool,\n        isCrafted: Bool,\n        isPremium: Bool,\n        isThemeAvailable: Bool,\n        maxUpgradedCount: Int,\n        model: UpgradedGiftModel,\n        name: String,\n        number: Int,\n        originalDetails: UpgradedGiftOriginalDetails?,\n        ownerAddress: String,\n        ownerId: MessageSender?,\n        ownerName: String,\n        publisherChatId: Int64,\n        regularGiftId: TdInt64,\n        resaleParameters: GiftResaleParameters?,\n        symbol: UpgradedGiftSymbol,\n        title: String,\n        totalUpgradedCount: Int,\n        usedThemeChatId: Int64,\n        valueAmount: Int64,\n        valueCurrency: String,\n        valueUsdAmount: Int64\n    ) {\n        self.backdrop = backdrop\n        self.canSendPurchaseOffer = canSendPurchaseOffer\n        self.colors = colors\n        self.craftProbabilityPerMille = craftProbabilityPerMille\n        self.giftAddress = giftAddress\n        self.hostId = hostId\n        self.id = id\n        self.isBurned = isBurned\n        self.isCrafted = isCrafted\n        self.isPremium = isPremium\n        self.isThemeAvailable = isThemeAvailable\n        self.maxUpgradedCount = maxUpgradedCount\n        self.model = model\n        self.name = name\n        self.number = number\n        self.originalDetails = originalDetails\n        self.ownerAddress = ownerAddress\n        self.ownerId = ownerId\n        self.ownerName = ownerName\n        self.publisherChatId = publisherChatId\n        self.regularGiftId = regularGiftId\n        self.resaleParameters = resaleParameters\n        self.symbol = symbol\n        self.title = title\n        self.totalUpgradedCount = totalUpgradedCount\n        self.usedThemeChatId = usedThemeChatId\n        self.valueAmount = valueAmount\n        self.valueCurrency = valueCurrency\n        self.valueUsdAmount = valueUsdAmount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UpgradedGiftAttributeId.swift",
    "content": "//\n//  UpgradedGiftAttributeId.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains identifier of an upgraded gift attribute to search for\npublic indirect enum UpgradedGiftAttributeId: Codable, Equatable, Hashable {\n\n    /// Identifier of a gift model\n    case upgradedGiftAttributeIdModel(UpgradedGiftAttributeIdModel)\n\n    /// Identifier of a gift symbol\n    case upgradedGiftAttributeIdSymbol(UpgradedGiftAttributeIdSymbol)\n\n    /// Identifier of a gift backdrop\n    case upgradedGiftAttributeIdBackdrop(UpgradedGiftAttributeIdBackdrop)\n\n\n    private enum Kind: String, Codable {\n        case upgradedGiftAttributeIdModel\n        case upgradedGiftAttributeIdSymbol\n        case upgradedGiftAttributeIdBackdrop\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .upgradedGiftAttributeIdModel:\n            let value = try UpgradedGiftAttributeIdModel(from: decoder)\n            self = .upgradedGiftAttributeIdModel(value)\n        case .upgradedGiftAttributeIdSymbol:\n            let value = try UpgradedGiftAttributeIdSymbol(from: decoder)\n            self = .upgradedGiftAttributeIdSymbol(value)\n        case .upgradedGiftAttributeIdBackdrop:\n            let value = try UpgradedGiftAttributeIdBackdrop(from: decoder)\n            self = .upgradedGiftAttributeIdBackdrop(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .upgradedGiftAttributeIdModel(let value):\n            try container.encode(Kind.upgradedGiftAttributeIdModel, forKey: .type)\n            try value.encode(to: encoder)\n        case .upgradedGiftAttributeIdSymbol(let value):\n            try container.encode(Kind.upgradedGiftAttributeIdSymbol, forKey: .type)\n            try value.encode(to: encoder)\n        case .upgradedGiftAttributeIdBackdrop(let value):\n            try container.encode(Kind.upgradedGiftAttributeIdBackdrop, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// Identifier of a gift model\npublic struct UpgradedGiftAttributeIdModel: Codable, Equatable, Hashable {\n\n    /// Identifier of the sticker representing the model\n    public let stickerId: TdInt64\n\n\n    public init(stickerId: TdInt64) {\n        self.stickerId = stickerId\n    }\n}\n\n/// Identifier of a gift symbol\npublic struct UpgradedGiftAttributeIdSymbol: Codable, Equatable, Hashable {\n\n    /// Identifier of the sticker representing the symbol\n    public let stickerId: TdInt64\n\n\n    public init(stickerId: TdInt64) {\n        self.stickerId = stickerId\n    }\n}\n\n/// Identifier of a gift backdrop\npublic struct UpgradedGiftAttributeIdBackdrop: Codable, Equatable, Hashable {\n\n    /// Identifier of the backdrop\n    public let backdropId: Int\n\n\n    public init(backdropId: Int) {\n        self.backdropId = backdropId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UpgradedGiftAttributeRarity.swift",
    "content": "//\n//  UpgradedGiftAttributeRarity.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes rarity of an upgraded gift attribute\npublic indirect enum UpgradedGiftAttributeRarity: Codable, Equatable, Hashable {\n\n    /// The rarity is represented as the numeric frequency of the model\n    case upgradedGiftAttributeRarityPerMille(UpgradedGiftAttributeRarityPerMille)\n\n    /// The attribute is uncommon\n    case upgradedGiftAttributeRarityUncommon\n\n    /// The attribute is rare\n    case upgradedGiftAttributeRarityRare\n\n    /// The attribute is epic\n    case upgradedGiftAttributeRarityEpic\n\n    /// The attribute is legendary\n    case upgradedGiftAttributeRarityLegendary\n\n\n    private enum Kind: String, Codable {\n        case upgradedGiftAttributeRarityPerMille\n        case upgradedGiftAttributeRarityUncommon\n        case upgradedGiftAttributeRarityRare\n        case upgradedGiftAttributeRarityEpic\n        case upgradedGiftAttributeRarityLegendary\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .upgradedGiftAttributeRarityPerMille:\n            let value = try UpgradedGiftAttributeRarityPerMille(from: decoder)\n            self = .upgradedGiftAttributeRarityPerMille(value)\n        case .upgradedGiftAttributeRarityUncommon:\n            self = .upgradedGiftAttributeRarityUncommon\n        case .upgradedGiftAttributeRarityRare:\n            self = .upgradedGiftAttributeRarityRare\n        case .upgradedGiftAttributeRarityEpic:\n            self = .upgradedGiftAttributeRarityEpic\n        case .upgradedGiftAttributeRarityLegendary:\n            self = .upgradedGiftAttributeRarityLegendary\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .upgradedGiftAttributeRarityPerMille(let value):\n            try container.encode(Kind.upgradedGiftAttributeRarityPerMille, forKey: .type)\n            try value.encode(to: encoder)\n        case .upgradedGiftAttributeRarityUncommon:\n            try container.encode(Kind.upgradedGiftAttributeRarityUncommon, forKey: .type)\n        case .upgradedGiftAttributeRarityRare:\n            try container.encode(Kind.upgradedGiftAttributeRarityRare, forKey: .type)\n        case .upgradedGiftAttributeRarityEpic:\n            try container.encode(Kind.upgradedGiftAttributeRarityEpic, forKey: .type)\n        case .upgradedGiftAttributeRarityLegendary:\n            try container.encode(Kind.upgradedGiftAttributeRarityLegendary, forKey: .type)\n        }\n    }\n}\n\n/// The rarity is represented as the numeric frequency of the model\npublic struct UpgradedGiftAttributeRarityPerMille: Codable, Equatable, Hashable {\n\n    /// The number of upgraded gifts that receive this attribute for each 1000 gifts upgraded; if 0, then it can be shown as \"<0.1%\"\n    public let perMille: Int\n\n\n    public init(perMille: Int) {\n        self.perMille = perMille\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UpgradedGiftBackdrop.swift",
    "content": "//\n//  UpgradedGiftBackdrop.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a backdrop of an upgraded gift\npublic struct UpgradedGiftBackdrop: Codable, Equatable, Hashable, Identifiable {\n\n    /// Colors of the backdrop\n    public let colors: UpgradedGiftBackdropColors\n\n    /// Unique identifier of the backdrop\n    public let id: Int\n\n    /// Name of the backdrop\n    public let name: String\n\n    /// The rarity of the backdrop\n    public let rarity: UpgradedGiftAttributeRarity\n\n\n    public init(\n        colors: UpgradedGiftBackdropColors,\n        id: Int,\n        name: String,\n        rarity: UpgradedGiftAttributeRarity\n    ) {\n        self.colors = colors\n        self.id = id\n        self.name = name\n        self.rarity = rarity\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UpgradedGiftBackdropColors.swift",
    "content": "//\n//  UpgradedGiftBackdropColors.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes colors of a backdrop of an upgraded gift\npublic struct UpgradedGiftBackdropColors: Codable, Equatable, Hashable {\n\n    /// A color in the center of the backdrop in the RGB format\n    public let centerColor: Int\n\n    /// A color on the edges of the backdrop in the RGB format\n    public let edgeColor: Int\n\n    /// A color to be applied for the symbol in the RGB format\n    public let symbolColor: Int\n\n    /// A color for the text on the backdrop in the RGB format\n    public let textColor: Int\n\n\n    public init(\n        centerColor: Int,\n        edgeColor: Int,\n        symbolColor: Int,\n        textColor: Int\n    ) {\n        self.centerColor = centerColor\n        self.edgeColor = edgeColor\n        self.symbolColor = symbolColor\n        self.textColor = textColor\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UpgradedGiftBackdropCount.swift",
    "content": "//\n//  UpgradedGiftBackdropCount.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a backdrop of an upgraded gift\npublic struct UpgradedGiftBackdropCount: Codable, Equatable, Hashable {\n\n    /// The backdrop\n    public let backdrop: UpgradedGiftBackdrop\n\n    /// Total number of gifts with the symbol\n    public let totalCount: Int\n\n\n    public init(\n        backdrop: UpgradedGiftBackdrop,\n        totalCount: Int\n    ) {\n        self.backdrop = backdrop\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UpgradedGiftColors.swift",
    "content": "//\n//  UpgradedGiftColors.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about color scheme for user's name, background of empty chat photo, replies to messages and link previews\npublic struct UpgradedGiftColors: Codable, Equatable, Hashable, Identifiable {\n\n    /// Accent color to use in dark themes in RGB format\n    public let darkThemeAccentColor: Int\n\n    /// The list of 1-3 colors in RGB format, describing the accent color, as expected to be shown in dark themes\n    public let darkThemeColors: [Int]\n\n    /// Unique identifier of the upgraded gift colors\n    public let id: TdInt64\n\n    /// Accent color to use in light themes in RGB format\n    public let lightThemeAccentColor: Int\n\n    /// The list of 1-3 colors in RGB format, describing the accent color, as expected to be shown in light themes\n    public let lightThemeColors: [Int]\n\n    /// Custom emoji identifier of the model of the upgraded gift\n    public let modelCustomEmojiId: TdInt64\n\n    /// Custom emoji identifier of the symbol of the upgraded gift\n    public let symbolCustomEmojiId: TdInt64\n\n\n    public init(\n        darkThemeAccentColor: Int,\n        darkThemeColors: [Int],\n        id: TdInt64,\n        lightThemeAccentColor: Int,\n        lightThemeColors: [Int],\n        modelCustomEmojiId: TdInt64,\n        symbolCustomEmojiId: TdInt64\n    ) {\n        self.darkThemeAccentColor = darkThemeAccentColor\n        self.darkThemeColors = darkThemeColors\n        self.id = id\n        self.lightThemeAccentColor = lightThemeAccentColor\n        self.lightThemeColors = lightThemeColors\n        self.modelCustomEmojiId = modelCustomEmojiId\n        self.symbolCustomEmojiId = symbolCustomEmojiId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UpgradedGiftModel.swift",
    "content": "//\n//  UpgradedGiftModel.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a model of an upgraded gift\npublic struct UpgradedGiftModel: Codable, Equatable, Hashable {\n\n    /// True, if the model can be obtained only through gift crafting\n    public let isCrafted: Bool\n\n    /// Name of the model\n    public let name: String\n\n    /// The rarity of the model\n    public let rarity: UpgradedGiftAttributeRarity\n\n    /// The sticker representing the upgraded gift\n    public let sticker: Sticker\n\n\n    public init(\n        isCrafted: Bool,\n        name: String,\n        rarity: UpgradedGiftAttributeRarity,\n        sticker: Sticker\n    ) {\n        self.isCrafted = isCrafted\n        self.name = name\n        self.rarity = rarity\n        self.sticker = sticker\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UpgradedGiftModelCount.swift",
    "content": "//\n//  UpgradedGiftModelCount.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a model of an upgraded gift with the number of gifts found\npublic struct UpgradedGiftModelCount: Codable, Equatable, Hashable {\n\n    /// The model\n    public let model: UpgradedGiftModel\n\n    /// Total number of gifts with the model\n    public let totalCount: Int\n\n\n    public init(\n        model: UpgradedGiftModel,\n        totalCount: Int\n    ) {\n        self.model = model\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UpgradedGiftOrigin.swift",
    "content": "//\n//  UpgradedGiftOrigin.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes origin from which the upgraded gift was obtained\npublic indirect enum UpgradedGiftOrigin: Codable, Equatable, Hashable {\n\n    /// The gift was obtained by upgrading of a previously received gift\n    case upgradedGiftOriginUpgrade(UpgradedGiftOriginUpgrade)\n\n    /// The gift was transferred from another owner\n    case upgradedGiftOriginTransfer\n\n    /// The gift was bought from another user\n    case upgradedGiftOriginResale(UpgradedGiftOriginResale)\n\n    /// The gift was assigned from blockchain and isn't owned by the current user. The gift can't be transferred, resold or withdrawn to blockchain\n    case upgradedGiftOriginBlockchain\n\n    /// The sender or receiver of the message has paid for upgraid of the gift, which has been completed\n    case upgradedGiftOriginPrepaidUpgrade\n\n    /// The gift was bought through an offer\n    case upgradedGiftOriginOffer(UpgradedGiftOriginOffer)\n\n    /// The gift was crafted from other gifts\n    case upgradedGiftOriginCraft\n\n\n    private enum Kind: String, Codable {\n        case upgradedGiftOriginUpgrade\n        case upgradedGiftOriginTransfer\n        case upgradedGiftOriginResale\n        case upgradedGiftOriginBlockchain\n        case upgradedGiftOriginPrepaidUpgrade\n        case upgradedGiftOriginOffer\n        case upgradedGiftOriginCraft\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .upgradedGiftOriginUpgrade:\n            let value = try UpgradedGiftOriginUpgrade(from: decoder)\n            self = .upgradedGiftOriginUpgrade(value)\n        case .upgradedGiftOriginTransfer:\n            self = .upgradedGiftOriginTransfer\n        case .upgradedGiftOriginResale:\n            let value = try UpgradedGiftOriginResale(from: decoder)\n            self = .upgradedGiftOriginResale(value)\n        case .upgradedGiftOriginBlockchain:\n            self = .upgradedGiftOriginBlockchain\n        case .upgradedGiftOriginPrepaidUpgrade:\n            self = .upgradedGiftOriginPrepaidUpgrade\n        case .upgradedGiftOriginOffer:\n            let value = try UpgradedGiftOriginOffer(from: decoder)\n            self = .upgradedGiftOriginOffer(value)\n        case .upgradedGiftOriginCraft:\n            self = .upgradedGiftOriginCraft\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .upgradedGiftOriginUpgrade(let value):\n            try container.encode(Kind.upgradedGiftOriginUpgrade, forKey: .type)\n            try value.encode(to: encoder)\n        case .upgradedGiftOriginTransfer:\n            try container.encode(Kind.upgradedGiftOriginTransfer, forKey: .type)\n        case .upgradedGiftOriginResale(let value):\n            try container.encode(Kind.upgradedGiftOriginResale, forKey: .type)\n            try value.encode(to: encoder)\n        case .upgradedGiftOriginBlockchain:\n            try container.encode(Kind.upgradedGiftOriginBlockchain, forKey: .type)\n        case .upgradedGiftOriginPrepaidUpgrade:\n            try container.encode(Kind.upgradedGiftOriginPrepaidUpgrade, forKey: .type)\n        case .upgradedGiftOriginOffer(let value):\n            try container.encode(Kind.upgradedGiftOriginOffer, forKey: .type)\n            try value.encode(to: encoder)\n        case .upgradedGiftOriginCraft:\n            try container.encode(Kind.upgradedGiftOriginCraft, forKey: .type)\n        }\n    }\n}\n\n/// The gift was obtained by upgrading of a previously received gift\npublic struct UpgradedGiftOriginUpgrade: Codable, Equatable, Hashable {\n\n    /// Identifier of the message with the regular gift that was upgraded; may be 0 or an identifier of a deleted message\n    public let giftMessageId: Int64\n\n\n    public init(giftMessageId: Int64) {\n        self.giftMessageId = giftMessageId\n    }\n}\n\n/// The gift was bought from another user\npublic struct UpgradedGiftOriginResale: Codable, Equatable, Hashable {\n\n    /// Price paid for the gift\n    public let price: GiftResalePrice\n\n\n    public init(price: GiftResalePrice) {\n        self.price = price\n    }\n}\n\n/// The gift was bought through an offer\npublic struct UpgradedGiftOriginOffer: Codable, Equatable, Hashable {\n\n    /// Price paid for the gift\n    public let price: GiftResalePrice\n\n\n    public init(price: GiftResalePrice) {\n        self.price = price\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UpgradedGiftOriginalDetails.swift",
    "content": "//\n//  UpgradedGiftOriginalDetails.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the original details about the gift\npublic struct UpgradedGiftOriginalDetails: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the gift was sent\n    public let date: Int\n\n    /// Identifier of the user or the chat that received the gift\n    public let receiverId: MessageSender\n\n    /// Identifier of the user or the chat that sent the gift; may be null if the gift was private\n    public let senderId: MessageSender?\n\n    /// Message added to the gift\n    public let text: FormattedText\n\n\n    public init(\n        date: Int,\n        receiverId: MessageSender,\n        senderId: MessageSender?,\n        text: FormattedText\n    ) {\n        self.date = date\n        self.receiverId = receiverId\n        self.senderId = senderId\n        self.text = text\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UpgradedGiftSymbol.swift",
    "content": "//\n//  UpgradedGiftSymbol.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a symbol shown on the pattern of an upgraded gift\npublic struct UpgradedGiftSymbol: Codable, Equatable, Hashable {\n\n    /// Name of the symbol\n    public let name: String\n\n    /// The rarity of the symbol\n    public let rarity: UpgradedGiftAttributeRarity\n\n    /// The sticker representing the symbol\n    public let sticker: Sticker\n\n\n    public init(\n        name: String,\n        rarity: UpgradedGiftAttributeRarity,\n        sticker: Sticker\n    ) {\n        self.name = name\n        self.rarity = rarity\n        self.sticker = sticker\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UpgradedGiftSymbolCount.swift",
    "content": "//\n//  UpgradedGiftSymbolCount.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a symbol shown on the pattern of an upgraded gift\npublic struct UpgradedGiftSymbolCount: Codable, Equatable, Hashable {\n\n    /// The symbol\n    public let symbol: UpgradedGiftSymbol\n\n    /// Total number of gifts with the symbol\n    public let totalCount: Int\n\n\n    public init(\n        symbol: UpgradedGiftSymbol,\n        totalCount: Int\n    ) {\n        self.symbol = symbol\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UpgradedGiftValueInfo.swift",
    "content": "//\n//  UpgradedGiftValueInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about value of an upgraded gift\npublic struct UpgradedGiftValueInfo: Codable, Equatable, Hashable {\n\n    /// The average sale price in the last month of gifts upgraded from the same gift; in the smallest units of the currency; 0 if there were no such sales\n    public let averageSalePrice: Int64\n\n    /// ISO 4217 currency code of the currency in which the prices are represented\n    public let currency: String\n\n    /// Number of gifts upgraded from the same gift being resold on Fragment\n    public let fragmentListedGiftCount: Int\n\n    /// The HTTPS link to the Fragment for the gift; may be empty if there are no such gifts being sold on Fragment\n    public let fragmentUrl: String\n\n    /// Point in time (Unix timestamp) when the corresponding regular gift was originally purchased\n    public let initialSaleDate: Int\n\n    /// Initial price of the gift; in the smallest units of the currency\n    public let initialSalePrice: Int64\n\n    /// The Telegram Star amount that was paid for the gift\n    public let initialSaleStarCount: Int64\n\n    /// True, if the last sale was completed on Fragment\n    public let isLastSaleOnFragment: Bool\n\n    /// True, if the value is calculated as average value of similar sold gifts. Otherwise, it is based on the sale price of the gift\n    public let isValueAverage: Bool\n\n    /// Point in time (Unix timestamp) when the upgraded gift was purchased last time; 0 if never\n    public let lastSaleDate: Int\n\n    /// Last purchase price of the gift; in the smallest units of the currency; 0 if the gift has never been resold\n    public let lastSalePrice: Int64\n\n    /// The current minimum price of gifts upgraded from the same gift; in the smallest units of the currency; 0 if there are no such gifts\n    public let minimumPrice: Int64\n\n    /// Number of gifts upgraded from the same gift being resold on Telegram\n    public let telegramListedGiftCount: Int\n\n    /// Estimated value of the gift; in the smallest units of the currency\n    public let value: Int64\n\n\n    public init(\n        averageSalePrice: Int64,\n        currency: String,\n        fragmentListedGiftCount: Int,\n        fragmentUrl: String,\n        initialSaleDate: Int,\n        initialSalePrice: Int64,\n        initialSaleStarCount: Int64,\n        isLastSaleOnFragment: Bool,\n        isValueAverage: Bool,\n        lastSaleDate: Int,\n        lastSalePrice: Int64,\n        minimumPrice: Int64,\n        telegramListedGiftCount: Int,\n        value: Int64\n    ) {\n        self.averageSalePrice = averageSalePrice\n        self.currency = currency\n        self.fragmentListedGiftCount = fragmentListedGiftCount\n        self.fragmentUrl = fragmentUrl\n        self.initialSaleDate = initialSaleDate\n        self.initialSalePrice = initialSalePrice\n        self.initialSaleStarCount = initialSaleStarCount\n        self.isLastSaleOnFragment = isLastSaleOnFragment\n        self.isValueAverage = isValueAverage\n        self.lastSaleDate = lastSaleDate\n        self.lastSalePrice = lastSalePrice\n        self.minimumPrice = minimumPrice\n        self.telegramListedGiftCount = telegramListedGiftCount\n        self.value = value\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UploadStickerFile.swift",
    "content": "//\n//  UploadStickerFile.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Uploads a file with a sticker; returns the uploaded file\npublic struct UploadStickerFile: Codable, Equatable, Hashable {\n\n    /// File file to upload; must fit in a 512x512 square. For WEBP stickers the file must be in WEBP or PNG format, which will be converted to WEBP server-side. See https://core.telegram.org/animated_stickers#technical-requirements for technical requirements\n    public let sticker: InputFile?\n\n    /// Sticker format\n    public let stickerFormat: StickerFormat?\n\n    /// Sticker file owner; ignored for regular users\n    public let userId: Int64?\n\n\n    public init(\n        sticker: InputFile?,\n        stickerFormat: StickerFormat?,\n        userId: Int64?\n    ) {\n        self.sticker = sticker\n        self.stickerFormat = stickerFormat\n        self.userId = userId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/User.swift",
    "content": "//\n//  User.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a user\npublic struct User: Codable, Equatable, Hashable, Identifiable {\n\n    /// Identifier of the accent color for name, and backgrounds of profile photo, reply header, and link preview\n    public let accentColorId: Int\n\n    /// State of active stories of the user; may be null if the user has no active stories\n    public let activeStoryState: ActiveStoryState?\n\n    /// True, if the user added the current bot to attachment menu; only available to bots\n    public let addedToAttachmentMenu: Bool\n\n    /// Identifier of a custom emoji to be shown on the reply header and link preview background; 0 if none\n    public let backgroundCustomEmojiId: TdInt64\n\n    /// Emoji status to be shown instead of the default Telegram Premium badge; may be null\n    public let emojiStatus: EmojiStatus?\n\n    /// First name of the user\n    public let firstName: String\n\n    /// If false, the user is inaccessible, and the only information known about the user is inside this class. Identifier of the user can't be passed to any method\n    public let haveAccess: Bool\n\n    /// User identifier\n    public let id: Int64\n\n    /// The user is a close friend of the current user; implies that the user is a contact\n    public let isCloseFriend: Bool\n\n    /// The user is a contact of the current user\n    public let isContact: Bool\n\n    /// The user is a contact of the current user and the current user is a contact of the user\n    public let isMutualContact: Bool\n\n    /// True, if the user is a Telegram Premium user\n    public let isPremium: Bool\n\n    /// True, if the user is Telegram support account\n    public let isSupport: Bool\n\n    /// IETF language tag of the user's language; only available to bots\n    public let languageCode: String\n\n    /// Last name of the user\n    public let lastName: String\n\n    /// Number of Telegram Stars that must be paid by general user for each sent message to the user. If positive and userFullInfo is unknown, use canSendMessageToUser to check whether the current user must pay\n    public let paidMessageStarCount: Int64\n\n    /// Phone number of the user\n    public let phoneNumber: String\n\n    /// Identifier of the accent color for the user's profile; -1 if none\n    public let profileAccentColorId: Int\n\n    /// Identifier of a custom emoji to be shown on the background of the user's profile; 0 if none\n    public let profileBackgroundCustomEmojiId: TdInt64\n\n    /// Profile photo of the user; may be null\n    public let profilePhoto: ProfilePhoto?\n\n    /// Information about restrictions that must be applied to the corresponding private chat; may be null if none\n    public let restrictionInfo: RestrictionInfo?\n\n    /// True, if the user may restrict new chats with non-contacts. Use canSendMessageToUser to check whether the current user can message the user or try to create a chat with them\n    public let restrictsNewChats: Bool\n\n    /// Current online status of the user\n    public let status: UserStatus\n\n    /// Type of the user\n    public let type: UserType\n\n    /// Color scheme based on an upgraded gift to be used for the user instead of accent_color_id and background_custom_emoji_id; may be null if none\n    public let upgradedGiftColors: UpgradedGiftColors?\n\n    /// Usernames of the user; may be null\n    public let usernames: Usernames?\n\n    /// Information about verification status of the user; may be null if none\n    public let verificationStatus: VerificationStatus?\n\n\n    public init(\n        accentColorId: Int,\n        activeStoryState: ActiveStoryState?,\n        addedToAttachmentMenu: Bool,\n        backgroundCustomEmojiId: TdInt64,\n        emojiStatus: EmojiStatus?,\n        firstName: String,\n        haveAccess: Bool,\n        id: Int64,\n        isCloseFriend: Bool,\n        isContact: Bool,\n        isMutualContact: Bool,\n        isPremium: Bool,\n        isSupport: Bool,\n        languageCode: String,\n        lastName: String,\n        paidMessageStarCount: Int64,\n        phoneNumber: String,\n        profileAccentColorId: Int,\n        profileBackgroundCustomEmojiId: TdInt64,\n        profilePhoto: ProfilePhoto?,\n        restrictionInfo: RestrictionInfo?,\n        restrictsNewChats: Bool,\n        status: UserStatus,\n        type: UserType,\n        upgradedGiftColors: UpgradedGiftColors?,\n        usernames: Usernames?,\n        verificationStatus: VerificationStatus?\n    ) {\n        self.accentColorId = accentColorId\n        self.activeStoryState = activeStoryState\n        self.addedToAttachmentMenu = addedToAttachmentMenu\n        self.backgroundCustomEmojiId = backgroundCustomEmojiId\n        self.emojiStatus = emojiStatus\n        self.firstName = firstName\n        self.haveAccess = haveAccess\n        self.id = id\n        self.isCloseFriend = isCloseFriend\n        self.isContact = isContact\n        self.isMutualContact = isMutualContact\n        self.isPremium = isPremium\n        self.isSupport = isSupport\n        self.languageCode = languageCode\n        self.lastName = lastName\n        self.paidMessageStarCount = paidMessageStarCount\n        self.phoneNumber = phoneNumber\n        self.profileAccentColorId = profileAccentColorId\n        self.profileBackgroundCustomEmojiId = profileBackgroundCustomEmojiId\n        self.profilePhoto = profilePhoto\n        self.restrictionInfo = restrictionInfo\n        self.restrictsNewChats = restrictsNewChats\n        self.status = status\n        self.type = type\n        self.upgradedGiftColors = upgradedGiftColors\n        self.usernames = usernames\n        self.verificationStatus = verificationStatus\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UserAuctionBid.swift",
    "content": "//\n//  UserAuctionBid.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a bid of the current user in an auction\npublic struct UserAuctionBid: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the bid was made\n    public let bidDate: Int\n\n    /// The minimum number of Telegram Stars that can be put for the next bid\n    public let nextBidStarCount: Int64\n\n    /// Identifier of the user or the chat that will receive the auctioned item. If the auction is opened in context of another user or chat, then a warning is supposed to be shown to the current user\n    public let ownerId: MessageSender\n\n    /// The number of Telegram Stars that were put in the bid\n    public let starCount: Int64\n\n    /// True, if the bid was returned to the user, because it was outbid and can't win anymore\n    public let wasReturned: Bool\n\n\n    public init(\n        bidDate: Int,\n        nextBidStarCount: Int64,\n        ownerId: MessageSender,\n        starCount: Int64,\n        wasReturned: Bool\n    ) {\n        self.bidDate = bidDate\n        self.nextBidStarCount = nextBidStarCount\n        self.ownerId = ownerId\n        self.starCount = starCount\n        self.wasReturned = wasReturned\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UserFullInfo.swift",
    "content": "//\n//  UserFullInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains full information about a user\npublic struct UserFullInfo: Codable, Equatable, Hashable {\n\n    /// A short user bio; may be null for bots\n    public let bio: FormattedText?\n\n    /// Birthdate of the user; may be null if unknown\n    public let birthdate: Birthdate?\n\n    /// Block list to which the user is added; may be null if none\n    public let blockList: BlockList?\n\n    /// For bots, information about the bot; may be null if the user isn't a bot\n    public let botInfo: BotInfo?\n\n    /// Information about verification status of the user provided by a bot; may be null if none or unknown\n    public let botVerification: BotVerification?\n\n    /// Information about business settings for Telegram Business accounts; may be null if none\n    public let businessInfo: BusinessInfo?\n\n    /// True, if the user can be called\n    public let canBeCalled: Bool\n\n    /// The first audio file added to the user's profile; may be null if none\n    public let firstProfileAudio: Audio?\n\n    /// Number of saved to profile gifts for other users or the total number of received gifts for the current user\n    public let giftCount: Int\n\n    /// Settings for gift receiving for the user\n    public let giftSettings: GiftSettings\n\n    /// Number of group chats where both the other user and the current user are a member; 0 for the current user\n    public let groupInCommonCount: Int\n\n    /// True, if the user has posted to profile stories\n    public let hasPostedToProfileStories: Bool\n\n    /// True, if the user can't be called due to their privacy settings\n    public let hasPrivateCalls: Bool\n\n    /// True, if the user can't be linked in forwarded messages due to their privacy settings\n    public let hasPrivateForwards: Bool\n\n    /// True, if voice and video notes can't be sent or forwarded to the user\n    public let hasRestrictedVoiceAndVideoNoteMessages: Bool\n\n    /// True, if the user always enabled sponsored messages; known only for the current user\n    public let hasSponsoredMessagesEnabled: Bool\n\n    /// Number of Telegram Stars that must be paid by the user for each sent message to the current user\n    public let incomingPaidMessageStarCount: Int64\n\n    /// The main tab chosen by the user; may be null if not chosen manually\n    public let mainProfileTab: ProfileTab?\n\n    /// True, if the current user needs to explicitly allow to share their phone number with the user when the method addContact is used\n    public let needPhoneNumberPrivacyException: Bool\n\n    /// Note added to the user's contact; may be null if none\n    public let note: FormattedText?\n\n    /// Number of Telegram Stars that must be paid by the current user for each sent message to the user\n    public let outgoingPaidMessageStarCount: Int64\n\n    /// The rating of the user after the next change; may be null if the user isn't the current user or there are no pending rating changes\n    public let pendingRating: UserRating?\n\n    /// Unix timestamp when rating of the user will change to pending_rating; 0 if the user isn't the current user or there are no pending rating changes\n    public let pendingRatingDate: Int\n\n    /// Identifier of the personal chat of the user; 0 if none\n    public let personalChatId: Int64\n\n    /// User profile photo set by the current user for the contact; may be null. If null and user.profile_photo is null, then the photo is empty; otherwise, it is unknown. If non-null, then it is the same photo as in user.profile_photo and chat.photo. This photo isn't returned in the list of user photos\n    public let personalPhoto: ChatPhoto?\n\n    /// User profile photo; may be null. If null and user.profile_photo is null, then the photo is empty; otherwise, it is unknown. If non-null and personal_photo is null, then it is the same photo as in user.profile_photo and chat.photo\n    public let photo: ChatPhoto?\n\n    /// User profile photo visible if the main photo is hidden by privacy settings; may be null. If null and user.profile_photo is null, then the photo is empty; otherwise, it is unknown. If non-null and both photo and personal_photo are null, then it is the same photo as in user.profile_photo and chat.photo. This photo isn't returned in the list of user photos\n    public let publicPhoto: ChatPhoto?\n\n    /// The current rating of the user; may be null if none\n    public let rating: UserRating?\n\n    /// True, if the user set chat background for both chat users and it wasn't reverted yet\n    public let setChatBackground: Bool\n\n    /// True, if a video call can be created with the user\n    public let supportsVideoCalls: Bool\n\n    /// True, if the user uses an unofficial application that poses a security risk\n    public let usesUnofficialApp: Bool\n\n\n    public init(\n        bio: FormattedText?,\n        birthdate: Birthdate?,\n        blockList: BlockList?,\n        botInfo: BotInfo?,\n        botVerification: BotVerification?,\n        businessInfo: BusinessInfo?,\n        canBeCalled: Bool,\n        firstProfileAudio: Audio?,\n        giftCount: Int,\n        giftSettings: GiftSettings,\n        groupInCommonCount: Int,\n        hasPostedToProfileStories: Bool,\n        hasPrivateCalls: Bool,\n        hasPrivateForwards: Bool,\n        hasRestrictedVoiceAndVideoNoteMessages: Bool,\n        hasSponsoredMessagesEnabled: Bool,\n        incomingPaidMessageStarCount: Int64,\n        mainProfileTab: ProfileTab?,\n        needPhoneNumberPrivacyException: Bool,\n        note: FormattedText?,\n        outgoingPaidMessageStarCount: Int64,\n        pendingRating: UserRating?,\n        pendingRatingDate: Int,\n        personalChatId: Int64,\n        personalPhoto: ChatPhoto?,\n        photo: ChatPhoto?,\n        publicPhoto: ChatPhoto?,\n        rating: UserRating?,\n        setChatBackground: Bool,\n        supportsVideoCalls: Bool,\n        usesUnofficialApp: Bool\n    ) {\n        self.bio = bio\n        self.birthdate = birthdate\n        self.blockList = blockList\n        self.botInfo = botInfo\n        self.botVerification = botVerification\n        self.businessInfo = businessInfo\n        self.canBeCalled = canBeCalled\n        self.firstProfileAudio = firstProfileAudio\n        self.giftCount = giftCount\n        self.giftSettings = giftSettings\n        self.groupInCommonCount = groupInCommonCount\n        self.hasPostedToProfileStories = hasPostedToProfileStories\n        self.hasPrivateCalls = hasPrivateCalls\n        self.hasPrivateForwards = hasPrivateForwards\n        self.hasRestrictedVoiceAndVideoNoteMessages = hasRestrictedVoiceAndVideoNoteMessages\n        self.hasSponsoredMessagesEnabled = hasSponsoredMessagesEnabled\n        self.incomingPaidMessageStarCount = incomingPaidMessageStarCount\n        self.mainProfileTab = mainProfileTab\n        self.needPhoneNumberPrivacyException = needPhoneNumberPrivacyException\n        self.note = note\n        self.outgoingPaidMessageStarCount = outgoingPaidMessageStarCount\n        self.pendingRating = pendingRating\n        self.pendingRatingDate = pendingRatingDate\n        self.personalChatId = personalChatId\n        self.personalPhoto = personalPhoto\n        self.photo = photo\n        self.publicPhoto = publicPhoto\n        self.rating = rating\n        self.setChatBackground = setChatBackground\n        self.supportsVideoCalls = supportsVideoCalls\n        self.usesUnofficialApp = usesUnofficialApp\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UserGift.swift",
    "content": "//\n//  UserGift.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.42-2be9e799\n//  https://github.com/tdlib/td/tree/2be9e799\n//\n\nimport Foundation\n\n\n/// Represents a gift received by a user\npublic struct UserGift: Codable, Equatable, Hashable {\n\n    /// True, if the gift is an upgraded gift that can be transferred to another user; only for the receiver of the gift\n    public let canBeTransferred: Bool\n\n    /// True, if the gift is a regular gift that can be upgraded to a unique gift; only for the receiver of the gift\n    public let canBeUpgraded: Bool\n\n    /// Point in time (Unix timestamp) when the gift was sent\n    public let date: Int\n\n    /// Point in time (Unix timestamp) when the upgraded gift can be transferred to TON blockchain as an NFT; 0 if NFT export isn't possible; only for the receiver of the gift\n    public let exportDate: Int\n\n    /// The gift\n    public let gift: SentGift\n\n    /// True, if the sender and gift text are shown only to the gift receiver; otherwise, everyone are able to see them\n    public let isPrivate: Bool\n\n    /// True, if the gift is displayed on the user's profile page; only for the receiver of the gift\n    public let isSaved: Bool\n\n    /// Identifier of the message with the gift in the chat with the sender of the gift; can be 0 or an identifier of a deleted message; only for the receiver of the gift\n    public let messageId: Int64\n\n    /// Number of Telegram Stars that were paid by the sender for the ability to upgrade the gift\n    public let prepaidUpgradeStarCount: Int64\n\n    /// Number of Telegram Stars that can be claimed by the receiver instead of the regular gift; 0 if the gift can't be sold by the current user\n    public let sellStarCount: Int64\n\n    /// Identifier of the user that sent the gift; 0 if unknown\n    public let senderUserId: Int64\n\n    /// Message added to the gift\n    public let text: FormattedText\n\n    /// Number of Telegram Stars that must be paid to transfer the upgraded gift; only for the receiver of the gift\n    public let transferStarCount: Int64\n\n    /// True, if the gift was refunded and isn't available anymore\n    public let wasRefunded: Bool\n\n\n    public init(\n        canBeTransferred: Bool,\n        canBeUpgraded: Bool,\n        date: Int,\n        exportDate: Int,\n        gift: SentGift,\n        isPrivate: Bool,\n        isSaved: Bool,\n        messageId: Int64,\n        prepaidUpgradeStarCount: Int64,\n        sellStarCount: Int64,\n        senderUserId: Int64,\n        text: FormattedText,\n        transferStarCount: Int64,\n        wasRefunded: Bool\n    ) {\n        self.canBeTransferred = canBeTransferred\n        self.canBeUpgraded = canBeUpgraded\n        self.date = date\n        self.exportDate = exportDate\n        self.gift = gift\n        self.isPrivate = isPrivate\n        self.isSaved = isSaved\n        self.messageId = messageId\n        self.prepaidUpgradeStarCount = prepaidUpgradeStarCount\n        self.sellStarCount = sellStarCount\n        self.senderUserId = senderUserId\n        self.text = text\n        self.transferStarCount = transferStarCount\n        self.wasRefunded = wasRefunded\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UserGifts.swift",
    "content": "//\n//  UserGifts.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.42-2be9e799\n//  https://github.com/tdlib/td/tree/2be9e799\n//\n\nimport Foundation\n\n\n/// Represents a list of gifts received by a user\npublic struct UserGifts: Codable, Equatable, Hashable {\n\n    /// The list of gifts\n    public let gifts: [UserGift]\n\n    /// The offset for the next request. If empty, then there are no more results\n    public let nextOffset: String\n\n    /// The total number of received gifts\n    public let totalCount: Int\n\n\n    public init(\n        gifts: [UserGift],\n        nextOffset: String,\n        totalCount: Int\n    ) {\n        self.gifts = gifts\n        self.nextOffset = nextOffset\n        self.totalCount = totalCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UserLink.swift",
    "content": "//\n//  UserLink.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains an HTTPS URL, which can be used to get information about a user\npublic struct UserLink: Codable, Equatable, Hashable {\n\n    /// Left time for which the link is valid, in seconds; 0 if the link is a public username link\n    public let expiresIn: Int\n\n    /// The URL\n    public let url: String\n\n\n    public init(\n        expiresIn: Int,\n        url: String\n    ) {\n        self.expiresIn = expiresIn\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UserPrivacySetting.swift",
    "content": "//\n//  UserPrivacySetting.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes available user privacy settings\npublic indirect enum UserPrivacySetting: Codable, Equatable, Hashable {\n\n    /// A privacy setting for managing whether the user's online status is visible\n    case userPrivacySettingShowStatus\n\n    /// A privacy setting for managing whether the user's profile photo is visible\n    case userPrivacySettingShowProfilePhoto\n\n    /// A privacy setting for managing whether a link to the user's account is included in forwarded messages\n    case userPrivacySettingShowLinkInForwardedMessages\n\n    /// A privacy setting for managing whether the user's phone number is visible\n    case userPrivacySettingShowPhoneNumber\n\n    /// A privacy setting for managing whether the user's bio is visible\n    case userPrivacySettingShowBio\n\n    /// A privacy setting for managing whether the user's birthdate is visible\n    case userPrivacySettingShowBirthdate\n\n    /// A privacy setting for managing whether the user's profile audio files are visible\n    case userPrivacySettingShowProfileAudio\n\n    /// A privacy setting for managing whether the user can be invited to chats\n    case userPrivacySettingAllowChatInvites\n\n    /// A privacy setting for managing whether the user can be called\n    case userPrivacySettingAllowCalls\n\n    /// A privacy setting for managing whether peer-to-peer connections can be used for calls\n    case userPrivacySettingAllowPeerToPeerCalls\n\n    /// A privacy setting for managing whether the user can be found by their phone number. Checked only if the phone number is not known to the other user. Can be set only to \"Allow contacts\" or \"Allow all\"\n    case userPrivacySettingAllowFindingByPhoneNumber\n\n    /// A privacy setting for managing whether the user can receive voice and video messages in private chats; for Telegram Premium users only\n    case userPrivacySettingAllowPrivateVoiceAndVideoNoteMessages\n\n    /// A privacy setting for managing whether received gifts are automatically shown on the user's profile page\n    case userPrivacySettingAutosaveGifts\n\n    /// A privacy setting for managing whether the user can receive messages without additional payment\n    case userPrivacySettingAllowUnpaidMessages\n\n\n    private enum Kind: String, Codable {\n        case userPrivacySettingShowStatus\n        case userPrivacySettingShowProfilePhoto\n        case userPrivacySettingShowLinkInForwardedMessages\n        case userPrivacySettingShowPhoneNumber\n        case userPrivacySettingShowBio\n        case userPrivacySettingShowBirthdate\n        case userPrivacySettingShowProfileAudio\n        case userPrivacySettingAllowChatInvites\n        case userPrivacySettingAllowCalls\n        case userPrivacySettingAllowPeerToPeerCalls\n        case userPrivacySettingAllowFindingByPhoneNumber\n        case userPrivacySettingAllowPrivateVoiceAndVideoNoteMessages\n        case userPrivacySettingAutosaveGifts\n        case userPrivacySettingAllowUnpaidMessages\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .userPrivacySettingShowStatus:\n            self = .userPrivacySettingShowStatus\n        case .userPrivacySettingShowProfilePhoto:\n            self = .userPrivacySettingShowProfilePhoto\n        case .userPrivacySettingShowLinkInForwardedMessages:\n            self = .userPrivacySettingShowLinkInForwardedMessages\n        case .userPrivacySettingShowPhoneNumber:\n            self = .userPrivacySettingShowPhoneNumber\n        case .userPrivacySettingShowBio:\n            self = .userPrivacySettingShowBio\n        case .userPrivacySettingShowBirthdate:\n            self = .userPrivacySettingShowBirthdate\n        case .userPrivacySettingShowProfileAudio:\n            self = .userPrivacySettingShowProfileAudio\n        case .userPrivacySettingAllowChatInvites:\n            self = .userPrivacySettingAllowChatInvites\n        case .userPrivacySettingAllowCalls:\n            self = .userPrivacySettingAllowCalls\n        case .userPrivacySettingAllowPeerToPeerCalls:\n            self = .userPrivacySettingAllowPeerToPeerCalls\n        case .userPrivacySettingAllowFindingByPhoneNumber:\n            self = .userPrivacySettingAllowFindingByPhoneNumber\n        case .userPrivacySettingAllowPrivateVoiceAndVideoNoteMessages:\n            self = .userPrivacySettingAllowPrivateVoiceAndVideoNoteMessages\n        case .userPrivacySettingAutosaveGifts:\n            self = .userPrivacySettingAutosaveGifts\n        case .userPrivacySettingAllowUnpaidMessages:\n            self = .userPrivacySettingAllowUnpaidMessages\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .userPrivacySettingShowStatus:\n            try container.encode(Kind.userPrivacySettingShowStatus, forKey: .type)\n        case .userPrivacySettingShowProfilePhoto:\n            try container.encode(Kind.userPrivacySettingShowProfilePhoto, forKey: .type)\n        case .userPrivacySettingShowLinkInForwardedMessages:\n            try container.encode(Kind.userPrivacySettingShowLinkInForwardedMessages, forKey: .type)\n        case .userPrivacySettingShowPhoneNumber:\n            try container.encode(Kind.userPrivacySettingShowPhoneNumber, forKey: .type)\n        case .userPrivacySettingShowBio:\n            try container.encode(Kind.userPrivacySettingShowBio, forKey: .type)\n        case .userPrivacySettingShowBirthdate:\n            try container.encode(Kind.userPrivacySettingShowBirthdate, forKey: .type)\n        case .userPrivacySettingShowProfileAudio:\n            try container.encode(Kind.userPrivacySettingShowProfileAudio, forKey: .type)\n        case .userPrivacySettingAllowChatInvites:\n            try container.encode(Kind.userPrivacySettingAllowChatInvites, forKey: .type)\n        case .userPrivacySettingAllowCalls:\n            try container.encode(Kind.userPrivacySettingAllowCalls, forKey: .type)\n        case .userPrivacySettingAllowPeerToPeerCalls:\n            try container.encode(Kind.userPrivacySettingAllowPeerToPeerCalls, forKey: .type)\n        case .userPrivacySettingAllowFindingByPhoneNumber:\n            try container.encode(Kind.userPrivacySettingAllowFindingByPhoneNumber, forKey: .type)\n        case .userPrivacySettingAllowPrivateVoiceAndVideoNoteMessages:\n            try container.encode(Kind.userPrivacySettingAllowPrivateVoiceAndVideoNoteMessages, forKey: .type)\n        case .userPrivacySettingAutosaveGifts:\n            try container.encode(Kind.userPrivacySettingAutosaveGifts, forKey: .type)\n        case .userPrivacySettingAllowUnpaidMessages:\n            try container.encode(Kind.userPrivacySettingAllowUnpaidMessages, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UserPrivacySettingRule.swift",
    "content": "//\n//  UserPrivacySettingRule.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a single rule for managing user privacy settings\npublic indirect enum UserPrivacySettingRule: Codable, Equatable, Hashable {\n\n    /// A rule to allow all users to do something\n    case userPrivacySettingRuleAllowAll\n\n    /// A rule to allow all contacts of the user to do something\n    case userPrivacySettingRuleAllowContacts\n\n    /// A rule to allow all bots to do something\n    case userPrivacySettingRuleAllowBots\n\n    /// A rule to allow all Premium Users to do something; currently, allowed only for userPrivacySettingAllowChatInvites\n    case userPrivacySettingRuleAllowPremiumUsers\n\n    /// A rule to allow certain specified users to do something\n    case userPrivacySettingRuleAllowUsers(UserPrivacySettingRuleAllowUsers)\n\n    /// A rule to allow all members of certain specified basic groups and supergroups to doing something\n    case userPrivacySettingRuleAllowChatMembers(UserPrivacySettingRuleAllowChatMembers)\n\n    /// A rule to restrict all users from doing something\n    case userPrivacySettingRuleRestrictAll\n\n    /// A rule to restrict all contacts of the user from doing something\n    case userPrivacySettingRuleRestrictContacts\n\n    /// A rule to restrict all bots from doing something\n    case userPrivacySettingRuleRestrictBots\n\n    /// A rule to restrict all specified users from doing something\n    case userPrivacySettingRuleRestrictUsers(UserPrivacySettingRuleRestrictUsers)\n\n    /// A rule to restrict all members of specified basic groups and supergroups from doing something\n    case userPrivacySettingRuleRestrictChatMembers(UserPrivacySettingRuleRestrictChatMembers)\n\n\n    private enum Kind: String, Codable {\n        case userPrivacySettingRuleAllowAll\n        case userPrivacySettingRuleAllowContacts\n        case userPrivacySettingRuleAllowBots\n        case userPrivacySettingRuleAllowPremiumUsers\n        case userPrivacySettingRuleAllowUsers\n        case userPrivacySettingRuleAllowChatMembers\n        case userPrivacySettingRuleRestrictAll\n        case userPrivacySettingRuleRestrictContacts\n        case userPrivacySettingRuleRestrictBots\n        case userPrivacySettingRuleRestrictUsers\n        case userPrivacySettingRuleRestrictChatMembers\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .userPrivacySettingRuleAllowAll:\n            self = .userPrivacySettingRuleAllowAll\n        case .userPrivacySettingRuleAllowContacts:\n            self = .userPrivacySettingRuleAllowContacts\n        case .userPrivacySettingRuleAllowBots:\n            self = .userPrivacySettingRuleAllowBots\n        case .userPrivacySettingRuleAllowPremiumUsers:\n            self = .userPrivacySettingRuleAllowPremiumUsers\n        case .userPrivacySettingRuleAllowUsers:\n            let value = try UserPrivacySettingRuleAllowUsers(from: decoder)\n            self = .userPrivacySettingRuleAllowUsers(value)\n        case .userPrivacySettingRuleAllowChatMembers:\n            let value = try UserPrivacySettingRuleAllowChatMembers(from: decoder)\n            self = .userPrivacySettingRuleAllowChatMembers(value)\n        case .userPrivacySettingRuleRestrictAll:\n            self = .userPrivacySettingRuleRestrictAll\n        case .userPrivacySettingRuleRestrictContacts:\n            self = .userPrivacySettingRuleRestrictContacts\n        case .userPrivacySettingRuleRestrictBots:\n            self = .userPrivacySettingRuleRestrictBots\n        case .userPrivacySettingRuleRestrictUsers:\n            let value = try UserPrivacySettingRuleRestrictUsers(from: decoder)\n            self = .userPrivacySettingRuleRestrictUsers(value)\n        case .userPrivacySettingRuleRestrictChatMembers:\n            let value = try UserPrivacySettingRuleRestrictChatMembers(from: decoder)\n            self = .userPrivacySettingRuleRestrictChatMembers(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .userPrivacySettingRuleAllowAll:\n            try container.encode(Kind.userPrivacySettingRuleAllowAll, forKey: .type)\n        case .userPrivacySettingRuleAllowContacts:\n            try container.encode(Kind.userPrivacySettingRuleAllowContacts, forKey: .type)\n        case .userPrivacySettingRuleAllowBots:\n            try container.encode(Kind.userPrivacySettingRuleAllowBots, forKey: .type)\n        case .userPrivacySettingRuleAllowPremiumUsers:\n            try container.encode(Kind.userPrivacySettingRuleAllowPremiumUsers, forKey: .type)\n        case .userPrivacySettingRuleAllowUsers(let value):\n            try container.encode(Kind.userPrivacySettingRuleAllowUsers, forKey: .type)\n            try value.encode(to: encoder)\n        case .userPrivacySettingRuleAllowChatMembers(let value):\n            try container.encode(Kind.userPrivacySettingRuleAllowChatMembers, forKey: .type)\n            try value.encode(to: encoder)\n        case .userPrivacySettingRuleRestrictAll:\n            try container.encode(Kind.userPrivacySettingRuleRestrictAll, forKey: .type)\n        case .userPrivacySettingRuleRestrictContacts:\n            try container.encode(Kind.userPrivacySettingRuleRestrictContacts, forKey: .type)\n        case .userPrivacySettingRuleRestrictBots:\n            try container.encode(Kind.userPrivacySettingRuleRestrictBots, forKey: .type)\n        case .userPrivacySettingRuleRestrictUsers(let value):\n            try container.encode(Kind.userPrivacySettingRuleRestrictUsers, forKey: .type)\n            try value.encode(to: encoder)\n        case .userPrivacySettingRuleRestrictChatMembers(let value):\n            try container.encode(Kind.userPrivacySettingRuleRestrictChatMembers, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A rule to allow certain specified users to do something\npublic struct UserPrivacySettingRuleAllowUsers: Codable, Equatable, Hashable {\n\n    /// The user identifiers, total number of users in all rules must not exceed 1000\n    public let userIds: [Int64]\n\n\n    public init(userIds: [Int64]) {\n        self.userIds = userIds\n    }\n}\n\n/// A rule to allow all members of certain specified basic groups and supergroups to doing something\npublic struct UserPrivacySettingRuleAllowChatMembers: Codable, Equatable, Hashable {\n\n    /// The chat identifiers, total number of chats in all rules must not exceed 20\n    public let chatIds: [Int64]\n\n\n    public init(chatIds: [Int64]) {\n        self.chatIds = chatIds\n    }\n}\n\n/// A rule to restrict all specified users from doing something\npublic struct UserPrivacySettingRuleRestrictUsers: Codable, Equatable, Hashable {\n\n    /// The user identifiers, total number of users in all rules must not exceed 1000\n    public let userIds: [Int64]\n\n\n    public init(userIds: [Int64]) {\n        self.userIds = userIds\n    }\n}\n\n/// A rule to restrict all members of specified basic groups and supergroups from doing something\npublic struct UserPrivacySettingRuleRestrictChatMembers: Codable, Equatable, Hashable {\n\n    /// The chat identifiers, total number of chats in all rules must not exceed 20\n    public let chatIds: [Int64]\n\n\n    public init(chatIds: [Int64]) {\n        self.chatIds = chatIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UserPrivacySettingRules.swift",
    "content": "//\n//  UserPrivacySettingRules.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// A list of privacy rules. Rules are matched in the specified order. The first matched rule defines the privacy setting for a given user. If no rule matches, the action is not allowed\npublic struct UserPrivacySettingRules: Codable, Equatable, Hashable {\n\n    /// A list of rules\n    public let rules: [UserPrivacySettingRule]\n\n\n    public init(rules: [UserPrivacySettingRule]) {\n        self.rules = rules\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UserRating.swift",
    "content": "//\n//  UserRating.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains description of user rating\npublic struct UserRating: Codable, Equatable, Hashable {\n\n    /// The rating required for the current level\n    public let currentLevelRating: Int64\n\n    /// True, if the maximum level is reached\n    public let isMaximumLevelReached: Bool\n\n    /// The level of the user; may be negative\n    public let level: Int\n\n    /// The rating required for the next level; 0 if the maximum level is reached\n    public let nextLevelRating: Int64\n\n    /// Numerical value of the rating\n    public let rating: Int64\n\n\n    public init(\n        currentLevelRating: Int64,\n        isMaximumLevelReached: Bool,\n        level: Int,\n        nextLevelRating: Int64,\n        rating: Int64\n    ) {\n        self.currentLevelRating = currentLevelRating\n        self.isMaximumLevelReached = isMaximumLevelReached\n        self.level = level\n        self.nextLevelRating = nextLevelRating\n        self.rating = rating\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UserStatus.swift",
    "content": "//\n//  UserStatus.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes the last time the user was online\npublic indirect enum UserStatus: Codable, Equatable, Hashable {\n\n    /// The user's status has never been changed\n    case userStatusEmpty\n\n    /// The user is online\n    case userStatusOnline(UserStatusOnline)\n\n    /// The user is offline\n    case userStatusOffline(UserStatusOffline)\n\n    /// The user was online recently\n    case userStatusRecently(UserStatusRecently)\n\n    /// The user is offline, but was online last week\n    case userStatusLastWeek(UserStatusLastWeek)\n\n    /// The user is offline, but was online last month\n    case userStatusLastMonth(UserStatusLastMonth)\n\n\n    private enum Kind: String, Codable {\n        case userStatusEmpty\n        case userStatusOnline\n        case userStatusOffline\n        case userStatusRecently\n        case userStatusLastWeek\n        case userStatusLastMonth\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .userStatusEmpty:\n            self = .userStatusEmpty\n        case .userStatusOnline:\n            let value = try UserStatusOnline(from: decoder)\n            self = .userStatusOnline(value)\n        case .userStatusOffline:\n            let value = try UserStatusOffline(from: decoder)\n            self = .userStatusOffline(value)\n        case .userStatusRecently:\n            let value = try UserStatusRecently(from: decoder)\n            self = .userStatusRecently(value)\n        case .userStatusLastWeek:\n            let value = try UserStatusLastWeek(from: decoder)\n            self = .userStatusLastWeek(value)\n        case .userStatusLastMonth:\n            let value = try UserStatusLastMonth(from: decoder)\n            self = .userStatusLastMonth(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .userStatusEmpty:\n            try container.encode(Kind.userStatusEmpty, forKey: .type)\n        case .userStatusOnline(let value):\n            try container.encode(Kind.userStatusOnline, forKey: .type)\n            try value.encode(to: encoder)\n        case .userStatusOffline(let value):\n            try container.encode(Kind.userStatusOffline, forKey: .type)\n            try value.encode(to: encoder)\n        case .userStatusRecently(let value):\n            try container.encode(Kind.userStatusRecently, forKey: .type)\n            try value.encode(to: encoder)\n        case .userStatusLastWeek(let value):\n            try container.encode(Kind.userStatusLastWeek, forKey: .type)\n            try value.encode(to: encoder)\n        case .userStatusLastMonth(let value):\n            try container.encode(Kind.userStatusLastMonth, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// The user is online\npublic struct UserStatusOnline: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the user's online status will expire\n    public let expires: Int\n\n\n    public init(expires: Int) {\n        self.expires = expires\n    }\n}\n\n/// The user is offline\npublic struct UserStatusOffline: Codable, Equatable, Hashable {\n\n    /// Point in time (Unix timestamp) when the user was last online\n    public let wasOnline: Int\n\n\n    public init(wasOnline: Int) {\n        self.wasOnline = wasOnline\n    }\n}\n\n/// The user was online recently\npublic struct UserStatusRecently: Codable, Equatable, Hashable {\n\n    /// Exact user's status is hidden because the current user enabled userPrivacySettingShowStatus privacy setting for the user and has no Telegram Premium\n    public let byMyPrivacySettings: Bool\n\n\n    public init(byMyPrivacySettings: Bool) {\n        self.byMyPrivacySettings = byMyPrivacySettings\n    }\n}\n\n/// The user is offline, but was online last week\npublic struct UserStatusLastWeek: Codable, Equatable, Hashable {\n\n    /// Exact user's status is hidden because the current user enabled userPrivacySettingShowStatus privacy setting for the user and has no Telegram Premium\n    public let byMyPrivacySettings: Bool\n\n\n    public init(byMyPrivacySettings: Bool) {\n        self.byMyPrivacySettings = byMyPrivacySettings\n    }\n}\n\n/// The user is offline, but was online last month\npublic struct UserStatusLastMonth: Codable, Equatable, Hashable {\n\n    /// Exact user's status is hidden because the current user enabled userPrivacySettingShowStatus privacy setting for the user and has no Telegram Premium\n    public let byMyPrivacySettings: Bool\n\n\n    public init(byMyPrivacySettings: Bool) {\n        self.byMyPrivacySettings = byMyPrivacySettings\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UserSupportInfo.swift",
    "content": "//\n//  UserSupportInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains custom information about the user\npublic struct UserSupportInfo: Codable, Equatable, Hashable {\n\n    /// Information author\n    public let author: String\n\n    /// Information change date\n    public let date: Int\n\n    /// Information message\n    public let message: FormattedText\n\n\n    public init(\n        author: String,\n        date: Int,\n        message: FormattedText\n    ) {\n        self.author = author\n        self.date = date\n        self.message = message\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UserTransactionPurpose.swift",
    "content": "//\n//  UserTransactionPurpose.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.40-22d49d5b\n//  https://github.com/tdlib/td/tree/22d49d5b\n//\n\nimport Foundation\n\n\n/// Describes purpose of a transaction with a user\npublic indirect enum UserTransactionPurpose: Codable, Equatable, Hashable {\n\n    /// A user gifted Telegram Stars\n    case userTransactionPurposeGiftedStars(UserTransactionPurposeGiftedStars)\n\n    /// The user sold a gift received from another user or bot\n    case userTransactionPurposeGiftSell(UserTransactionPurposeGiftSell)\n\n    /// The user or the bot sent a gift to a user\n    case userTransactionPurposeGiftSend(UserTransactionPurposeGiftSend)\n\n\n    private enum Kind: String, Codable {\n        case userTransactionPurposeGiftedStars\n        case userTransactionPurposeGiftSell\n        case userTransactionPurposeGiftSend\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .userTransactionPurposeGiftedStars:\n            let value = try UserTransactionPurposeGiftedStars(from: decoder)\n            self = .userTransactionPurposeGiftedStars(value)\n        case .userTransactionPurposeGiftSell:\n            let value = try UserTransactionPurposeGiftSell(from: decoder)\n            self = .userTransactionPurposeGiftSell(value)\n        case .userTransactionPurposeGiftSend:\n            let value = try UserTransactionPurposeGiftSend(from: decoder)\n            self = .userTransactionPurposeGiftSend(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .userTransactionPurposeGiftedStars(let value):\n            try container.encode(Kind.userTransactionPurposeGiftedStars, forKey: .type)\n            try value.encode(to: encoder)\n        case .userTransactionPurposeGiftSell(let value):\n            try container.encode(Kind.userTransactionPurposeGiftSell, forKey: .type)\n            try value.encode(to: encoder)\n        case .userTransactionPurposeGiftSend(let value):\n            try container.encode(Kind.userTransactionPurposeGiftSend, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A user gifted Telegram Stars\npublic struct UserTransactionPurposeGiftedStars: Codable, Equatable, Hashable {\n\n    /// A sticker to be shown in the transaction information; may be null if unknown\n    public let sticker: Sticker?\n\n\n    public init(sticker: Sticker?) {\n        self.sticker = sticker\n    }\n}\n\n/// The user sold a gift received from another user or bot\npublic struct UserTransactionPurposeGiftSell: Codable, Equatable, Hashable {\n\n    /// The gift\n    public let gift: Gift\n\n\n    public init(gift: Gift) {\n        self.gift = gift\n    }\n}\n\n/// The user or the bot sent a gift to a user\npublic struct UserTransactionPurposeGiftSend: Codable, Equatable, Hashable {\n\n    /// The gift\n    public let gift: Gift\n\n\n    public init(gift: Gift) {\n        self.gift = gift\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/UserType.swift",
    "content": "//\n//  UserType.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents the type of user. The following types are possible: regular users, deleted users and bots\npublic indirect enum UserType: Codable, Equatable, Hashable {\n\n    /// A regular user\n    case userTypeRegular\n\n    /// A deleted user or deleted bot. No information on the user besides the user identifier is available. It is not possible to perform any active actions on this type of user\n    case userTypeDeleted\n\n    /// A bot (see https://core.telegram.org/bots)\n    case userTypeBot(UserTypeBot)\n\n    /// No information on the user besides the user identifier is available, yet this user has not been deleted. This object is extremely rare and must be handled like a deleted user. It is not possible to perform any actions on users of this type\n    case userTypeUnknown\n\n\n    private enum Kind: String, Codable {\n        case userTypeRegular\n        case userTypeDeleted\n        case userTypeBot\n        case userTypeUnknown\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .userTypeRegular:\n            self = .userTypeRegular\n        case .userTypeDeleted:\n            self = .userTypeDeleted\n        case .userTypeBot:\n            let value = try UserTypeBot(from: decoder)\n            self = .userTypeBot(value)\n        case .userTypeUnknown:\n            self = .userTypeUnknown\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .userTypeRegular:\n            try container.encode(Kind.userTypeRegular, forKey: .type)\n        case .userTypeDeleted:\n            try container.encode(Kind.userTypeDeleted, forKey: .type)\n        case .userTypeBot(let value):\n            try container.encode(Kind.userTypeBot, forKey: .type)\n            try value.encode(to: encoder)\n        case .userTypeUnknown:\n            try container.encode(Kind.userTypeUnknown, forKey: .type)\n        }\n    }\n}\n\n/// A bot (see https://core.telegram.org/bots)\npublic struct UserTypeBot: Codable, Equatable, Hashable {\n\n    /// The number of recently active users of the bot\n    public let activeUserCount: Int\n\n    /// True, if users can create and delete topics in the chat with the bot\n    public let allowsUsersToCreateTopics: Bool\n\n    /// True, if the bot can be added to attachment or side menu\n    public let canBeAddedToAttachmentMenu: Bool\n\n    /// True, if the bot is owned by the current user and can be edited using the methods toggleBotUsernameIsActive, reorderBotActiveUsernames, setBotProfilePhoto, setBotName, setBotInfoDescription, and setBotInfoShortDescription\n    public let canBeEdited: Bool\n\n    /// True, if the bot supports connection to user accounts for chat automation\n    public let canConnectToBusiness: Bool\n\n    /// True, if the bot can be invited to basic group and supergroup chats\n    public let canJoinGroups: Bool\n\n    /// True, if the bot can manage other bots\n    public let canManageBots: Bool\n\n    /// True, if the bot can read all messages in basic group or supergroup chats and not just those addressed to the bot. In private and channel chats a bot can always read all messages\n    public let canReadAllGroupMessages: Bool\n\n    /// True, if the bot has the main Web App\n    public let hasMainWebApp: Bool\n\n    /// True, if the bot has topics\n    public let hasTopics: Bool\n\n    /// Placeholder for inline queries (displayed on the application input field)\n    public let inlineQueryPlaceholder: String\n\n    /// True, if the bot supports inline queries\n    public let isInline: Bool\n\n    /// True, if the location of the user is expected to be sent with every inline query to this bot\n    public let needLocation: Bool\n\n    /// True, if the bot can be queried by username from any non-secret chat\n    public let supportsGuestQueries: Bool\n\n\n    public init(\n        activeUserCount: Int,\n        allowsUsersToCreateTopics: Bool,\n        canBeAddedToAttachmentMenu: Bool,\n        canBeEdited: Bool,\n        canConnectToBusiness: Bool,\n        canJoinGroups: Bool,\n        canManageBots: Bool,\n        canReadAllGroupMessages: Bool,\n        hasMainWebApp: Bool,\n        hasTopics: Bool,\n        inlineQueryPlaceholder: String,\n        isInline: Bool,\n        needLocation: Bool,\n        supportsGuestQueries: Bool\n    ) {\n        self.activeUserCount = activeUserCount\n        self.allowsUsersToCreateTopics = allowsUsersToCreateTopics\n        self.canBeAddedToAttachmentMenu = canBeAddedToAttachmentMenu\n        self.canBeEdited = canBeEdited\n        self.canConnectToBusiness = canConnectToBusiness\n        self.canJoinGroups = canJoinGroups\n        self.canManageBots = canManageBots\n        self.canReadAllGroupMessages = canReadAllGroupMessages\n        self.hasMainWebApp = hasMainWebApp\n        self.hasTopics = hasTopics\n        self.inlineQueryPlaceholder = inlineQueryPlaceholder\n        self.isInline = isInline\n        self.needLocation = needLocation\n        self.supportsGuestQueries = supportsGuestQueries\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Usernames.swift",
    "content": "//\n//  Usernames.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes usernames assigned to a user, a supergroup, or a channel\npublic struct Usernames: Codable, Equatable, Hashable {\n\n    /// List of active usernames; the first one must be shown as the primary username. The order of active usernames can be changed with reorderActiveUsernames, reorderBotActiveUsernames or reorderSupergroupActiveUsernames\n    public let activeUsernames: [String]\n\n    /// Collectible usernames that were purchased at https://fragment.com and can be passed to getCollectibleItemInfo for more details\n    public let collectibleUsernames: [String]\n\n    /// List of currently disabled usernames; the username can be activated with toggleUsernameIsActive, toggleBotUsernameIsActive, or toggleSupergroupUsernameIsActive\n    public let disabledUsernames: [String]\n\n    /// Active or disabled username, which may be changed with setUsername or setSupergroupUsername\n    public let editableUsername: String\n\n\n    public init(\n        activeUsernames: [String],\n        collectibleUsernames: [String],\n        disabledUsernames: [String],\n        editableUsername: String\n    ) {\n        self.activeUsernames = activeUsernames\n        self.collectibleUsernames = collectibleUsernames\n        self.disabledUsernames = disabledUsernames\n        self.editableUsername = editableUsername\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Users.swift",
    "content": "//\n//  Users.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a list of users\npublic struct Users: Codable, Equatable, Hashable {\n\n    /// Approximate total number of users found\n    public let totalCount: Int\n\n    /// A list of user identifiers\n    public let userIds: [Int64]\n\n\n    public init(\n        totalCount: Int,\n        userIds: [Int64]\n    ) {\n        self.totalCount = totalCount\n        self.userIds = userIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ValidateOrderInfo.swift",
    "content": "//\n//  ValidateOrderInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Validates the order information provided by a user and returns the available shipping options for a flexible invoice\npublic struct ValidateOrderInfo: Codable, Equatable, Hashable {\n\n    /// Pass true to save the order information\n    public let allowSave: Bool?\n\n    /// The invoice\n    public let inputInvoice: InputInvoice?\n\n    /// The order information, provided by the user; pass null if empty\n    public let orderInfo: OrderInfo?\n\n\n    public init(\n        allowSave: Bool?,\n        inputInvoice: InputInvoice?,\n        orderInfo: OrderInfo?\n    ) {\n        self.allowSave = allowSave\n        self.inputInvoice = inputInvoice\n        self.orderInfo = orderInfo\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ValidatedOrderInfo.swift",
    "content": "//\n//  ValidatedOrderInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a temporary identifier of validated order information, which is stored for one hour, and the available shipping options\npublic struct ValidatedOrderInfo: Codable, Equatable, Hashable {\n\n    /// Temporary identifier of the order information\n    public let orderInfoId: String\n\n    /// Available shipping options\n    public let shippingOptions: [ShippingOption]\n\n\n    public init(\n        orderInfoId: String,\n        shippingOptions: [ShippingOption]\n    ) {\n        self.orderInfoId = orderInfoId\n        self.shippingOptions = shippingOptions\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/VectorPathCommand.swift",
    "content": "//\n//  VectorPathCommand.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Represents a vector path command\npublic indirect enum VectorPathCommand: Codable, Equatable, Hashable {\n\n    /// A straight line to a given point\n    case vectorPathCommandLine(VectorPathCommandLine)\n\n    /// A cubic Bézier curve to a given point\n    case vectorPathCommandCubicBezierCurve(VectorPathCommandCubicBezierCurve)\n\n\n    private enum Kind: String, Codable {\n        case vectorPathCommandLine\n        case vectorPathCommandCubicBezierCurve\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .vectorPathCommandLine:\n            let value = try VectorPathCommandLine(from: decoder)\n            self = .vectorPathCommandLine(value)\n        case .vectorPathCommandCubicBezierCurve:\n            let value = try VectorPathCommandCubicBezierCurve(from: decoder)\n            self = .vectorPathCommandCubicBezierCurve(value)\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .vectorPathCommandLine(let value):\n            try container.encode(Kind.vectorPathCommandLine, forKey: .type)\n            try value.encode(to: encoder)\n        case .vectorPathCommandCubicBezierCurve(let value):\n            try container.encode(Kind.vectorPathCommandCubicBezierCurve, forKey: .type)\n            try value.encode(to: encoder)\n        }\n    }\n}\n\n/// A straight line to a given point\npublic struct VectorPathCommandLine: Codable, Equatable, Hashable {\n\n    /// The end point of the straight line\n    public let endPoint: Point\n\n\n    public init(endPoint: Point) {\n        self.endPoint = endPoint\n    }\n}\n\n/// A cubic Bézier curve to a given point\npublic struct VectorPathCommandCubicBezierCurve: Codable, Equatable, Hashable {\n\n    /// The end control point of the curve\n    public let endControlPoint: Point\n\n    /// The end point of the curve\n    public let endPoint: Point\n\n    /// The start control point of the curve\n    public let startControlPoint: Point\n\n\n    public init(\n        endControlPoint: Point,\n        endPoint: Point,\n        startControlPoint: Point\n    ) {\n        self.endControlPoint = endControlPoint\n        self.endPoint = endPoint\n        self.startControlPoint = startControlPoint\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Venue.swift",
    "content": "//\n//  Venue.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a venue\npublic struct Venue: Codable, Equatable, Hashable, Identifiable {\n\n    /// Venue address; as defined by the sender\n    public let address: String\n\n    /// Identifier of the venue in the provider database; as defined by the sender\n    public let id: String\n\n    /// Venue location; as defined by the sender\n    public let location: Location\n\n    /// Provider of the venue database; as defined by the sender. Currently, only \"foursquare\" and \"gplaces\" (Google Places) need to be supported\n    public let provider: String\n\n    /// Venue name; as defined by the sender\n    public let title: String\n\n    /// Type of the venue in the provider database; as defined by the sender\n    public let type: String\n\n\n    public init(\n        address: String,\n        id: String,\n        location: Location,\n        provider: String,\n        title: String,\n        type: String\n    ) {\n        self.address = address\n        self.id = id\n        self.location = location\n        self.provider = provider\n        self.title = title\n        self.type = type\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/VerificationStatus.swift",
    "content": "//\n//  VerificationStatus.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about verification status of a chat or a user\npublic struct VerificationStatus: Codable, Equatable, Hashable {\n\n    /// Identifier of the custom emoji to be shown as verification sign provided by a bot for the user; 0 if none\n    public let botVerificationIconCustomEmojiId: TdInt64\n\n    /// True, if the chat or the user is marked as fake by Telegram\n    public let isFake: Bool\n\n    /// True, if the chat or the user is marked as scam by Telegram\n    public let isScam: Bool\n\n    /// True, if the chat or the user is verified by Telegram\n    public let isVerified: Bool\n\n\n    public init(\n        botVerificationIconCustomEmojiId: TdInt64,\n        isFake: Bool,\n        isScam: Bool,\n        isVerified: Bool\n    ) {\n        self.botVerificationIconCustomEmojiId = botVerificationIconCustomEmojiId\n        self.isFake = isFake\n        self.isScam = isScam\n        self.isVerified = isVerified\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/Video.swift",
    "content": "//\n//  Video.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a video file\npublic struct Video: Codable, Equatable, Hashable {\n\n    /// Duration of the video, in seconds; as defined by the sender\n    public let duration: Int\n\n    /// Original name of the file; as defined by the sender\n    public let fileName: String\n\n    /// True, if stickers were added to the video. The list of corresponding sticker sets can be received using getAttachedStickerSets\n    public let hasStickers: Bool\n\n    /// Video height; as defined by the sender\n    public let height: Int\n\n    /// MIME type of the file; as defined by the sender\n    public let mimeType: String\n\n    /// Video minithumbnail; may be null\n    public let minithumbnail: Minithumbnail?\n\n    /// True, if the video is expected to be streamed\n    public let supportsStreaming: Bool\n\n    /// Video thumbnail in JPEG or MPEG4 format; as defined by the sender; may be null\n    public let thumbnail: Thumbnail?\n\n    /// File containing the video\n    public let video: File\n\n    /// Video width; as defined by the sender\n    public let width: Int\n\n\n    public init(\n        duration: Int,\n        fileName: String,\n        hasStickers: Bool,\n        height: Int,\n        mimeType: String,\n        minithumbnail: Minithumbnail?,\n        supportsStreaming: Bool,\n        thumbnail: Thumbnail?,\n        video: File,\n        width: Int\n    ) {\n        self.duration = duration\n        self.fileName = fileName\n        self.hasStickers = hasStickers\n        self.height = height\n        self.mimeType = mimeType\n        self.minithumbnail = minithumbnail\n        self.supportsStreaming = supportsStreaming\n        self.thumbnail = thumbnail\n        self.video = video\n        self.width = width\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/VideoChat.swift",
    "content": "//\n//  VideoChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a video chat, i.e. a group call bound to a chat\npublic struct VideoChat: Codable, Equatable, Hashable {\n\n    /// Default group call participant identifier to join the video chat; may be null\n    public let defaultParticipantId: MessageSender?\n\n    /// Group call identifier of an active video chat; 0 if none. Full information about the video chat can be received through the method getGroupCall\n    public let groupCallId: Int\n\n    /// True, if the video chat has participants\n    public let hasParticipants: Bool\n\n\n    public init(\n        defaultParticipantId: MessageSender?,\n        groupCallId: Int,\n        hasParticipants: Bool\n    ) {\n        self.defaultParticipantId = defaultParticipantId\n        self.groupCallId = groupCallId\n        self.hasParticipants = hasParticipants\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/VideoChatStream.swift",
    "content": "//\n//  VideoChatStream.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.53-bdec6af5\n//  https://github.com/tdlib/td/tree/bdec6af5\n//\n\nimport Foundation\n\n\n/// Describes an available stream in a video chat\npublic struct VideoChatStream: Codable, Equatable, Hashable {\n\n    /// Identifier of an audio/video channel\n    public let channelId: Int\n\n    /// Scale of segment durations in the stream. The duration is 1000/(2**scale) milliseconds\n    public let scale: Int\n\n    /// Point in time when the stream currently ends; Unix timestamp in milliseconds\n    public let timeOffset: Int64\n\n\n    public init(\n        channelId: Int,\n        scale: Int,\n        timeOffset: Int64\n    ) {\n        self.channelId = channelId\n        self.scale = scale\n        self.timeOffset = timeOffset\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/VideoChatStreams.swift",
    "content": "//\n//  VideoChatStreams.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.53-bdec6af5\n//  https://github.com/tdlib/td/tree/bdec6af5\n//\n\nimport Foundation\n\n\n/// Represents a list of video chat streams\npublic struct VideoChatStreams: Codable, Equatable, Hashable {\n\n    /// A list of video chat streams\n    public let streams: [VideoChatStream]\n\n\n    public init(streams: [VideoChatStream]) {\n        self.streams = streams\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/VideoMessageAdvertisement.swift",
    "content": "//\n//  VideoMessageAdvertisement.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an advertisement to be shown while a video from a message is watched\npublic struct VideoMessageAdvertisement: Codable, Equatable, Hashable {\n\n    /// If non-empty, additional information about the sponsored message to be shown along with the message\n    public let additionalInfo: String\n\n    /// True, if the advertisement can be reported to Telegram moderators through reportVideoMessageAdvertisement\n    public let canBeReported: Bool\n\n    /// The maximum amount of time the advertisement must be displayed before it must be automatically hidden, in seconds\n    public let maxDisplayDuration: Int\n\n    /// The minimum amount of time the advertisement must be displayed before it can be hidden by the user, in seconds\n    public let minDisplayDuration: Int\n\n    /// Information about the sponsor of the advertisement\n    public let sponsor: AdvertisementSponsor\n\n    /// Text of the advertisement\n    public let text: String\n\n    /// Title of the sponsored message\n    public let title: String\n\n    /// Unique identifier of this result\n    public let uniqueId: Int64\n\n\n    public init(\n        additionalInfo: String,\n        canBeReported: Bool,\n        maxDisplayDuration: Int,\n        minDisplayDuration: Int,\n        sponsor: AdvertisementSponsor,\n        text: String,\n        title: String,\n        uniqueId: Int64\n    ) {\n        self.additionalInfo = additionalInfo\n        self.canBeReported = canBeReported\n        self.maxDisplayDuration = maxDisplayDuration\n        self.minDisplayDuration = minDisplayDuration\n        self.sponsor = sponsor\n        self.text = text\n        self.title = title\n        self.uniqueId = uniqueId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/VideoMessageAdvertisements.swift",
    "content": "//\n//  VideoMessageAdvertisements.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains a list of advertisements to be shown while a video from a message is watched\npublic struct VideoMessageAdvertisements: Codable, Equatable, Hashable {\n\n    /// List of advertisements\n    public let advertisements: [VideoMessageAdvertisement]\n\n    /// Delay between consecutive advertisements, in seconds\n    public let betweenDelay: Int\n\n    /// Delay before the first advertisement is shown, in seconds\n    public let startDelay: Int\n\n\n    public init(\n        advertisements: [VideoMessageAdvertisement],\n        betweenDelay: Int,\n        startDelay: Int\n    ) {\n        self.advertisements = advertisements\n        self.betweenDelay = betweenDelay\n        self.startDelay = startDelay\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/VideoNote.swift",
    "content": "//\n//  VideoNote.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a video note. The video must be equal in width and height, cropped to a circle, and stored in MPEG4 format\npublic struct VideoNote: Codable, Equatable, Hashable {\n\n    /// Duration of the video, in seconds; as defined by the sender\n    public let duration: Int\n\n    /// Video width and height; as defined by the sender\n    public let length: Int\n\n    /// Video minithumbnail; may be null\n    public let minithumbnail: Minithumbnail?\n\n    /// Result of speech recognition in the video note; may be null\n    public let speechRecognitionResult: SpeechRecognitionResult?\n\n    /// Video thumbnail in JPEG format; as defined by the sender; may be null\n    public let thumbnail: Thumbnail?\n\n    /// File containing the video\n    public let video: File\n\n    /// A waveform representation of the video note's audio in 5-bit format; may be empty if unknown\n    public let waveform: Data\n\n\n    public init(\n        duration: Int,\n        length: Int,\n        minithumbnail: Minithumbnail?,\n        speechRecognitionResult: SpeechRecognitionResult?,\n        thumbnail: Thumbnail?,\n        video: File,\n        waveform: Data\n    ) {\n        self.duration = duration\n        self.length = length\n        self.minithumbnail = minithumbnail\n        self.speechRecognitionResult = speechRecognitionResult\n        self.thumbnail = thumbnail\n        self.video = video\n        self.waveform = waveform\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/VideoStoryboard.swift",
    "content": "//\n//  VideoStoryboard.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a storyboard for a video\npublic struct VideoStoryboard: Codable, Equatable, Hashable {\n\n    /// Height of a tile\n    public let height: Int\n\n    /// File that describes mapping of position in the video to a tile in the JPEG file\n    public let mapFile: File\n\n    /// A JPEG file that contains tiled previews of video\n    public let storyboardFile: File\n\n    /// Width of a tile\n    public let width: Int\n\n\n    public init(\n        height: Int,\n        mapFile: File,\n        storyboardFile: File,\n        width: Int\n    ) {\n        self.height = height\n        self.mapFile = mapFile\n        self.storyboardFile = storyboardFile\n        self.width = width\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ViewMessages.swift",
    "content": "//\n//  ViewMessages.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that messages are being viewed by the user. Sponsored messages must be marked as viewed only when the entire text of the message is shown on the screen (excluding the button). Many useful activities depend on whether the messages are currently being viewed or not (e.g., marking messages as read, incrementing a view counter, updating a view counter, removing deleted messages in supergroups and channels)\npublic struct ViewMessages: Codable, Equatable, Hashable {\n\n    /// Chat identifier\n    public let chatId: Int64?\n\n    /// Pass true to mark as read the specified messages even if the chat is closed\n    public let forceRead: Bool?\n\n    /// The identifiers of the messages being viewed\n    public let messageIds: [Int64]?\n\n    /// Source of the message view; pass null to guess the source based on chat open state\n    public let source: MessageSource?\n\n\n    public init(\n        chatId: Int64?,\n        forceRead: Bool?,\n        messageIds: [Int64]?,\n        source: MessageSource?\n    ) {\n        self.chatId = chatId\n        self.forceRead = forceRead\n        self.messageIds = messageIds\n        self.source = source\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ViewPremiumFeature.swift",
    "content": "//\n//  ViewPremiumFeature.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that the user viewed detailed information about a Premium feature on the Premium features screen\npublic struct ViewPremiumFeature: Codable, Equatable, Hashable {\n\n    /// The viewed premium feature\n    public let feature: PremiumFeature?\n\n\n    public init(feature: PremiumFeature?) {\n        self.feature = feature\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ViewSponsoredChat.swift",
    "content": "//\n//  ViewSponsoredChat.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that the user fully viewed a sponsored chat\npublic struct ViewSponsoredChat: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the sponsored chat\n    public let sponsoredChatUniqueId: Int64?\n\n\n    public init(sponsoredChatUniqueId: Int64?) {\n        self.sponsoredChatUniqueId = sponsoredChatUniqueId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ViewTrendingStickerSets.swift",
    "content": "//\n//  ViewTrendingStickerSets.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs the server that some trending sticker sets have been viewed by the user\npublic struct ViewTrendingStickerSets: Codable, Equatable, Hashable {\n\n    /// Identifiers of viewed trending sticker sets\n    public let stickerSetIds: [TdInt64]?\n\n\n    public init(stickerSetIds: [TdInt64]?) {\n        self.stickerSetIds = stickerSetIds\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/ViewVideoMessageAdvertisement.swift",
    "content": "//\n//  ViewVideoMessageAdvertisement.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Informs TDLib that the user viewed a video message advertisement\npublic struct ViewVideoMessageAdvertisement: Codable, Equatable, Hashable {\n\n    /// Unique identifier of the advertisement\n    public let advertisementUniqueId: Int64?\n\n\n    public init(advertisementUniqueId: Int64?) {\n        self.advertisementUniqueId = advertisementUniqueId\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/VoiceNote.swift",
    "content": "//\n//  VoiceNote.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a voice note\npublic struct VoiceNote: Codable, Equatable, Hashable {\n\n    /// Duration of the voice note, in seconds; as defined by the sender\n    public let duration: Int\n\n    /// MIME type of the file; as defined by the sender. Usually, one of \"audio/ogg\" for Opus in an OGG container, \"audio/mpeg\" for an MP3 audio, or \"audio/mp4\" for an M4A audio\n    public let mimeType: String\n\n    /// Result of speech recognition in the voice note; may be null\n    public let speechRecognitionResult: SpeechRecognitionResult?\n\n    /// File containing the voice note\n    public let voice: File\n\n    /// A waveform representation of the voice note in 5-bit format\n    public let waveform: Data\n\n\n    public init(\n        duration: Int,\n        mimeType: String,\n        speechRecognitionResult: SpeechRecognitionResult?,\n        voice: File,\n        waveform: Data\n    ) {\n        self.duration = duration\n        self.mimeType = mimeType\n        self.speechRecognitionResult = speechRecognitionResult\n        self.voice = voice\n        self.waveform = waveform\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/WebApp.swift",
    "content": "//\n//  WebApp.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes a Web App. Use getInternalLink with internalLinkTypeWebApp to share the Web App\npublic struct WebApp: Codable, Equatable, Hashable {\n\n    /// Web App animation; may be null\n    public let animation: Animation?\n\n    public let description: String\n\n    /// Web App photo\n    public let photo: Photo\n\n    /// Web App short name\n    public let shortName: String\n\n    /// Web App title\n    public let title: String\n\n\n    public init(\n        animation: Animation?,\n        description: String,\n        photo: Photo,\n        shortName: String,\n        title: String\n    ) {\n        self.animation = animation\n        self.description = description\n        self.photo = photo\n        self.shortName = shortName\n        self.title = title\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/WebAppInfo.swift",
    "content": "//\n//  WebAppInfo.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Contains information about a Web App\npublic struct WebAppInfo: Codable, Equatable, Hashable {\n\n    /// Unique identifier for the Web App launch\n    public let launchId: TdInt64\n\n    /// A Web App URL to open in a web view\n    public let url: String\n\n\n    public init(\n        launchId: TdInt64,\n        url: String\n    ) {\n        self.launchId = launchId\n        self.url = url\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/WebAppOpenMode.swift",
    "content": "//\n//  WebAppOpenMode.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes mode in which a Web App is opened\npublic indirect enum WebAppOpenMode: Codable, Equatable, Hashable {\n\n    /// The Web App is opened in the compact mode\n    case webAppOpenModeCompact\n\n    /// The Web App is opened in the full-size mode\n    case webAppOpenModeFullSize\n\n    /// The Web App is opened in the full-screen mode\n    case webAppOpenModeFullScreen\n\n\n    private enum Kind: String, Codable {\n        case webAppOpenModeCompact\n        case webAppOpenModeFullSize\n        case webAppOpenModeFullScreen\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        let type = try container.decode(Kind.self, forKey: .type)\n        switch type {\n        case .webAppOpenModeCompact:\n            self = .webAppOpenModeCompact\n        case .webAppOpenModeFullSize:\n            self = .webAppOpenModeFullSize\n        case .webAppOpenModeFullScreen:\n            self = .webAppOpenModeFullScreen\n        }\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        switch self {\n        case .webAppOpenModeCompact:\n            try container.encode(Kind.webAppOpenModeCompact, forKey: .type)\n        case .webAppOpenModeFullSize:\n            try container.encode(Kind.webAppOpenModeFullSize, forKey: .type)\n        case .webAppOpenModeFullScreen:\n            try container.encode(Kind.webAppOpenModeFullScreen, forKey: .type)\n        }\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/WebAppOpenParameters.swift",
    "content": "//\n//  WebAppOpenParameters.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Options to be used when a Web App is opened\npublic struct WebAppOpenParameters: Codable, Equatable, Hashable {\n\n    /// Short name of the current application; 0-64 English letters, digits, and underscores\n    public let applicationName: String\n\n    /// The mode in which the Web App is opened; pass null to open in webAppOpenModeFullSize\n    public let mode: WebAppOpenMode?\n\n    /// Preferred Web App theme; pass null to use the default theme\n    public let theme: ThemeParameters?\n\n\n    public init(\n        applicationName: String,\n        mode: WebAppOpenMode?,\n        theme: ThemeParameters?\n    ) {\n        self.applicationName = applicationName\n        self.mode = mode\n        self.theme = theme\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/WebPage.swift",
    "content": "//\n//  WebPage.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.32-3cd93569\n//  https://github.com/tdlib/td/tree/3cd93569\n//\n\nimport Foundation\n\n\n/// Describes a link preview\npublic struct WebPage: Codable, Equatable, Hashable {\n\n    /// Preview of the content as an animation, if available; may be null\n    public let animation: Animation?\n\n    /// Preview of the content as an audio file, if available; may be null\n    public let audio: Audio?\n\n    /// Author of the content\n    public let author: String\n\n    public let description: FormattedText\n\n    /// URL to display\n    public let displayUrl: String\n\n    /// Preview of the content as a document, if available; may be null\n    public let document: Document?\n\n    /// Duration of the content, in seconds\n    public let duration: Int\n\n    /// Height of the embedded preview\n    public let embedHeight: Int\n\n    /// MIME type of the embedded preview, (e.g., text/html or video/mp4)\n    public let embedType: String\n\n    /// URL to show in the embedded preview\n    public let embedUrl: String\n\n    /// Width of the embedded preview\n    public let embedWidth: Int\n\n    /// True, if size of media in the preview can be changed\n    public let hasLargeMedia: Bool\n\n    /// Version of web page instant view (currently, can be 1 or 2); 0 if none\n    public let instantViewVersion: Int\n\n    /// Image representing the content; may be null\n    public let photo: Photo?\n\n    /// True, if the link preview must be shown above message text; otherwise, the link preview must be shown below the message text\n    public let showAboveText: Bool\n\n    /// True, if large media preview must be shown; otherwise, the media preview must be shown small and only the first frame must be shown for videos\n    public let showLargeMedia: Bool\n\n    /// Short name of the site (e.g., Google Docs, App Store)\n    public let siteName: String\n\n    /// True, if there is no need to show an ordinary open URL confirmation, when opening the URL from the preview, because the URL is shown in the message text in clear\n    public let skipConfirmation: Bool\n\n    /// Preview of the content as a sticker for small WEBP files, if available; may be null\n    public let sticker: Sticker?\n\n    /// Up to 4 stickers from the sticker set available via the link\n    public let stickers: [Sticker]\n\n    /// The identifier of the previewed story; 0 if none\n    public let storyId: Int\n\n    /// The identifier of the sender of the previewed story; 0 if none\n    public let storySenderChatId: Int64\n\n    /// Title of the content\n    public let title: String\n\n    /// Type of the web page. Can be: article, photo, audio, video, document, profile, app, or something else\n    public let type: String\n\n    /// Original URL of the link\n    public let url: String\n\n    /// Preview of the content as a video, if available; may be null\n    public let video: Video?\n\n    /// Preview of the content as a video note, if available; may be null\n    public let videoNote: VideoNote?\n\n    /// Preview of the content as a voice note, if available; may be null\n    public let voiceNote: VoiceNote?\n\n\n    public init(\n        animation: Animation?,\n        audio: Audio?,\n        author: String,\n        description: FormattedText,\n        displayUrl: String,\n        document: Document?,\n        duration: Int,\n        embedHeight: Int,\n        embedType: String,\n        embedUrl: String,\n        embedWidth: Int,\n        hasLargeMedia: Bool,\n        instantViewVersion: Int,\n        photo: Photo?,\n        showAboveText: Bool,\n        showLargeMedia: Bool,\n        siteName: String,\n        skipConfirmation: Bool,\n        sticker: Sticker?,\n        stickers: [Sticker],\n        storyId: Int,\n        storySenderChatId: Int64,\n        title: String,\n        type: String,\n        url: String,\n        video: Video?,\n        videoNote: VideoNote?,\n        voiceNote: VoiceNote?\n    ) {\n        self.animation = animation\n        self.audio = audio\n        self.author = author\n        self.description = description\n        self.displayUrl = displayUrl\n        self.document = document\n        self.duration = duration\n        self.embedHeight = embedHeight\n        self.embedType = embedType\n        self.embedUrl = embedUrl\n        self.embedWidth = embedWidth\n        self.hasLargeMedia = hasLargeMedia\n        self.instantViewVersion = instantViewVersion\n        self.photo = photo\n        self.showAboveText = showAboveText\n        self.showLargeMedia = showLargeMedia\n        self.siteName = siteName\n        self.skipConfirmation = skipConfirmation\n        self.sticker = sticker\n        self.stickers = stickers\n        self.storyId = storyId\n        self.storySenderChatId = storySenderChatId\n        self.title = title\n        self.type = type\n        self.url = url\n        self.video = video\n        self.videoNote = videoNote\n        self.voiceNote = voiceNote\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/WebPageInstantView.swift",
    "content": "//\n//  WebPageInstantView.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Describes an instant view page for a web page\npublic struct WebPageInstantView: Codable, Equatable, Hashable {\n\n    /// An internal link to be opened to leave feedback about the instant view\n    public let feedbackLink: InternalLinkType\n\n    /// True, if the instant view contains the full page. A network request might be needed to get the full instant view\n    public let isFull: Bool\n\n    /// True, if the instant view must be shown from right to left\n    public let isRtl: Bool\n\n    /// Content of the instant view page\n    public let pageBlocks: [PageBlock]\n\n    /// Version of the instant view; currently, can be 1 or 2\n    public let version: Int\n\n    /// Number of the instant view views; 0 if unknown\n    public let viewCount: Int\n\n\n    public init(\n        feedbackLink: InternalLinkType,\n        isFull: Bool,\n        isRtl: Bool,\n        pageBlocks: [PageBlock],\n        version: Int,\n        viewCount: Int\n    ) {\n        self.feedbackLink = feedbackLink\n        self.isFull = isFull\n        self.isRtl = isRtl\n        self.pageBlocks = pageBlocks\n        self.version = version\n        self.viewCount = viewCount\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Models/WriteGeneratedFilePart.swift",
    "content": "//\n//  WriteGeneratedFilePart.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\n/// Writes a part of a generated file. This method is intended to be used only if the application has no direct access to TDLib's file system, because it is usually slower than a direct write to the destination file\npublic struct WriteGeneratedFilePart: Codable, Equatable, Hashable {\n\n    /// The data to write\n    public let data: Data?\n\n    /// The identifier of the generation process\n    public let generationId: TdInt64?\n\n    /// The offset from which to write the data to the file\n    public let offset: Int64?\n\n\n    public init(\n        data: Data?,\n        generationId: TdInt64?,\n        offset: Int64?\n    ) {\n        self.data = data\n        self.generationId = generationId\n        self.offset = offset\n    }\n}\n\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Supporting/DTO.swift",
    "content": "//\n//  DTO.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\npublic final class DTO<T: Codable>: Codable {\n    let type: String\n    var extra: String?\n    let payload: T\n    let encoder: JSONEncoder?\n\n    public init(_ payload: T, encoder: JSONEncoder? = nil) {\n        self.payload = payload\n        self.encoder = encoder\n        let swiftType = String(describing: T.self)\n        self.type = tdLibTypeFromSwiftType(swiftType)  // TODO: replace with protocol\n    }\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n        type = try container.decode(String.self, forKey: .type)\n        extra = try container.decodeIfPresent(String.self, forKey: .extra)\n        payload = try T(from: decoder)\n        encoder = nil\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.container(keyedBy: DtoCodingKeys.self)\n        try container.encode(type, forKey: .type)\n        try container.encodeIfPresent(extra, forKey: .extra)\n        try payload.encode(to: encoder)\n    }\n}\n\nextension DTO: TdQuery {\n\n    public func make(with extra: String? = nil) throws -> Data {\n        self.extra = extra\n        let encoder = self.encoder ?? JSONEncoder()\n        return try encoder.encode(self)\n    }\n}\n\n// MARK: - Type Mapping Helpers\nprivate func tdLibTypeFromSwiftType(_ swiftType: String) -> String {\n    if let mapped = mapAmbiguousType(swiftType) {\n        return mapped\n    }\n    return swiftType.prefix(1).lowercased() + swiftType.dropFirst()\n}\n\nprivate func mapAmbiguousType(_ tlType: String) -> String? {\n    let mapping = [\n        \"TdData\": \"data\",\n    ]\n    return mapping[tlType]\n}\n\nprivate func resolveAmbiguousType(_ tlType: String) -> String {\n    return mapAmbiguousType(tlType) ?? tlType\n}"
  },
  {
    "path": "Sources/TDLibKit/Generated/Supporting/DtoCodingKeys.swift",
    "content": "//\n//  DtoCodingKeys.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\npublic enum DtoCodingKeys: String, CodingKey {\n    case type = \"@type\"\n    case extra = \"@extra\"\n    case clientId = \"@client_id\"\n}\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Supporting/JSONDecoder+Result.swift",
    "content": "//\n//  JSONDecoder+Result.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\nextension JSONDecoder {\n\n    func tryDecode<T>(_ type: T.Type, from data: Data) -> Result<T, Swift.Error> where T : Decodable {\n        do {\n            let result = try self.decode(type, from: data)\n            return .success(result)\n        } catch {\n            return .failure(error)\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Supporting/Logger.swift",
    "content": "//\n//  Logger.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\npublic protocol TDLibLogger {\n    func log(_ message: String, type: LoggerMessageType?)\n}\n\n\n@available(*, deprecated, renamed: \"TDLibLogger\", message: \"interferes with OSLog.Logger\")\npublic protocol Logger {\n    func log(_ message: String, type: LoggerMessageType?)\n}\n\n\npublic enum LoggerMessageType: CustomStringConvertible {\n    case receive\n    case send\n    case execute\n    case custom(String)\n\n    public var description: String {\n        switch self {\n        case .receive:\n            return \"Receive\"\n        case .send:\n            return \"Send\"\n        case .execute:\n            return \"Execute\"\n        case .custom(let value):\n            return value\n        }\n    }\n}\n"
  },
  {
    "path": "Sources/TDLibKit/Generated/Supporting/TdInt64.swift",
    "content": "//\n//  TdInt64.swift\n//  tl2swift\n//\n//  Generated automatically. Any changes will be lost!\n//  Based on TDLib 1.8.64-7a7081bf\n//  https://github.com/tdlib/td/tree/7a7081bf\n//\n\nimport Foundation\n\n\npublic struct TdInt64: RawRepresentable, ExpressibleByIntegerLiteral, Hashable {\n\n    public typealias RawValue = Int64\n\n    // MARK: - Properties\n\n    public var rawValue: Int64\n\n    public static var max: TdInt64 { return TdInt64(Int64.max) }\n\n    public static var min: TdInt64 { return TdInt64(Int64.min) }\n\n\n    // MARK: - Init\n\n    public init(_ int64: Int64) {\n        self.rawValue = int64\n    }\n\n    public init?(rawValue: Int64) {\n        self.rawValue = rawValue\n    }\n\n    public init(integerLiteral value: Int) {\n        self.rawValue = Int64(value)\n    }\n}\n\n\nextension TdInt64: Codable {\n\n    public init(from decoder: Decoder) throws {\n        let container = try decoder.singleValueContainer()\n        let strValue = try container.decode(String.self)\n        guard let value = Int64(strValue) else {\n            throw DecodingError.dataCorrupted(\n                DecodingError.Context(\n                    codingPath: container.codingPath,\n                    debugDescription: \"Can't convert String value \\(strValue) to Int64.\"))\n        }\n        self.rawValue = value\n    }\n\n    public func encode(to encoder: Encoder) throws {\n        var container = encoder.singleValueContainer()\n        try container.encode(\"\\(rawValue)\")\n    }\n\n}\n\n\nextension TdInt64: Comparable {\n    public static func < (lhs: Self, rhs: Self) -> Bool {\n        return lhs.rawValue < rhs.rawValue\n    }\n}\n"
  },
  {
    "path": "Sources/TDLibKit/Supporting/ConcurrentDictionary.swift",
    "content": "//\n//  https://github.com/peterprokop/SwiftConcurrentCollections\n//  ConcurrentDictionary.swift\n//  \n//\n//  Created by Sergey Akentev on 30.7.2023.\n//\n\nimport Foundation\n\n/// Thread-safe dictionary wrapper\n/// - Important: Note that this is a `class`, i.e. reference (not value) type\npublic final class ConcurrentDictionary<Key: Hashable, Value> {\n\n    private var container: [Key: Value] = [:]\n    private let rwlock = RWLock()\n\n    public var keys: [Key] {\n        let result: [Key]\n        rwlock.readLock()\n        result = Array(container.keys)\n        rwlock.unlock()\n        return result\n    }\n\n    public var values: [Value] {\n        let result: [Value]\n        rwlock.readLock()\n        result = Array(container.values)\n        rwlock.unlock()\n        return result\n    }\n\n    public init() {}\n\n    /// Sets the value for key\n    ///\n    /// - Parameters:\n    ///   - value: The value to set for key\n    ///   - key: The key to set value for\n    public func set(value: Value, forKey key: Key) {\n        rwlock.writeLock()\n        _set(value: value, forKey: key)\n        rwlock.unlock()\n    }\n\n    @discardableResult\n    public func remove(_ key: Key) -> Value? {\n        let result: Value?\n        rwlock.writeLock()\n        result = _remove(key)\n        rwlock.unlock()\n        return result\n    }\n    \n    @discardableResult\n    public func removeValue(forKey: Key) -> Value? {\n        return self.remove(forKey)\n    }\n\n    public func contains(_ key: Key) -> Bool {\n        let result: Bool\n        rwlock.readLock()\n        result = container.index(forKey: key) != nil\n        rwlock.unlock()\n        return result\n    }\n\n    public func value(forKey key: Key) -> Value? {\n        let result: Value?\n        rwlock.readLock()\n        result = container[key]\n        rwlock.unlock()\n        return result\n    }\n\n    public func mutateValue(forKey key: Key, mutation: (Value) -> Value) {\n        rwlock.writeLock()\n        if let value = container[key] {\n            container[key] = mutation(value)\n        }\n        rwlock.unlock()\n    }\n    \n    public var isEmpty: Bool {\n        return self.keys.isEmpty\n    }\n\n    // MARK: Subscript\n    public subscript(key: Key) -> Value? {\n        get {\n            return value(forKey: key)\n        }\n        set {\n            rwlock.writeLock()\n            defer {\n                rwlock.unlock()\n            }\n            guard let newValue = newValue else {\n                _remove(key)\n                return\n            }\n            _set(value: newValue, forKey: key)\n        }\n    }\n\n    // MARK: Private\n    @inline(__always)\n    private func _set(value: Value, forKey key: Key) {\n        self.container[key] = value\n    }\n\n    @inline(__always)\n    @discardableResult\n    private func _remove(_ key: Key) -> Value? {\n        guard let index = container.index(forKey: key) else { return nil }\n\n        let tuple = container.remove(at: index)\n        return tuple.value\n    }\n\n}\n"
  },
  {
    "path": "Sources/TDLibKit/Supporting/RWLock.swift",
    "content": "//\n//  RWLock.swift\n//  SwiftConcurrentCollections\n//\n//  Created by Pete Prokop on 09/02/2020.\n//  Copyright © 2020 Pete Prokop. All rights reserved.\n//\n\nimport Foundation\n\nfinal class RWLock {\n    private var lock: pthread_rwlock_t\n\n    // MARK: Lifecycle\n    deinit {\n        pthread_rwlock_destroy(&lock)\n    }\n\n    public init() {\n        lock = pthread_rwlock_t()\n        pthread_rwlock_init(&lock, nil)\n    }\n\n    // MARK: Public\n    public func writeLock() {\n        pthread_rwlock_wrlock(&lock)\n    }\n\n    public func readLock() {\n        pthread_rwlock_rdlock(&lock)\n    }\n\n    public func unlock() {\n        pthread_rwlock_unlock(&lock)\n    }\n}\n"
  },
  {
    "path": "Sources/TDLibKit/TDLibClientManager.swift",
    "content": "//\n//  TdClientManager.swift\n//  \n//\n//  Created by Sergey Akentev on 29.7.2023.\n//\n\nimport Foundation\nimport TDLibFramework\n\n\npublic class TDLibClient: TDLibApi, Equatable {\n    public let id: Int32\n    public private(set) var awaitingCompletions = ConcurrentDictionary<String, (Data) -> Void>()\n    public let updateHandler: (Data, TDLibClient) -> Void\n    /// 'updateHandlerQueue' is a client-specific queue for incoming updates and responses. Serial queue ensures an order of updates https://core.telegram.org/tdlib/getting-started#handling-updates\n    public let updateHandlerQueue: DispatchQueue\n    /// 'queryQueue' is a client-specific queue for outgoing requests. It's a concurrent queue, so some requests may be dispatched earlier even if they were called later.\n    private let queryQueue: DispatchQueue\n    private let logger: TDLibLogger?\n    \n    /// Since ``td_receive`` can be called only from a single thread, ``TDLibClient`` initializer is private to ensure each client will receive responses for their requests.\n    fileprivate init(updateHandler: @escaping (Data, TDLibClient) -> Void, logger: TDLibLogger? = nil) {\n        self.id = td_create_client_id()\n        self.updateHandler = updateHandler\n        self.updateHandlerQueue = DispatchQueue(label: \"app.swiftgram.TDLibKit.client-\\(self.id).update-handler\")\n        self.queryQueue = DispatchQueue(label: \"app.swiftgram.TDLibKit.client-\\(self.id).query\", attributes: .concurrent)\n        self.logger = logger\n        super.init()\n    }\n    \n\n    func completionHandler(extra: String, result: Data) {\n        self.updateHandlerQueue.async {\n            if let completion = self.awaitingCompletions.removeValue(forKey: extra) {\n                completion(result)\n            }\n        }\n    }\n    \n    /// Sends request to the TDLib client.\n    override public func send(query: TdQuery, completion: ((Data) -> Void)? = nil) throws {\n        self.queryQueue.async { [weak self] in\n            guard let `self` = self else { return }\n            var extra: String? = nil\n            if let completion = completion {\n                extra = UUID().uuidString\n                self.awaitingCompletions[extra!] = completion\n            }\n            let data = try! query.make(with: extra)\n            if let str = String(data: data, encoding: .utf8) {\n                self.logger?.log(\"[\\(self.id)] \" + str, type: .send)\n                td_send(self.id, str)\n            } else {\n                let errorText: String = \"ERROR! Unable to encode query data, conversion returns nil\"\n                if let strongLogger = self.logger {\n                    strongLogger.log(\"[\\(self.id)] \" + errorText, type: .send)\n                } else {\n                    print(errorText)\n                }\n            }\n        }\n    }\n    \n    /// Synchronously executes TDLib request.\n    override public func execute(query: TdQuery) throws -> [String:Any]? {\n        do {\n            let data = try query.make(with: nil)\n            let str = String(data: data, encoding: .utf8)!\n            logger?.log(str, type: .execute)\n            if let res = td_execute(str) {\n                let resString = String(cString: res)\n                logger?.log(resString, type: .receive)\n                let resData = resString.data(using: .utf8)\n                let json = try JSONSerialization.jsonObject(with: resData!, options:[])\n                let dictionary = json as! [String:Any]\n                return dictionary\n            } else {\n                throw Error(code: 404, message: \"Empty response from TDLib\")\n            }\n        } catch {\n            throw error\n        }\n    }\n\n    \n    public static func == (lhs: TDLibClient, rhs: TDLibClient) -> Bool {\n        return lhs.id == rhs.id\n    }\n    \n}\n\n\nopen class TDLibClientManager {\n    /// 'receiveQueue' is a separate queue that calls ``td_receive`` in a loop\n    private let receiveQueue = DispatchQueue(label: \"app.swiftgram.TDLibKit.receive\")\n    /// 'queryQueue' is a separate queue that will decode update string and lookup for possible completions in existing ``self.clients``. 'queryQueue' exists to quickly switch back to 'receiveQueue' and call next ``td_receive``\n    private let queryQueue = DispatchQueue(label: \"app.swiftgram.TDLibKit.query\")\n    public private(set) var clients = ConcurrentDictionary<Int32,TDLibClient>()\n    private let logger: TDLibLogger?\n    \n    \n    /// TDLibClientManager\n    ///\n    ///\n    /// - Parameter logger: The logger object for debug print all queries and responses\n    public init(logger: TDLibLogger? = nil) {\n        #warning(\"Breaking changes may be introduced to TDLibClientManager without major version bump.\")\n        self.logger = logger\n        self.receiveQueue.async { [weak self] in\n            while (true) {\n                guard let self else { break }\n                guard\n                    let res = td_receive(10),\n                    case let dataString = String(cString: res),\n                    let data = dataString.data(using: .utf8)\n                else {\n                    continue\n                }\n                self.logger?.log(dataString, type: .receive)\n                self.queryResultAsync(data)\n            }\n        }\n    }\n    \n    \n    deinit {\n        closeClients()\n    }\n    \n    /// Sends `close` request to each known ``TDLibClient`` and waits for all ``authorizationStateClosed`` updates. This is a blocking method.\n    /// Will be called on manager's ``deinit``. However, consider to call this method manually on `willTerminateNotification` or similar. Otherwise, client data may be lost.\n    public func closeClients() {\n        for client in self.clients.values {\n            try? client.close(completion: { _ in })\n        }\n        \n        while (!self.clients.isEmpty) {}\n    }\n    \n    /// createClient\n    /// Creates ``TDLibClient`` and registers it's `updateHandler` in manager, allowing a per-client routing from ``td_receive``.\n    /// Returned client has been already \"activated\" with `getOption(\"version\")` call and will receive updates immediatelly.\n    ///\n    ///\n    /// - Parameter updateHandler: Handler closure that will get access to ``Data`` with update and corresponding ``TDLibClient``. Will run in a serial client-specific ``DispatchQueue`` without blocking any other clients or ``td_receive``. https://core.telegram.org/tdlib/getting-started#handling-updates\n    public func createClient(updateHandler: @escaping (Data, TDLibClient) -> Void) -> TDLibClient {\n        let newClient = TDLibClient(updateHandler: updateHandler, logger: self.logger)\n        self.clients[newClient.id] = newClient\n        try? newClient.send(query: DTO(GetOption(name: \"version\")), completion: { _ in })\n        return newClient\n    }\n    \n    private func queryResultAsync(_ result: Data) {\n        self.queryQueue.async { [weak self] in\n            guard\n                let `self` = self,\n                let json = try? JSONSerialization.jsonObject(with: result, options:[]),\n                let dictionary = json as? [String:Any]\n            else {\n                return\n            }\n            \n            let clientId = dictionary[\"@client_id\"] as? Int32 ?? 1\n            if let extraStr = dictionary[\"@extra\"] as? String {\n                if let client = self.clients[clientId] {\n                    client.completionHandler(extra: extraStr, result: result)\n                }\n            } else {\n                if let client = self.clients[clientId] {\n                    client.updateHandlerQueue.async {\n                        client.updateHandler(result, client)\n                    }\n                }\n            }\n            \n            if self.checkClosedUpdate(dictionary) {\n                self.clients.removeValue(forKey: clientId)\n            }\n        }\n    }\n    \n    private func checkClosedUpdate(_ dict: [String: Any]) -> Bool {\n        if let state = dict[\"authorization_state\"] as? [String: Any],\n           (state[\"@type\"] as? String) == \"authorizationStateClosed\" {\n            return true\n        }\n        return false\n    }\n    \n}\n"
  },
  {
    "path": "Sources/TDLibKit/TdClientImpl.swift",
    "content": "//\n//  TdClientImpl.swift\n//\n//  Created by Anton Glezman on 17/09/2019.\n//  Copyright © 2019 Anton Glezman . All rights reserved.\n//\n\nimport Foundation\nimport TDLibFramework\n\n\n@available(*, deprecated, message: \"will be removed; use TDLibClientManager\")\nopen class TdClientImpl: TdClient {\n    \n    public typealias CompletionHandler = (Data) -> Void\n    \n    private var client: UnsafeMutableRawPointer!\n    private let tdlibMainQueue = DispatchQueue(label: \"TDLib\", qos: .utility)\n    private let tdlibQueryQueue = DispatchQueue(label: \"TDLibQuery\", qos: .userInitiated)\n    private let completionQueue: DispatchQueue\n    private var awaitingCompletions = [String: CompletionHandler]()\n    private var updateHandler: ((Data) -> Void)?\n    private let logger: Logger?\n    private var isClientDestroyed = true\n    private var stopFlag = false\n    \n    \n    /// Instantiate a Tdlib Client\n    ///\n    /// - Parameter completionQueue: The serial operation queue used to dispatch all completion handlers. `.main` by default.\n    /// - Parameter logger: The logger object for debug print all queries and responses\n    public init(completionQueue: DispatchQueue = .main, logger: Logger? = nil) {\n        self.completionQueue = completionQueue\n        self.logger = logger\n    }\n    \n    deinit {\n        close()\n    }\n    \n    public func close() {\n        guard !isClientDestroyed else { return }\n        if !stopFlag {\n            try! send(query: DTO(Close()), completion: { _ in })\n        }\n    }\n    \n    /// Receives incoming updates and request responses from the TDLib client\n    public func run(updateHandler: @escaping CompletionHandler) {\n        self.updateHandler = updateHandler\n        createClientIfNeeded()\n        \n        tdlibMainQueue.async { [weak self] in\n            guard let self else { return }\n            guard !self.isClientDestroyed else { return }\n            \n            while (!self.stopFlag) {\n                guard\n                    let res = td_json_client_receive(self.client, 10),\n                    let data = String(cString: res).data(using: .utf8)\n                else {\n                    continue\n                }\n                self.logger?.log(String(cString: res), type: .receive)\n                self.queryResultAsync(data)\n            }\n            self.isClientDestroyed = true\n            td_json_client_destroy(self.client)\n            self.stopFlag = false\n        }\n    }\n    \n    /// Sends request to the TDLib client.\n    public func send(query: TdQuery, completion: (CompletionHandler)? = nil) throws {\n        guard !self.isClientDestroyed else {\n            logger?.log(\"Client destroyed. Query send aborted. Query: \\(query)\", type: .custom(\"Warning\"))\n            return\n        }\n        \n        tdlibQueryQueue.async { [weak self] in\n            guard let `self` = self else { return }\n            var extra: String? = nil\n            if let completion = completion {\n                extra = UUID().uuidString\n                self.awaitingCompletions[extra!] = completion\n            }\n            let data = try! query.make(with: extra)\n            if let str = String(data: data, encoding: .utf8) {\n                self.logger?.log(str, type: .send)\n                td_json_client_send(self.client, str)\n            } else {\n                let errorText: String = \"ERROR! Unable to encode query data, conversion returns nil\"\n                if let strongLogger = self.logger {\n                    strongLogger.log(errorText, type: .send)\n                } else {\n                    print(errorText)\n                }\n            }\n        }\n    }\n    \n    /// Synchronously executes TDLib request.\n    public func execute(query: TdQuery) throws -> [String:Any]? {\n        guard !self.isClientDestroyed else {\n            logger?.log(\"Client destroyed. Execution aborted. Query: \\(query)\", type: .custom(\"Warning\"))\n            return nil\n        }\n        \n        do {\n            let data = try query.make(with: nil)\n            let str = String(data: data, encoding: .utf8)!\n            logger?.log(str, type: .execute)\n            if let res = td_json_client_execute(client, str) {\n                let resString = String(cString: res)\n                logger?.log(resString, type: .receive)\n                let resData = resString.data(using: .utf8)\n                let json = try JSONSerialization.jsonObject(with: resData!, options:[])\n                let dictionary = json as! [String:Any]\n                return dictionary\n            } else {\n                throw Error(code: 404, message: \"Empty response from TDLib\")\n            }\n        } catch {\n            throw error\n        }\n    }\n    \n    // MARK: - Private methods\n    \n    private func createClientIfNeeded() {\n        if isClientDestroyed {\n            client = td_json_client_create()\n            isClientDestroyed = false\n        }\n    }\n    \n    private func queryResultAsync(_ result: Data) {\n        tdlibQueryQueue.async { [weak self] in\n            guard\n                let `self` = self,\n                let json = try? JSONSerialization.jsonObject(with: result, options:[]),\n                let dictionary = json as? [String:Any]\n            else {\n                return\n            }\n            \n            if let extraStr = dictionary[\"@extra\"] as? String {\n                if let completion = self.awaitingCompletions[extraStr] {\n                    self.completionQueue.async {\n                        completion(result)\n                    }\n                    self.awaitingCompletions.removeValue(forKey: extraStr)\n                }\n            } else {\n                if self.checkClosingUpdate(dictionary) {\n                    self.stopFlag = true\n                }\n                self.completionQueue.async {\n                    self.updateHandler?(result)\n                }\n            }\n        }\n    }\n    \n    private func checkClosingUpdate(_ dict: [String: Any]) -> Bool {\n        if let state = dict[\"authorization_state\"] as? [String: Any],\n           (state[\"@type\"] as? String) == \"authorizationStateClosed\" {\n            return true\n        }\n        return false\n    }\n    \n}\n"
  },
  {
    "path": "Tests/TDLibKitTests/TDLibKitTests.swift",
    "content": "import XCTest\n@testable import TDLibKit\n\n\npublic final class StdOutLogger: Logger, TDLibLogger {\n    \n    let queue: DispatchQueue\n    \n    public init() {\n        queue = DispatchQueue(label: \"Logger\", qos: .userInitiated)\n    }\n    \n    public func log(_ message: String, type: LoggerMessageType?) {\n        queue.async {\n            var fisrtLine = \"\"\n            if let type = type {\n                fisrtLine = \">> \\(type.description)\"\n            }\n            NSLog(\"\\(fisrtLine)\\n\\(message)\\n---------------------------\")\n        }\n    }\n}\n\n\n@available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\nclass TDLibKitTests: XCTestCase {\n    var client: TdClientImpl!\n    var api: TdApi!\n    \n    override func setUpWithError() throws {\n        try super.setUpWithError()\n        self.client = TdClientImpl(logger: StdOutLogger())\n        self.api = TdApi(client: self.client)\n        self.client.run { _ in }\n        \n        let query = SetLogVerbosityLevel(newVerbosityLevel: 5)\n        do {\n            let result = try api.client.execute(query: DTO(query))\n            if let resultDict = result {\n                if let resultTypeString = resultDict[\"@type\"] as? String, resultTypeString == \"ok\" {\n                    XCTAssertEqual(resultTypeString, \"ok\")\n                } else {\n                    XCTFail(\"Wrong response from SetLogVerbosityLevel \\(resultDict)\")\n                }\n            } else {\n                XCTFail(\"Empty response for loglevel\")\n            }\n        } catch {\n            XCTFail(\"Error in SetLogVerbosityLevel request \\(error.localizedDescription)\")\n        }\n        \n        guard let cachesUrl = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first else {\n            XCTFail(\"Unable to get cache path\")\n            return\n        }\n        let tdlibPath = cachesUrl.appendingPathComponent(\"tdlib\", isDirectory: true).path\n        \n        let _ = Task {\n            let _ = try! await api.setTdlibParameters(\n                apiHash: \"5e6d7b36f0e363cf0c07baf2deb26076\", // https://core.telegram.org/api/obtaining_api_id\n                apiId: 287311,\n                applicationVersion: \"1.0\",\n                databaseDirectory: tdlibPath,\n                databaseEncryptionKey: nil,\n                deviceModel: \"iOS\",\n                filesDirectory: \"\",\n                systemLanguageCode: \"en\",\n                systemVersion: \"Unknown\",\n                useChatInfoDatabase: true,\n                useFileDatabase: true,\n                useMessageDatabase: true,\n                useSecretChats: true,\n                useTestDc: false)\n            let authState = try! await api.getAuthorizationState()\n            switch (authState) {\n            case .authorizationStateWaitPhoneNumber:\n                break\n            default:\n                XCTFail(\"Auth state is not ready. It's \\(authState)\")\n            }\n        }\n    }\n    \n    override func tearDownWithError() throws {\n        self.client.close()\n        try super.tearDownWithError()\n    }\n    \n    func testConfigs() async {\n        async let config1 = try! api.getApplicationConfig()\n        async let config2 = try! api.getApplicationConfig()\n        async let config3 = try! api.getApplicationConfig()\n        async let config4 = try! api.getApplicationConfig()\n        async let config5 = try! api.getApplicationConfig()\n        async let config6 = try! api.getApplicationConfig()\n        async let config7 = try! api.getApplicationConfig()\n        async let config8 = try! api.getApplicationConfig()\n        async let config9 = try! api.getApplicationConfig()\n        async let config10 = try! api.getApplicationConfig()\n        \n        let configs = await [config1, config2, config3, config4, config5, config6, config7, config8, config9, config10]\n        print(\"Application Configs \\(configs)\")\n    }\n    \n    func testGetCountries() async {\n        let countries = try! await api.getCountries()\n        print(\"Countries \\(countries)\")\n        XCTAssertNotEqual(countries, nil)\n    }\n    \n}\n\nclass TDLibKitUnitTests: XCTestCase {\n\n    private func makeInlineKeyboardButton(text: String, type: String, typePayload: [String: Any] = [:]) -> InlineKeyboardButton {\n        var json: [String: Any] = [\n            \"@type\": \"inlineKeyboardButton\",\n            \"text\": text,\n            \"icon_custom_emoji_id\": \"0\",\n            \"style\": [\"@type\": \"buttonStyleDefault\"],\n            \"type\": [\"@type\": type]\n        ]\n        if !typePayload.isEmpty {\n            var typeObject = json[\"type\"] as! [String: Any]\n            typeObject.merge(typePayload) { _, new in new }\n            json[\"type\"] = typeObject\n        }\n\n        let data = try! JSONSerialization.data(withJSONObject: json)\n        return try! TDLibApi().decoder.decode(InlineKeyboardButton.self, from: data)\n    }\n    \n    func testEquatableStructs() {\n        let struct1 = AddContact(contact: ImportedContact(firstName: \"John\", lastName: \"Appleseed\", note: FormattedText(entities: [], text: \"empty\"), phoneNumber: \"+10000000000\"), sharePhoneNumber: true, userId: 123456789)\n        let struct2 = AddContact(contact: ImportedContact(firstName: \"Pavel\", lastName: \"Droider\", note: FormattedText(entities: [], text: \"empty\"), phoneNumber: \"+90000000000\"), sharePhoneNumber: false, userId: 777777777)\n        XCTAssertNotEqual(struct1, struct2)\n        \n        XCTAssertEqual(struct1, struct1)\n    }\n    \n    func testEquatableStructsWithEnums() {\n        let struct1 = EditMessageLiveLocation(\n            chatId: 1234567, heading: 10, livePeriod: 0x7FFFFFFF, location: Location(horizontalAccuracy: 10.0, latitude: 358.0, longitude: 259.1), messageId: 12345, proximityAlertRadius: 30, replyMarkup: .replyMarkupInlineKeyboard(\n                ReplyMarkupInlineKeyboard(\n                    rows: [\n                        [\n                            makeInlineKeyboardButton(text: \"Buy me!\", type: \"inlineKeyboardButtonTypeBuy\")\n                        ]\n                    ]\n                )\n            )\n        )\n        \n        let struct2 = EditMessageLiveLocation(\n            chatId: 1234567, heading: 10, livePeriod: 0x7FFFFFFF, location: Location(horizontalAccuracy: 10.0, latitude: 358.0, longitude: 259.1), messageId: 12345, proximityAlertRadius: 30, replyMarkup: .replyMarkupInlineKeyboard(\n                ReplyMarkupInlineKeyboard(\n                    rows: [\n                        [\n                            makeInlineKeyboardButton(\n                                text: \"Ate me!\",\n                                type: \"inlineKeyboardButtonTypeUrl\",\n                                typePayload: [\"url\": \"https://telegram.org\"]\n                            )\n                        ]\n                    ]\n                )\n            )\n        )\n        \n        XCTAssertEqual(struct1, struct1)\n        XCTAssertNotEqual(struct1, struct2)\n    }\n    \n    func testEquatableErrors() {\n        let error1 = Error(code: 500, message: \"Internal Server Error\")\n        let error2 = Error(code: 403, message: \"You're not alowed to do this\")\n        let error3 = Error(code: 500, message: \"Server down\")\n        \n        XCTAssertEqual(error1, error1)\n        XCTAssertNotEqual(error1, error2)\n        XCTAssertNotEqual(error1, error3)\n    }\n    \n    func testTdDataDecoder() {\n        let api = TDLibApi()\n        let dataString = \"\"\"\n        {\"@type\":\"data\",\"@extra\":\"someExtraInfo\",\"data\":\"AQIDBAUGBwgJCg==\"}\n        \"\"\".data(using: .utf8)!\n        let dataObj = try! api.decoder.decode(DTO<TdData>.self, from: dataString)\n        \n        XCTAssertEqual(dataObj.type, \"data\")\n        XCTAssertEqual(dataObj.extra, Optional(\"someExtraInfo\"))\n        XCTAssertEqual(dataObj.payload.data, Data(base64Encoded: \"AQIDBAUGBwgJCg==\"))\n    }\n    \n    func testTdDataEncoder() {\n        let api = TDLibApi()\n        let data = Data(base64Encoded: \"AQIDBAUGBwgJCg==\")!\n        let tdData = TdData(data: data)\n        let dto = DTO(tdData, encoder: api.encoder)\n\n        let encodedData = try! dto.make(with: \"someExtraInfo\")\n        let encodedJson = try! JSONSerialization.jsonObject(with: encodedData) as! [String: Any]\n\n        let expectedJsonString = \"\"\"\n        {\"@extra\":\"someExtraInfo\",\"@type\":\"data\",\"data\":\"AQIDBAUGBwgJCg==\"}\n        \"\"\"\n        let expectedData = expectedJsonString.data(using: .utf8)!\n        let expectedJson = try! JSONSerialization.jsonObject(with: expectedData) as! [String: Any]\n\n        XCTAssertEqual(encodedJson as NSDictionary, expectedJson as NSDictionary)\n    }\n\n}\n\n@available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\nclass TDLibClientManagerTests: XCTestCase {\n    \n    func testMultipleClientsInitialization() async {\n        let manager = TDLibClientManager(logger: StdOutLogger())\n        var clientClosedExpectations: [XCTestExpectation] = []\n        \n        for i in 1...50 {\n            let clientClosedExpectation = XCTestExpectation(description: \"Client \\(i) closed\")\n            clientClosedExpectations.append(clientClosedExpectation)\n            let client = manager.createClient(updateHandler: {\n                print(\"Size of Update type: \\(MemoryLayout<Update>.size)\")\n                print(\"Stack size for client thread \\(i): \\(Thread.current.stackSize)\")\n                let update = try! $1.decoder.decode(Update.self, from: $0)\n                switch (update) {\n                    case .updateAuthorizationState(let updateAuthorizationState):\n                        switch(updateAuthorizationState.authorizationState) {\n                            case .authorizationStateClosed:\n                                clientClosedExpectation.fulfill()\n                            default:\n                                break\n                        }\n                    default:\n                        break\n                }\n            })\n            let verbosityLevel = try! await client.getLogVerbosityLevel()\n            if verbosityLevel.verbosityLevel != 5 {\n                try! await client.setLogVerbosityLevel(newVerbosityLevel: 5)\n            }\n            guard let cachesUrl = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first else {\n                XCTFail(\"Unable to get cache path\")\n                return\n            }\n            let tdlibPath = cachesUrl.appendingPathComponent(\"tdlib-\\(i)-\\(UUID().uuidString)\", isDirectory: true).path\n            try! await client.setTdlibParameters(\n                apiHash: \"5e6d7b36f0e363cf0c07baf2deb26076\", // https://core.telegram.org/api/obtaining_api_id\n                apiId: 287311,\n                applicationVersion: \"1.0\",\n                databaseDirectory: tdlibPath,\n                databaseEncryptionKey: nil,\n                deviceModel: \"iOS\",\n                filesDirectory: \"\",\n                systemLanguageCode: \"en\",\n                systemVersion: \"Unknown\",\n                useChatInfoDatabase: true,\n                useFileDatabase: true,\n                useMessageDatabase: true,\n                useSecretChats: true,\n                useTestDc: false)\n            let authState = try! await client.getAuthorizationState()\n            switch (authState) {\n            case .authorizationStateWaitPhoneNumber:\n                break\n            default:\n                XCTFail(\"Auth state is not ready for client \\(i). It's \\(authState)\")\n            }\n        }\n        \n        let currentLogVerbosityLevel = try! await manager.clients[1]!.getLogVerbosityLevel()\n        XCTAssertEqual(currentLogVerbosityLevel.verbosityLevel, 5)\n        \n        manager.closeClients()\n        #if swift(>=5.8)\n            await fulfillment(of: clientClosedExpectations, timeout: 180.0)\n        #else\n            // TODO: We will update Xcode on CI one day\n            wait(for: clientClosedExpectations, timeout: 180.0)\n        #endif\n    }\n}\n"
  },
  {
    "path": "scripts/parse_tdlib_version.py",
    "content": "import json\nimport argparse\nimport sys\n\ndef parse_tdlib(mode: str) -> str:\n    \"\"\"\n        Parse Tdlib version Package.resolved\n    \"\"\"\n    with open(\"Package.resolved\") as file:\n        deps = json.load(file)\n\n    if deps['version'] == 1:\n        libs = deps['object']['pins']\n        for lib in libs:\n            if lib['package'] == 'TDLibFramework':\n                version, commit = lib['state']['version'].split('-')\n                if mode == 'version':\n                    return version\n                elif mode == 'commit':\n                    return commit\n                elif mode == 'full':\n                    return lib['state']['version']\n    else:\n        raise ValueError(f\"Unsupported .resolved version {deps['version']}\")\n\nif __name__ == '__main__':\n    parser = argparse.ArgumentParser()\n    parser.add_argument(\"mode\", help=\"version or commit\")\n    \n    args = parser.parse_args()\n\n    if args.mode not in ('version', 'commit', 'full'):\n        sys.exit(\"Invalid mode. Available: version, commit, full\")\n    print(parse_tdlib(args.mode))"
  },
  {
    "path": "scripts/release.py",
    "content": "#!/usr/bin/env python3\nimport os\nimport json\nfrom utils import run_command\n\n\ndef main():\n    # Get the directory of this script\n    scripts_dir = os.path.dirname(os.path.realpath(__file__))\n\n    with open(os.path.join(scripts_dir, \"..\", \"versions.json\")) as f:\n        versions = json.load(f)\n\n    release_tag = f\"{versions['package']}-tdlib-{versions['tdlib_version']}-{versions['tdlib_commit']}\"\n    run_command(\n        [\n            \"gh\",\n            \"release\",\n            \"delete\",\n            release_tag,\n            \"--yes\",\n            \"--cleanup-tag\",\n        ],\n        check=False,\n    )\n\n    print(f\"Release tag: {release_tag}\")\n    run_command(\n        [\n            \"gh\",\n            \"release\",\n            \"create\",\n            release_tag,\n            \"--title\",\n            release_tag,\n            \"--notes\",\n            f\"TDLibKit based on TDLib-{versions['tdlib_version']} commit [{versions['tdlib_commit']}](https://github.com/tdlib/td/tree/{versions['tdlib_commit']})\",\n        ],\n        check=False,\n    )\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/swift_package_generator.py",
    "content": "import argparse\n\n\ndef get_file_content(tdlibframework_version):\n    return f\"\"\"// swift-tools-version:5.3\n// The swift-tools-version declares the minimum version of Swift required to build this package.\n// DO NOT EDIT! Generated automatically. See scripts/swift_package_generator.py\n\nimport PackageDescription\n\n\n\nlet package = Package(\n    name: \"TDLibKit\",\n    platforms: [\n        // Following versions of https://github.com/Swiftgram/TDLibFramework/blob/main/Package.swift\n        .iOS(.v12),\n        .macOS(.v10_15),\n        .watchOS(.v4),\n        .tvOS(.v12)\n    ],\n    products: [\n        .library(\n            name: \"TDLibKit\",\n            targets: [\"TDLibKit\"]),\n    ],\n    dependencies: [\n        .package(url: \"https://github.com/Swiftgram/TDLibFramework\", .exact(\"{tdlibframework_version}\")),\n    ],\n    targets: [\n        .target(\n            name: \"TDLibKit\",\n            dependencies: [\"TDLibFramework\"]\n        ),\n        .testTarget(\n            name: \"TDLibKitTests\",\n            dependencies: [\"TDLibKit\"]\n        ),\n    ]\n)\n\n\"\"\"\n\n\nif __name__ == \"__main__\":\n    parser = argparse.ArgumentParser()\n    parser.add_argument(\n        \"tdlibframework_version\", help=\"Swiftgram/TDLibFramework version\"\n    )\n\n    args = parser.parse_args()\n    with open(\"Package.swift\", \"w\") as f:\n        f.write(get_file_content(args.tdlibframework_version))\n"
  },
  {
    "path": "scripts/test.sh",
    "content": "#!/bin/sh\nset -ex\n\nPLATFORM=\"$1\"\nOS_LIST=\"$2\"\nNAME=\"$3\"\nACTIONS=${4:-test}\n\nif [[ $PLATFORM = \"iOS-simulator\" ]]; then\n    SDK=\"iphonesimulator\"\n    DESTINATION=\"platform=iOS Simulator,name=${NAME}\"\nelif [[ $PLATFORM = \"macOS\" ]]; then\n    SDK=\"macosx\"\n    DESTINATION=\"platform=OS X\"\nelif [[ $PLATFORM = \"watchOS-simulator\" ]]; then\n    SDK=\"watchsimulator\"\n    DESTINATION=\"platform=watchOS Simulator,name=${NAME}\"\nelif [[ $PLATFORM = \"tvOS-simulator\" ]]; then\n    SDK=\"appletvsimulator\"\n    DESTINATION=\"platform=tvOS Simulator,name=${NAME}\"\nelif [[ $PLATFORM = \"visionOS-simulator\" ]]; then\n    SDK=\"xrsimulator\"\n    DESTINATION=\"platform=visionOS Simulator,name=${NAME}\"\nelse\n    echo \"Unknown SDK for platform \\\"$PLATFORM\\\"\"\n    exit 1\nfi\n\nif [[ $OS_LIST != \"\" ]]; then\n    for OS in $OS_LIST; do\n        xcodebuild -scheme TDLibKit -sdk ${SDK} -destination \"${DESTINATION},OS=${OS}\" clean ${ACTIONS}\n    done\nelse\n    xcodebuild -scheme TDLibKit -sdk ${SDK} -destination \"${DESTINATION}\" clean ${ACTIONS}\nfi\n"
  },
  {
    "path": "scripts/tl2swift/.gitattributes",
    "content": "# Auto detect text files and perform LF normalization\n* text=auto\n"
  },
  {
    "path": "scripts/tl2swift/.gitignore",
    "content": "# Created by https://www.gitignore.io/api/xcode,swift,macos,swiftpm\n# Edit at https://www.gitignore.io/?templates=xcode,swift,macos,swiftpm\n\n### macOS ###\n# General\n.DS_Store\n.AppleDouble\n.LSOverride\n\n# Icon must end with two \\r\nIcon\n\n# Thumbnails\n._*\n\n# Files that might appear in the root of a volume\n.DocumentRevisions-V100\n.fseventsd\n.Spotlight-V100\n.TemporaryItems\n.Trashes\n.VolumeIcon.icns\n.com.apple.timemachine.donotpresent\n\n# Directories potentially created on remote AFP share\n.AppleDB\n.AppleDesktop\nNetwork Trash Folder\nTemporary Items\n.apdisk\n\n### Swift ###\n# Xcode\n#\n# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore\n\n## Build generated\nbuild/\nDerivedData/\n\n## Various settings\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata/\n\n## Other\n*.moved-aside\n*.xccheckout\n*.xcscmblueprint\n\n## Obj-C/Swift specific\n*.hmap\n*.ipa\n*.dSYM.zip\n*.dSYM\n\n## Playgrounds\ntimeline.xctimeline\nplayground.xcworkspace\n\n# Swift Package Manager\n# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.\n# Packages/\n# Package.pins\n# Package.resolved\n.build/\n\n# CocoaPods\n# We recommend against adding the Pods directory to your .gitignore. However\n# you should judge for yourself, the pros and cons are mentioned at:\n# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control\n# Pods/\n# Add this line if you want to avoid checking in source code from the Xcode workspace\n# *.xcworkspace\n\n# Carthage\n# Add this line if you want to avoid checking in source code from Carthage dependencies.\n# Carthage/Checkouts\n\nCarthage/Build\n\n# Accio dependency management\nDependencies/\n.accio/\n\n# fastlane\n# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the\n# screenshots whenever they are needed.\n# For more information about the recommended setup visit:\n# https://docs.fastlane.tools/best-practices/source-control/#source-control\n\nfastlane/report.xml\nfastlane/Preview.html\nfastlane/screenshots/**/*.png\nfastlane/test_output\n\n# Code Injection\n# After new code Injection tools there's a generated folder /iOSInjectionProject\n# https://github.com/johnno1962/injectionforxcode\n\niOSInjectionProject/\n\n### SwiftPM ###\nPackages\nxcuserdata\n*.xcodeproj\n.swiftpm\n\n\n### Xcode ###\n# Xcode\n# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore\n\n## User settings\n\n## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)\n\n## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)\n\n## Xcode Patch\n*.xcodeproj/*\n!*.xcodeproj/project.pbxproj\n!*.xcodeproj/xcshareddata/\n!*.xcworkspace/contents.xcworkspacedata\n/*.gcno\n\n### Xcode Patch ###\n**/xcshareddata/WorkspaceSettings.xcsettings\n\n# End of https://www.gitignore.io/api/xcode,swift,macos,swiftpm\n\noutput/\n*.tl"
  },
  {
    "path": "scripts/tl2swift/Package.swift",
    "content": "// swift-tools-version:5.0\n\nimport PackageDescription\n\nlet package = Package(\n    name: \"tl2swift\",\n    products: [\n        .executable(\n            name: \"tl2swift\",\n            targets: [\"tl2swift\"]),\n    ],\n    dependencies: [],\n    targets: [\n        .target(\n            name: \"TlParserLib\",\n            dependencies: []),\n        .target(\n            name: \"tl2swift\",\n            dependencies: [\"TlParserLib\"])\n    ]\n)\n"
  },
  {
    "path": "scripts/tl2swift/README.md",
    "content": "# tl2swift\n\nThis project designated for parsing Telegram Type Language (.tl) specification for [TDLib](https://github.com/tdlib/td) and generating Swift code. <br>\n`tl2swift` generates swift structures, enums and methods for working with TDLib json interface. See example in project [tdlib-swift](https://github.com/modestman/tdlib-swift)\n\n\n### Usage \nDownload TL-scheme\n\n```shell\n$ curl https://raw.githubusercontent.com/tdlib/td/master/td/generate/scheme/td_api.tl -o td_api.tl\n```\n\nGenerate sources\n```shell\n$ swift run tl2swift td_api.tl ./output/\n```\n\n[Optional] Generate sourcea and Set TDLib version & commit in header comment\n```shell\n$ swift run tl2swift td_api.tl ./output/ 1.7.5 73d8fb4\n```\n"
  },
  {
    "path": "scripts/tl2swift/Sources/TlParserLib/Application.swift",
    "content": "//\n//  Application.swift\n//  tl_parser_lib\n//\n//  Created by Anton Glezman on 12/09/2019.\n//\n\nimport Foundation\n\npublic final class Application {\n    \n    // MARK: - Constants\n    \n    private enum Constants {\n        static let project = \"tl2swift\"\n    }\n    \n    \n    // MARK: - Private properties\n    \n    private let schema: Schema\n    private let outputDir: URL\n    private let tdLibVersion: String?\n    private let tdLibCommit: String?\n    private let fileWriter = FileWriter()\n    \n    \n    // MARK: - Init\n    \n    public init(schema: Schema, outputDir: URL, tdLibVersion: String? = nil, tdLibCommit: String? = nil) {\n        self.schema = schema\n        self.outputDir = outputDir\n        self.tdLibVersion = tdLibVersion\n        self.tdLibCommit = tdLibCommit\n    }\n    \n    \n    // MARK: - Public methods\n    \n    /// Genarate and write swift files from `Schema`\n    public func run() -> Int32 {\n        do {\n            let implementedUtilities = try composeUtilities()\n            try fileWriter.write(implementations: implementedUtilities, verbose: true)\n        } catch {\n            print(error)\n            return 1\n        }\n        return 0\n    }\n    \n    \n    // MARK: - Private methods\n    \n    private func composeUtilities() throws -> [Implementation] {\n        let outputModelsDir = outputDir.appendingPathComponent(\"Models\", isDirectory: true)\n        let outputSupportingDir = outputDir.appendingPathComponent(\"Supporting\", isDirectory: true)\n        let apiDir = outputDir.appendingPathComponent(\"API\", isDirectory: true)\n        \n        var impl = [Implementation]()\n        impl += try supportingClassesImplementation(output: outputSupportingDir)\n        impl += try enumsImplementation(output: outputModelsDir)\n        impl += try structsImplementation(output: outputModelsDir)\n        impl += try apiImplementation(output: apiDir)\n        return impl\n    }\n    \n    private func supportingClassesImplementation(output: URL) throws -> [Implementation] {\n        let dto = try DtoComposer().composeEntityUtilityImplementation(\n            forEntityName: \"DTO\",\n            projectName: Constants.project,\n            outputDirectory: output.path,\n            tdLibVersion: self.tdLibVersion,\n            tdLibCommit: self.tdLibCommit)\n        \n        let decoder = try DecoderHelperComposer().composeEntityUtilityImplementation(\n            forEntityName: \"JSONDecoder+Result\",\n            projectName: Constants.project,\n            outputDirectory: output.path,\n            tdLibVersion: self.tdLibVersion,\n            tdLibCommit: self.tdLibCommit)\n\n        let codingKeys = try CodingKeysComposer().composeEntityUtilityImplementation(\n            forEntityName: \"DtoCodingKeys\",\n            projectName: Constants.project,\n            outputDirectory: output.path,\n            tdLibVersion: self.tdLibVersion,\n            tdLibCommit: self.tdLibCommit)\n        \n        let logger = try LoggerCimposer().composeEntityUtilityImplementation(\n            forEntityName: \"Logger\",\n            projectName: Constants.project,\n            outputDirectory: output.path,\n            tdLibVersion: self.tdLibVersion,\n            tdLibCommit: self.tdLibCommit)\n        \n        let tdInt64 = try TdInt64Composer().composeEntityUtilityImplementation(\n            forEntityName: \"TdInt64\",\n            projectName: Constants.project,\n            outputDirectory: output.path,\n            tdLibVersion: self.tdLibVersion,\n            tdLibCommit: self.tdLibCommit)\n        \n        return [dto, decoder, codingKeys, logger, tdInt64]\n    }\n    \n    private func enumsImplementation(output: URL) throws -> [Implementation] {\n        var impls = [Implementation]()\n        for enumInfo in schema.enumInfoes {\n            let composer = EnumComposer(enumInfo: enumInfo, schema: schema)\n            let impl = try composer.composeEntityUtilityImplementation(\n                forEntityName: enumInfo.enumType,\n                projectName: Constants.project,\n                outputDirectory: output.path,\n                tdLibVersion: self.tdLibVersion,\n                tdLibCommit: self.tdLibCommit)\n            impls.append(impl)\n        }\n        return impls\n    }\n    \n    private func structsImplementation(output: URL) throws -> [Implementation] {\n        var impls = [Implementation]()\n        let structs = findClassesNotAssociatedWithEnums()\n        for classInfo in structs {\n            let composer = StructComposer(classInfo: classInfo)\n            let impl = try composer.composeEntityUtilityImplementation(\n                forEntityName: classInfo.name.capitalizedFirstLetter,\n                projectName: Constants.project,\n                outputDirectory: output.path,\n                tdLibVersion: self.tdLibVersion,\n                tdLibCommit: self.tdLibCommit)\n            impls.append(impl)\n        }\n        return impls\n    }\n    \n    private func findClassesNotAssociatedWithEnums() -> [ClassInfo] {\n        var enumClasses = [String]()\n        for enumInfo in schema.enumInfoes {\n            let classes = enumInfo.items.map { $0.name.lowercased() }\n            enumClasses.append(contentsOf: classes)\n        }\n        return schema.classInfoes.filter { !enumClasses.contains($0.name.lowercased()) }\n    }\n    \n    private func apiImplementation(output: URL) throws -> [Implementation] {\n        let clientProtocol = try ClientProtocolComposer().composeEntityUtilityImplementation(\n            forEntityName: \"TdClient\",\n            projectName: Constants.project,\n            outputDirectory: output.path,\n            tdLibVersion: self.tdLibVersion,\n            tdLibCommit: self.tdLibCommit)\n \n        let methodsImpl = try MethodsComposer(classInfoes: schema.classInfoes).composeEntityUtilityImplementation(\n            forEntityName: \"TdApi\",\n            projectName: Constants.project,\n            outputDirectory: output.path,\n            tdLibVersion: self.tdLibVersion,\n            tdLibCommit: self.tdLibCommit)\n        let clientMethodsImpl = try MethodsComposer(classInfoes: schema.classInfoes, clientSubclassStrategy: true).composeEntityUtilityImplementation(\n            forEntityName: \"TDLibApi\",\n            projectName: Constants.project,\n            outputDirectory: output.path,\n            tdLibVersion: self.tdLibVersion,\n            tdLibCommit: self.tdLibCommit)\n        \n        return [clientProtocol, methodsImpl, clientMethodsImpl]\n    }\n    \n}\n"
  },
  {
    "path": "scripts/tl2swift/Sources/TlParserLib/Composer/Composer.swift",
    "content": "//\n//  Composer.swift\n//  tl_parser_lib\n//\n//  Created by Anton Glezman on 15/09/2019.\n//\n\nimport Foundation\n\n/**\n Abstract class responsible for composing source code.\n \n Implements header comment generation with copyright information and imports Foundation into\n generated code.\n \n Provides basic utility class structure separation, allows to override utility class filename\n generation, allows to extend imports and implement source code generation.\n */\nopen class Composer {\n    \n    /// Compose utility class source code.\n    ///\n    /// - Parameter entityName: Entity name used for determine the file name\n    /// - Parameter projectName: Project name used for file header comment\n    /// - Parameter outputDirectory: Directory where the result should be saved\n    ///\n    /// - Returns: `Implementation` object with utility class source code and filename.\n    public func composeEntityUtilityImplementation(\n        forEntityName entityName: String,\n        projectName: String,\n        outputDirectory: String,\n        tdLibVersion: String? = nil,\n        tdLibCommit: String? = nil\n    ) throws -> Implementation {\n        let filename: String = composeEntityUtilityFilename(entityName)\n        let path: String = outputDirectory.hasSuffix(\"/\") ? outputDirectory + filename : outputDirectory + \"/\" + filename\n        let sourceCode: String =\n            try\n                composeCopyrightComment(forFilename: filename, project: projectName, tdLibVersion: tdLibVersion, tdLibCommit: tdLibCommit).addBlankLine() +\n                composeImports().addBlankLine().addBlankLine() +\n                composeUtilitySourceCode()\n        \n        return Implementation(\n            filePath: path,\n            sourceCode: sourceCode\n        )\n    }\n    \n    /// Compose utility class filename.\n    open func composeEntityUtilityFilename(_ entityName: String) -> String {\n        return \"\\(entityName).swift\"\n    }\n    \n    /// Compose copytight comment header.\n    /// - returns: Comment with project & file names, \"Generated automatically. Any changes will be lost!\"\n    open func composeCopyrightComment(forFilename filename: String, project: String, tdLibVersion: String? = nil, tdLibCommit: String? = nil) -> String {\n        var result = \"\"\n            .addLine(\"//\")\n            .addLine(\"//  \\(filename)\")\n            .addLine(\"//  \\(project)\")\n            .addLine(\"//\")\n            .addLine(\"//  Generated automatically. Any changes will be lost!\")\n            \n        if let strongtdLibVersion = tdLibVersion, !strongtdLibVersion.isEmpty, let strongTdLibCommit = tdLibCommit, !strongTdLibCommit.isEmpty {\n            result = result.addLine(\"//  Based on TDLib \\(strongtdLibVersion)-\\(strongTdLibCommit)\")\n            result = result.addLine(\"//  https://github.com/tdlib/td/tree/\\(strongTdLibCommit)\")\n        } else if let strongtdLibVersion = tdLibVersion, !strongtdLibVersion.isEmpty {\n            result = result.addLine(\"//  Based on TDLib version \\(strongtdLibVersion)\")\n        } else if let strongTdLibCommit = tdLibCommit, !strongTdLibCommit.isEmpty {\n            result = result.addLine(\"//  Based on TDLib commit \\(strongTdLibCommit)\")\n            result = result.addLine(\"//  https://github.com/tdlib/td/tree/\\(strongTdLibCommit)\")\n        }\n\n        result = result.addLine(\"//\")\n        \n        return result\n    }\n    \n    /// Compose import declarations.\n    /// - returns: `import Foundation` by default.\n    open func composeImports() -> String {\n        return \"\"\n            .addLine(\"import Foundation\")\n    }\n    \n    /// Abstract method to compose utility class source code.\n    /// - returns: Utility class body source code withoud class declaration.\n    open func composeUtilitySourceCode() throws -> String {\n        return \"\"\n    }\n    \n}\n"
  },
  {
    "path": "scripts/tl2swift/Sources/TlParserLib/Composer/EnumComposer.swift",
    "content": "//\n//  EnumComposer.swift\n//  tl_parser_lib\n//\n//  Created by Anton Glezman on 15/09/2019.\n//\n\nimport Foundation\n\nfinal class EnumComposer: Composer {\n    \n    // MARK: - Private properties\n    \n    private let enumInfo: EnumInfo\n    private let schema: Schema\n    \n    \n    // MARK: - Init\n    \n    init(enumInfo: EnumInfo, schema: Schema) {\n        self.enumInfo = enumInfo\n        self.schema = schema\n    }\n    \n    \n    // MARK: - Override\n    \n    override public func composeUtilitySourceCode() throws -> String {\n        let recursive = isRecursive(enumInfo.enumType)\n        let cases = composeCaseItems(enumInfo.items)\n        let kinds = composeKindItems(enumInfo.items)\n        let decoder = composeDecoder(enumInfo.items)\n        let encoder = composeEncoder(enumInfo.items)\n        let structs = try composeAssociatedStructs()\n        \n        var composedEnum = \"\"\n        composedEnum = composedEnum.addLine(\"/// \\(enumInfo.description)\")\n        if recursive {\n            composedEnum = composedEnum.addLine(\"/// This Swift enum is recursive.\")\n        }\n\n        return composedEnum\n            .addLine(\"public indirect enum \\(TypesHelper.resolveAmbiguousType(enumInfo.enumType)): Codable, Equatable, Hashable {\")\n            .addBlankLine()\n            .append(cases.indent())\n            .addBlankLine()\n            .append(kinds.indent())\n            .addBlankLine()\n            .append(decoder.indent())\n            .addBlankLine()\n            .append(encoder.indent())\n            .addLine(\"}\")\n            .addBlankLine()\n            .append(structs)\n    }\n    \n    \n    // MARK: - Private methods\n    \n    private func composeCaseItems(_ items: [EnumItem]) -> String {\n        var result = \"\"\n        for item in items {\n            result = result.addLine(\"/// \\(item.description)\")\n            if let assocClass = item.associatedClassName {\n                result = result.addLine(\"case \\(item.name)(\\(TypesHelper.resolveAmbiguousType(assocClass)))\")\n            } else {\n                result = result.addLine(\"case \\(item.name)\")\n            }\n            result = result.addBlankLine()\n        }\n        return result\n    }\n    \n    private func composeKindItems(_ items: [EnumItem]) -> String {\n        let cases = items.reduce(\"\", { $0.addLine(\"case \\($1.name)\".indent()) })\n        return \"\"\n            .addLine(\"private enum Kind: String, Codable {\")\n            .append(cases)\n            .addLine(\"}\")\n    }\n    \n    private func composeDecoder(_ items: [EnumItem]) -> String {\n        let cases = composeDecoderCases(items)\n        return \"\"\n            .addLine(\"public init(from decoder: Decoder) throws {\")\n            .addLine(\"let container = try decoder.container(keyedBy: DtoCodingKeys.self)\".indent())\n            .addLine(\"let type = try container.decode(Kind.self, forKey: .type)\".indent())\n            .addLine(\"switch type {\".indent())\n            .append(cases.indent())\n            .addLine(\"}\".indent())\n            .addLine(\"}\")\n    }\n    \n    private func composeDecoderCases(_ items: [EnumItem]) -> String {\n        var result = \"\"\n        for item in items {\n            result = result.addLine(\"case .\\(item.name):\")\n            if let assocStruct = item.associatedClassName {\n                result = result.addLine(\"let value = try \\(TypesHelper.resolveAmbiguousType(assocStruct))(from: decoder)\".indent())\n                result = result.addLine(\"self = .\\(item.name)(value)\".indent())\n            } else {\n                result = result.addLine(\"self = .\\(item.name)\".indent())\n            }\n        }\n        return result\n    }\n    \n    private func composeEncoder(_ items: [EnumItem]) -> String {\n        let cases = composeEncoderCases(items)\n        return \"\"\n            .addLine(\"public func encode(to encoder: Encoder) throws {\")\n            .addLine(\"var container = encoder.container(keyedBy: DtoCodingKeys.self)\".indent())\n            .addLine(\"switch self {\".indent())\n            .append(cases.indent())\n            .addLine(\"}\".indent())\n            .addLine(\"}\")\n    }\n    \n    private func composeEncoderCases(_ items: [EnumItem]) -> String {\n        var result = \"\"\n        for item in items {\n            if item.associatedClassName != nil {\n                result = result.addLine(\"case .\\(item.name)(let value):\")\n                result = result.addLine(\"try container.encode(Kind.\\(item.name), forKey: .type)\".indent())\n                result = result.addLine(\"try value.encode(to: encoder)\".indent())\n            } else {\n                result = result.addLine(\"case .\\(item.name):\")\n                result = result.addLine(\"try container.encode(Kind.\\(item.name), forKey: .type)\".indent())\n            }\n        }\n        return result\n    }\n    \n    private func composeAssociatedStructs() throws -> String {\n        var result = \"\"\n        let assocStructs = enumInfo.items.compactMap { $0.associatedClassName }\n        try assocStructs.forEach { name in\n            if let info = schema.classInfoes.first(where: { $0.name.lowercased() == name.lowercased() }) {\n                let composer = StructComposer(classInfo: info)\n                let structs = try composer.composeUtilitySourceCode()\n                result = result.append(structs)\n            }\n        }\n        return result\n    }\n    \n    private func isRecursive(_ name: String) -> Bool {\n        // TODO: check enum recursion\n        let indirectEnums = [\"RichText\", \"PageBlock\", \"InternalLinkType\", \"InputMessageContent\"]\n        return indirectEnums.contains(name)\n    }\n    \n}\n"
  },
  {
    "path": "scripts/tl2swift/Sources/TlParserLib/Composer/MethodsComposer.swift",
    "content": "//\n//  File.swift\n//  \n//\n//  Created by Anton Glezman on 15/09/2019.\n//\n\nimport Foundation\n\n\nfinal class MethodsComposer: Composer {\n    \n    // MARK: - Private properties\n    \n    private let classInfoes: [ClassInfo]\n    private let clientSubclassStrategy: Bool\n    private let executingFuncName: String\n    \n\n    enum Constants {\n        static let asyncAvailableString: String = \"@available(iOS 13.0, macOS 10.15, watchOS 6.0, tvOS 13.0, *)\"\n    }\n    \n    // MARK: - Init\n    \n    init(classInfoes: [ClassInfo], clientSubclassStrategy: Bool = false) {\n        self.classInfoes = classInfoes\n        self.clientSubclassStrategy = clientSubclassStrategy\n        if (self.clientSubclassStrategy) {\n            self.executingFuncName = \"run\"\n        } else {\n            self.executingFuncName = \"execute\"\n        }\n    }\n    \n    \n    // MARK: - Override\n    \n    override func composeUtilitySourceCode() throws -> String {\n        let methods = composeMethods(classInfoes: classInfoes)\n        let executeFunc = composeExecuteFunc()\n        let asyncExecuteFunc = composeExecuteFunc(swiftAsync: true)\n        let sendFuncStub = composeSendFuncStub()\n        if (self.clientSubclassStrategy) {\n            return \"\"\n                .addLine(\"/// Must be subclassed with `send` and `execute` TDLib functions implementation\")\n                .addLine(\"public class TDLibApi {\")\n                .addBlankLine()\n                .addLine(\"public let encoder = JSONEncoder()\".indent())\n                .addLine(\"public let decoder = JSONDecoder()\".indent())\n                .addBlankLine()\n                .addLine(\"public init() {\".indent())\n                .addLine(\"self.encoder.keyEncodingStrategy = .convertToSnakeCase\".indent().indent())\n                .addLine(\"self.decoder.keyDecodingStrategy = .convertFromSnakeCase\".indent().indent())\n                .addLine(\"}\".indent())\n                .addBlankLine()\n                .addBlankLine()\n                .append(sendFuncStub.indent())\n                .addBlankLine()\n                .addBlankLine()\n                .append(methods.indent())\n                .addBlankLine()\n                .append(executeFunc.indent())\n                .addBlankLine()\n                .addBlankLine()\n                .append(asyncExecuteFunc.indent())\n                .addLine(\"}\")\n        } else {\n            return \"\"\n                .addLine(\"public final class TdApi {\")\n                .addBlankLine()\n                .addLine(\"public let client: TdClient\".indent())\n                .addLine(\"public let encoder = JSONEncoder()\".indent())\n                .addLine(\"public let decoder = JSONDecoder()\".indent())\n                .addBlankLine()\n                .addLine(\"public init(client: TdClient) {\".indent())\n                .addLine(\"self.client = client\".indent().indent())\n                .addLine(\"self.encoder.keyEncodingStrategy = .convertToSnakeCase\".indent().indent())\n                .addLine(\"self.decoder.keyDecodingStrategy = .convertFromSnakeCase\".indent().indent())\n                .addLine(\"}\".indent())\n                .addBlankLine()\n                .addBlankLine()\n                .append(methods.indent())\n                .addBlankLine()\n                .append(executeFunc.indent())\n                .addBlankLine()\n                .addBlankLine()\n                .append(asyncExecuteFunc.indent())\n                .addLine(\"}\")\n        }\n    }\n    \n    \n    // MARK: - Private methods\n    \n    private func composeMethods(classInfoes: [ClassInfo]) -> String {\n        var result = \"\"\n        for info in classInfoes where info.isFunction {\n            result = result.append(composeMethod(info))\n            result = result.append(composeMethod(info, swiftAsync: true))\n        }\n        return result\n    }\n    \n    private func composeMethod(_ info: ClassInfo, swiftAsync: Bool = false) -> String {\n        let returnType = TypesHelper.getType(info.rootName)\n        var paramsList = [String]()\n        for param in info.properties {\n            let type = TypesHelper.getType(param.type, optional: param.optional)\n            let paramName = TypesHelper.maskSwiftKeyword(param.name.underscoreToCamelCase())\n            paramsList.append(\"\\(paramName): \\(type),\")\n        }\n        if swiftAsync {\n            if !paramsList.isEmpty {\n                paramsList[paramsList.count - 1] = String(paramsList[paramsList.count - 1].dropLast())\n            }\n        } else {\n            paramsList.append(\"completion: @escaping (Result<\\(returnType), Swift.Error>) -> Void\")\n        }\n        \n        var result = composeComment(info)\n        if swiftAsync {\n            result = result.addLine(Constants.asyncAvailableString)\n        }\n        if swiftAsync && returnType == \"Ok\" {\n            result = result.addLine(\"@discardableResult\")\n        }\n        let methodScope: String\n        if self.clientSubclassStrategy {\n            methodScope = \"public final\"\n        } else {\n            methodScope = \"public\"\n        }\n        if paramsList.count > 1 {\n            let params = paramsList.reduce(\"\", { $0.addLine(\"\\($1)\".indent()) })\n            result = result\n                .addLine(\"\\(methodScope) func \\(info.name)(\")\n                .append(params)\n            if swiftAsync {\n                result = result.addLine(\") async throws -> \\(returnType) {\")\n            } else {\n                result = result.addLine(\") throws {\")\n            }\n        } else {\n            if swiftAsync {\n                result = result.addLine(\"\\(methodScope) func \\(info.name)(\\(paramsList.first ?? \"\")) async throws -> \\(returnType) {\")\n            } else {\n                result = result.addLine(\"\\(methodScope) func \\(info.name)(\\(paramsList.first ?? \"\")) throws {\")\n            }\n        }\n        \n        let impl = composeMethodImpl(info, swiftAsync: swiftAsync)\n        result = result\n            .append(impl.indent())\n            .addLine(\"}\")\n            .addBlankLine()\n        \n        return result\n    }\n    \n    private func composeComment(_ info: ClassInfo) -> String {\n        var result = \"/// \\(info.description)\\n\"\n        var returnsSentences: [String] = []\n        \n        \n        func sanitizeDescription(_ string: String) -> String {\n            // Sanitize description for per-sentence split\n            return string.replacingOccurrences(of: \"i.e.\", with: \"tl2swift_id_est\").replacingOccurrences(of: \"i. e.\", with: \"tl2swift_ws_id_est\").replacingOccurrences(of: \";\", with: \".\")\n        }\n        \n        func deSanitizeDescription(_ string: String) -> String {\n            // Desanitize description\n            return string.replacingOccurrences(of: \"tl2swift_id_est\", with: \"i.e.\").replacingOccurrences(of: \"tl2swift_ws_id_est\", with: \"i. e.\")\n        }\n\n        let sentences = sanitizeDescription(info.description).split(separator: \".\")\n        for sentence in sentences {\n            // Looking for sentences with \"return*\"\n            if sentence.lowercased().contains(\"return\") {\n                var returnSentence: String?\n                \n                // Remove first \"return\" word\n                if returnsSentences.isEmpty {\n                    let firstWord = sentence.trimmingCharacters(in: .whitespaces).components(separatedBy: \" \").first\n                    if let firstWord = firstWord, firstWord.lowercased().contains(\"return\") {\n                        returnSentence = String(sentence.trimmingCharacters(in: .whitespaces).dropFirst(firstWord.count))\n                    } else {\n                        returnSentence = String(sentence.trimmingCharacters(in: .whitespaces))\n                    }\n                } else {\n                    returnSentence = String(sentence.trimmingCharacters(in: .whitespaces))\n                }\n                \n                // Append to the list of sentences that describes a return\n                if let strongReturnSentence = returnSentence {\n                    returnsSentences.append(strongReturnSentence.trimmingCharacters(in: .whitespaces))\n                }\n            }\n        }\n\n        for param in info.properties {\n            let paramName = TypesHelper.maskSwiftKeyword(param.name.underscoreToCamelCase())\n            result = result.addLine(\"/// - Parameter \\(paramName): \\(param.description ?? \"\")\")\n        }\n        if !returnsSentences.isEmpty {\n            result = result.addLine(\"/// - Returns: \\(deSanitizeDescription(returnsSentences.joined(separator: \". \").trimmingCharacters(in: .whitespaces)).capitalizedFirstLetter)\")\n        }\n\n        return result\n    }\n    \n    private func composeMethodImpl(_ info: ClassInfo, swiftAsync: Bool = false) -> String  {\n        let structName = info.name.capitalizedFirstLetter\n        var result = \"\"\n        if info.properties.isEmpty {\n            result = result.addLine(\"let query = \\(structName)()\")\n        } else {\n            result = result.addLine(\"let query = \\(structName)(\")\n            for param in info.properties {\n                let paramName = param.name.underscoreToCamelCase()\n                let paramValue = TypesHelper.maskSwiftKeyword(param.name.underscoreToCamelCase())\n                result = result.addLine(\"\\(paramName): \\(paramValue),\".indent())\n            }\n            result = String(result.dropLast().dropLast())\n            result = result.addBlankLine().addLine(\")\")\n        }\n\n        if swiftAsync {\n            return result.addLine(\"return try await self.\\(self.executingFuncName)(query: query)\")\n        } else {\n            return result.addLine(\"self.\\(self.executingFuncName)(query: query, completion: completion)\")\n        }\n    }\n    \n    private func composeExecuteFunc(swiftAsync: Bool = false) -> String {\n        let methodScope: String\n        if self.clientSubclassStrategy {\n            methodScope = \"private final\"\n        } else {\n            methodScope = \"private\"\n        }\n\n        let sendMethodSource: String\n        if self.clientSubclassStrategy {\n            sendMethodSource = \"self\"\n        } else {\n            sendMethodSource = \"client\"\n        }\n        if swiftAsync {\n            return \"\"\n                .addLine(Constants.asyncAvailableString)\n                .addLine(\"\\(methodScope) func \\(self.executingFuncName)<Q, R>(query: Q) async throws -> R where Q: Codable, R: Codable {\")\n                .addLine(\"    let dto = DTO(query, encoder: self.encoder)\")\n                .addLine(\"    return try await withCheckedThrowingContinuation { continuation in\")\n                .addLine(\"        do {\")\n                .addLine(\"            try \\(sendMethodSource).send(query: dto) { result in\")\n                .addLine(\"                if let error = try? self.decoder.decode(DTO<Error>.self, from: result) {\")\n                .addLine(\"                    continuation.resume(with: .failure(error.payload))\")\n                .addLine(\"                } else {\")\n                .addLine(\"                    let response = self.decoder.tryDecode(DTO<R>.self, from: result)\")\n                .addLine(\"                    continuation.resume(with: response.map { $0.payload })\")\n                .addLine(\"                }\")\n                .addLine(\"            }\")\n                .addLine(\"        } catch let err as Error {\")\n                .addLine(\"            continuation.resume(with: .failure(err))\")\n                .addLine(\"        } catch let any {\")\n                .addLine(\"            let err = Error(code: 500, message: any.localizedDescription)\")\n                .addLine(\"            continuation.resume(with: .failure(err))\")\n                .addLine(\"        }\")\n                .addLine(\"    }\")\n                .addLine(\"}\")\n        } else {\n            return \"\"\n                .addLine(\"\\(methodScope) func \\(self.executingFuncName)<Q, R>(\")\n                .addLine(\"    query: Q,\")\n                .addLine(\"    completion: @escaping (Result<R, Swift.Error>) -> Void)\")\n                .addLine(\"    where Q: Codable, R: Codable {\")\n                .addBlankLine()\n                .addLine(\"    let dto = DTO(query, encoder: self.encoder)\")\n                .addLine(\"    do {\")\n                .addLine(\"        try \\(sendMethodSource).send(query: dto) { [weak self] result in\")\n                .addLine(\"            guard let strongSelf = self else { return }\")\n                .addLine(\"            if let error = try? strongSelf.decoder.decode(DTO<Error>.self, from: result) {\")\n                .addLine(\"                completion(.failure(error.payload))\")\n                .addLine(\"            } else {\")\n                .addLine(\"                let response = strongSelf.decoder.tryDecode(DTO<R>.self, from: result)\")\n                .addLine(\"                completion(response.map { $0.payload })\")\n                .addLine(\"            }\")\n                .addLine(\"        }\")\n                .addLine(\"    } catch let err as Error {\")\n                .addLine(\"        completion( .failure(err))\")\n                .addLine(\"    } catch let any {\")\n                .addLine(\"        let err = Error(code: 500, message: any.localizedDescription)\")\n                .addLine(\"        completion( .failure(err))\")\n                .addLine(\"    }\")\n                .addLine(\"}\")\n        }\n    }\n\n    private func composeSendFuncStub() -> String {\n        return \"\"\n            .addLine(\"/// Sends request to the TDLib client.\")\n            .addLine(\"public func send(query: TdQuery, completion: ((Data) -> Void)? = nil) throws {\")\n            .addLine(\"fatalError(\\\"send() not implemented\\\")\".indent())\n            .addLine(\"}\")\n            .addBlankLine()\n            .addLine(\"/// Synchronously executes TDLib request.\")\n            .addLine(\"public func execute(query: TdQuery) throws -> [String:Any]? {\")\n            .addLine(\"fatalError(\\\"execute() not implemented\\\")\".indent())\n            .addLine(\"}\")\n    }\n}\n"
  },
  {
    "path": "scripts/tl2swift/Sources/TlParserLib/Composer/StructComposer.swift",
    "content": "//\n//  File.swift\n//  \n//\n//  Created by Anton Glezman on 15/09/2019.\n//\n\nimport Foundation\n\nfinal class StructComposer: Composer {\n    \n    // MARK: - Private properties\n    \n    private let classInfo: ClassInfo\n    \n    \n    // MARK: - Init\n    \n    init(classInfo: ClassInfo) {\n        self.classInfo = classInfo\n    }\n    \n    \n    // MARK: - Override\n    \n    override func composeUtilitySourceCode() throws -> String {\n        return composeStruct(classInfo: self.classInfo)\n    }\n    \n    \n    // MARK: - Private methods\n    \n    private func composeStruct(classInfo: ClassInfo) -> String {\n        let structName = TypesHelper.resolveAmbiguousType(classInfo.name.capitalizedFirstLetter)\n        let protocols = protocolConformance(for: structName, using: classInfo.properties)\n        let props = composeStructProperties(classInfo.properties)\n        let structInit = composeInit(classInfo.properties)\n        return \"\"\n            .addLine(\"/// \\(classInfo.description)\")\n            .addLine(\"public struct \\(structName): \\(protocols) {\")\n            .addBlankLine()\n            .append(props.indent())\n            .addBlankLine()\n            .append(structInit.indent())\n            .addLine(\"}\")\n            .addBlankLine()\n    }\n    \n    private func composeStructProperties(_ properties: [ClassProperty]) -> String {\n        var result = \"\"\n        for propertyInfo in properties {\n            if let comment = propertyInfo.description {\n                result = result.addLine(\"/// \\(comment)\")\n            }\n            let type = TypesHelper.getType(propertyInfo.type, optional: propertyInfo.optional)\n            let propertyName = TypesHelper.maskSwiftKeyword(propertyInfo.name.underscoreToCamelCase())\n            result = result\n                .addLine(\"public let \\(propertyName): \\(type)\")\n                .addBlankLine()\n        }\n        return result\n    }\n    \n    private func composeInit(_ properties: [ClassProperty]) -> String {\n        var paramsList = [String]()\n        var paramNames = [String]()\n        for param in properties {\n            let type = TypesHelper.getType(param.type, optional: param.optional)\n            let paramName = TypesHelper.maskSwiftKeyword(param.name.underscoreToCamelCase())\n            paramsList.append(\"\\(paramName): \\(type)\")\n            paramNames.append(paramName)\n        }\n        \n        var result = \"\"\n        if paramsList.count > 1 {\n            let params = paramsList.reduce(\"\", { $0.addLine(\"\\($1),\".indent()) })\n            result = result\n                .addLine(\"public init(\")\n                .append(String(params.dropLast().dropLast())) // remove \\n and ,\n                .addBlankLine()\n                .addLine(\") {\")\n        } else if paramsList.count == 1  {\n            result = result.addLine(\"public init(\\(paramsList.first!)) {\")\n        } else {\n            return result.addLine(\"public init() {}\")\n        }\n        \n        for param in paramNames {\n            result = result.addLine(\"self.\\(param) = \\(param)\".indent())\n        }\n        \n        return result.addLine(\"}\")\n    }\n    \n    private func protocolConformance(for structName: String, using properties: [ClassProperty]) -> String {\n        var protocols = [\"Codable\", \"Equatable\", \"Hashable\"]\n        if properties.map(\\.name).contains(\"id\") {\n            protocols.append(\"Identifiable\")\n        }\n        if structName == \"Error\" {\n            protocols.append(\"Swift.Error\")\n        }\n        return protocols.joined(separator: \", \")\n    }\n    \n    \n    // MARK: - Not used\n    \n    private func composeCodable(_ classInfo: ClassInfo) -> String {\n        let codingKeys = composeCodingKeys(classInfo.properties)\n        let encoder = composeEncoder(classInfo.properties)\n        return \"\"\n            .addLine(\"let _type = \\\"\\(classInfo.name)\\\"\")\n            .addLine(\"var _extra: String? = nil\")\n            .addBlankLine()\n            .append(codingKeys)\n            .addBlankLine()\n            .append(encoder)\n    }\n    \n    private func composeCodingKeys(_ properties: [ClassProperty]) -> String {\n        var result = \"\"\n            .addLine(\"private enum CodingKeys: String, CodingKey {\")\n            .addLine(\"case _type = \\\"@type\\\"\".indent())\n            .addLine(\"case _extra = \\\"@extra\\\"\".indent())\n        \n        for propertyInfo in properties {\n            let caseName = TypesHelper.maskSwiftKeyword(propertyInfo.name.underscoreToCamelCase())\n            let caseValue = propertyInfo.name\n            result = result\n                .addLine(\"case \\(caseName) = \\\"\\(caseValue)\\\"\".indent())\n        }\n        return result.addLine(\"}\")\n    }\n    \n    private func composeEncoder(_ properties: [ClassProperty]) -> String {\n        var result = \"\"\n            .addLine(\"public func encode(to encoder: Encoder) throws {\")\n            .addLine(\"var container = encoder.container(keyedBy: CodingKeys.self)\".indent())\n            .addLine(\"try container.encode(_type, forKey: ._type)\".indent())\n            .addLine(\"try container.encodeIfPresent(_extra, forKey: ._extra)\".indent())\n        \n        for propertyInfo in properties {\n            let propName = TypesHelper.maskSwiftKeyword(propertyInfo.name.underscoreToCamelCase())\n            result = result\n                .addLine(\"try container.encode(\\(propName), forKey: .\\(propName))\".indent())\n        }\n        \n        return result.addLine(\"}\")\n    }\n    \n}\n"
  },
  {
    "path": "scripts/tl2swift/Sources/TlParserLib/Composer/Supporting/ClientProtocolComposer.swift",
    "content": "//\n//  ClientProtocolComposer.swift\n//  tl_parser_lib\n//\n//  Created by Anton Glezman on 22/09/2019.\n//\n\nimport Foundation\n\n/// Generates protocol for TDClient\nfinal class ClientProtocolComposer: Composer {\n    \n    override func composeUtilitySourceCode() throws -> String {\n        return \"\"\n            .addLine(\"/// Basic protocol for communicate with TdLib.\")\n            .addLine(\"public protocol TdClient {\")\n            .addBlankLine()\n            .addLine(\"    /// Receives incoming updates and request responses from the TDLib client\")\n            .addLine(\"    func run(updateHandler: @escaping (Data) -> Void)\")\n            .addBlankLine()\n            .addLine(\"    /// Sends request to the TDLib client.\")\n            .addLine(\"    func send(query: TdQuery, completion: ((Data) -> Void)?) throws\")\n            .addBlankLine()\n            .addLine(\"    /// Synchronously executes TDLib request. Only a few requests can be executed synchronously.\")\n            .addLine(\"    func execute(query: TdQuery) throws -> [String:Any]?\")\n            .addBlankLine()\n            .addLine(\"    /// Close connection with TDLib.\")\n            .addLine(\"    func close()\")\n            .addBlankLine()\n            .addLine(\"}\")\n            .addBlankLine()\n            .addBlankLine()\n            .addLine(\"public protocol TdQuery {\")\n            .addBlankLine()\n            .addLine(\"    func make(with extra: String?) throws -> Data\")\n            .addBlankLine()\n            .addLine(\"}\")\n    }\n}\n"
  },
  {
    "path": "scripts/tl2swift/Sources/TlParserLib/Composer/Supporting/CodingKeysComposer.swift",
    "content": "//\n//  CodingKeysComposer.swift\n//  tl_parser_lib\n//\n//  Created by Anton Glezman on 22/09/2019.\n//\n\nimport Foundation\n\n/// Generates CodingKeys enum\nfinal class CodingKeysComposer: Composer {\n    \n    override func composeUtilitySourceCode() throws -> String {\n        return \"\"\n        .addLine(\"public enum DtoCodingKeys: String, CodingKey {\")\n        .addLine(\"case type = \\\"@type\\\"\".indent())\n        .addLine(\"case extra = \\\"@extra\\\"\".indent())\n        .addLine(\"case clientId = \\\"@client_id\\\"\".indent())\n        .addLine(\"}\")\n    }\n}\n"
  },
  {
    "path": "scripts/tl2swift/Sources/TlParserLib/Composer/Supporting/DecoderHelperComposer.swift",
    "content": "//\n//  DecoderHelperComposer.swift\n//  tl_parser_lib\n//\n//  Created by Anton Glezman on 22/09/2019.\n//\n\nimport Foundation\n\n/// Generates extension for JSONDecoder\nfinal class DecoderHelperComposer: Composer {\n    \n    override func composeUtilitySourceCode() throws -> String {\n        return \"\"\n            .addLine(\"extension JSONDecoder {\")\n            .addBlankLine()\n            .addLine(\"    func tryDecode<T>(_ type: T.Type, from data: Data) -> Result<T, Swift.Error> where T : Decodable {\")\n            .addLine(\"        do {\")\n            .addLine(\"            let result = try self.decode(type, from: data)\")\n            .addLine(\"            return .success(result)\")\n            .addLine(\"        } catch {\")\n            .addLine(\"            return .failure(error)\")\n            .addLine(\"        }\")\n            .addLine(\"    }\")\n            .addLine(\"}\")\n    }\n}\n"
  },
  {
    "path": "scripts/tl2swift/Sources/TlParserLib/Composer/Supporting/DtoComposer.swift",
    "content": "//\n//  DtoComposer.swift\n//  tl_parser_lib\n//\n//  Created by Anton Glezman on 22/09/2019.\n//\n\nimport Foundation\n\n/// Generates DTO class\nfinal class DtoComposer: Composer {\n    \n    override func composeUtilitySourceCode() throws -> String {\n        return \"\"\"\n        public final class DTO<T: Codable>: Codable {\n            let type: String\n            var extra: String?\n            let payload: T\n            let encoder: JSONEncoder?\n\n            public init(_ payload: T, encoder: JSONEncoder? = nil) {\n                self.payload = payload\n                self.encoder = encoder\n                let swiftType = String(describing: T.self)\n                self.type = tdLibTypeFromSwiftType(swiftType)  // TODO: replace with protocol\n            }\n\n            public init(from decoder: Decoder) throws {\n                let container = try decoder.container(keyedBy: DtoCodingKeys.self)\n                type = try container.decode(String.self, forKey: .type)\n                extra = try container.decodeIfPresent(String.self, forKey: .extra)\n                payload = try T(from: decoder)\n                encoder = nil\n            }\n\n            public func encode(to encoder: Encoder) throws {\n                var container = encoder.container(keyedBy: DtoCodingKeys.self)\n                try container.encode(type, forKey: .type)\n                try container.encodeIfPresent(extra, forKey: .extra)\n                try payload.encode(to: encoder)\n            }\n        }\n\n        extension DTO: TdQuery {\n\n            public func make(with extra: String? = nil) throws -> Data {\n                self.extra = extra\n                let encoder = self.encoder ?? JSONEncoder()\n                return try encoder.encode(self)\n            }\n        }\n\n        // MARK: - Type Mapping Helpers\n        private func tdLibTypeFromSwiftType(_ swiftType: String) -> String {\n            if let mapped = mapAmbiguousType(swiftType) {\n                return mapped\n            }\n            return swiftType.prefix(1).lowercased() + swiftType.dropFirst()\n        }\n\n        private func mapAmbiguousType(_ tlType: String) -> String? {\n            let mapping = [\n                \"TdData\": \"data\",\n            ]\n            return mapping[tlType]\n        }\n\n        private func resolveAmbiguousType(_ tlType: String) -> String {\n            return mapAmbiguousType(tlType) ?? tlType\n        }\n        \"\"\"\n    }\n    \n}\n"
  },
  {
    "path": "scripts/tl2swift/Sources/TlParserLib/Composer/Supporting/LoggerCimposer.swift",
    "content": "//\n//  LoggerCimposer.swift\n//  tl_parser_lib\n//\n//  Created by Anton Glezman on 28/09/2019.\n//\n\nimport Foundation\n\n/// Generates Logger protocol\nfinal class LoggerCimposer: Composer {\n    \n    override func composeUtilitySourceCode() throws -> String {\n        return \"\"\n            .addLine(\"public protocol TDLibLogger {\")\n            .addLine(\"    func log(_ message: String, type: LoggerMessageType?)\")\n            .addLine(\"}\")\n            .addBlankLine()\n            .addBlankLine()\n            .addLine(\"@available(*, deprecated, renamed: \\\"TDLibLogger\\\", message: \\\"interferes with OSLog.Logger\\\")\")\n            .addLine(\"public protocol Logger {\")\n            .addLine(\"    func log(_ message: String, type: LoggerMessageType?)\")\n            .addLine(\"}\")\n            .addBlankLine()\n            .addBlankLine()\n            .addLine(\"public enum LoggerMessageType: CustomStringConvertible {\")\n            .addLine(\"    case receive\")\n            .addLine(\"    case send\")\n            .addLine(\"    case execute\")\n            .addLine(\"    case custom(String)\")\n            .addBlankLine()\n            .addLine(\"    public var description: String {\")\n            .addLine(\"        switch self {\")\n            .addLine(\"        case .receive:\")\n            .addLine(\"            return \\\"Receive\\\"\")\n            .addLine(\"        case .send:\")\n            .addLine(\"            return \\\"Send\\\"\")\n            .addLine(\"        case .execute:\")\n            .addLine(\"            return \\\"Execute\\\"\")\n            .addLine(\"        case .custom(let value):\")\n            .addLine(\"            return value\")\n            .addLine(\"        }\")\n            .addLine(\"    }\")\n            .addLine(\"}\")\n    }\n}\n"
  },
  {
    "path": "scripts/tl2swift/Sources/TlParserLib/Composer/Supporting/TdInt64Composer.swift",
    "content": "//\n//  TdInt64Composer.swift\n//  tl_parser_lib\n//\n//  Created by Anton Glezman on 05/10/2019.\n//\n\nimport Foundation\n\n/// Generates TdInt64 struct\nfinal class TdInt64Composer: Composer {\n    \n    override func composeUtilitySourceCode() throws -> String {\n        return \"\"\n            .addLine(\"public struct TdInt64: RawRepresentable, ExpressibleByIntegerLiteral, Hashable {\")\n            .addBlankLine()\n            .addLine(\"    public typealias RawValue = Int64\")\n            .addBlankLine()\n            .addLine(\"    // MARK: - Properties\")\n            .addBlankLine()\n            .addLine(\"    public var rawValue: Int64\")\n            .addBlankLine()\n            .addLine(\"    public static var max: TdInt64 { return TdInt64(Int64.max) }\")\n            .addLine(\"\")\n            .addLine(\"    public static var min: TdInt64 { return TdInt64(Int64.min) }\")\n            .addBlankLine()\n            .addBlankLine()\n            .addLine(\"    // MARK: - Init\")\n            .addBlankLine()\n            .addLine(\"    public init(_ int64: Int64) {\")\n            .addLine(\"        self.rawValue = int64\")\n            .addLine(\"    }\")\n            .addBlankLine()\n            .addLine(\"    public init?(rawValue: Int64) {\")\n            .addLine(\"        self.rawValue = rawValue\")\n            .addLine(\"    }\")\n            .addBlankLine()\n            .addLine(\"    public init(integerLiteral value: Int) {\")\n            .addLine(\"        self.rawValue = Int64(value)\")\n            .addLine(\"    }\")\n            .addLine(\"}\")\n            .addLine(\"\")\n            .addLine(\"\")\n            .addLine(\"extension TdInt64: Codable {\")\n            .addBlankLine()\n            .addLine(\"    public init(from decoder: Decoder) throws {\")\n            .addLine(\"        let container = try decoder.singleValueContainer()\")\n            .addLine(\"        let strValue = try container.decode(String.self)\")\n            .addLine(\"        guard let value = Int64(strValue) else {\")\n            .addLine(\"            throw DecodingError.dataCorrupted(\")\n            .addLine(\"                DecodingError.Context(\")\n            .addLine(\"                    codingPath: container.codingPath,\")\n            .addLine(\"                    debugDescription: \\\"Can't convert String value \\\\(strValue) to Int64.\\\"))\")\n            .addLine(\"        }\")\n            .addLine(\"        self.rawValue = value\")\n            .addLine(\"    }\")\n            .addBlankLine()\n            .addLine(\"    public func encode(to encoder: Encoder) throws {\")\n            .addLine(\"        var container = encoder.singleValueContainer()\")\n            .addLine(\"        try container.encode(\\\"\\\\(rawValue)\\\")\")\n            .addLine(\"    }\")\n            .addBlankLine()\n            .addLine(\"}\")\n            .addLine(\"\")\n            .addLine(\"\")\n            .addLine(\"extension TdInt64: Comparable {\")\n            .addLine(\"    public static func < (lhs: Self, rhs: Self) -> Bool {\")\n            .addLine(\"        return lhs.rawValue < rhs.rawValue\")\n            .addLine(\"    }\")\n            .addLine(\"}\")\n    }\n}\n"
  },
  {
    "path": "scripts/tl2swift/Sources/TlParserLib/Helper/CharacterSet.swift",
    "content": "//\n//  CharacterSet.swift\n//  tl_parser_lib\n//\n//  Created by Anton Glezman on 15/09/2019.\n//\n\nimport Foundation\n\nextension CharacterSet {\n    \n    static var at: CharacterSet {\n        return CharacterSet(charactersIn: \"@\")\n    }\n    \n    static var comment: CharacterSet {\n        return CharacterSet(charactersIn: \"/ \\n\")\n    }\n}\n"
  },
  {
    "path": "scripts/tl2swift/Sources/TlParserLib/Helper/FileWriter.swift",
    "content": "//\n//  FileWriter.swift\n//  tl_parser_lib\n//\n//  Created by Anton Glezman on 22/09/2019.\n//\n\nimport Foundation\n\n/**\n Utility responsible for writing ```Implementation``` to disk.\n \n If file didn't change, writer skips it.\n */\nopen class FileWriter {\n    \n    /**\n     Write implementations to disk.\n     */\n    open func write(implementations: [Implementation], verbose: Bool) throws {\n        try self.createRequiredFolders(forImplementations: implementations, verbose: verbose)\n        \n        try implementations.forEach { (implementation: Implementation) in\n            try self.write(\n                file: implementation.sourceCode,\n                filePath: implementation.filePath,\n                verbose: verbose\n            )\n        }\n    }\n    \n}\n\nprivate extension FileWriter {\n    \n    func createRequiredFolders(\n        forImplementations implementations: [Implementation],\n        verbose: Bool\n    ) throws {\n        let fileManager: FileManager = FileManager.default\n        try implementations.forEach { (implementation: Implementation) in\n            let directoryUrl = URL(fileURLWithPath: implementation.filePath).deletingLastPathComponent()\n            \n            guard !fileManager.fileExists(atPath: directoryUrl.path) else { return }\n            \n            if verbose {\n                Log.v(\"Creating folder: \\(directoryUrl.path)\")\n            }\n            \n            try fileManager.createDirectory(\n                at: directoryUrl,\n                withIntermediateDirectories: true,\n                attributes: nil\n            )\n        }\n    }\n    \n    func write(file: String, filePath: String, verbose: Bool) throws {\n        let existingFile = try? String(contentsOfFile: filePath, encoding: String.Encoding.utf8)\n        if let existingFile: String = existingFile, existingFile == file {\n            if verbose {\n                Log.v(\"File \\(filePath) didn't change, skipping...\")\n            }\n            return\n        }\n        \n        if verbose {\n            Log.v(\"Writing file: \\(filePath)\")\n        }\n        \n        try file.write(toFile: filePath, atomically: false, encoding: String.Encoding.utf8)\n    }\n    \n}\n"
  },
  {
    "path": "scripts/tl2swift/Sources/TlParserLib/Helper/Log.swift",
    "content": "//\n//  Log.swift\n//  tl_parser_lib\n//\n//  Created by Anton Glezman on 22/09/2019.\n//\n\nimport Foundation\n\n/**\n Override to forward logs somewhere else than ```stdout```\n */\nopen class Log {\n    \n    /**\n     Verbose print to ```stdout```\n     */\n    open class func v(_ message: String) {\n        print(message)\n    }\n    \n}\n"
  },
  {
    "path": "scripts/tl2swift/Sources/TlParserLib/Helper/Scanner.swift",
    "content": "//\n//  Scanner.swift\n//  tl_parser_lib\n//\n//  Created by Anton Glezman on 15/09/2019.\n//\n\nimport Foundation\n\nextension Scanner {\n    \n    func scanUpToCharactersFrom(_ set: CharacterSet) -> String? {\n        var result: NSString?\n        return scanUpToCharacters(from: set, into: &result) ? (result as String?) : nil\n    }\n    \n    func scanUpTo(_ string: String) -> String? {\n        var result: NSString?\n        return self.scanUpTo(string, into: &result) ? (result as String?) : nil\n    }\n    \n    func scanDouble() -> Double? {\n        var double: Double = 0\n        return scanDouble(&double) ? double : nil\n    }\n}\n"
  },
  {
    "path": "scripts/tl2swift/Sources/TlParserLib/Helper/String+Format.swift",
    "content": "//\n//  String+Format.swift\n//  tl_parser_lib\n//\n//  Created by Anton Glezman on 15/09/2019.\n//\n\nimport Foundation\n\nextension String {\n    \n    var capitalizedFirstLetter: String {\n        return prefix(1).uppercased() + self.dropFirst()\n    }\n    \n    func underscoreToCamelCase() -> String {\n        let result = self.split(separator: \"_\")\n            .map { String($0).capitalizedFirstLetter }\n            .joined()\n        return result.prefix(1).lowercased() + result.dropFirst()\n    }\n}\n"
  },
  {
    "path": "scripts/tl2swift/Sources/TlParserLib/Helper/String+Line.swift",
    "content": "//\n//  String+Line.swift\n//  tl_parser_lib\n//\n//  Created by Anton Glezman on 15/09/2019.\n//\n\nimport Foundation\n\npublic extension String {\n    \n    /**\n     Add empty line.\n     \n     - returns: String appended with empty line.\n     */\n    func addBlankLine() -> String {\n        return addLine(\"\")\n    }\n    \n    /**\n     Add **line** (with \\n at the end).\n     \n     - parameter line: string to add.\n     \n     - returns: String appended with **line** (with \\n at the end).\n     */\n    func addLine(_ line: String) -> String {\n        let straightLine: String = line.replacingOccurrences(of: \"\\n\", with: \"\")\n        \n        return self + straightLine + \"\\n\"\n    }\n    \n    /**\n     Convenient wrapper for + operator.\n     */\n    func append(_ line: String) -> String {\n        return self + line\n    }\n    \n    /**\n     Divide string into separate lines by \\n\n     */\n    func lines() -> [String] {\n        return self.components(separatedBy: \"\\n\")\n    }\n    \n    /**\n     Indent all lines with ```tabCount``` number of tabs (tab is four spaces).\n     */\n    func indent(tabCount: Int = 1) -> String {\n        var tab: String = \"\"\n        for _ in 0..<tabCount {\n            tab += \"    \"\n        }\n        return indent(prefix: tab)\n    }\n    \n    /**\n     Indent all lines with ```prefix```.\n     */\n    func indent(prefix: String) -> String {\n        return\n            lines()\n            .map { (line: String) -> String in\n                if line.isEmpty {\n                    return line\n                }\n                return prefix + line\n            }\n            .joined(separator: \"\\n\")\n    }\n    \n}\n"
  },
  {
    "path": "scripts/tl2swift/Sources/TlParserLib/Helper/TypesHelper.swift",
    "content": "//\n//  File.swift\n//  \n//\n//  Created by Anton Glezman on 16/09/2019.\n//\n\nimport Foundation\n\nstruct TypesHelper {\n    \n    /// Convert TL type to corresponding Swift type\n    /// - Parameter tlType: TL type\n    /// - Parameter optional: can be optional\n    static func getType(_ tlType: String, optional: Bool = false) -> String {\n        var resultType: String\n        if tlType.hasPrefix(\"vector\") {\n            let startIdx = tlType.firstIndex(of: \"<\")  ?? tlType.startIndex\n            let endIdx = tlType.lastIndex(of: \">\") ?? tlType.endIndex\n            let innerType = String(tlType[tlType.index(after: startIdx)..<endIdx])\n            resultType = \"[\\(getType(innerType))]\"\n        } else if let primitive = mapPrimitiveType(tlType) {\n            resultType = primitive\n        } else {\n            resultType = resolveAmbiguousType(tlType.capitalizedFirstLetter)\n        }\n        return optional ? \"\\(resultType)?\" : resultType\n    }\n    \n    private static func mapPrimitiveType(_ tlType: String) -> String? {\n        let mapping = [\n            \"Bool\": \"Bool\",\n            \"string\": \"String\",\n            \"double\": \"Double\",\n            \"int32\": \"Int\",\n            \"int53\": \"Int64\",\n            \"int64\": \"TdInt64\", // in TDLib json int64 passes as string\n            \"bytes\": \"Data\"\n        ]\n        return mapping[tlType]\n    }\n    \n    /// Masking keywords for using as struct properties or parameters\n    /// - returns: \\`keyword\\`\n    static func maskSwiftKeyword(_ keyword: String) -> String {\n        let keywords = [\"protocol\", \"class\", \"struct\", \"enum\", \"func\"]\n        if keywords.contains(keyword) {\n            return \"`\\(keyword)`\"\n        }\n        return keyword\n    }\n\n    private static func mapAmbiguousType(_ tlType: String) -> String? {\n        let mapping = [\n            \"Data\": \"TdData\",\n            // NOTE: Remember to edit DtoComposer.swift if you add new mappings here\n        ]\n        return mapping[tlType]\n    }\n\n    static func resolveAmbiguousType(_ tlType: String) -> String {\n        return mapAmbiguousType(tlType) ?? tlType\n    }\n    \n}\n"
  },
  {
    "path": "scripts/tl2swift/Sources/TlParserLib/Model/Implementation.swift",
    "content": "//\n//  Implementation.swift\n//  tl_parser_lib\n//\n//  Created by Anton Glezman on 22/09/2019.\n//\n\n\nimport Foundation\n\n/**\n Source code implementation.\n \n After parsing tl-schema file, `Schema` instance used to generate utilities. Generated source code of these\n utilities is organised into `Implementation` instances.\n */\npublic struct Implementation: Equatable {\n\n    /**\n     File path for future Swift class.\n     */\n    public let filePath:   String\n\n    /**\n     Source code.\n     */\n    public let sourceCode: String\n\n    /**\n     Initializer.\n     */\n    public init(filePath: String, sourceCode: String) {\n        self.filePath = filePath\n        self.sourceCode = sourceCode\n    }\n\n}\n\npublic func ==(left: Implementation, right: Implementation) -> Bool {\n    return left.filePath   == right.filePath\n        && left.sourceCode == right.sourceCode\n}\n"
  },
  {
    "path": "scripts/tl2swift/Sources/TlParserLib/Model/Schema.swift",
    "content": "//\n//  Schema.swift\n//  tl_parser_lib\n//\n//  Created by Anton Glezman on 22/09/2019.\n//\n\npublic final class Schema {\n    var classInfoes: [ClassInfo] = []\n    var enumInfoes: [EnumInfo] = []\n}\n\n\nstruct ClassInfo: Hashable {\n    let name: String\n    let properties: [ClassProperty]\n    let description: String\n    let rootName: String\n    let isFunction: Bool\n}\n\nstruct ClassProperty: Hashable {\n    let name: String\n    let type: String\n    let description: String?\n    let optional: Bool\n}\n\nstruct EnumInfo: Hashable {\n    let enumType: String\n    var items: [EnumItem]\n    let description: String\n}\n\nstruct EnumItem: Hashable {\n    let name: String\n    let associatedClassName: String?\n    let description: String\n}\n"
  },
  {
    "path": "scripts/tl2swift/Sources/TlParserLib/Parser/Parser.swift",
    "content": "//\n//  Parser.swift\n//  tl_parser_lib\n//\n//  Created by Anton Glezman on 21/08/2019.\n//\n\nimport Foundation\n\n/// Type Language Schema parser\npublic final class Parser {\n    \n    // MARK: - Private types\n    \n    private struct DescriptionAndParams {\n        var description: String\n        var params: [String: String]\n    }\n    \n    private struct EntityNameAndTypes {\n        var name: String\n        var types: [String: String]\n        var root: String\n    }\n    \n    private struct InterfaceInfo: Hashable {\n        let name: String\n        let description: String\n    }\n    \n    \n    // MARK: - Private properties\n    \n    private let lines: [String]\n    \n    \n    // MARK: - Init\n    \n    public init(tl: String) {\n        lines = tl.split(separator: \"\\n\").map{ String($0) }\n    }\n    \n    \n    // MARK: - Public methods\n    \n    public func parse() -> Schema? {\n        let schema = Schema()\n        var hitFunctions = false\n        \n        var i = 0\n        while i < lines.count {\n            let line = lines[i]\n            \n            if line.isEmpty {\n                i += 1\n                continue\n            }\n            \n            if line.contains(\"---functions---\") {\n                hitFunctions = true\n                i += 1\n                continue\n            }\n            \n            if line.hasPrefix(\"//@class\") {\n                let interface = parseClassDeclaration(line)\n                let enumInfo = EnumInfo(enumType: \"\\(interface.name)\", items: [], description: interface.description)\n                schema.enumInfoes.append(enumInfo)\n                \n            } else if line.hasPrefix(\"//@description \") {\n                \n                var buffer = [String]()\n                var nextLine = line\n                while nextLine.hasPrefix(\"//\"), i < lines.count {\n                    buffer.append(nextLine)\n                    i += 1\n                    nextLine = lines[i]\n                }\n                let entityDesc = parseDescription(buffer.joined(separator: \"\\n\"))\n                let entityNameAndTypes = parseEntityLine(nextLine)\n                \n                var properties = [ClassProperty]()\n                for (name, type) in entityNameAndTypes.types {\n                    let desc = entityDesc.params[name]\n                    // Any direct or indirect function parameter can be specified to be null.\n                    // In all functions null objects are allowed by TDLib in incoming requests.\n                    // https://github.com/tdlib/td/issues/1536\n                    let optional = (desc?.contains(\"may be null\") ?? false) ||\n                        (desc?.contains(\"pass null\") ?? false) ||\n                        hitFunctions\n                    let prop = ClassProperty(name: name, type: type, description: desc, optional: optional)\n                    properties.append(prop)\n                }\n                properties.sort(by: { $0.name < $1.name })\n                \n                let classInfo = ClassInfo(\n                    name: entityNameAndTypes.name,\n                    properties: properties,\n                    description: entityDesc.description,\n                    rootName: entityNameAndTypes.root,\n                    isFunction: hitFunctions\n                )\n                schema.classInfoes.append(classInfo)\n                \n                if !classInfo.isFunction {\n                    if let enumInfoIdx = schema.enumInfoes.firstIndex(where: { $0.enumType == \"\\(classInfo.rootName)\" }) {\n                        let hasAssocValue = !classInfo.properties.isEmpty\n                        let enumItem = EnumItem(\n                            name: classInfo.name,\n                            associatedClassName: hasAssocValue ? classInfo.name.capitalizedFirstLetter : nil,\n                            description: classInfo.description\n                        )\n                        schema.enumInfoes[enumInfoIdx].items.append(enumItem)\n                    }\n                }\n            }\n            \n            i += 1\n        }\n        return schema\n    }\n    \n\n    // MARK: - Private methods\n    \n    private func parseClassDeclaration(_ line: String) -> InterfaceInfo {\n        let parts = line.split(separator: \" \")\n        let name = String(parts[1])\n        let desc = parts[3...].joined(separator: \" \")\n        return InterfaceInfo(name: name, description: desc)\n    }\n    \n    private func parseDescription(_ line: String) -> DescriptionAndParams {\n        let str = String(line.dropFirst(\"//@description \".count))\n        let scanner = Scanner(string: str)\n        scanner.charactersToBeSkipped = CharacterSet(charactersIn: \"\\n\")\n        var desc = scanner.scanUpTo(\"@\") ?? str\n        desc = desc.replacingOccurrences(of: \"\\n//-\", with: \" \")\n        desc = desc.trimmingCharacters(in: CharacterSet.comment)\n        var result = DescriptionAndParams(description: desc, params: [:])\n        while !scanner.isAtEnd {\n            var paramName = scanner.scanUpTo(\" \") ?? \"\"\n            paramName = paramName.trimmingCharacters(in: CharacterSet.at)\n            var paramDesc = scanner.scanUpTo(\"@\") ?? \"\"\n            paramDesc = paramDesc.replacingOccurrences(of: \"\\n//-\", with: \" \")\n            paramDesc = paramDesc.trimmingCharacters(in: CharacterSet.comment)\n            result.params[paramName] = paramDesc\n        }\n        return result\n    }\n    \n    private func parseEntityLine(_ line: String) -> EntityNameAndTypes {\n        let parts = line.split(separator: \" \")\n        let root = String(parts.last!).trimmingCharacters(in: CharacterSet(charactersIn: \";\"))\n        var result = EntityNameAndTypes(name: String(parts[0]), types: [:], root: root)\n        if parts.count > 3 {\n            for item in parts.dropFirst().dropLast().dropLast() {\n                let keyVal = item.split(separator: \":\")\n                result.types[String(keyVal[0])] = String(keyVal[1])\n            }\n        }\n        return result\n    }\n    \n}\n"
  },
  {
    "path": "scripts/tl2swift/Sources/tl2swift/main.swift",
    "content": "import Foundation\nimport TlParserLib\n\nlet args = ProcessInfo.processInfo.arguments\n\nif args.count == 1 || args[1] == \"--help\" || args[1] == \"-h\" {\n    print(\"Usage: \\n\\ttl2swift api.tl output_dir tdlib_version tdlib_commit_sha\")\n    exit(0)\n}\n\nlet inFile = URL(fileURLWithPath: args[1])\nlet outPath = args.count > 2 ? URL(fileURLWithPath: args[2]) : URL(fileURLWithPath: FileManager.default.currentDirectoryPath)\nlet tdLibVersion: String? = args.count > 3 ? args[3] : nil\nlet tdLibCommit: String? = args.count > 4 ? args[4] : nil\n\nlet data = try! Data(contentsOf: inFile)\nlet tl = String(data: data, encoding: .utf8)!\n\nlet parser = Parser(tl: tl)\nguard let schema = parser.parse() else {\n    print(\"Can't parse\")\n    exit(1)\n}\n\nlet app = Application(schema: schema, outputDir: outPath, tdLibVersion: tdLibVersion, tdLibCommit: tdLibCommit)\nexit(app.run())\n"
  },
  {
    "path": "scripts/update.py",
    "content": "#!/usr/bin/env python3\nimport argparse\nimport os\nimport subprocess\nimport urllib.request\nimport json\nfrom utils import run_command\n\n\ndef main(tdlibframework_version: str = None):\n    # Get the directory of this script\n    scripts_dir = os.path.dirname(os.path.realpath(__file__))\n\n    # Fetch the latest release tag name from GitHub\n    if not tdlibframework_version:\n        tdlibframework_version = run_command(\n            [\n                \"gh\",\n                \"release\",\n                \"list\",\n                \"--repo\",\n                \"Swiftgram/TDLibFramework\",\n                \"--limit\",\n                \"1\",\n                \"--json\",\n                \"tagName\",\n                \"-q\",\n                \".[0].tagName\",\n            ]\n        )\n    print(f\"TDLibFramework version: {tdlibframework_version}\")\n\n    os.chdir(os.path.join(scripts_dir, \"..\"))\n    # Run the swift_package_generator.py script with the version\n    run_command(\n        [\n            \"python3\",\n            os.path.join(scripts_dir, \"swift_package_generator.py\"),\n            tdlibframework_version,\n        ],\n        check=True,\n    )\n\n    # Update Swift package\n    run_command([\"swift\", \"package\", \"update\"], check=True)\n\n    # Parse the TDLIB commit version\n    tdlib_version = run_command(\n        [\"python3\", os.path.join(scripts_dir, \"parse_tdlib_version.py\"), \"version\"]\n    )\n    tdlib_commit = run_command(\n        [\"python3\", os.path.join(scripts_dir, \"parse_tdlib_version.py\"), \"commit\"]\n    )\n\n    # Download the td_api.tl file\n    td_api_url = f\"https://raw.githubusercontent.com/tdlib/td/{tdlib_commit}/td/generate/scheme/td_api.tl\"\n    td_api_tl_path = os.path.join(scripts_dir, \"..\", \"td_api.tl\")\n    urllib.request.urlretrieve(td_api_url, td_api_tl_path)\n\n    # Change directory to tl2swift and generate Swift code\n    os.chdir(os.path.join(scripts_dir, \"tl2swift\"))\n    # Remove the existing generated code\n    run_command(\n        [\n            \"rm\",\n            \"-rf\",\n            os.path.join(scripts_dir, \"..\", \"Sources\", \"TDLibKit\", \"Generated\"),\n        ],\n        check=True,\n    )\n    # Generate new Swift code\n    run_command(\n        [\n            \"swift\",\n            \"run\",\n            \"tl2swift\",\n            os.path.join(scripts_dir, \"..\", \"td_api.tl\"),\n            os.path.join(scripts_dir, \"..\", \"Sources\", \"TDLibKit\", \"Generated\"),\n            tdlib_version,\n            tdlib_commit,\n        ],\n        check=True,\n    )\n\n    with open(os.path.join(scripts_dir, \"..\", \"versions.json\")) as f:\n        current_versions = json.load(f)\n\n    with open(os.path.join(scripts_dir, \"..\", \"versions.json\"), \"w\") as f:\n        current_versions.update(\n            {\n                \"tdlib_version\": tdlib_version,\n                \"tdlib_commit\": tdlib_commit,\n                \"tdlibframework_version\": tdlibframework_version,\n            }\n        )\n        json.dump(current_versions, f, indent=4)\n\n\nif __name__ == \"__main__\":\n    parser = argparse.ArgumentParser(description=\"Update TDLibFramework pin\")\n    parser.add_argument(\n        \"--version\", type=str, help=\"Override the TDLibFramework version\"\n    )\n    args = parser.parse_args()\n    main(args.version)\n"
  },
  {
    "path": "scripts/utils.py",
    "content": "import subprocess\n\n\ndef run_command(command: list, check: bool = True):\n    print(\" \".join(command))\n    result = subprocess.run(\n        command, check=check, stdout=subprocess.PIPE, universal_newlines=True\n    )\n    return result.stdout.strip()\n"
  },
  {
    "path": "versions.json",
    "content": "{\n    \"package\": \"1.5.2\",\n    \"tdlib_version\": \"1.8.64\",\n    \"tdlib_commit\": \"7a7081bf\",\n    \"tdlibframework_version\": \"1.8.64-7a7081bf\"\n}"
  }
]