{"version":3,"sources":["../../src/services/messaging.ts"],"names":[],"mappings":"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","file":"messaging.mjs","sourcesContent":["import { AppwriteException, Client, type Payload } from '../client';\nimport type { Models } from '../models';\n\nimport { MessagePriority } from '../enums/message-priority';\nimport { SmtpEncryption } from '../enums/smtp-encryption';\nexport class Messaging {\n    client: Client;\n\n    constructor(client: Client) {\n        this.client = client;\n    }\n\n    /**\n     * Get a list of all messages from the current Appwrite project.\n     *\n     * @param {string[]} params.queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType\n     * @param {string} params.search - Search term to filter your list results. Max length: 256 chars.\n     * @param {boolean} params.total - When set to false, the total count returned will be 0 and will not be calculated.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.MessageList>}\n     */\n    listMessages(params?: {\n        queries?: string[];\n        search?: string;\n        total?: boolean;\n    }): Promise<Models.MessageList>;\n    /**\n     * Get a list of all messages from the current Appwrite project.\n     *\n     * @param {string[]} queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: scheduledAt, deliveredAt, deliveredTotal, status, description, providerType\n     * @param {string} search - Search term to filter your list results. Max length: 256 chars.\n     * @param {boolean} total - When set to false, the total count returned will be 0 and will not be calculated.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.MessageList>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    listMessages(\n        queries?: string[],\n        search?: string,\n        total?: boolean,\n    ): Promise<Models.MessageList>;\n    listMessages(\n        paramsOrFirst?:\n            { queries?: string[]; search?: string; total?: boolean } | string[],\n        ...rest: [string?, boolean?]\n    ): Promise<Models.MessageList> {\n        let params: { queries?: string[]; search?: string; total?: boolean };\n\n        if (\n            !paramsOrFirst ||\n            (paramsOrFirst &&\n                typeof paramsOrFirst === 'object' &&\n                !Array.isArray(paramsOrFirst))\n        ) {\n            params = (paramsOrFirst || {}) as {\n                queries?: string[];\n                search?: string;\n                total?: boolean;\n            };\n        } else {\n            params = {\n                queries: paramsOrFirst as string[],\n                search: rest[0] as string,\n                total: rest[1] as boolean,\n            };\n        }\n\n        const queries = params.queries;\n        const search = params.search;\n        const total = params.total;\n        const apiPath = '/messaging/messages';\n        const apiPayload: Payload = {};\n        if (typeof queries !== 'undefined') {\n            apiPayload['queries'] = queries;\n        }\n        if (typeof search !== 'undefined') {\n            apiPayload['search'] = search;\n        }\n        if (typeof total !== 'undefined') {\n            apiPayload['total'] = total;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            accept: 'application/json',\n        };\n\n        return this.client.call('get', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Create a new email message.\n     *\n     * @param {string} params.messageId - Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} params.subject - Email Subject.\n     * @param {string} params.content - Email Content.\n     * @param {string[]} params.topics - List of Topic IDs.\n     * @param {string[]} params.users - List of User IDs.\n     * @param {string[]} params.targets - List of Targets IDs.\n     * @param {string[]} params.cc - Array of target IDs to be added as CC.\n     * @param {string[]} params.bcc - Array of target IDs to be added as BCC.\n     * @param {string[]} params.attachments - Array of compound ID strings of bucket IDs and file IDs to be attached to the email. They should be formatted as <BUCKET_ID>:<FILE_ID>.\n     * @param {boolean} params.draft - Is message a draft\n     * @param {boolean} params.html - Is content of type HTML\n     * @param {string} params.scheduledAt - Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Message>}\n     */\n    createEmail(params: {\n        messageId: string;\n        subject: string;\n        content: string;\n        topics?: string[];\n        users?: string[];\n        targets?: string[];\n        cc?: string[];\n        bcc?: string[];\n        attachments?: string[];\n        draft?: boolean;\n        html?: boolean;\n        scheduledAt?: string;\n    }): Promise<Models.Message>;\n    /**\n     * Create a new email message.\n     *\n     * @param {string} messageId - Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} subject - Email Subject.\n     * @param {string} content - Email Content.\n     * @param {string[]} topics - List of Topic IDs.\n     * @param {string[]} users - List of User IDs.\n     * @param {string[]} targets - List of Targets IDs.\n     * @param {string[]} cc - Array of target IDs to be added as CC.\n     * @param {string[]} bcc - Array of target IDs to be added as BCC.\n     * @param {string[]} attachments - Array of compound ID strings of bucket IDs and file IDs to be attached to the email. They should be formatted as <BUCKET_ID>:<FILE_ID>.\n     * @param {boolean} draft - Is message a draft\n     * @param {boolean} html - Is content of type HTML\n     * @param {string} scheduledAt - Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Message>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    createEmail(\n        messageId: string,\n        subject: string,\n        content: string,\n        topics?: string[],\n        users?: string[],\n        targets?: string[],\n        cc?: string[],\n        bcc?: string[],\n        attachments?: string[],\n        draft?: boolean,\n        html?: boolean,\n        scheduledAt?: string,\n    ): Promise<Models.Message>;\n    createEmail(\n        paramsOrFirst:\n            | {\n                  messageId: string;\n                  subject: string;\n                  content: string;\n                  topics?: string[];\n                  users?: string[];\n                  targets?: string[];\n                  cc?: string[];\n                  bcc?: string[];\n                  attachments?: string[];\n                  draft?: boolean;\n                  html?: boolean;\n                  scheduledAt?: string;\n              }\n            | string,\n        ...rest: [\n            string?,\n            string?,\n            string[]?,\n            string[]?,\n            string[]?,\n            string[]?,\n            string[]?,\n            string[]?,\n            boolean?,\n            boolean?,\n            string?,\n        ]\n    ): Promise<Models.Message> {\n        let params: {\n            messageId: string;\n            subject: string;\n            content: string;\n            topics?: string[];\n            users?: string[];\n            targets?: string[];\n            cc?: string[];\n            bcc?: string[];\n            attachments?: string[];\n            draft?: boolean;\n            html?: boolean;\n            scheduledAt?: string;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                messageId: string;\n                subject: string;\n                content: string;\n                topics?: string[];\n                users?: string[];\n                targets?: string[];\n                cc?: string[];\n                bcc?: string[];\n                attachments?: string[];\n                draft?: boolean;\n                html?: boolean;\n                scheduledAt?: string;\n            };\n        } else {\n            params = {\n                messageId: paramsOrFirst as string,\n                subject: rest[0] as string,\n                content: rest[1] as string,\n                topics: rest[2] as string[],\n                users: rest[3] as string[],\n                targets: rest[4] as string[],\n                cc: rest[5] as string[],\n                bcc: rest[6] as string[],\n                attachments: rest[7] as string[],\n                draft: rest[8] as boolean,\n                html: rest[9] as boolean,\n                scheduledAt: rest[10] as string,\n            };\n        }\n\n        const messageId = params.messageId;\n        const subject = params.subject;\n        const content = params.content;\n        const topics = params.topics;\n        const users = params.users;\n        const targets = params.targets;\n        const cc = params.cc;\n        const bcc = params.bcc;\n        const attachments = params.attachments;\n        const draft = params.draft;\n        const html = params.html;\n        const scheduledAt = params.scheduledAt;\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"messageId\"',\n            );\n        }\n        if (typeof subject === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"subject\"',\n            );\n        }\n        if (typeof content === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"content\"',\n            );\n        }\n        const apiPath = '/messaging/messages/email';\n        const apiPayload: Payload = {};\n        if (typeof messageId !== 'undefined') {\n            apiPayload['messageId'] = messageId;\n        }\n        if (typeof subject !== 'undefined') {\n            apiPayload['subject'] = subject;\n        }\n        if (typeof content !== 'undefined') {\n            apiPayload['content'] = content;\n        }\n        if (typeof topics !== 'undefined') {\n            apiPayload['topics'] = topics;\n        }\n        if (typeof users !== 'undefined') {\n            apiPayload['users'] = users;\n        }\n        if (typeof targets !== 'undefined') {\n            apiPayload['targets'] = targets;\n        }\n        if (typeof cc !== 'undefined') {\n            apiPayload['cc'] = cc;\n        }\n        if (typeof bcc !== 'undefined') {\n            apiPayload['bcc'] = bcc;\n        }\n        if (typeof attachments !== 'undefined') {\n            apiPayload['attachments'] = attachments;\n        }\n        if (typeof draft !== 'undefined') {\n            apiPayload['draft'] = draft;\n        }\n        if (typeof html !== 'undefined') {\n            apiPayload['html'] = html;\n        }\n        if (typeof scheduledAt !== 'undefined') {\n            apiPayload['scheduledAt'] = scheduledAt;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('post', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Update an email message by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated.\n     *\n     *\n     * @param {string} params.messageId - Message ID.\n     * @param {string[]} params.topics - List of Topic IDs.\n     * @param {string[]} params.users - List of User IDs.\n     * @param {string[]} params.targets - List of Targets IDs.\n     * @param {string} params.subject - Email Subject.\n     * @param {string} params.content - Email Content.\n     * @param {boolean} params.draft - Is message a draft\n     * @param {boolean} params.html - Is content of type HTML\n     * @param {string[]} params.cc - Array of target IDs to be added as CC.\n     * @param {string[]} params.bcc - Array of target IDs to be added as BCC.\n     * @param {string} params.scheduledAt - Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.\n     * @param {string[]} params.attachments - Array of compound ID strings of bucket IDs and file IDs to be attached to the email. They should be formatted as <BUCKET_ID>:<FILE_ID>.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Message>}\n     */\n    updateEmail(params: {\n        messageId: string;\n        topics?: string[];\n        users?: string[];\n        targets?: string[];\n        subject?: string;\n        content?: string;\n        draft?: boolean;\n        html?: boolean;\n        cc?: string[];\n        bcc?: string[];\n        scheduledAt?: string;\n        attachments?: string[];\n    }): Promise<Models.Message>;\n    /**\n     * Update an email message by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated.\n     *\n     *\n     * @param {string} messageId - Message ID.\n     * @param {string[]} topics - List of Topic IDs.\n     * @param {string[]} users - List of User IDs.\n     * @param {string[]} targets - List of Targets IDs.\n     * @param {string} subject - Email Subject.\n     * @param {string} content - Email Content.\n     * @param {boolean} draft - Is message a draft\n     * @param {boolean} html - Is content of type HTML\n     * @param {string[]} cc - Array of target IDs to be added as CC.\n     * @param {string[]} bcc - Array of target IDs to be added as BCC.\n     * @param {string} scheduledAt - Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.\n     * @param {string[]} attachments - Array of compound ID strings of bucket IDs and file IDs to be attached to the email. They should be formatted as <BUCKET_ID>:<FILE_ID>.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Message>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    updateEmail(\n        messageId: string,\n        topics?: string[],\n        users?: string[],\n        targets?: string[],\n        subject?: string,\n        content?: string,\n        draft?: boolean,\n        html?: boolean,\n        cc?: string[],\n        bcc?: string[],\n        scheduledAt?: string,\n        attachments?: string[],\n    ): Promise<Models.Message>;\n    updateEmail(\n        paramsOrFirst:\n            | {\n                  messageId: string;\n                  topics?: string[];\n                  users?: string[];\n                  targets?: string[];\n                  subject?: string;\n                  content?: string;\n                  draft?: boolean;\n                  html?: boolean;\n                  cc?: string[];\n                  bcc?: string[];\n                  scheduledAt?: string;\n                  attachments?: string[];\n              }\n            | string,\n        ...rest: [\n            string[]?,\n            string[]?,\n            string[]?,\n            string?,\n            string?,\n            boolean?,\n            boolean?,\n            string[]?,\n            string[]?,\n            string?,\n            string[]?,\n        ]\n    ): Promise<Models.Message> {\n        let params: {\n            messageId: string;\n            topics?: string[];\n            users?: string[];\n            targets?: string[];\n            subject?: string;\n            content?: string;\n            draft?: boolean;\n            html?: boolean;\n            cc?: string[];\n            bcc?: string[];\n            scheduledAt?: string;\n            attachments?: string[];\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                messageId: string;\n                topics?: string[];\n                users?: string[];\n                targets?: string[];\n                subject?: string;\n                content?: string;\n                draft?: boolean;\n                html?: boolean;\n                cc?: string[];\n                bcc?: string[];\n                scheduledAt?: string;\n                attachments?: string[];\n            };\n        } else {\n            params = {\n                messageId: paramsOrFirst as string,\n                topics: rest[0] as string[],\n                users: rest[1] as string[],\n                targets: rest[2] as string[],\n                subject: rest[3] as string,\n                content: rest[4] as string,\n                draft: rest[5] as boolean,\n                html: rest[6] as boolean,\n                cc: rest[7] as string[],\n                bcc: rest[8] as string[],\n                scheduledAt: rest[9] as string,\n                attachments: rest[10] as string[],\n            };\n        }\n\n        const messageId = params.messageId;\n        const topics = params.topics;\n        const users = params.users;\n        const targets = params.targets;\n        const subject = params.subject;\n        const content = params.content;\n        const draft = params.draft;\n        const html = params.html;\n        const cc = params.cc;\n        const bcc = params.bcc;\n        const scheduledAt = params.scheduledAt;\n        const attachments = params.attachments;\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"messageId\"',\n            );\n        }\n        const apiPath = '/messaging/messages/email/{messageId}'.replace(\n            '{messageId}',\n            encodeURIComponent(String(messageId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof topics !== 'undefined') {\n            apiPayload['topics'] = topics;\n        }\n        if (typeof users !== 'undefined') {\n            apiPayload['users'] = users;\n        }\n        if (typeof targets !== 'undefined') {\n            apiPayload['targets'] = targets;\n        }\n        if (typeof subject !== 'undefined') {\n            apiPayload['subject'] = subject;\n        }\n        if (typeof content !== 'undefined') {\n            apiPayload['content'] = content;\n        }\n        if (typeof draft !== 'undefined') {\n            apiPayload['draft'] = draft;\n        }\n        if (typeof html !== 'undefined') {\n            apiPayload['html'] = html;\n        }\n        if (typeof cc !== 'undefined') {\n            apiPayload['cc'] = cc;\n        }\n        if (typeof bcc !== 'undefined') {\n            apiPayload['bcc'] = bcc;\n        }\n        if (typeof scheduledAt !== 'undefined') {\n            apiPayload['scheduledAt'] = scheduledAt;\n        }\n        if (typeof attachments !== 'undefined') {\n            apiPayload['attachments'] = attachments;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('patch', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Create a new push notification.\n     *\n     * @param {string} params.messageId - Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} params.title - Title for push notification.\n     * @param {string} params.body - Body for push notification.\n     * @param {string[]} params.topics - List of Topic IDs.\n     * @param {string[]} params.users - List of User IDs.\n     * @param {string[]} params.targets - List of Targets IDs.\n     * @param {object} params.data - Additional key-value pair data for push notification.\n     * @param {string} params.action - Action for push notification.\n     * @param {string} params.image - Image for push notification. Must be a compound bucket ID to file ID of a jpeg, png, or bmp image in Appwrite Storage. It should be formatted as <BUCKET_ID>:<FILE_ID>.\n     * @param {string} params.icon - Icon for push notification. Available only for Android and Web Platform.\n     * @param {string} params.sound - Sound for push notification. Available only for Android and iOS Platform.\n     * @param {string} params.color - Color for push notification. Available only for Android Platform.\n     * @param {string} params.tag - Tag for push notification. Available only for Android Platform.\n     * @param {number} params.badge - Badge for push notification. Available only for iOS Platform.\n     * @param {boolean} params.draft - Is message a draft\n     * @param {string} params.scheduledAt - Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.\n     * @param {boolean} params.contentAvailable - If set to true, the notification will be delivered in the background. Available only for iOS Platform.\n     * @param {boolean} params.critical - If set to true, the notification will be marked as critical. This requires the app to have the critical notification entitlement. Available only for iOS Platform.\n     * @param {MessagePriority} params.priority - Set the notification priority. \"normal\" will consider device state and may not deliver notifications immediately. \"high\" will always attempt to immediately deliver the notification.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Message>}\n     */\n    createPush(params: {\n        messageId: string;\n        title?: string;\n        body?: string;\n        topics?: string[];\n        users?: string[];\n        targets?: string[];\n        data?: object;\n        action?: string;\n        image?: string;\n        icon?: string;\n        sound?: string;\n        color?: string;\n        tag?: string;\n        badge?: number;\n        draft?: boolean;\n        scheduledAt?: string;\n        contentAvailable?: boolean;\n        critical?: boolean;\n        priority?: MessagePriority;\n    }): Promise<Models.Message>;\n    /**\n     * Create a new push notification.\n     *\n     * @param {string} messageId - Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} title - Title for push notification.\n     * @param {string} body - Body for push notification.\n     * @param {string[]} topics - List of Topic IDs.\n     * @param {string[]} users - List of User IDs.\n     * @param {string[]} targets - List of Targets IDs.\n     * @param {object} data - Additional key-value pair data for push notification.\n     * @param {string} action - Action for push notification.\n     * @param {string} image - Image for push notification. Must be a compound bucket ID to file ID of a jpeg, png, or bmp image in Appwrite Storage. It should be formatted as <BUCKET_ID>:<FILE_ID>.\n     * @param {string} icon - Icon for push notification. Available only for Android and Web Platform.\n     * @param {string} sound - Sound for push notification. Available only for Android and iOS Platform.\n     * @param {string} color - Color for push notification. Available only for Android Platform.\n     * @param {string} tag - Tag for push notification. Available only for Android Platform.\n     * @param {number} badge - Badge for push notification. Available only for iOS Platform.\n     * @param {boolean} draft - Is message a draft\n     * @param {string} scheduledAt - Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.\n     * @param {boolean} contentAvailable - If set to true, the notification will be delivered in the background. Available only for iOS Platform.\n     * @param {boolean} critical - If set to true, the notification will be marked as critical. This requires the app to have the critical notification entitlement. Available only for iOS Platform.\n     * @param {MessagePriority} priority - Set the notification priority. \"normal\" will consider device state and may not deliver notifications immediately. \"high\" will always attempt to immediately deliver the notification.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Message>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    createPush(\n        messageId: string,\n        title?: string,\n        body?: string,\n        topics?: string[],\n        users?: string[],\n        targets?: string[],\n        data?: object,\n        action?: string,\n        image?: string,\n        icon?: string,\n        sound?: string,\n        color?: string,\n        tag?: string,\n        badge?: number,\n        draft?: boolean,\n        scheduledAt?: string,\n        contentAvailable?: boolean,\n        critical?: boolean,\n        priority?: MessagePriority,\n    ): Promise<Models.Message>;\n    createPush(\n        paramsOrFirst:\n            | {\n                  messageId: string;\n                  title?: string;\n                  body?: string;\n                  topics?: string[];\n                  users?: string[];\n                  targets?: string[];\n                  data?: object;\n                  action?: string;\n                  image?: string;\n                  icon?: string;\n                  sound?: string;\n                  color?: string;\n                  tag?: string;\n                  badge?: number;\n                  draft?: boolean;\n                  scheduledAt?: string;\n                  contentAvailable?: boolean;\n                  critical?: boolean;\n                  priority?: MessagePriority;\n              }\n            | string,\n        ...rest: [\n            string?,\n            string?,\n            string[]?,\n            string[]?,\n            string[]?,\n            object?,\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n            number?,\n            boolean?,\n            string?,\n            boolean?,\n            boolean?,\n            MessagePriority?,\n        ]\n    ): Promise<Models.Message> {\n        let params: {\n            messageId: string;\n            title?: string;\n            body?: string;\n            topics?: string[];\n            users?: string[];\n            targets?: string[];\n            data?: object;\n            action?: string;\n            image?: string;\n            icon?: string;\n            sound?: string;\n            color?: string;\n            tag?: string;\n            badge?: number;\n            draft?: boolean;\n            scheduledAt?: string;\n            contentAvailable?: boolean;\n            critical?: boolean;\n            priority?: MessagePriority;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                messageId: string;\n                title?: string;\n                body?: string;\n                topics?: string[];\n                users?: string[];\n                targets?: string[];\n                data?: object;\n                action?: string;\n                image?: string;\n                icon?: string;\n                sound?: string;\n                color?: string;\n                tag?: string;\n                badge?: number;\n                draft?: boolean;\n                scheduledAt?: string;\n                contentAvailable?: boolean;\n                critical?: boolean;\n                priority?: MessagePriority;\n            };\n        } else {\n            params = {\n                messageId: paramsOrFirst as string,\n                title: rest[0] as string,\n                body: rest[1] as string,\n                topics: rest[2] as string[],\n                users: rest[3] as string[],\n                targets: rest[4] as string[],\n                data: rest[5] as object,\n                action: rest[6] as string,\n                image: rest[7] as string,\n                icon: rest[8] as string,\n                sound: rest[9] as string,\n                color: rest[10] as string,\n                tag: rest[11] as string,\n                badge: rest[12] as number,\n                draft: rest[13] as boolean,\n                scheduledAt: rest[14] as string,\n                contentAvailable: rest[15] as boolean,\n                critical: rest[16] as boolean,\n                priority: rest[17] as MessagePriority,\n            };\n        }\n\n        const messageId = params.messageId;\n        const title = params.title;\n        const body = params.body;\n        const topics = params.topics;\n        const users = params.users;\n        const targets = params.targets;\n        const data = params.data;\n        const action = params.action;\n        const image = params.image;\n        const icon = params.icon;\n        const sound = params.sound;\n        const color = params.color;\n        const tag = params.tag;\n        const badge = params.badge;\n        const draft = params.draft;\n        const scheduledAt = params.scheduledAt;\n        const contentAvailable = params.contentAvailable;\n        const critical = params.critical;\n        const priority = params.priority;\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"messageId\"',\n            );\n        }\n        const apiPath = '/messaging/messages/push';\n        const apiPayload: Payload = {};\n        if (typeof messageId !== 'undefined') {\n            apiPayload['messageId'] = messageId;\n        }\n        if (typeof title !== 'undefined') {\n            apiPayload['title'] = title;\n        }\n        if (typeof body !== 'undefined') {\n            apiPayload['body'] = body;\n        }\n        if (typeof topics !== 'undefined') {\n            apiPayload['topics'] = topics;\n        }\n        if (typeof users !== 'undefined') {\n            apiPayload['users'] = users;\n        }\n        if (typeof targets !== 'undefined') {\n            apiPayload['targets'] = targets;\n        }\n        if (typeof data !== 'undefined') {\n            apiPayload['data'] = data;\n        }\n        if (typeof action !== 'undefined') {\n            apiPayload['action'] = action;\n        }\n        if (typeof image !== 'undefined') {\n            apiPayload['image'] = image;\n        }\n        if (typeof icon !== 'undefined') {\n            apiPayload['icon'] = icon;\n        }\n        if (typeof sound !== 'undefined') {\n            apiPayload['sound'] = sound;\n        }\n        if (typeof color !== 'undefined') {\n            apiPayload['color'] = color;\n        }\n        if (typeof tag !== 'undefined') {\n            apiPayload['tag'] = tag;\n        }\n        if (typeof badge !== 'undefined') {\n            apiPayload['badge'] = badge;\n        }\n        if (typeof draft !== 'undefined') {\n            apiPayload['draft'] = draft;\n        }\n        if (typeof scheduledAt !== 'undefined') {\n            apiPayload['scheduledAt'] = scheduledAt;\n        }\n        if (typeof contentAvailable !== 'undefined') {\n            apiPayload['contentAvailable'] = contentAvailable;\n        }\n        if (typeof critical !== 'undefined') {\n            apiPayload['critical'] = critical;\n        }\n        if (typeof priority !== 'undefined') {\n            apiPayload['priority'] = priority;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('post', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Update a push notification by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated.\n     *\n     *\n     * @param {string} params.messageId - Message ID.\n     * @param {string[]} params.topics - List of Topic IDs.\n     * @param {string[]} params.users - List of User IDs.\n     * @param {string[]} params.targets - List of Targets IDs.\n     * @param {string} params.title - Title for push notification.\n     * @param {string} params.body - Body for push notification.\n     * @param {object} params.data - Additional Data for push notification.\n     * @param {string} params.action - Action for push notification.\n     * @param {string} params.image - Image for push notification. Must be a compound bucket ID to file ID of a jpeg, png, or bmp image in Appwrite Storage. It should be formatted as <BUCKET_ID>:<FILE_ID>.\n     * @param {string} params.icon - Icon for push notification. Available only for Android and Web platforms.\n     * @param {string} params.sound - Sound for push notification. Available only for Android and iOS platforms.\n     * @param {string} params.color - Color for push notification. Available only for Android platforms.\n     * @param {string} params.tag - Tag for push notification. Available only for Android platforms.\n     * @param {number} params.badge - Badge for push notification. Available only for iOS platforms.\n     * @param {boolean} params.draft - Is message a draft\n     * @param {string} params.scheduledAt - Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.\n     * @param {boolean} params.contentAvailable - If set to true, the notification will be delivered in the background. Available only for iOS Platform.\n     * @param {boolean} params.critical - If set to true, the notification will be marked as critical. This requires the app to have the critical notification entitlement. Available only for iOS Platform.\n     * @param {MessagePriority} params.priority - Set the notification priority. \"normal\" will consider device battery state and may send notifications later. \"high\" will always attempt to immediately deliver the notification.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Message>}\n     */\n    updatePush(params: {\n        messageId: string;\n        topics?: string[];\n        users?: string[];\n        targets?: string[];\n        title?: string;\n        body?: string;\n        data?: object;\n        action?: string;\n        image?: string;\n        icon?: string;\n        sound?: string;\n        color?: string;\n        tag?: string;\n        badge?: number;\n        draft?: boolean;\n        scheduledAt?: string;\n        contentAvailable?: boolean;\n        critical?: boolean;\n        priority?: MessagePriority;\n    }): Promise<Models.Message>;\n    /**\n     * Update a push notification by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated.\n     *\n     *\n     * @param {string} messageId - Message ID.\n     * @param {string[]} topics - List of Topic IDs.\n     * @param {string[]} users - List of User IDs.\n     * @param {string[]} targets - List of Targets IDs.\n     * @param {string} title - Title for push notification.\n     * @param {string} body - Body for push notification.\n     * @param {object} data - Additional Data for push notification.\n     * @param {string} action - Action for push notification.\n     * @param {string} image - Image for push notification. Must be a compound bucket ID to file ID of a jpeg, png, or bmp image in Appwrite Storage. It should be formatted as <BUCKET_ID>:<FILE_ID>.\n     * @param {string} icon - Icon for push notification. Available only for Android and Web platforms.\n     * @param {string} sound - Sound for push notification. Available only for Android and iOS platforms.\n     * @param {string} color - Color for push notification. Available only for Android platforms.\n     * @param {string} tag - Tag for push notification. Available only for Android platforms.\n     * @param {number} badge - Badge for push notification. Available only for iOS platforms.\n     * @param {boolean} draft - Is message a draft\n     * @param {string} scheduledAt - Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.\n     * @param {boolean} contentAvailable - If set to true, the notification will be delivered in the background. Available only for iOS Platform.\n     * @param {boolean} critical - If set to true, the notification will be marked as critical. This requires the app to have the critical notification entitlement. Available only for iOS Platform.\n     * @param {MessagePriority} priority - Set the notification priority. \"normal\" will consider device battery state and may send notifications later. \"high\" will always attempt to immediately deliver the notification.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Message>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    updatePush(\n        messageId: string,\n        topics?: string[],\n        users?: string[],\n        targets?: string[],\n        title?: string,\n        body?: string,\n        data?: object,\n        action?: string,\n        image?: string,\n        icon?: string,\n        sound?: string,\n        color?: string,\n        tag?: string,\n        badge?: number,\n        draft?: boolean,\n        scheduledAt?: string,\n        contentAvailable?: boolean,\n        critical?: boolean,\n        priority?: MessagePriority,\n    ): Promise<Models.Message>;\n    updatePush(\n        paramsOrFirst:\n            | {\n                  messageId: string;\n                  topics?: string[];\n                  users?: string[];\n                  targets?: string[];\n                  title?: string;\n                  body?: string;\n                  data?: object;\n                  action?: string;\n                  image?: string;\n                  icon?: string;\n                  sound?: string;\n                  color?: string;\n                  tag?: string;\n                  badge?: number;\n                  draft?: boolean;\n                  scheduledAt?: string;\n                  contentAvailable?: boolean;\n                  critical?: boolean;\n                  priority?: MessagePriority;\n              }\n            | string,\n        ...rest: [\n            string[]?,\n            string[]?,\n            string[]?,\n            string?,\n            string?,\n            object?,\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n            number?,\n            boolean?,\n            string?,\n            boolean?,\n            boolean?,\n            MessagePriority?,\n        ]\n    ): Promise<Models.Message> {\n        let params: {\n            messageId: string;\n            topics?: string[];\n            users?: string[];\n            targets?: string[];\n            title?: string;\n            body?: string;\n            data?: object;\n            action?: string;\n            image?: string;\n            icon?: string;\n            sound?: string;\n            color?: string;\n            tag?: string;\n            badge?: number;\n            draft?: boolean;\n            scheduledAt?: string;\n            contentAvailable?: boolean;\n            critical?: boolean;\n            priority?: MessagePriority;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                messageId: string;\n                topics?: string[];\n                users?: string[];\n                targets?: string[];\n                title?: string;\n                body?: string;\n                data?: object;\n                action?: string;\n                image?: string;\n                icon?: string;\n                sound?: string;\n                color?: string;\n                tag?: string;\n                badge?: number;\n                draft?: boolean;\n                scheduledAt?: string;\n                contentAvailable?: boolean;\n                critical?: boolean;\n                priority?: MessagePriority;\n            };\n        } else {\n            params = {\n                messageId: paramsOrFirst as string,\n                topics: rest[0] as string[],\n                users: rest[1] as string[],\n                targets: rest[2] as string[],\n                title: rest[3] as string,\n                body: rest[4] as string,\n                data: rest[5] as object,\n                action: rest[6] as string,\n                image: rest[7] as string,\n                icon: rest[8] as string,\n                sound: rest[9] as string,\n                color: rest[10] as string,\n                tag: rest[11] as string,\n                badge: rest[12] as number,\n                draft: rest[13] as boolean,\n                scheduledAt: rest[14] as string,\n                contentAvailable: rest[15] as boolean,\n                critical: rest[16] as boolean,\n                priority: rest[17] as MessagePriority,\n            };\n        }\n\n        const messageId = params.messageId;\n        const topics = params.topics;\n        const users = params.users;\n        const targets = params.targets;\n        const title = params.title;\n        const body = params.body;\n        const data = params.data;\n        const action = params.action;\n        const image = params.image;\n        const icon = params.icon;\n        const sound = params.sound;\n        const color = params.color;\n        const tag = params.tag;\n        const badge = params.badge;\n        const draft = params.draft;\n        const scheduledAt = params.scheduledAt;\n        const contentAvailable = params.contentAvailable;\n        const critical = params.critical;\n        const priority = params.priority;\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"messageId\"',\n            );\n        }\n        const apiPath = '/messaging/messages/push/{messageId}'.replace(\n            '{messageId}',\n            encodeURIComponent(String(messageId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof topics !== 'undefined') {\n            apiPayload['topics'] = topics;\n        }\n        if (typeof users !== 'undefined') {\n            apiPayload['users'] = users;\n        }\n        if (typeof targets !== 'undefined') {\n            apiPayload['targets'] = targets;\n        }\n        if (typeof title !== 'undefined') {\n            apiPayload['title'] = title;\n        }\n        if (typeof body !== 'undefined') {\n            apiPayload['body'] = body;\n        }\n        if (typeof data !== 'undefined') {\n            apiPayload['data'] = data;\n        }\n        if (typeof action !== 'undefined') {\n            apiPayload['action'] = action;\n        }\n        if (typeof image !== 'undefined') {\n            apiPayload['image'] = image;\n        }\n        if (typeof icon !== 'undefined') {\n            apiPayload['icon'] = icon;\n        }\n        if (typeof sound !== 'undefined') {\n            apiPayload['sound'] = sound;\n        }\n        if (typeof color !== 'undefined') {\n            apiPayload['color'] = color;\n        }\n        if (typeof tag !== 'undefined') {\n            apiPayload['tag'] = tag;\n        }\n        if (typeof badge !== 'undefined') {\n            apiPayload['badge'] = badge;\n        }\n        if (typeof draft !== 'undefined') {\n            apiPayload['draft'] = draft;\n        }\n        if (typeof scheduledAt !== 'undefined') {\n            apiPayload['scheduledAt'] = scheduledAt;\n        }\n        if (typeof contentAvailable !== 'undefined') {\n            apiPayload['contentAvailable'] = contentAvailable;\n        }\n        if (typeof critical !== 'undefined') {\n            apiPayload['critical'] = critical;\n        }\n        if (typeof priority !== 'undefined') {\n            apiPayload['priority'] = priority;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('patch', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Create a new SMS message.\n     *\n     * @param {string} params.messageId - Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} params.content - SMS Content.\n     * @param {string[]} params.topics - List of Topic IDs.\n     * @param {string[]} params.users - List of User IDs.\n     * @param {string[]} params.targets - List of Targets IDs.\n     * @param {boolean} params.draft - Is message a draft\n     * @param {string} params.scheduledAt - Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Message>}\n     * @deprecated This API has been deprecated since 1.8.0. Please use `Messaging.createSMS` instead.\n     */\n    createSms(params: {\n        messageId: string;\n        content: string;\n        topics?: string[];\n        users?: string[];\n        targets?: string[];\n        draft?: boolean;\n        scheduledAt?: string;\n    }): Promise<Models.Message>;\n    /**\n     * Create a new SMS message.\n     *\n     * @param {string} messageId - Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} content - SMS Content.\n     * @param {string[]} topics - List of Topic IDs.\n     * @param {string[]} users - List of User IDs.\n     * @param {string[]} targets - List of Targets IDs.\n     * @param {boolean} draft - Is message a draft\n     * @param {string} scheduledAt - Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Message>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    createSms(\n        messageId: string,\n        content: string,\n        topics?: string[],\n        users?: string[],\n        targets?: string[],\n        draft?: boolean,\n        scheduledAt?: string,\n    ): Promise<Models.Message>;\n    createSms(\n        paramsOrFirst:\n            | {\n                  messageId: string;\n                  content: string;\n                  topics?: string[];\n                  users?: string[];\n                  targets?: string[];\n                  draft?: boolean;\n                  scheduledAt?: string;\n              }\n            | string,\n        ...rest: [string?, string[]?, string[]?, string[]?, boolean?, string?]\n    ): Promise<Models.Message> {\n        let params: {\n            messageId: string;\n            content: string;\n            topics?: string[];\n            users?: string[];\n            targets?: string[];\n            draft?: boolean;\n            scheduledAt?: string;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                messageId: string;\n                content: string;\n                topics?: string[];\n                users?: string[];\n                targets?: string[];\n                draft?: boolean;\n                scheduledAt?: string;\n            };\n        } else {\n            params = {\n                messageId: paramsOrFirst as string,\n                content: rest[0] as string,\n                topics: rest[1] as string[],\n                users: rest[2] as string[],\n                targets: rest[3] as string[],\n                draft: rest[4] as boolean,\n                scheduledAt: rest[5] as string,\n            };\n        }\n\n        const messageId = params.messageId;\n        const content = params.content;\n        const topics = params.topics;\n        const users = params.users;\n        const targets = params.targets;\n        const draft = params.draft;\n        const scheduledAt = params.scheduledAt;\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"messageId\"',\n            );\n        }\n        if (typeof content === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"content\"',\n            );\n        }\n        const apiPath = '/messaging/messages/sms';\n        const apiPayload: Payload = {};\n        if (typeof messageId !== 'undefined') {\n            apiPayload['messageId'] = messageId;\n        }\n        if (typeof content !== 'undefined') {\n            apiPayload['content'] = content;\n        }\n        if (typeof topics !== 'undefined') {\n            apiPayload['topics'] = topics;\n        }\n        if (typeof users !== 'undefined') {\n            apiPayload['users'] = users;\n        }\n        if (typeof targets !== 'undefined') {\n            apiPayload['targets'] = targets;\n        }\n        if (typeof draft !== 'undefined') {\n            apiPayload['draft'] = draft;\n        }\n        if (typeof scheduledAt !== 'undefined') {\n            apiPayload['scheduledAt'] = scheduledAt;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('post', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Create a new SMS message.\n     *\n     * @param {string} params.messageId - Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} params.content - SMS Content.\n     * @param {string[]} params.topics - List of Topic IDs.\n     * @param {string[]} params.users - List of User IDs.\n     * @param {string[]} params.targets - List of Targets IDs.\n     * @param {boolean} params.draft - Is message a draft\n     * @param {string} params.scheduledAt - Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Message>}\n     */\n    createSMS(params: {\n        messageId: string;\n        content: string;\n        topics?: string[];\n        users?: string[];\n        targets?: string[];\n        draft?: boolean;\n        scheduledAt?: string;\n    }): Promise<Models.Message>;\n    /**\n     * Create a new SMS message.\n     *\n     * @param {string} messageId - Message ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} content - SMS Content.\n     * @param {string[]} topics - List of Topic IDs.\n     * @param {string[]} users - List of User IDs.\n     * @param {string[]} targets - List of Targets IDs.\n     * @param {boolean} draft - Is message a draft\n     * @param {string} scheduledAt - Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Message>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    createSMS(\n        messageId: string,\n        content: string,\n        topics?: string[],\n        users?: string[],\n        targets?: string[],\n        draft?: boolean,\n        scheduledAt?: string,\n    ): Promise<Models.Message>;\n    createSMS(\n        paramsOrFirst:\n            | {\n                  messageId: string;\n                  content: string;\n                  topics?: string[];\n                  users?: string[];\n                  targets?: string[];\n                  draft?: boolean;\n                  scheduledAt?: string;\n              }\n            | string,\n        ...rest: [string?, string[]?, string[]?, string[]?, boolean?, string?]\n    ): Promise<Models.Message> {\n        let params: {\n            messageId: string;\n            content: string;\n            topics?: string[];\n            users?: string[];\n            targets?: string[];\n            draft?: boolean;\n            scheduledAt?: string;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                messageId: string;\n                content: string;\n                topics?: string[];\n                users?: string[];\n                targets?: string[];\n                draft?: boolean;\n                scheduledAt?: string;\n            };\n        } else {\n            params = {\n                messageId: paramsOrFirst as string,\n                content: rest[0] as string,\n                topics: rest[1] as string[],\n                users: rest[2] as string[],\n                targets: rest[3] as string[],\n                draft: rest[4] as boolean,\n                scheduledAt: rest[5] as string,\n            };\n        }\n\n        const messageId = params.messageId;\n        const content = params.content;\n        const topics = params.topics;\n        const users = params.users;\n        const targets = params.targets;\n        const draft = params.draft;\n        const scheduledAt = params.scheduledAt;\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"messageId\"',\n            );\n        }\n        if (typeof content === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"content\"',\n            );\n        }\n        const apiPath = '/messaging/messages/sms';\n        const apiPayload: Payload = {};\n        if (typeof messageId !== 'undefined') {\n            apiPayload['messageId'] = messageId;\n        }\n        if (typeof content !== 'undefined') {\n            apiPayload['content'] = content;\n        }\n        if (typeof topics !== 'undefined') {\n            apiPayload['topics'] = topics;\n        }\n        if (typeof users !== 'undefined') {\n            apiPayload['users'] = users;\n        }\n        if (typeof targets !== 'undefined') {\n            apiPayload['targets'] = targets;\n        }\n        if (typeof draft !== 'undefined') {\n            apiPayload['draft'] = draft;\n        }\n        if (typeof scheduledAt !== 'undefined') {\n            apiPayload['scheduledAt'] = scheduledAt;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('post', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Update an SMS message by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated.\n     *\n     *\n     * @param {string} params.messageId - Message ID.\n     * @param {string[]} params.topics - List of Topic IDs.\n     * @param {string[]} params.users - List of User IDs.\n     * @param {string[]} params.targets - List of Targets IDs.\n     * @param {string} params.content - Email Content.\n     * @param {boolean} params.draft - Is message a draft\n     * @param {string} params.scheduledAt - Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Message>}\n     * @deprecated This API has been deprecated since 1.8.0. Please use `Messaging.updateSMS` instead.\n     */\n    updateSms(params: {\n        messageId: string;\n        topics?: string[];\n        users?: string[];\n        targets?: string[];\n        content?: string;\n        draft?: boolean;\n        scheduledAt?: string;\n    }): Promise<Models.Message>;\n    /**\n     * Update an SMS message by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated.\n     *\n     *\n     * @param {string} messageId - Message ID.\n     * @param {string[]} topics - List of Topic IDs.\n     * @param {string[]} users - List of User IDs.\n     * @param {string[]} targets - List of Targets IDs.\n     * @param {string} content - Email Content.\n     * @param {boolean} draft - Is message a draft\n     * @param {string} scheduledAt - Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Message>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    updateSms(\n        messageId: string,\n        topics?: string[],\n        users?: string[],\n        targets?: string[],\n        content?: string,\n        draft?: boolean,\n        scheduledAt?: string,\n    ): Promise<Models.Message>;\n    updateSms(\n        paramsOrFirst:\n            | {\n                  messageId: string;\n                  topics?: string[];\n                  users?: string[];\n                  targets?: string[];\n                  content?: string;\n                  draft?: boolean;\n                  scheduledAt?: string;\n              }\n            | string,\n        ...rest: [string[]?, string[]?, string[]?, string?, boolean?, string?]\n    ): Promise<Models.Message> {\n        let params: {\n            messageId: string;\n            topics?: string[];\n            users?: string[];\n            targets?: string[];\n            content?: string;\n            draft?: boolean;\n            scheduledAt?: string;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                messageId: string;\n                topics?: string[];\n                users?: string[];\n                targets?: string[];\n                content?: string;\n                draft?: boolean;\n                scheduledAt?: string;\n            };\n        } else {\n            params = {\n                messageId: paramsOrFirst as string,\n                topics: rest[0] as string[],\n                users: rest[1] as string[],\n                targets: rest[2] as string[],\n                content: rest[3] as string,\n                draft: rest[4] as boolean,\n                scheduledAt: rest[5] as string,\n            };\n        }\n\n        const messageId = params.messageId;\n        const topics = params.topics;\n        const users = params.users;\n        const targets = params.targets;\n        const content = params.content;\n        const draft = params.draft;\n        const scheduledAt = params.scheduledAt;\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"messageId\"',\n            );\n        }\n        const apiPath = '/messaging/messages/sms/{messageId}'.replace(\n            '{messageId}',\n            encodeURIComponent(String(messageId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof topics !== 'undefined') {\n            apiPayload['topics'] = topics;\n        }\n        if (typeof users !== 'undefined') {\n            apiPayload['users'] = users;\n        }\n        if (typeof targets !== 'undefined') {\n            apiPayload['targets'] = targets;\n        }\n        if (typeof content !== 'undefined') {\n            apiPayload['content'] = content;\n        }\n        if (typeof draft !== 'undefined') {\n            apiPayload['draft'] = draft;\n        }\n        if (typeof scheduledAt !== 'undefined') {\n            apiPayload['scheduledAt'] = scheduledAt;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('patch', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Update an SMS message by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated.\n     *\n     *\n     * @param {string} params.messageId - Message ID.\n     * @param {string[]} params.topics - List of Topic IDs.\n     * @param {string[]} params.users - List of User IDs.\n     * @param {string[]} params.targets - List of Targets IDs.\n     * @param {string} params.content - Email Content.\n     * @param {boolean} params.draft - Is message a draft\n     * @param {string} params.scheduledAt - Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Message>}\n     */\n    updateSMS(params: {\n        messageId: string;\n        topics?: string[];\n        users?: string[];\n        targets?: string[];\n        content?: string;\n        draft?: boolean;\n        scheduledAt?: string;\n    }): Promise<Models.Message>;\n    /**\n     * Update an SMS message by its unique ID. This endpoint only works on messages that are in draft status. Messages that are already processing, sent, or failed cannot be updated.\n     *\n     *\n     * @param {string} messageId - Message ID.\n     * @param {string[]} topics - List of Topic IDs.\n     * @param {string[]} users - List of User IDs.\n     * @param {string[]} targets - List of Targets IDs.\n     * @param {string} content - Email Content.\n     * @param {boolean} draft - Is message a draft\n     * @param {string} scheduledAt - Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Message>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    updateSMS(\n        messageId: string,\n        topics?: string[],\n        users?: string[],\n        targets?: string[],\n        content?: string,\n        draft?: boolean,\n        scheduledAt?: string,\n    ): Promise<Models.Message>;\n    updateSMS(\n        paramsOrFirst:\n            | {\n                  messageId: string;\n                  topics?: string[];\n                  users?: string[];\n                  targets?: string[];\n                  content?: string;\n                  draft?: boolean;\n                  scheduledAt?: string;\n              }\n            | string,\n        ...rest: [string[]?, string[]?, string[]?, string?, boolean?, string?]\n    ): Promise<Models.Message> {\n        let params: {\n            messageId: string;\n            topics?: string[];\n            users?: string[];\n            targets?: string[];\n            content?: string;\n            draft?: boolean;\n            scheduledAt?: string;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                messageId: string;\n                topics?: string[];\n                users?: string[];\n                targets?: string[];\n                content?: string;\n                draft?: boolean;\n                scheduledAt?: string;\n            };\n        } else {\n            params = {\n                messageId: paramsOrFirst as string,\n                topics: rest[0] as string[],\n                users: rest[1] as string[],\n                targets: rest[2] as string[],\n                content: rest[3] as string,\n                draft: rest[4] as boolean,\n                scheduledAt: rest[5] as string,\n            };\n        }\n\n        const messageId = params.messageId;\n        const topics = params.topics;\n        const users = params.users;\n        const targets = params.targets;\n        const content = params.content;\n        const draft = params.draft;\n        const scheduledAt = params.scheduledAt;\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"messageId\"',\n            );\n        }\n        const apiPath = '/messaging/messages/sms/{messageId}'.replace(\n            '{messageId}',\n            encodeURIComponent(String(messageId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof topics !== 'undefined') {\n            apiPayload['topics'] = topics;\n        }\n        if (typeof users !== 'undefined') {\n            apiPayload['users'] = users;\n        }\n        if (typeof targets !== 'undefined') {\n            apiPayload['targets'] = targets;\n        }\n        if (typeof content !== 'undefined') {\n            apiPayload['content'] = content;\n        }\n        if (typeof draft !== 'undefined') {\n            apiPayload['draft'] = draft;\n        }\n        if (typeof scheduledAt !== 'undefined') {\n            apiPayload['scheduledAt'] = scheduledAt;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('patch', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Get a message by its unique ID.\n     *\n     *\n     * @param {string} params.messageId - Message ID.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Message>}\n     */\n    getMessage(params: { messageId: string }): Promise<Models.Message>;\n    /**\n     * Get a message by its unique ID.\n     *\n     *\n     * @param {string} messageId - Message ID.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Message>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    getMessage(messageId: string): Promise<Models.Message>;\n    getMessage(\n        paramsOrFirst: { messageId: string } | string,\n    ): Promise<Models.Message> {\n        let params: { messageId: string };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as { messageId: string };\n        } else {\n            params = {\n                messageId: paramsOrFirst as string,\n            };\n        }\n\n        const messageId = params.messageId;\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"messageId\"',\n            );\n        }\n        const apiPath = '/messaging/messages/{messageId}'.replace(\n            '{messageId}',\n            encodeURIComponent(String(messageId)),\n        );\n        const apiPayload: Payload = {};\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            accept: 'application/json',\n        };\n\n        return this.client.call('get', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Delete a message. If the message is not a draft or scheduled, but has been sent, this will not recall the message.\n     *\n     * @param {string} params.messageId - Message ID.\n     * @throws {AppwriteException}\n     * @returns {Promise<{}>}\n     */\n    delete(params: { messageId: string }): Promise<{}>;\n    /**\n     * Delete a message. If the message is not a draft or scheduled, but has been sent, this will not recall the message.\n     *\n     * @param {string} messageId - Message ID.\n     * @throws {AppwriteException}\n     * @returns {Promise<{}>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    delete(messageId: string): Promise<{}>;\n    delete(paramsOrFirst: { messageId: string } | string): Promise<{}> {\n        let params: { messageId: string };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as { messageId: string };\n        } else {\n            params = {\n                messageId: paramsOrFirst as string,\n            };\n        }\n\n        const messageId = params.messageId;\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"messageId\"',\n            );\n        }\n        const apiPath = '/messaging/messages/{messageId}'.replace(\n            '{messageId}',\n            encodeURIComponent(String(messageId)),\n        );\n        const apiPayload: Payload = {};\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n        };\n\n        return this.client.call('delete', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Get a list of the targets associated with a message.\n     *\n     * @param {string} params.messageId - Message ID.\n     * @param {string[]} params.queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType\n     * @param {boolean} params.total - When set to false, the total count returned will be 0 and will not be calculated.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.TargetList>}\n     */\n    listTargets(params: {\n        messageId: string;\n        queries?: string[];\n        total?: boolean;\n    }): Promise<Models.TargetList>;\n    /**\n     * Get a list of the targets associated with a message.\n     *\n     * @param {string} messageId - Message ID.\n     * @param {string[]} queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, providerId, identifier, providerType\n     * @param {boolean} total - When set to false, the total count returned will be 0 and will not be calculated.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.TargetList>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    listTargets(\n        messageId: string,\n        queries?: string[],\n        total?: boolean,\n    ): Promise<Models.TargetList>;\n    listTargets(\n        paramsOrFirst:\n            { messageId: string; queries?: string[]; total?: boolean } | string,\n        ...rest: [string[]?, boolean?]\n    ): Promise<Models.TargetList> {\n        let params: { messageId: string; queries?: string[]; total?: boolean };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                messageId: string;\n                queries?: string[];\n                total?: boolean;\n            };\n        } else {\n            params = {\n                messageId: paramsOrFirst as string,\n                queries: rest[0] as string[],\n                total: rest[1] as boolean,\n            };\n        }\n\n        const messageId = params.messageId;\n        const queries = params.queries;\n        const total = params.total;\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"messageId\"',\n            );\n        }\n        const apiPath = '/messaging/messages/{messageId}/targets'.replace(\n            '{messageId}',\n            encodeURIComponent(String(messageId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof queries !== 'undefined') {\n            apiPayload['queries'] = queries;\n        }\n        if (typeof total !== 'undefined') {\n            apiPayload['total'] = total;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            accept: 'application/json',\n        };\n\n        return this.client.call('get', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Get a list of all providers from the current Appwrite project.\n     *\n     * @param {string[]} params.queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled\n     * @param {string} params.search - Search term to filter your list results. Max length: 256 chars.\n     * @param {boolean} params.total - When set to false, the total count returned will be 0 and will not be calculated.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.ProviderList>}\n     */\n    listProviders(params?: {\n        queries?: string[];\n        search?: string;\n        total?: boolean;\n    }): Promise<Models.ProviderList>;\n    /**\n     * Get a list of all providers from the current Appwrite project.\n     *\n     * @param {string[]} queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, provider, type, enabled\n     * @param {string} search - Search term to filter your list results. Max length: 256 chars.\n     * @param {boolean} total - When set to false, the total count returned will be 0 and will not be calculated.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.ProviderList>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    listProviders(\n        queries?: string[],\n        search?: string,\n        total?: boolean,\n    ): Promise<Models.ProviderList>;\n    listProviders(\n        paramsOrFirst?:\n            { queries?: string[]; search?: string; total?: boolean } | string[],\n        ...rest: [string?, boolean?]\n    ): Promise<Models.ProviderList> {\n        let params: { queries?: string[]; search?: string; total?: boolean };\n\n        if (\n            !paramsOrFirst ||\n            (paramsOrFirst &&\n                typeof paramsOrFirst === 'object' &&\n                !Array.isArray(paramsOrFirst))\n        ) {\n            params = (paramsOrFirst || {}) as {\n                queries?: string[];\n                search?: string;\n                total?: boolean;\n            };\n        } else {\n            params = {\n                queries: paramsOrFirst as string[],\n                search: rest[0] as string,\n                total: rest[1] as boolean,\n            };\n        }\n\n        const queries = params.queries;\n        const search = params.search;\n        const total = params.total;\n        const apiPath = '/messaging/providers';\n        const apiPayload: Payload = {};\n        if (typeof queries !== 'undefined') {\n            apiPayload['queries'] = queries;\n        }\n        if (typeof search !== 'undefined') {\n            apiPayload['search'] = search;\n        }\n        if (typeof total !== 'undefined') {\n            apiPayload['total'] = total;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            accept: 'application/json',\n        };\n\n        return this.client.call('get', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Create a new Apple Push Notification service provider.\n     *\n     * @param {string} params.providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} params.name - Provider name.\n     * @param {string} params.authKey - APNS authentication key.\n     * @param {string} params.authKeyId - APNS authentication key ID.\n     * @param {string} params.teamId - APNS team ID.\n     * @param {string} params.bundleId - APNS bundle ID.\n     * @param {boolean} params.sandbox - Use APNS sandbox environment.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated This API has been deprecated since 1.8.0. Please use `Messaging.createAPNSProvider` instead.\n     */\n    createApnsProvider(params: {\n        providerId: string;\n        name: string;\n        authKey?: string;\n        authKeyId?: string;\n        teamId?: string;\n        bundleId?: string;\n        sandbox?: boolean;\n        enabled?: boolean;\n    }): Promise<Models.Provider>;\n    /**\n     * Create a new Apple Push Notification service provider.\n     *\n     * @param {string} providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} name - Provider name.\n     * @param {string} authKey - APNS authentication key.\n     * @param {string} authKeyId - APNS authentication key ID.\n     * @param {string} teamId - APNS team ID.\n     * @param {string} bundleId - APNS bundle ID.\n     * @param {boolean} sandbox - Use APNS sandbox environment.\n     * @param {boolean} enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    createApnsProvider(\n        providerId: string,\n        name: string,\n        authKey?: string,\n        authKeyId?: string,\n        teamId?: string,\n        bundleId?: string,\n        sandbox?: boolean,\n        enabled?: boolean,\n    ): Promise<Models.Provider>;\n    createApnsProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name: string;\n                  authKey?: string;\n                  authKeyId?: string;\n                  teamId?: string;\n                  bundleId?: string;\n                  sandbox?: boolean;\n                  enabled?: boolean;\n              }\n            | string,\n        ...rest: [\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n            boolean?,\n            boolean?,\n        ]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name: string;\n            authKey?: string;\n            authKeyId?: string;\n            teamId?: string;\n            bundleId?: string;\n            sandbox?: boolean;\n            enabled?: boolean;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name: string;\n                authKey?: string;\n                authKeyId?: string;\n                teamId?: string;\n                bundleId?: string;\n                sandbox?: boolean;\n                enabled?: boolean;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                authKey: rest[1] as string,\n                authKeyId: rest[2] as string,\n                teamId: rest[3] as string,\n                bundleId: rest[4] as string,\n                sandbox: rest[5] as boolean,\n                enabled: rest[6] as boolean,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const authKey = params.authKey;\n        const authKeyId = params.authKeyId;\n        const teamId = params.teamId;\n        const bundleId = params.bundleId;\n        const sandbox = params.sandbox;\n        const enabled = params.enabled;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n        const apiPath = '/messaging/providers/apns';\n        const apiPayload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            apiPayload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof authKey !== 'undefined') {\n            apiPayload['authKey'] = authKey;\n        }\n        if (typeof authKeyId !== 'undefined') {\n            apiPayload['authKeyId'] = authKeyId;\n        }\n        if (typeof teamId !== 'undefined') {\n            apiPayload['teamId'] = teamId;\n        }\n        if (typeof bundleId !== 'undefined') {\n            apiPayload['bundleId'] = bundleId;\n        }\n        if (typeof sandbox !== 'undefined') {\n            apiPayload['sandbox'] = sandbox;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('post', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Create a new Apple Push Notification service provider.\n     *\n     * @param {string} params.providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} params.name - Provider name.\n     * @param {string} params.authKey - APNS authentication key.\n     * @param {string} params.authKeyId - APNS authentication key ID.\n     * @param {string} params.teamId - APNS team ID.\n     * @param {string} params.bundleId - APNS bundle ID.\n     * @param {boolean} params.sandbox - Use APNS sandbox environment.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    createAPNSProvider(params: {\n        providerId: string;\n        name: string;\n        authKey?: string;\n        authKeyId?: string;\n        teamId?: string;\n        bundleId?: string;\n        sandbox?: boolean;\n        enabled?: boolean;\n    }): Promise<Models.Provider>;\n    /**\n     * Create a new Apple Push Notification service provider.\n     *\n     * @param {string} providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} name - Provider name.\n     * @param {string} authKey - APNS authentication key.\n     * @param {string} authKeyId - APNS authentication key ID.\n     * @param {string} teamId - APNS team ID.\n     * @param {string} bundleId - APNS bundle ID.\n     * @param {boolean} sandbox - Use APNS sandbox environment.\n     * @param {boolean} enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    createAPNSProvider(\n        providerId: string,\n        name: string,\n        authKey?: string,\n        authKeyId?: string,\n        teamId?: string,\n        bundleId?: string,\n        sandbox?: boolean,\n        enabled?: boolean,\n    ): Promise<Models.Provider>;\n    createAPNSProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name: string;\n                  authKey?: string;\n                  authKeyId?: string;\n                  teamId?: string;\n                  bundleId?: string;\n                  sandbox?: boolean;\n                  enabled?: boolean;\n              }\n            | string,\n        ...rest: [\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n            boolean?,\n            boolean?,\n        ]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name: string;\n            authKey?: string;\n            authKeyId?: string;\n            teamId?: string;\n            bundleId?: string;\n            sandbox?: boolean;\n            enabled?: boolean;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name: string;\n                authKey?: string;\n                authKeyId?: string;\n                teamId?: string;\n                bundleId?: string;\n                sandbox?: boolean;\n                enabled?: boolean;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                authKey: rest[1] as string,\n                authKeyId: rest[2] as string,\n                teamId: rest[3] as string,\n                bundleId: rest[4] as string,\n                sandbox: rest[5] as boolean,\n                enabled: rest[6] as boolean,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const authKey = params.authKey;\n        const authKeyId = params.authKeyId;\n        const teamId = params.teamId;\n        const bundleId = params.bundleId;\n        const sandbox = params.sandbox;\n        const enabled = params.enabled;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n        const apiPath = '/messaging/providers/apns';\n        const apiPayload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            apiPayload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof authKey !== 'undefined') {\n            apiPayload['authKey'] = authKey;\n        }\n        if (typeof authKeyId !== 'undefined') {\n            apiPayload['authKeyId'] = authKeyId;\n        }\n        if (typeof teamId !== 'undefined') {\n            apiPayload['teamId'] = teamId;\n        }\n        if (typeof bundleId !== 'undefined') {\n            apiPayload['bundleId'] = bundleId;\n        }\n        if (typeof sandbox !== 'undefined') {\n            apiPayload['sandbox'] = sandbox;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('post', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Update a Apple Push Notification service provider by its unique ID.\n     *\n     * @param {string} params.providerId - Provider ID.\n     * @param {string} params.name - Provider name.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @param {string} params.authKey - APNS authentication key.\n     * @param {string} params.authKeyId - APNS authentication key ID.\n     * @param {string} params.teamId - APNS team ID.\n     * @param {string} params.bundleId - APNS bundle ID.\n     * @param {boolean} params.sandbox - Use APNS sandbox environment.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated This API has been deprecated since 1.8.0. Please use `Messaging.updateAPNSProvider` instead.\n     */\n    updateApnsProvider(params: {\n        providerId: string;\n        name?: string;\n        enabled?: boolean;\n        authKey?: string;\n        authKeyId?: string;\n        teamId?: string;\n        bundleId?: string;\n        sandbox?: boolean;\n    }): Promise<Models.Provider>;\n    /**\n     * Update a Apple Push Notification service provider by its unique ID.\n     *\n     * @param {string} providerId - Provider ID.\n     * @param {string} name - Provider name.\n     * @param {boolean} enabled - Set as enabled.\n     * @param {string} authKey - APNS authentication key.\n     * @param {string} authKeyId - APNS authentication key ID.\n     * @param {string} teamId - APNS team ID.\n     * @param {string} bundleId - APNS bundle ID.\n     * @param {boolean} sandbox - Use APNS sandbox environment.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    updateApnsProvider(\n        providerId: string,\n        name?: string,\n        enabled?: boolean,\n        authKey?: string,\n        authKeyId?: string,\n        teamId?: string,\n        bundleId?: string,\n        sandbox?: boolean,\n    ): Promise<Models.Provider>;\n    updateApnsProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name?: string;\n                  enabled?: boolean;\n                  authKey?: string;\n                  authKeyId?: string;\n                  teamId?: string;\n                  bundleId?: string;\n                  sandbox?: boolean;\n              }\n            | string,\n        ...rest: [\n            string?,\n            boolean?,\n            string?,\n            string?,\n            string?,\n            string?,\n            boolean?,\n        ]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name?: string;\n            enabled?: boolean;\n            authKey?: string;\n            authKeyId?: string;\n            teamId?: string;\n            bundleId?: string;\n            sandbox?: boolean;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name?: string;\n                enabled?: boolean;\n                authKey?: string;\n                authKeyId?: string;\n                teamId?: string;\n                bundleId?: string;\n                sandbox?: boolean;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                enabled: rest[1] as boolean,\n                authKey: rest[2] as string,\n                authKeyId: rest[3] as string,\n                teamId: rest[4] as string,\n                bundleId: rest[5] as string,\n                sandbox: rest[6] as boolean,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const enabled = params.enabled;\n        const authKey = params.authKey;\n        const authKeyId = params.authKeyId;\n        const teamId = params.teamId;\n        const bundleId = params.bundleId;\n        const sandbox = params.sandbox;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        const apiPath = '/messaging/providers/apns/{providerId}'.replace(\n            '{providerId}',\n            encodeURIComponent(String(providerId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        if (typeof authKey !== 'undefined') {\n            apiPayload['authKey'] = authKey;\n        }\n        if (typeof authKeyId !== 'undefined') {\n            apiPayload['authKeyId'] = authKeyId;\n        }\n        if (typeof teamId !== 'undefined') {\n            apiPayload['teamId'] = teamId;\n        }\n        if (typeof bundleId !== 'undefined') {\n            apiPayload['bundleId'] = bundleId;\n        }\n        if (typeof sandbox !== 'undefined') {\n            apiPayload['sandbox'] = sandbox;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('patch', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Update a Apple Push Notification service provider by its unique ID.\n     *\n     * @param {string} params.providerId - Provider ID.\n     * @param {string} params.name - Provider name.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @param {string} params.authKey - APNS authentication key.\n     * @param {string} params.authKeyId - APNS authentication key ID.\n     * @param {string} params.teamId - APNS team ID.\n     * @param {string} params.bundleId - APNS bundle ID.\n     * @param {boolean} params.sandbox - Use APNS sandbox environment.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    updateAPNSProvider(params: {\n        providerId: string;\n        name?: string;\n        enabled?: boolean;\n        authKey?: string;\n        authKeyId?: string;\n        teamId?: string;\n        bundleId?: string;\n        sandbox?: boolean;\n    }): Promise<Models.Provider>;\n    /**\n     * Update a Apple Push Notification service provider by its unique ID.\n     *\n     * @param {string} providerId - Provider ID.\n     * @param {string} name - Provider name.\n     * @param {boolean} enabled - Set as enabled.\n     * @param {string} authKey - APNS authentication key.\n     * @param {string} authKeyId - APNS authentication key ID.\n     * @param {string} teamId - APNS team ID.\n     * @param {string} bundleId - APNS bundle ID.\n     * @param {boolean} sandbox - Use APNS sandbox environment.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    updateAPNSProvider(\n        providerId: string,\n        name?: string,\n        enabled?: boolean,\n        authKey?: string,\n        authKeyId?: string,\n        teamId?: string,\n        bundleId?: string,\n        sandbox?: boolean,\n    ): Promise<Models.Provider>;\n    updateAPNSProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name?: string;\n                  enabled?: boolean;\n                  authKey?: string;\n                  authKeyId?: string;\n                  teamId?: string;\n                  bundleId?: string;\n                  sandbox?: boolean;\n              }\n            | string,\n        ...rest: [\n            string?,\n            boolean?,\n            string?,\n            string?,\n            string?,\n            string?,\n            boolean?,\n        ]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name?: string;\n            enabled?: boolean;\n            authKey?: string;\n            authKeyId?: string;\n            teamId?: string;\n            bundleId?: string;\n            sandbox?: boolean;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name?: string;\n                enabled?: boolean;\n                authKey?: string;\n                authKeyId?: string;\n                teamId?: string;\n                bundleId?: string;\n                sandbox?: boolean;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                enabled: rest[1] as boolean,\n                authKey: rest[2] as string,\n                authKeyId: rest[3] as string,\n                teamId: rest[4] as string,\n                bundleId: rest[5] as string,\n                sandbox: rest[6] as boolean,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const enabled = params.enabled;\n        const authKey = params.authKey;\n        const authKeyId = params.authKeyId;\n        const teamId = params.teamId;\n        const bundleId = params.bundleId;\n        const sandbox = params.sandbox;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        const apiPath = '/messaging/providers/apns/{providerId}'.replace(\n            '{providerId}',\n            encodeURIComponent(String(providerId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        if (typeof authKey !== 'undefined') {\n            apiPayload['authKey'] = authKey;\n        }\n        if (typeof authKeyId !== 'undefined') {\n            apiPayload['authKeyId'] = authKeyId;\n        }\n        if (typeof teamId !== 'undefined') {\n            apiPayload['teamId'] = teamId;\n        }\n        if (typeof bundleId !== 'undefined') {\n            apiPayload['bundleId'] = bundleId;\n        }\n        if (typeof sandbox !== 'undefined') {\n            apiPayload['sandbox'] = sandbox;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('patch', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Create a new Firebase Cloud Messaging provider.\n     *\n     * @param {string} params.providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} params.name - Provider name.\n     * @param {object} params.serviceAccountJSON - FCM service account JSON.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated This API has been deprecated since 1.8.0. Please use `Messaging.createFCMProvider` instead.\n     */\n    createFcmProvider(params: {\n        providerId: string;\n        name: string;\n        serviceAccountJSON?: object;\n        enabled?: boolean;\n    }): Promise<Models.Provider>;\n    /**\n     * Create a new Firebase Cloud Messaging provider.\n     *\n     * @param {string} providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} name - Provider name.\n     * @param {object} serviceAccountJSON - FCM service account JSON.\n     * @param {boolean} enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    createFcmProvider(\n        providerId: string,\n        name: string,\n        serviceAccountJSON?: object,\n        enabled?: boolean,\n    ): Promise<Models.Provider>;\n    createFcmProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name: string;\n                  serviceAccountJSON?: object;\n                  enabled?: boolean;\n              }\n            | string,\n        ...rest: [string?, object?, boolean?]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name: string;\n            serviceAccountJSON?: object;\n            enabled?: boolean;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name: string;\n                serviceAccountJSON?: object;\n                enabled?: boolean;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                serviceAccountJSON: rest[1] as object,\n                enabled: rest[2] as boolean,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const serviceAccountJSON = params.serviceAccountJSON;\n        const enabled = params.enabled;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n        const apiPath = '/messaging/providers/fcm';\n        const apiPayload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            apiPayload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof serviceAccountJSON !== 'undefined') {\n            apiPayload['serviceAccountJSON'] = serviceAccountJSON;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('post', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Create a new Firebase Cloud Messaging provider.\n     *\n     * @param {string} params.providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} params.name - Provider name.\n     * @param {object} params.serviceAccountJSON - FCM service account JSON.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    createFCMProvider(params: {\n        providerId: string;\n        name: string;\n        serviceAccountJSON?: object;\n        enabled?: boolean;\n    }): Promise<Models.Provider>;\n    /**\n     * Create a new Firebase Cloud Messaging provider.\n     *\n     * @param {string} providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} name - Provider name.\n     * @param {object} serviceAccountJSON - FCM service account JSON.\n     * @param {boolean} enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    createFCMProvider(\n        providerId: string,\n        name: string,\n        serviceAccountJSON?: object,\n        enabled?: boolean,\n    ): Promise<Models.Provider>;\n    createFCMProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name: string;\n                  serviceAccountJSON?: object;\n                  enabled?: boolean;\n              }\n            | string,\n        ...rest: [string?, object?, boolean?]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name: string;\n            serviceAccountJSON?: object;\n            enabled?: boolean;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name: string;\n                serviceAccountJSON?: object;\n                enabled?: boolean;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                serviceAccountJSON: rest[1] as object,\n                enabled: rest[2] as boolean,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const serviceAccountJSON = params.serviceAccountJSON;\n        const enabled = params.enabled;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n        const apiPath = '/messaging/providers/fcm';\n        const apiPayload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            apiPayload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof serviceAccountJSON !== 'undefined') {\n            apiPayload['serviceAccountJSON'] = serviceAccountJSON;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('post', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Update a Firebase Cloud Messaging provider by its unique ID.\n     *\n     * @param {string} params.providerId - Provider ID.\n     * @param {string} params.name - Provider name.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @param {object} params.serviceAccountJSON - FCM service account JSON.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated This API has been deprecated since 1.8.0. Please use `Messaging.updateFCMProvider` instead.\n     */\n    updateFcmProvider(params: {\n        providerId: string;\n        name?: string;\n        enabled?: boolean;\n        serviceAccountJSON?: object;\n    }): Promise<Models.Provider>;\n    /**\n     * Update a Firebase Cloud Messaging provider by its unique ID.\n     *\n     * @param {string} providerId - Provider ID.\n     * @param {string} name - Provider name.\n     * @param {boolean} enabled - Set as enabled.\n     * @param {object} serviceAccountJSON - FCM service account JSON.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    updateFcmProvider(\n        providerId: string,\n        name?: string,\n        enabled?: boolean,\n        serviceAccountJSON?: object,\n    ): Promise<Models.Provider>;\n    updateFcmProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name?: string;\n                  enabled?: boolean;\n                  serviceAccountJSON?: object;\n              }\n            | string,\n        ...rest: [string?, boolean?, object?]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name?: string;\n            enabled?: boolean;\n            serviceAccountJSON?: object;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name?: string;\n                enabled?: boolean;\n                serviceAccountJSON?: object;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                enabled: rest[1] as boolean,\n                serviceAccountJSON: rest[2] as object,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const enabled = params.enabled;\n        const serviceAccountJSON = params.serviceAccountJSON;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        const apiPath = '/messaging/providers/fcm/{providerId}'.replace(\n            '{providerId}',\n            encodeURIComponent(String(providerId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        if (typeof serviceAccountJSON !== 'undefined') {\n            apiPayload['serviceAccountJSON'] = serviceAccountJSON;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('patch', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Update a Firebase Cloud Messaging provider by its unique ID.\n     *\n     * @param {string} params.providerId - Provider ID.\n     * @param {string} params.name - Provider name.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @param {object} params.serviceAccountJSON - FCM service account JSON.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    updateFCMProvider(params: {\n        providerId: string;\n        name?: string;\n        enabled?: boolean;\n        serviceAccountJSON?: object;\n    }): Promise<Models.Provider>;\n    /**\n     * Update a Firebase Cloud Messaging provider by its unique ID.\n     *\n     * @param {string} providerId - Provider ID.\n     * @param {string} name - Provider name.\n     * @param {boolean} enabled - Set as enabled.\n     * @param {object} serviceAccountJSON - FCM service account JSON.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    updateFCMProvider(\n        providerId: string,\n        name?: string,\n        enabled?: boolean,\n        serviceAccountJSON?: object,\n    ): Promise<Models.Provider>;\n    updateFCMProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name?: string;\n                  enabled?: boolean;\n                  serviceAccountJSON?: object;\n              }\n            | string,\n        ...rest: [string?, boolean?, object?]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name?: string;\n            enabled?: boolean;\n            serviceAccountJSON?: object;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name?: string;\n                enabled?: boolean;\n                serviceAccountJSON?: object;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                enabled: rest[1] as boolean,\n                serviceAccountJSON: rest[2] as object,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const enabled = params.enabled;\n        const serviceAccountJSON = params.serviceAccountJSON;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        const apiPath = '/messaging/providers/fcm/{providerId}'.replace(\n            '{providerId}',\n            encodeURIComponent(String(providerId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        if (typeof serviceAccountJSON !== 'undefined') {\n            apiPayload['serviceAccountJSON'] = serviceAccountJSON;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('patch', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Create a new Mailgun provider.\n     *\n     * @param {string} params.providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} params.name - Provider name.\n     * @param {string} params.apiKey - Mailgun API Key.\n     * @param {string} params.domain - Mailgun Domain.\n     * @param {boolean} params.isEuRegion - Set as EU region.\n     * @param {string} params.fromName - Sender Name.\n     * @param {string} params.fromEmail - Sender email address.\n     * @param {string} params.replyToName - Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.\n     * @param {string} params.replyToEmail - Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    createMailgunProvider(params: {\n        providerId: string;\n        name: string;\n        apiKey?: string;\n        domain?: string;\n        isEuRegion?: boolean;\n        fromName?: string;\n        fromEmail?: string;\n        replyToName?: string;\n        replyToEmail?: string;\n        enabled?: boolean;\n    }): Promise<Models.Provider>;\n    /**\n     * Create a new Mailgun provider.\n     *\n     * @param {string} providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} name - Provider name.\n     * @param {string} apiKey - Mailgun API Key.\n     * @param {string} domain - Mailgun Domain.\n     * @param {boolean} isEuRegion - Set as EU region.\n     * @param {string} fromName - Sender Name.\n     * @param {string} fromEmail - Sender email address.\n     * @param {string} replyToName - Name set in the reply to field for the mail. Default value is sender name. Reply to name must have reply to email as well.\n     * @param {string} replyToEmail - Email set in the reply to field for the mail. Default value is sender email. Reply to email must have reply to name as well.\n     * @param {boolean} enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    createMailgunProvider(\n        providerId: string,\n        name: string,\n        apiKey?: string,\n        domain?: string,\n        isEuRegion?: boolean,\n        fromName?: string,\n        fromEmail?: string,\n        replyToName?: string,\n        replyToEmail?: string,\n        enabled?: boolean,\n    ): Promise<Models.Provider>;\n    createMailgunProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name: string;\n                  apiKey?: string;\n                  domain?: string;\n                  isEuRegion?: boolean;\n                  fromName?: string;\n                  fromEmail?: string;\n                  replyToName?: string;\n                  replyToEmail?: string;\n                  enabled?: boolean;\n              }\n            | string,\n        ...rest: [\n            string?,\n            string?,\n            string?,\n            boolean?,\n            string?,\n            string?,\n            string?,\n            string?,\n            boolean?,\n        ]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name: string;\n            apiKey?: string;\n            domain?: string;\n            isEuRegion?: boolean;\n            fromName?: string;\n            fromEmail?: string;\n            replyToName?: string;\n            replyToEmail?: string;\n            enabled?: boolean;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name: string;\n                apiKey?: string;\n                domain?: string;\n                isEuRegion?: boolean;\n                fromName?: string;\n                fromEmail?: string;\n                replyToName?: string;\n                replyToEmail?: string;\n                enabled?: boolean;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                apiKey: rest[1] as string,\n                domain: rest[2] as string,\n                isEuRegion: rest[3] as boolean,\n                fromName: rest[4] as string,\n                fromEmail: rest[5] as string,\n                replyToName: rest[6] as string,\n                replyToEmail: rest[7] as string,\n                enabled: rest[8] as boolean,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const apiKey = params.apiKey;\n        const domain = params.domain;\n        const isEuRegion = params.isEuRegion;\n        const fromName = params.fromName;\n        const fromEmail = params.fromEmail;\n        const replyToName = params.replyToName;\n        const replyToEmail = params.replyToEmail;\n        const enabled = params.enabled;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n        const apiPath = '/messaging/providers/mailgun';\n        const apiPayload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            apiPayload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof apiKey !== 'undefined') {\n            apiPayload['apiKey'] = apiKey;\n        }\n        if (typeof domain !== 'undefined') {\n            apiPayload['domain'] = domain;\n        }\n        if (typeof isEuRegion !== 'undefined') {\n            apiPayload['isEuRegion'] = isEuRegion;\n        }\n        if (typeof fromName !== 'undefined') {\n            apiPayload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            apiPayload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            apiPayload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            apiPayload['replyToEmail'] = replyToEmail;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('post', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Update a Mailgun provider by its unique ID.\n     *\n     * @param {string} params.providerId - Provider ID.\n     * @param {string} params.name - Provider name.\n     * @param {string} params.apiKey - Mailgun API Key.\n     * @param {string} params.domain - Mailgun Domain.\n     * @param {boolean} params.isEuRegion - Set as EU region.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @param {string} params.fromName - Sender Name.\n     * @param {string} params.fromEmail - Sender email address.\n     * @param {string} params.replyToName - Name set in the reply to field for the mail. Default value is sender name.\n     * @param {string} params.replyToEmail - Email set in the reply to field for the mail. Default value is sender email.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    updateMailgunProvider(params: {\n        providerId: string;\n        name?: string;\n        apiKey?: string;\n        domain?: string;\n        isEuRegion?: boolean;\n        enabled?: boolean;\n        fromName?: string;\n        fromEmail?: string;\n        replyToName?: string;\n        replyToEmail?: string;\n    }): Promise<Models.Provider>;\n    /**\n     * Update a Mailgun provider by its unique ID.\n     *\n     * @param {string} providerId - Provider ID.\n     * @param {string} name - Provider name.\n     * @param {string} apiKey - Mailgun API Key.\n     * @param {string} domain - Mailgun Domain.\n     * @param {boolean} isEuRegion - Set as EU region.\n     * @param {boolean} enabled - Set as enabled.\n     * @param {string} fromName - Sender Name.\n     * @param {string} fromEmail - Sender email address.\n     * @param {string} replyToName - Name set in the reply to field for the mail. Default value is sender name.\n     * @param {string} replyToEmail - Email set in the reply to field for the mail. Default value is sender email.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    updateMailgunProvider(\n        providerId: string,\n        name?: string,\n        apiKey?: string,\n        domain?: string,\n        isEuRegion?: boolean,\n        enabled?: boolean,\n        fromName?: string,\n        fromEmail?: string,\n        replyToName?: string,\n        replyToEmail?: string,\n    ): Promise<Models.Provider>;\n    updateMailgunProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name?: string;\n                  apiKey?: string;\n                  domain?: string;\n                  isEuRegion?: boolean;\n                  enabled?: boolean;\n                  fromName?: string;\n                  fromEmail?: string;\n                  replyToName?: string;\n                  replyToEmail?: string;\n              }\n            | string,\n        ...rest: [\n            string?,\n            string?,\n            string?,\n            boolean?,\n            boolean?,\n            string?,\n            string?,\n            string?,\n            string?,\n        ]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name?: string;\n            apiKey?: string;\n            domain?: string;\n            isEuRegion?: boolean;\n            enabled?: boolean;\n            fromName?: string;\n            fromEmail?: string;\n            replyToName?: string;\n            replyToEmail?: string;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name?: string;\n                apiKey?: string;\n                domain?: string;\n                isEuRegion?: boolean;\n                enabled?: boolean;\n                fromName?: string;\n                fromEmail?: string;\n                replyToName?: string;\n                replyToEmail?: string;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                apiKey: rest[1] as string,\n                domain: rest[2] as string,\n                isEuRegion: rest[3] as boolean,\n                enabled: rest[4] as boolean,\n                fromName: rest[5] as string,\n                fromEmail: rest[6] as string,\n                replyToName: rest[7] as string,\n                replyToEmail: rest[8] as string,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const apiKey = params.apiKey;\n        const domain = params.domain;\n        const isEuRegion = params.isEuRegion;\n        const enabled = params.enabled;\n        const fromName = params.fromName;\n        const fromEmail = params.fromEmail;\n        const replyToName = params.replyToName;\n        const replyToEmail = params.replyToEmail;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        const apiPath = '/messaging/providers/mailgun/{providerId}'.replace(\n            '{providerId}',\n            encodeURIComponent(String(providerId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof apiKey !== 'undefined') {\n            apiPayload['apiKey'] = apiKey;\n        }\n        if (typeof domain !== 'undefined') {\n            apiPayload['domain'] = domain;\n        }\n        if (typeof isEuRegion !== 'undefined') {\n            apiPayload['isEuRegion'] = isEuRegion;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        if (typeof fromName !== 'undefined') {\n            apiPayload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            apiPayload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            apiPayload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            apiPayload['replyToEmail'] = replyToEmail;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('patch', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Create a new MSG91 provider.\n     *\n     * @param {string} params.providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} params.name - Provider name.\n     * @param {string} params.templateId - Msg91 template ID\n     * @param {string} params.senderId - Msg91 sender ID.\n     * @param {string} params.authKey - Msg91 auth key.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    createMsg91Provider(params: {\n        providerId: string;\n        name: string;\n        templateId?: string;\n        senderId?: string;\n        authKey?: string;\n        enabled?: boolean;\n    }): Promise<Models.Provider>;\n    /**\n     * Create a new MSG91 provider.\n     *\n     * @param {string} providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} name - Provider name.\n     * @param {string} templateId - Msg91 template ID\n     * @param {string} senderId - Msg91 sender ID.\n     * @param {string} authKey - Msg91 auth key.\n     * @param {boolean} enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    createMsg91Provider(\n        providerId: string,\n        name: string,\n        templateId?: string,\n        senderId?: string,\n        authKey?: string,\n        enabled?: boolean,\n    ): Promise<Models.Provider>;\n    createMsg91Provider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name: string;\n                  templateId?: string;\n                  senderId?: string;\n                  authKey?: string;\n                  enabled?: boolean;\n              }\n            | string,\n        ...rest: [string?, string?, string?, string?, boolean?]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name: string;\n            templateId?: string;\n            senderId?: string;\n            authKey?: string;\n            enabled?: boolean;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name: string;\n                templateId?: string;\n                senderId?: string;\n                authKey?: string;\n                enabled?: boolean;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                templateId: rest[1] as string,\n                senderId: rest[2] as string,\n                authKey: rest[3] as string,\n                enabled: rest[4] as boolean,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const templateId = params.templateId;\n        const senderId = params.senderId;\n        const authKey = params.authKey;\n        const enabled = params.enabled;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n        const apiPath = '/messaging/providers/msg91';\n        const apiPayload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            apiPayload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof templateId !== 'undefined') {\n            apiPayload['templateId'] = templateId;\n        }\n        if (typeof senderId !== 'undefined') {\n            apiPayload['senderId'] = senderId;\n        }\n        if (typeof authKey !== 'undefined') {\n            apiPayload['authKey'] = authKey;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('post', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Update a MSG91 provider by its unique ID.\n     *\n     * @param {string} params.providerId - Provider ID.\n     * @param {string} params.name - Provider name.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @param {string} params.templateId - Msg91 template ID.\n     * @param {string} params.senderId - Msg91 sender ID.\n     * @param {string} params.authKey - Msg91 auth key.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    updateMsg91Provider(params: {\n        providerId: string;\n        name?: string;\n        enabled?: boolean;\n        templateId?: string;\n        senderId?: string;\n        authKey?: string;\n    }): Promise<Models.Provider>;\n    /**\n     * Update a MSG91 provider by its unique ID.\n     *\n     * @param {string} providerId - Provider ID.\n     * @param {string} name - Provider name.\n     * @param {boolean} enabled - Set as enabled.\n     * @param {string} templateId - Msg91 template ID.\n     * @param {string} senderId - Msg91 sender ID.\n     * @param {string} authKey - Msg91 auth key.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    updateMsg91Provider(\n        providerId: string,\n        name?: string,\n        enabled?: boolean,\n        templateId?: string,\n        senderId?: string,\n        authKey?: string,\n    ): Promise<Models.Provider>;\n    updateMsg91Provider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name?: string;\n                  enabled?: boolean;\n                  templateId?: string;\n                  senderId?: string;\n                  authKey?: string;\n              }\n            | string,\n        ...rest: [string?, boolean?, string?, string?, string?]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name?: string;\n            enabled?: boolean;\n            templateId?: string;\n            senderId?: string;\n            authKey?: string;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name?: string;\n                enabled?: boolean;\n                templateId?: string;\n                senderId?: string;\n                authKey?: string;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                enabled: rest[1] as boolean,\n                templateId: rest[2] as string,\n                senderId: rest[3] as string,\n                authKey: rest[4] as string,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const enabled = params.enabled;\n        const templateId = params.templateId;\n        const senderId = params.senderId;\n        const authKey = params.authKey;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        const apiPath = '/messaging/providers/msg91/{providerId}'.replace(\n            '{providerId}',\n            encodeURIComponent(String(providerId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        if (typeof templateId !== 'undefined') {\n            apiPayload['templateId'] = templateId;\n        }\n        if (typeof senderId !== 'undefined') {\n            apiPayload['senderId'] = senderId;\n        }\n        if (typeof authKey !== 'undefined') {\n            apiPayload['authKey'] = authKey;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('patch', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Create a new Resend provider.\n     *\n     * @param {string} params.providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} params.name - Provider name.\n     * @param {string} params.apiKey - Resend API key.\n     * @param {string} params.fromName - Sender Name.\n     * @param {string} params.fromEmail - Sender email address.\n     * @param {string} params.replyToName - Name set in the reply to field for the mail. Default value is sender name.\n     * @param {string} params.replyToEmail - Email set in the reply to field for the mail. Default value is sender email.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    createResendProvider(params: {\n        providerId: string;\n        name: string;\n        apiKey?: string;\n        fromName?: string;\n        fromEmail?: string;\n        replyToName?: string;\n        replyToEmail?: string;\n        enabled?: boolean;\n    }): Promise<Models.Provider>;\n    /**\n     * Create a new Resend provider.\n     *\n     * @param {string} providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} name - Provider name.\n     * @param {string} apiKey - Resend API key.\n     * @param {string} fromName - Sender Name.\n     * @param {string} fromEmail - Sender email address.\n     * @param {string} replyToName - Name set in the reply to field for the mail. Default value is sender name.\n     * @param {string} replyToEmail - Email set in the reply to field for the mail. Default value is sender email.\n     * @param {boolean} enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    createResendProvider(\n        providerId: string,\n        name: string,\n        apiKey?: string,\n        fromName?: string,\n        fromEmail?: string,\n        replyToName?: string,\n        replyToEmail?: string,\n        enabled?: boolean,\n    ): Promise<Models.Provider>;\n    createResendProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name: string;\n                  apiKey?: string;\n                  fromName?: string;\n                  fromEmail?: string;\n                  replyToName?: string;\n                  replyToEmail?: string;\n                  enabled?: boolean;\n              }\n            | string,\n        ...rest: [\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n            boolean?,\n        ]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name: string;\n            apiKey?: string;\n            fromName?: string;\n            fromEmail?: string;\n            replyToName?: string;\n            replyToEmail?: string;\n            enabled?: boolean;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name: string;\n                apiKey?: string;\n                fromName?: string;\n                fromEmail?: string;\n                replyToName?: string;\n                replyToEmail?: string;\n                enabled?: boolean;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                apiKey: rest[1] as string,\n                fromName: rest[2] as string,\n                fromEmail: rest[3] as string,\n                replyToName: rest[4] as string,\n                replyToEmail: rest[5] as string,\n                enabled: rest[6] as boolean,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const apiKey = params.apiKey;\n        const fromName = params.fromName;\n        const fromEmail = params.fromEmail;\n        const replyToName = params.replyToName;\n        const replyToEmail = params.replyToEmail;\n        const enabled = params.enabled;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n        const apiPath = '/messaging/providers/resend';\n        const apiPayload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            apiPayload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof apiKey !== 'undefined') {\n            apiPayload['apiKey'] = apiKey;\n        }\n        if (typeof fromName !== 'undefined') {\n            apiPayload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            apiPayload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            apiPayload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            apiPayload['replyToEmail'] = replyToEmail;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('post', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Update a Resend provider by its unique ID.\n     *\n     * @param {string} params.providerId - Provider ID.\n     * @param {string} params.name - Provider name.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @param {string} params.apiKey - Resend API key.\n     * @param {string} params.fromName - Sender Name.\n     * @param {string} params.fromEmail - Sender email address.\n     * @param {string} params.replyToName - Name set in the Reply To field for the mail. Default value is Sender Name.\n     * @param {string} params.replyToEmail - Email set in the Reply To field for the mail. Default value is Sender Email.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    updateResendProvider(params: {\n        providerId: string;\n        name?: string;\n        enabled?: boolean;\n        apiKey?: string;\n        fromName?: string;\n        fromEmail?: string;\n        replyToName?: string;\n        replyToEmail?: string;\n    }): Promise<Models.Provider>;\n    /**\n     * Update a Resend provider by its unique ID.\n     *\n     * @param {string} providerId - Provider ID.\n     * @param {string} name - Provider name.\n     * @param {boolean} enabled - Set as enabled.\n     * @param {string} apiKey - Resend API key.\n     * @param {string} fromName - Sender Name.\n     * @param {string} fromEmail - Sender email address.\n     * @param {string} replyToName - Name set in the Reply To field for the mail. Default value is Sender Name.\n     * @param {string} replyToEmail - Email set in the Reply To field for the mail. Default value is Sender Email.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    updateResendProvider(\n        providerId: string,\n        name?: string,\n        enabled?: boolean,\n        apiKey?: string,\n        fromName?: string,\n        fromEmail?: string,\n        replyToName?: string,\n        replyToEmail?: string,\n    ): Promise<Models.Provider>;\n    updateResendProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name?: string;\n                  enabled?: boolean;\n                  apiKey?: string;\n                  fromName?: string;\n                  fromEmail?: string;\n                  replyToName?: string;\n                  replyToEmail?: string;\n              }\n            | string,\n        ...rest: [\n            string?,\n            boolean?,\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n        ]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name?: string;\n            enabled?: boolean;\n            apiKey?: string;\n            fromName?: string;\n            fromEmail?: string;\n            replyToName?: string;\n            replyToEmail?: string;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name?: string;\n                enabled?: boolean;\n                apiKey?: string;\n                fromName?: string;\n                fromEmail?: string;\n                replyToName?: string;\n                replyToEmail?: string;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                enabled: rest[1] as boolean,\n                apiKey: rest[2] as string,\n                fromName: rest[3] as string,\n                fromEmail: rest[4] as string,\n                replyToName: rest[5] as string,\n                replyToEmail: rest[6] as string,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const enabled = params.enabled;\n        const apiKey = params.apiKey;\n        const fromName = params.fromName;\n        const fromEmail = params.fromEmail;\n        const replyToName = params.replyToName;\n        const replyToEmail = params.replyToEmail;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        const apiPath = '/messaging/providers/resend/{providerId}'.replace(\n            '{providerId}',\n            encodeURIComponent(String(providerId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        if (typeof apiKey !== 'undefined') {\n            apiPayload['apiKey'] = apiKey;\n        }\n        if (typeof fromName !== 'undefined') {\n            apiPayload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            apiPayload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            apiPayload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            apiPayload['replyToEmail'] = replyToEmail;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('patch', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Create a new Sendgrid provider.\n     *\n     * @param {string} params.providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} params.name - Provider name.\n     * @param {string} params.apiKey - Sendgrid API key.\n     * @param {string} params.fromName - Sender Name.\n     * @param {string} params.fromEmail - Sender email address.\n     * @param {string} params.replyToName - Name set in the reply to field for the mail. Default value is sender name.\n     * @param {string} params.replyToEmail - Email set in the reply to field for the mail. Default value is sender email.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    createSendgridProvider(params: {\n        providerId: string;\n        name: string;\n        apiKey?: string;\n        fromName?: string;\n        fromEmail?: string;\n        replyToName?: string;\n        replyToEmail?: string;\n        enabled?: boolean;\n    }): Promise<Models.Provider>;\n    /**\n     * Create a new Sendgrid provider.\n     *\n     * @param {string} providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} name - Provider name.\n     * @param {string} apiKey - Sendgrid API key.\n     * @param {string} fromName - Sender Name.\n     * @param {string} fromEmail - Sender email address.\n     * @param {string} replyToName - Name set in the reply to field for the mail. Default value is sender name.\n     * @param {string} replyToEmail - Email set in the reply to field for the mail. Default value is sender email.\n     * @param {boolean} enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    createSendgridProvider(\n        providerId: string,\n        name: string,\n        apiKey?: string,\n        fromName?: string,\n        fromEmail?: string,\n        replyToName?: string,\n        replyToEmail?: string,\n        enabled?: boolean,\n    ): Promise<Models.Provider>;\n    createSendgridProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name: string;\n                  apiKey?: string;\n                  fromName?: string;\n                  fromEmail?: string;\n                  replyToName?: string;\n                  replyToEmail?: string;\n                  enabled?: boolean;\n              }\n            | string,\n        ...rest: [\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n            boolean?,\n        ]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name: string;\n            apiKey?: string;\n            fromName?: string;\n            fromEmail?: string;\n            replyToName?: string;\n            replyToEmail?: string;\n            enabled?: boolean;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name: string;\n                apiKey?: string;\n                fromName?: string;\n                fromEmail?: string;\n                replyToName?: string;\n                replyToEmail?: string;\n                enabled?: boolean;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                apiKey: rest[1] as string,\n                fromName: rest[2] as string,\n                fromEmail: rest[3] as string,\n                replyToName: rest[4] as string,\n                replyToEmail: rest[5] as string,\n                enabled: rest[6] as boolean,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const apiKey = params.apiKey;\n        const fromName = params.fromName;\n        const fromEmail = params.fromEmail;\n        const replyToName = params.replyToName;\n        const replyToEmail = params.replyToEmail;\n        const enabled = params.enabled;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n        const apiPath = '/messaging/providers/sendgrid';\n        const apiPayload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            apiPayload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof apiKey !== 'undefined') {\n            apiPayload['apiKey'] = apiKey;\n        }\n        if (typeof fromName !== 'undefined') {\n            apiPayload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            apiPayload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            apiPayload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            apiPayload['replyToEmail'] = replyToEmail;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('post', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Update a Sendgrid provider by its unique ID.\n     *\n     * @param {string} params.providerId - Provider ID.\n     * @param {string} params.name - Provider name.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @param {string} params.apiKey - Sendgrid API key.\n     * @param {string} params.fromName - Sender Name.\n     * @param {string} params.fromEmail - Sender email address.\n     * @param {string} params.replyToName - Name set in the Reply To field for the mail. Default value is Sender Name.\n     * @param {string} params.replyToEmail - Email set in the Reply To field for the mail. Default value is Sender Email.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    updateSendgridProvider(params: {\n        providerId: string;\n        name?: string;\n        enabled?: boolean;\n        apiKey?: string;\n        fromName?: string;\n        fromEmail?: string;\n        replyToName?: string;\n        replyToEmail?: string;\n    }): Promise<Models.Provider>;\n    /**\n     * Update a Sendgrid provider by its unique ID.\n     *\n     * @param {string} providerId - Provider ID.\n     * @param {string} name - Provider name.\n     * @param {boolean} enabled - Set as enabled.\n     * @param {string} apiKey - Sendgrid API key.\n     * @param {string} fromName - Sender Name.\n     * @param {string} fromEmail - Sender email address.\n     * @param {string} replyToName - Name set in the Reply To field for the mail. Default value is Sender Name.\n     * @param {string} replyToEmail - Email set in the Reply To field for the mail. Default value is Sender Email.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    updateSendgridProvider(\n        providerId: string,\n        name?: string,\n        enabled?: boolean,\n        apiKey?: string,\n        fromName?: string,\n        fromEmail?: string,\n        replyToName?: string,\n        replyToEmail?: string,\n    ): Promise<Models.Provider>;\n    updateSendgridProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name?: string;\n                  enabled?: boolean;\n                  apiKey?: string;\n                  fromName?: string;\n                  fromEmail?: string;\n                  replyToName?: string;\n                  replyToEmail?: string;\n              }\n            | string,\n        ...rest: [\n            string?,\n            boolean?,\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n        ]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name?: string;\n            enabled?: boolean;\n            apiKey?: string;\n            fromName?: string;\n            fromEmail?: string;\n            replyToName?: string;\n            replyToEmail?: string;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name?: string;\n                enabled?: boolean;\n                apiKey?: string;\n                fromName?: string;\n                fromEmail?: string;\n                replyToName?: string;\n                replyToEmail?: string;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                enabled: rest[1] as boolean,\n                apiKey: rest[2] as string,\n                fromName: rest[3] as string,\n                fromEmail: rest[4] as string,\n                replyToName: rest[5] as string,\n                replyToEmail: rest[6] as string,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const enabled = params.enabled;\n        const apiKey = params.apiKey;\n        const fromName = params.fromName;\n        const fromEmail = params.fromEmail;\n        const replyToName = params.replyToName;\n        const replyToEmail = params.replyToEmail;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        const apiPath = '/messaging/providers/sendgrid/{providerId}'.replace(\n            '{providerId}',\n            encodeURIComponent(String(providerId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        if (typeof apiKey !== 'undefined') {\n            apiPayload['apiKey'] = apiKey;\n        }\n        if (typeof fromName !== 'undefined') {\n            apiPayload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            apiPayload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            apiPayload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            apiPayload['replyToEmail'] = replyToEmail;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('patch', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Create a new Amazon SES provider.\n     *\n     * @param {string} params.providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} params.name - Provider name.\n     * @param {string} params.accessKey - AWS access key ID.\n     * @param {string} params.secretKey - AWS secret access key.\n     * @param {string} params.region - AWS region, for example us-east-1.\n     * @param {string} params.fromName - Sender Name.\n     * @param {string} params.fromEmail - Sender email address.\n     * @param {string} params.replyToName - Name set in the reply to field for the mail. Default value is sender name.\n     * @param {string} params.replyToEmail - Email set in the reply to field for the mail. Default value is sender email.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    createSesProvider(params: {\n        providerId: string;\n        name: string;\n        accessKey?: string;\n        secretKey?: string;\n        region?: string;\n        fromName?: string;\n        fromEmail?: string;\n        replyToName?: string;\n        replyToEmail?: string;\n        enabled?: boolean;\n    }): Promise<Models.Provider>;\n    /**\n     * Create a new Amazon SES provider.\n     *\n     * @param {string} providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} name - Provider name.\n     * @param {string} accessKey - AWS access key ID.\n     * @param {string} secretKey - AWS secret access key.\n     * @param {string} region - AWS region, for example us-east-1.\n     * @param {string} fromName - Sender Name.\n     * @param {string} fromEmail - Sender email address.\n     * @param {string} replyToName - Name set in the reply to field for the mail. Default value is sender name.\n     * @param {string} replyToEmail - Email set in the reply to field for the mail. Default value is sender email.\n     * @param {boolean} enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    createSesProvider(\n        providerId: string,\n        name: string,\n        accessKey?: string,\n        secretKey?: string,\n        region?: string,\n        fromName?: string,\n        fromEmail?: string,\n        replyToName?: string,\n        replyToEmail?: string,\n        enabled?: boolean,\n    ): Promise<Models.Provider>;\n    createSesProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name: string;\n                  accessKey?: string;\n                  secretKey?: string;\n                  region?: string;\n                  fromName?: string;\n                  fromEmail?: string;\n                  replyToName?: string;\n                  replyToEmail?: string;\n                  enabled?: boolean;\n              }\n            | string,\n        ...rest: [\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n            boolean?,\n        ]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name: string;\n            accessKey?: string;\n            secretKey?: string;\n            region?: string;\n            fromName?: string;\n            fromEmail?: string;\n            replyToName?: string;\n            replyToEmail?: string;\n            enabled?: boolean;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name: string;\n                accessKey?: string;\n                secretKey?: string;\n                region?: string;\n                fromName?: string;\n                fromEmail?: string;\n                replyToName?: string;\n                replyToEmail?: string;\n                enabled?: boolean;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                accessKey: rest[1] as string,\n                secretKey: rest[2] as string,\n                region: rest[3] as string,\n                fromName: rest[4] as string,\n                fromEmail: rest[5] as string,\n                replyToName: rest[6] as string,\n                replyToEmail: rest[7] as string,\n                enabled: rest[8] as boolean,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const accessKey = params.accessKey;\n        const secretKey = params.secretKey;\n        const region = params.region;\n        const fromName = params.fromName;\n        const fromEmail = params.fromEmail;\n        const replyToName = params.replyToName;\n        const replyToEmail = params.replyToEmail;\n        const enabled = params.enabled;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n        const apiPath = '/messaging/providers/ses';\n        const apiPayload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            apiPayload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof accessKey !== 'undefined') {\n            apiPayload['accessKey'] = accessKey;\n        }\n        if (typeof secretKey !== 'undefined') {\n            apiPayload['secretKey'] = secretKey;\n        }\n        if (typeof region !== 'undefined') {\n            apiPayload['region'] = region;\n        }\n        if (typeof fromName !== 'undefined') {\n            apiPayload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            apiPayload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            apiPayload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            apiPayload['replyToEmail'] = replyToEmail;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('post', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Update an Amazon SES provider by its unique ID.\n     *\n     * @param {string} params.providerId - Provider ID.\n     * @param {string} params.name - Provider name.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @param {string} params.accessKey - AWS access key ID.\n     * @param {string} params.secretKey - AWS secret access key.\n     * @param {string} params.region - AWS region, for example us-east-1.\n     * @param {string} params.fromName - Sender Name.\n     * @param {string} params.fromEmail - Sender email address.\n     * @param {string} params.replyToName - Name set in the Reply To field for the mail. Default value is Sender Name.\n     * @param {string} params.replyToEmail - Email set in the Reply To field for the mail. Default value is Sender Email.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    updateSesProvider(params: {\n        providerId: string;\n        name?: string;\n        enabled?: boolean;\n        accessKey?: string;\n        secretKey?: string;\n        region?: string;\n        fromName?: string;\n        fromEmail?: string;\n        replyToName?: string;\n        replyToEmail?: string;\n    }): Promise<Models.Provider>;\n    /**\n     * Update an Amazon SES provider by its unique ID.\n     *\n     * @param {string} providerId - Provider ID.\n     * @param {string} name - Provider name.\n     * @param {boolean} enabled - Set as enabled.\n     * @param {string} accessKey - AWS access key ID.\n     * @param {string} secretKey - AWS secret access key.\n     * @param {string} region - AWS region, for example us-east-1.\n     * @param {string} fromName - Sender Name.\n     * @param {string} fromEmail - Sender email address.\n     * @param {string} replyToName - Name set in the Reply To field for the mail. Default value is Sender Name.\n     * @param {string} replyToEmail - Email set in the Reply To field for the mail. Default value is Sender Email.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    updateSesProvider(\n        providerId: string,\n        name?: string,\n        enabled?: boolean,\n        accessKey?: string,\n        secretKey?: string,\n        region?: string,\n        fromName?: string,\n        fromEmail?: string,\n        replyToName?: string,\n        replyToEmail?: string,\n    ): Promise<Models.Provider>;\n    updateSesProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name?: string;\n                  enabled?: boolean;\n                  accessKey?: string;\n                  secretKey?: string;\n                  region?: string;\n                  fromName?: string;\n                  fromEmail?: string;\n                  replyToName?: string;\n                  replyToEmail?: string;\n              }\n            | string,\n        ...rest: [\n            string?,\n            boolean?,\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n        ]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name?: string;\n            enabled?: boolean;\n            accessKey?: string;\n            secretKey?: string;\n            region?: string;\n            fromName?: string;\n            fromEmail?: string;\n            replyToName?: string;\n            replyToEmail?: string;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name?: string;\n                enabled?: boolean;\n                accessKey?: string;\n                secretKey?: string;\n                region?: string;\n                fromName?: string;\n                fromEmail?: string;\n                replyToName?: string;\n                replyToEmail?: string;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                enabled: rest[1] as boolean,\n                accessKey: rest[2] as string,\n                secretKey: rest[3] as string,\n                region: rest[4] as string,\n                fromName: rest[5] as string,\n                fromEmail: rest[6] as string,\n                replyToName: rest[7] as string,\n                replyToEmail: rest[8] as string,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const enabled = params.enabled;\n        const accessKey = params.accessKey;\n        const secretKey = params.secretKey;\n        const region = params.region;\n        const fromName = params.fromName;\n        const fromEmail = params.fromEmail;\n        const replyToName = params.replyToName;\n        const replyToEmail = params.replyToEmail;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        const apiPath = '/messaging/providers/ses/{providerId}'.replace(\n            '{providerId}',\n            encodeURIComponent(String(providerId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        if (typeof accessKey !== 'undefined') {\n            apiPayload['accessKey'] = accessKey;\n        }\n        if (typeof secretKey !== 'undefined') {\n            apiPayload['secretKey'] = secretKey;\n        }\n        if (typeof region !== 'undefined') {\n            apiPayload['region'] = region;\n        }\n        if (typeof fromName !== 'undefined') {\n            apiPayload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            apiPayload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            apiPayload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            apiPayload['replyToEmail'] = replyToEmail;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('patch', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Create a new SMTP provider.\n     *\n     * @param {string} params.providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} params.name - Provider name.\n     * @param {string} params.host - SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host such as `smtp1.example.com:25;smtp2.example.com`. You can also specify encryption type, for example: `tls://smtp1.example.com:587;ssl://smtp2.example.com:465\"`. Hosts will be tried in order.\n     * @param {number} params.port - The default SMTP server port.\n     * @param {string} params.username - Authentication username.\n     * @param {string} params.password - Authentication password.\n     * @param {SmtpEncryption} params.encryption - Encryption type. Can be omitted, 'ssl', or 'tls'\n     * @param {boolean} params.autoTLS - Enable SMTP AutoTLS feature.\n     * @param {string} params.mailer - The value to use for the X-Mailer header.\n     * @param {string} params.fromName - Sender Name.\n     * @param {string} params.fromEmail - Sender email address.\n     * @param {string} params.replyToName - Name set in the reply to field for the mail. Default value is sender name.\n     * @param {string} params.replyToEmail - Email set in the reply to field for the mail. Default value is sender email.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated This API has been deprecated since 1.8.0. Please use `Messaging.createSMTPProvider` instead.\n     */\n    createSmtpProvider(params: {\n        providerId: string;\n        name: string;\n        host: string;\n        port?: number;\n        username?: string;\n        password?: string;\n        encryption?: SmtpEncryption;\n        autoTLS?: boolean;\n        mailer?: string;\n        fromName?: string;\n        fromEmail?: string;\n        replyToName?: string;\n        replyToEmail?: string;\n        enabled?: boolean;\n    }): Promise<Models.Provider>;\n    /**\n     * Create a new SMTP provider.\n     *\n     * @param {string} providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} name - Provider name.\n     * @param {string} host - SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host such as `smtp1.example.com:25;smtp2.example.com`. You can also specify encryption type, for example: `tls://smtp1.example.com:587;ssl://smtp2.example.com:465\"`. Hosts will be tried in order.\n     * @param {number} port - The default SMTP server port.\n     * @param {string} username - Authentication username.\n     * @param {string} password - Authentication password.\n     * @param {SmtpEncryption} encryption - Encryption type. Can be omitted, 'ssl', or 'tls'\n     * @param {boolean} autoTLS - Enable SMTP AutoTLS feature.\n     * @param {string} mailer - The value to use for the X-Mailer header.\n     * @param {string} fromName - Sender Name.\n     * @param {string} fromEmail - Sender email address.\n     * @param {string} replyToName - Name set in the reply to field for the mail. Default value is sender name.\n     * @param {string} replyToEmail - Email set in the reply to field for the mail. Default value is sender email.\n     * @param {boolean} enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    createSmtpProvider(\n        providerId: string,\n        name: string,\n        host: string,\n        port?: number,\n        username?: string,\n        password?: string,\n        encryption?: SmtpEncryption,\n        autoTLS?: boolean,\n        mailer?: string,\n        fromName?: string,\n        fromEmail?: string,\n        replyToName?: string,\n        replyToEmail?: string,\n        enabled?: boolean,\n    ): Promise<Models.Provider>;\n    createSmtpProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name: string;\n                  host: string;\n                  port?: number;\n                  username?: string;\n                  password?: string;\n                  encryption?: SmtpEncryption;\n                  autoTLS?: boolean;\n                  mailer?: string;\n                  fromName?: string;\n                  fromEmail?: string;\n                  replyToName?: string;\n                  replyToEmail?: string;\n                  enabled?: boolean;\n              }\n            | string,\n        ...rest: [\n            string?,\n            string?,\n            number?,\n            string?,\n            string?,\n            SmtpEncryption?,\n            boolean?,\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n            boolean?,\n        ]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name: string;\n            host: string;\n            port?: number;\n            username?: string;\n            password?: string;\n            encryption?: SmtpEncryption;\n            autoTLS?: boolean;\n            mailer?: string;\n            fromName?: string;\n            fromEmail?: string;\n            replyToName?: string;\n            replyToEmail?: string;\n            enabled?: boolean;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name: string;\n                host: string;\n                port?: number;\n                username?: string;\n                password?: string;\n                encryption?: SmtpEncryption;\n                autoTLS?: boolean;\n                mailer?: string;\n                fromName?: string;\n                fromEmail?: string;\n                replyToName?: string;\n                replyToEmail?: string;\n                enabled?: boolean;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                host: rest[1] as string,\n                port: rest[2] as number,\n                username: rest[3] as string,\n                password: rest[4] as string,\n                encryption: rest[5] as SmtpEncryption,\n                autoTLS: rest[6] as boolean,\n                mailer: rest[7] as string,\n                fromName: rest[8] as string,\n                fromEmail: rest[9] as string,\n                replyToName: rest[10] as string,\n                replyToEmail: rest[11] as string,\n                enabled: rest[12] as boolean,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const host = params.host;\n        const port = params.port;\n        const username = params.username;\n        const password = params.password;\n        const encryption = params.encryption;\n        const autoTLS = params.autoTLS;\n        const mailer = params.mailer;\n        const fromName = params.fromName;\n        const fromEmail = params.fromEmail;\n        const replyToName = params.replyToName;\n        const replyToEmail = params.replyToEmail;\n        const enabled = params.enabled;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n        if (typeof host === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"host\"');\n        }\n        const apiPath = '/messaging/providers/smtp';\n        const apiPayload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            apiPayload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof host !== 'undefined') {\n            apiPayload['host'] = host;\n        }\n        if (typeof port !== 'undefined') {\n            apiPayload['port'] = port;\n        }\n        if (typeof username !== 'undefined') {\n            apiPayload['username'] = username;\n        }\n        if (typeof password !== 'undefined') {\n            apiPayload['password'] = password;\n        }\n        if (typeof encryption !== 'undefined') {\n            apiPayload['encryption'] = encryption;\n        }\n        if (typeof autoTLS !== 'undefined') {\n            apiPayload['autoTLS'] = autoTLS;\n        }\n        if (typeof mailer !== 'undefined') {\n            apiPayload['mailer'] = mailer;\n        }\n        if (typeof fromName !== 'undefined') {\n            apiPayload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            apiPayload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            apiPayload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            apiPayload['replyToEmail'] = replyToEmail;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('post', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Create a new SMTP provider.\n     *\n     * @param {string} params.providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} params.name - Provider name.\n     * @param {string} params.host - SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host such as `smtp1.example.com:25;smtp2.example.com`. You can also specify encryption type, for example: `tls://smtp1.example.com:587;ssl://smtp2.example.com:465\"`. Hosts will be tried in order.\n     * @param {number} params.port - The default SMTP server port.\n     * @param {string} params.username - Authentication username.\n     * @param {string} params.password - Authentication password.\n     * @param {SmtpEncryption} params.encryption - Encryption type. Can be omitted, 'ssl', or 'tls'\n     * @param {boolean} params.autoTLS - Enable SMTP AutoTLS feature.\n     * @param {string} params.mailer - The value to use for the X-Mailer header.\n     * @param {string} params.fromName - Sender Name.\n     * @param {string} params.fromEmail - Sender email address.\n     * @param {string} params.replyToName - Name set in the reply to field for the mail. Default value is sender name.\n     * @param {string} params.replyToEmail - Email set in the reply to field for the mail. Default value is sender email.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    createSMTPProvider(params: {\n        providerId: string;\n        name: string;\n        host: string;\n        port?: number;\n        username?: string;\n        password?: string;\n        encryption?: SmtpEncryption;\n        autoTLS?: boolean;\n        mailer?: string;\n        fromName?: string;\n        fromEmail?: string;\n        replyToName?: string;\n        replyToEmail?: string;\n        enabled?: boolean;\n    }): Promise<Models.Provider>;\n    /**\n     * Create a new SMTP provider.\n     *\n     * @param {string} providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} name - Provider name.\n     * @param {string} host - SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host such as `smtp1.example.com:25;smtp2.example.com`. You can also specify encryption type, for example: `tls://smtp1.example.com:587;ssl://smtp2.example.com:465\"`. Hosts will be tried in order.\n     * @param {number} port - The default SMTP server port.\n     * @param {string} username - Authentication username.\n     * @param {string} password - Authentication password.\n     * @param {SmtpEncryption} encryption - Encryption type. Can be omitted, 'ssl', or 'tls'\n     * @param {boolean} autoTLS - Enable SMTP AutoTLS feature.\n     * @param {string} mailer - The value to use for the X-Mailer header.\n     * @param {string} fromName - Sender Name.\n     * @param {string} fromEmail - Sender email address.\n     * @param {string} replyToName - Name set in the reply to field for the mail. Default value is sender name.\n     * @param {string} replyToEmail - Email set in the reply to field for the mail. Default value is sender email.\n     * @param {boolean} enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    createSMTPProvider(\n        providerId: string,\n        name: string,\n        host: string,\n        port?: number,\n        username?: string,\n        password?: string,\n        encryption?: SmtpEncryption,\n        autoTLS?: boolean,\n        mailer?: string,\n        fromName?: string,\n        fromEmail?: string,\n        replyToName?: string,\n        replyToEmail?: string,\n        enabled?: boolean,\n    ): Promise<Models.Provider>;\n    createSMTPProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name: string;\n                  host: string;\n                  port?: number;\n                  username?: string;\n                  password?: string;\n                  encryption?: SmtpEncryption;\n                  autoTLS?: boolean;\n                  mailer?: string;\n                  fromName?: string;\n                  fromEmail?: string;\n                  replyToName?: string;\n                  replyToEmail?: string;\n                  enabled?: boolean;\n              }\n            | string,\n        ...rest: [\n            string?,\n            string?,\n            number?,\n            string?,\n            string?,\n            SmtpEncryption?,\n            boolean?,\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n            boolean?,\n        ]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name: string;\n            host: string;\n            port?: number;\n            username?: string;\n            password?: string;\n            encryption?: SmtpEncryption;\n            autoTLS?: boolean;\n            mailer?: string;\n            fromName?: string;\n            fromEmail?: string;\n            replyToName?: string;\n            replyToEmail?: string;\n            enabled?: boolean;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name: string;\n                host: string;\n                port?: number;\n                username?: string;\n                password?: string;\n                encryption?: SmtpEncryption;\n                autoTLS?: boolean;\n                mailer?: string;\n                fromName?: string;\n                fromEmail?: string;\n                replyToName?: string;\n                replyToEmail?: string;\n                enabled?: boolean;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                host: rest[1] as string,\n                port: rest[2] as number,\n                username: rest[3] as string,\n                password: rest[4] as string,\n                encryption: rest[5] as SmtpEncryption,\n                autoTLS: rest[6] as boolean,\n                mailer: rest[7] as string,\n                fromName: rest[8] as string,\n                fromEmail: rest[9] as string,\n                replyToName: rest[10] as string,\n                replyToEmail: rest[11] as string,\n                enabled: rest[12] as boolean,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const host = params.host;\n        const port = params.port;\n        const username = params.username;\n        const password = params.password;\n        const encryption = params.encryption;\n        const autoTLS = params.autoTLS;\n        const mailer = params.mailer;\n        const fromName = params.fromName;\n        const fromEmail = params.fromEmail;\n        const replyToName = params.replyToName;\n        const replyToEmail = params.replyToEmail;\n        const enabled = params.enabled;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n        if (typeof host === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"host\"');\n        }\n        const apiPath = '/messaging/providers/smtp';\n        const apiPayload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            apiPayload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof host !== 'undefined') {\n            apiPayload['host'] = host;\n        }\n        if (typeof port !== 'undefined') {\n            apiPayload['port'] = port;\n        }\n        if (typeof username !== 'undefined') {\n            apiPayload['username'] = username;\n        }\n        if (typeof password !== 'undefined') {\n            apiPayload['password'] = password;\n        }\n        if (typeof encryption !== 'undefined') {\n            apiPayload['encryption'] = encryption;\n        }\n        if (typeof autoTLS !== 'undefined') {\n            apiPayload['autoTLS'] = autoTLS;\n        }\n        if (typeof mailer !== 'undefined') {\n            apiPayload['mailer'] = mailer;\n        }\n        if (typeof fromName !== 'undefined') {\n            apiPayload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            apiPayload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            apiPayload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            apiPayload['replyToEmail'] = replyToEmail;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('post', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Update a SMTP provider by its unique ID.\n     *\n     * @param {string} params.providerId - Provider ID.\n     * @param {string} params.name - Provider name.\n     * @param {string} params.host - SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host such as `smtp1.example.com:25;smtp2.example.com`. You can also specify encryption type, for example: `tls://smtp1.example.com:587;ssl://smtp2.example.com:465\"`. Hosts will be tried in order.\n     * @param {number} params.port - SMTP port.\n     * @param {string} params.username - Authentication username.\n     * @param {string} params.password - Authentication password.\n     * @param {SmtpEncryption} params.encryption - Encryption type. Can be 'ssl' or 'tls'\n     * @param {boolean} params.autoTLS - Enable SMTP AutoTLS feature.\n     * @param {string} params.mailer - The value to use for the X-Mailer header.\n     * @param {string} params.fromName - Sender Name.\n     * @param {string} params.fromEmail - Sender email address.\n     * @param {string} params.replyToName - Name set in the Reply To field for the mail. Default value is Sender Name.\n     * @param {string} params.replyToEmail - Email set in the Reply To field for the mail. Default value is Sender Email.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated This API has been deprecated since 1.8.0. Please use `Messaging.updateSMTPProvider` instead.\n     */\n    updateSmtpProvider(params: {\n        providerId: string;\n        name?: string;\n        host?: string;\n        port?: number;\n        username?: string;\n        password?: string;\n        encryption?: SmtpEncryption;\n        autoTLS?: boolean;\n        mailer?: string;\n        fromName?: string;\n        fromEmail?: string;\n        replyToName?: string;\n        replyToEmail?: string;\n        enabled?: boolean;\n    }): Promise<Models.Provider>;\n    /**\n     * Update a SMTP provider by its unique ID.\n     *\n     * @param {string} providerId - Provider ID.\n     * @param {string} name - Provider name.\n     * @param {string} host - SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host such as `smtp1.example.com:25;smtp2.example.com`. You can also specify encryption type, for example: `tls://smtp1.example.com:587;ssl://smtp2.example.com:465\"`. Hosts will be tried in order.\n     * @param {number} port - SMTP port.\n     * @param {string} username - Authentication username.\n     * @param {string} password - Authentication password.\n     * @param {SmtpEncryption} encryption - Encryption type. Can be 'ssl' or 'tls'\n     * @param {boolean} autoTLS - Enable SMTP AutoTLS feature.\n     * @param {string} mailer - The value to use for the X-Mailer header.\n     * @param {string} fromName - Sender Name.\n     * @param {string} fromEmail - Sender email address.\n     * @param {string} replyToName - Name set in the Reply To field for the mail. Default value is Sender Name.\n     * @param {string} replyToEmail - Email set in the Reply To field for the mail. Default value is Sender Email.\n     * @param {boolean} enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    updateSmtpProvider(\n        providerId: string,\n        name?: string,\n        host?: string,\n        port?: number,\n        username?: string,\n        password?: string,\n        encryption?: SmtpEncryption,\n        autoTLS?: boolean,\n        mailer?: string,\n        fromName?: string,\n        fromEmail?: string,\n        replyToName?: string,\n        replyToEmail?: string,\n        enabled?: boolean,\n    ): Promise<Models.Provider>;\n    updateSmtpProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name?: string;\n                  host?: string;\n                  port?: number;\n                  username?: string;\n                  password?: string;\n                  encryption?: SmtpEncryption;\n                  autoTLS?: boolean;\n                  mailer?: string;\n                  fromName?: string;\n                  fromEmail?: string;\n                  replyToName?: string;\n                  replyToEmail?: string;\n                  enabled?: boolean;\n              }\n            | string,\n        ...rest: [\n            string?,\n            string?,\n            number?,\n            string?,\n            string?,\n            SmtpEncryption?,\n            boolean?,\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n            boolean?,\n        ]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name?: string;\n            host?: string;\n            port?: number;\n            username?: string;\n            password?: string;\n            encryption?: SmtpEncryption;\n            autoTLS?: boolean;\n            mailer?: string;\n            fromName?: string;\n            fromEmail?: string;\n            replyToName?: string;\n            replyToEmail?: string;\n            enabled?: boolean;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name?: string;\n                host?: string;\n                port?: number;\n                username?: string;\n                password?: string;\n                encryption?: SmtpEncryption;\n                autoTLS?: boolean;\n                mailer?: string;\n                fromName?: string;\n                fromEmail?: string;\n                replyToName?: string;\n                replyToEmail?: string;\n                enabled?: boolean;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                host: rest[1] as string,\n                port: rest[2] as number,\n                username: rest[3] as string,\n                password: rest[4] as string,\n                encryption: rest[5] as SmtpEncryption,\n                autoTLS: rest[6] as boolean,\n                mailer: rest[7] as string,\n                fromName: rest[8] as string,\n                fromEmail: rest[9] as string,\n                replyToName: rest[10] as string,\n                replyToEmail: rest[11] as string,\n                enabled: rest[12] as boolean,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const host = params.host;\n        const port = params.port;\n        const username = params.username;\n        const password = params.password;\n        const encryption = params.encryption;\n        const autoTLS = params.autoTLS;\n        const mailer = params.mailer;\n        const fromName = params.fromName;\n        const fromEmail = params.fromEmail;\n        const replyToName = params.replyToName;\n        const replyToEmail = params.replyToEmail;\n        const enabled = params.enabled;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        const apiPath = '/messaging/providers/smtp/{providerId}'.replace(\n            '{providerId}',\n            encodeURIComponent(String(providerId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof host !== 'undefined') {\n            apiPayload['host'] = host;\n        }\n        if (typeof port !== 'undefined') {\n            apiPayload['port'] = port;\n        }\n        if (typeof username !== 'undefined') {\n            apiPayload['username'] = username;\n        }\n        if (typeof password !== 'undefined') {\n            apiPayload['password'] = password;\n        }\n        if (typeof encryption !== 'undefined') {\n            apiPayload['encryption'] = encryption;\n        }\n        if (typeof autoTLS !== 'undefined') {\n            apiPayload['autoTLS'] = autoTLS;\n        }\n        if (typeof mailer !== 'undefined') {\n            apiPayload['mailer'] = mailer;\n        }\n        if (typeof fromName !== 'undefined') {\n            apiPayload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            apiPayload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            apiPayload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            apiPayload['replyToEmail'] = replyToEmail;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('patch', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Update a SMTP provider by its unique ID.\n     *\n     * @param {string} params.providerId - Provider ID.\n     * @param {string} params.name - Provider name.\n     * @param {string} params.host - SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host such as `smtp1.example.com:25;smtp2.example.com`. You can also specify encryption type, for example: `tls://smtp1.example.com:587;ssl://smtp2.example.com:465\"`. Hosts will be tried in order.\n     * @param {number} params.port - SMTP port.\n     * @param {string} params.username - Authentication username.\n     * @param {string} params.password - Authentication password.\n     * @param {SmtpEncryption} params.encryption - Encryption type. Can be 'ssl' or 'tls'\n     * @param {boolean} params.autoTLS - Enable SMTP AutoTLS feature.\n     * @param {string} params.mailer - The value to use for the X-Mailer header.\n     * @param {string} params.fromName - Sender Name.\n     * @param {string} params.fromEmail - Sender email address.\n     * @param {string} params.replyToName - Name set in the Reply To field for the mail. Default value is Sender Name.\n     * @param {string} params.replyToEmail - Email set in the Reply To field for the mail. Default value is Sender Email.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    updateSMTPProvider(params: {\n        providerId: string;\n        name?: string;\n        host?: string;\n        port?: number;\n        username?: string;\n        password?: string;\n        encryption?: SmtpEncryption;\n        autoTLS?: boolean;\n        mailer?: string;\n        fromName?: string;\n        fromEmail?: string;\n        replyToName?: string;\n        replyToEmail?: string;\n        enabled?: boolean;\n    }): Promise<Models.Provider>;\n    /**\n     * Update a SMTP provider by its unique ID.\n     *\n     * @param {string} providerId - Provider ID.\n     * @param {string} name - Provider name.\n     * @param {string} host - SMTP hosts. Either a single hostname or multiple semicolon-delimited hostnames. You can also specify a different port for each host such as `smtp1.example.com:25;smtp2.example.com`. You can also specify encryption type, for example: `tls://smtp1.example.com:587;ssl://smtp2.example.com:465\"`. Hosts will be tried in order.\n     * @param {number} port - SMTP port.\n     * @param {string} username - Authentication username.\n     * @param {string} password - Authentication password.\n     * @param {SmtpEncryption} encryption - Encryption type. Can be 'ssl' or 'tls'\n     * @param {boolean} autoTLS - Enable SMTP AutoTLS feature.\n     * @param {string} mailer - The value to use for the X-Mailer header.\n     * @param {string} fromName - Sender Name.\n     * @param {string} fromEmail - Sender email address.\n     * @param {string} replyToName - Name set in the Reply To field for the mail. Default value is Sender Name.\n     * @param {string} replyToEmail - Email set in the Reply To field for the mail. Default value is Sender Email.\n     * @param {boolean} enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    updateSMTPProvider(\n        providerId: string,\n        name?: string,\n        host?: string,\n        port?: number,\n        username?: string,\n        password?: string,\n        encryption?: SmtpEncryption,\n        autoTLS?: boolean,\n        mailer?: string,\n        fromName?: string,\n        fromEmail?: string,\n        replyToName?: string,\n        replyToEmail?: string,\n        enabled?: boolean,\n    ): Promise<Models.Provider>;\n    updateSMTPProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name?: string;\n                  host?: string;\n                  port?: number;\n                  username?: string;\n                  password?: string;\n                  encryption?: SmtpEncryption;\n                  autoTLS?: boolean;\n                  mailer?: string;\n                  fromName?: string;\n                  fromEmail?: string;\n                  replyToName?: string;\n                  replyToEmail?: string;\n                  enabled?: boolean;\n              }\n            | string,\n        ...rest: [\n            string?,\n            string?,\n            number?,\n            string?,\n            string?,\n            SmtpEncryption?,\n            boolean?,\n            string?,\n            string?,\n            string?,\n            string?,\n            string?,\n            boolean?,\n        ]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name?: string;\n            host?: string;\n            port?: number;\n            username?: string;\n            password?: string;\n            encryption?: SmtpEncryption;\n            autoTLS?: boolean;\n            mailer?: string;\n            fromName?: string;\n            fromEmail?: string;\n            replyToName?: string;\n            replyToEmail?: string;\n            enabled?: boolean;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name?: string;\n                host?: string;\n                port?: number;\n                username?: string;\n                password?: string;\n                encryption?: SmtpEncryption;\n                autoTLS?: boolean;\n                mailer?: string;\n                fromName?: string;\n                fromEmail?: string;\n                replyToName?: string;\n                replyToEmail?: string;\n                enabled?: boolean;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                host: rest[1] as string,\n                port: rest[2] as number,\n                username: rest[3] as string,\n                password: rest[4] as string,\n                encryption: rest[5] as SmtpEncryption,\n                autoTLS: rest[6] as boolean,\n                mailer: rest[7] as string,\n                fromName: rest[8] as string,\n                fromEmail: rest[9] as string,\n                replyToName: rest[10] as string,\n                replyToEmail: rest[11] as string,\n                enabled: rest[12] as boolean,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const host = params.host;\n        const port = params.port;\n        const username = params.username;\n        const password = params.password;\n        const encryption = params.encryption;\n        const autoTLS = params.autoTLS;\n        const mailer = params.mailer;\n        const fromName = params.fromName;\n        const fromEmail = params.fromEmail;\n        const replyToName = params.replyToName;\n        const replyToEmail = params.replyToEmail;\n        const enabled = params.enabled;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        const apiPath = '/messaging/providers/smtp/{providerId}'.replace(\n            '{providerId}',\n            encodeURIComponent(String(providerId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof host !== 'undefined') {\n            apiPayload['host'] = host;\n        }\n        if (typeof port !== 'undefined') {\n            apiPayload['port'] = port;\n        }\n        if (typeof username !== 'undefined') {\n            apiPayload['username'] = username;\n        }\n        if (typeof password !== 'undefined') {\n            apiPayload['password'] = password;\n        }\n        if (typeof encryption !== 'undefined') {\n            apiPayload['encryption'] = encryption;\n        }\n        if (typeof autoTLS !== 'undefined') {\n            apiPayload['autoTLS'] = autoTLS;\n        }\n        if (typeof mailer !== 'undefined') {\n            apiPayload['mailer'] = mailer;\n        }\n        if (typeof fromName !== 'undefined') {\n            apiPayload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            apiPayload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            apiPayload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            apiPayload['replyToEmail'] = replyToEmail;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('patch', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Create a new Telesign provider.\n     *\n     * @param {string} params.providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} params.name - Provider name.\n     * @param {string} params.from - Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.\n     * @param {string} params.customerId - Telesign customer ID.\n     * @param {string} params.apiKey - Telesign API key.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    createTelesignProvider(params: {\n        providerId: string;\n        name: string;\n        from?: string;\n        customerId?: string;\n        apiKey?: string;\n        enabled?: boolean;\n    }): Promise<Models.Provider>;\n    /**\n     * Create a new Telesign provider.\n     *\n     * @param {string} providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} name - Provider name.\n     * @param {string} from - Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.\n     * @param {string} customerId - Telesign customer ID.\n     * @param {string} apiKey - Telesign API key.\n     * @param {boolean} enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    createTelesignProvider(\n        providerId: string,\n        name: string,\n        from?: string,\n        customerId?: string,\n        apiKey?: string,\n        enabled?: boolean,\n    ): Promise<Models.Provider>;\n    createTelesignProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name: string;\n                  from?: string;\n                  customerId?: string;\n                  apiKey?: string;\n                  enabled?: boolean;\n              }\n            | string,\n        ...rest: [string?, string?, string?, string?, boolean?]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name: string;\n            from?: string;\n            customerId?: string;\n            apiKey?: string;\n            enabled?: boolean;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name: string;\n                from?: string;\n                customerId?: string;\n                apiKey?: string;\n                enabled?: boolean;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                from: rest[1] as string,\n                customerId: rest[2] as string,\n                apiKey: rest[3] as string,\n                enabled: rest[4] as boolean,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const from = params.from;\n        const customerId = params.customerId;\n        const apiKey = params.apiKey;\n        const enabled = params.enabled;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n        const apiPath = '/messaging/providers/telesign';\n        const apiPayload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            apiPayload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof from !== 'undefined') {\n            apiPayload['from'] = from;\n        }\n        if (typeof customerId !== 'undefined') {\n            apiPayload['customerId'] = customerId;\n        }\n        if (typeof apiKey !== 'undefined') {\n            apiPayload['apiKey'] = apiKey;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('post', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Update a Telesign provider by its unique ID.\n     *\n     * @param {string} params.providerId - Provider ID.\n     * @param {string} params.name - Provider name.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @param {string} params.customerId - Telesign customer ID.\n     * @param {string} params.apiKey - Telesign API key.\n     * @param {string} params.from - Sender number.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    updateTelesignProvider(params: {\n        providerId: string;\n        name?: string;\n        enabled?: boolean;\n        customerId?: string;\n        apiKey?: string;\n        from?: string;\n    }): Promise<Models.Provider>;\n    /**\n     * Update a Telesign provider by its unique ID.\n     *\n     * @param {string} providerId - Provider ID.\n     * @param {string} name - Provider name.\n     * @param {boolean} enabled - Set as enabled.\n     * @param {string} customerId - Telesign customer ID.\n     * @param {string} apiKey - Telesign API key.\n     * @param {string} from - Sender number.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    updateTelesignProvider(\n        providerId: string,\n        name?: string,\n        enabled?: boolean,\n        customerId?: string,\n        apiKey?: string,\n        from?: string,\n    ): Promise<Models.Provider>;\n    updateTelesignProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name?: string;\n                  enabled?: boolean;\n                  customerId?: string;\n                  apiKey?: string;\n                  from?: string;\n              }\n            | string,\n        ...rest: [string?, boolean?, string?, string?, string?]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name?: string;\n            enabled?: boolean;\n            customerId?: string;\n            apiKey?: string;\n            from?: string;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name?: string;\n                enabled?: boolean;\n                customerId?: string;\n                apiKey?: string;\n                from?: string;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                enabled: rest[1] as boolean,\n                customerId: rest[2] as string,\n                apiKey: rest[3] as string,\n                from: rest[4] as string,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const enabled = params.enabled;\n        const customerId = params.customerId;\n        const apiKey = params.apiKey;\n        const from = params.from;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        const apiPath = '/messaging/providers/telesign/{providerId}'.replace(\n            '{providerId}',\n            encodeURIComponent(String(providerId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        if (typeof customerId !== 'undefined') {\n            apiPayload['customerId'] = customerId;\n        }\n        if (typeof apiKey !== 'undefined') {\n            apiPayload['apiKey'] = apiKey;\n        }\n        if (typeof from !== 'undefined') {\n            apiPayload['from'] = from;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('patch', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Create a new Textmagic provider.\n     *\n     * @param {string} params.providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} params.name - Provider name.\n     * @param {string} params.from - Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.\n     * @param {string} params.username - Textmagic username.\n     * @param {string} params.apiKey - Textmagic apiKey.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    createTextmagicProvider(params: {\n        providerId: string;\n        name: string;\n        from?: string;\n        username?: string;\n        apiKey?: string;\n        enabled?: boolean;\n    }): Promise<Models.Provider>;\n    /**\n     * Create a new Textmagic provider.\n     *\n     * @param {string} providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} name - Provider name.\n     * @param {string} from - Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.\n     * @param {string} username - Textmagic username.\n     * @param {string} apiKey - Textmagic apiKey.\n     * @param {boolean} enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    createTextmagicProvider(\n        providerId: string,\n        name: string,\n        from?: string,\n        username?: string,\n        apiKey?: string,\n        enabled?: boolean,\n    ): Promise<Models.Provider>;\n    createTextmagicProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name: string;\n                  from?: string;\n                  username?: string;\n                  apiKey?: string;\n                  enabled?: boolean;\n              }\n            | string,\n        ...rest: [string?, string?, string?, string?, boolean?]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name: string;\n            from?: string;\n            username?: string;\n            apiKey?: string;\n            enabled?: boolean;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name: string;\n                from?: string;\n                username?: string;\n                apiKey?: string;\n                enabled?: boolean;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                from: rest[1] as string,\n                username: rest[2] as string,\n                apiKey: rest[3] as string,\n                enabled: rest[4] as boolean,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const from = params.from;\n        const username = params.username;\n        const apiKey = params.apiKey;\n        const enabled = params.enabled;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n        const apiPath = '/messaging/providers/textmagic';\n        const apiPayload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            apiPayload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof from !== 'undefined') {\n            apiPayload['from'] = from;\n        }\n        if (typeof username !== 'undefined') {\n            apiPayload['username'] = username;\n        }\n        if (typeof apiKey !== 'undefined') {\n            apiPayload['apiKey'] = apiKey;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('post', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Update a Textmagic provider by its unique ID.\n     *\n     * @param {string} params.providerId - Provider ID.\n     * @param {string} params.name - Provider name.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @param {string} params.username - Textmagic username.\n     * @param {string} params.apiKey - Textmagic apiKey.\n     * @param {string} params.from - Sender number.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    updateTextmagicProvider(params: {\n        providerId: string;\n        name?: string;\n        enabled?: boolean;\n        username?: string;\n        apiKey?: string;\n        from?: string;\n    }): Promise<Models.Provider>;\n    /**\n     * Update a Textmagic provider by its unique ID.\n     *\n     * @param {string} providerId - Provider ID.\n     * @param {string} name - Provider name.\n     * @param {boolean} enabled - Set as enabled.\n     * @param {string} username - Textmagic username.\n     * @param {string} apiKey - Textmagic apiKey.\n     * @param {string} from - Sender number.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    updateTextmagicProvider(\n        providerId: string,\n        name?: string,\n        enabled?: boolean,\n        username?: string,\n        apiKey?: string,\n        from?: string,\n    ): Promise<Models.Provider>;\n    updateTextmagicProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name?: string;\n                  enabled?: boolean;\n                  username?: string;\n                  apiKey?: string;\n                  from?: string;\n              }\n            | string,\n        ...rest: [string?, boolean?, string?, string?, string?]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name?: string;\n            enabled?: boolean;\n            username?: string;\n            apiKey?: string;\n            from?: string;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name?: string;\n                enabled?: boolean;\n                username?: string;\n                apiKey?: string;\n                from?: string;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                enabled: rest[1] as boolean,\n                username: rest[2] as string,\n                apiKey: rest[3] as string,\n                from: rest[4] as string,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const enabled = params.enabled;\n        const username = params.username;\n        const apiKey = params.apiKey;\n        const from = params.from;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        const apiPath = '/messaging/providers/textmagic/{providerId}'.replace(\n            '{providerId}',\n            encodeURIComponent(String(providerId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        if (typeof username !== 'undefined') {\n            apiPayload['username'] = username;\n        }\n        if (typeof apiKey !== 'undefined') {\n            apiPayload['apiKey'] = apiKey;\n        }\n        if (typeof from !== 'undefined') {\n            apiPayload['from'] = from;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('patch', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Create a new Twilio provider.\n     *\n     * @param {string} params.providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} params.name - Provider name.\n     * @param {string} params.from - Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.\n     * @param {string} params.accountSid - Twilio account secret ID.\n     * @param {string} params.authToken - Twilio authentication token.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    createTwilioProvider(params: {\n        providerId: string;\n        name: string;\n        from?: string;\n        accountSid?: string;\n        authToken?: string;\n        enabled?: boolean;\n    }): Promise<Models.Provider>;\n    /**\n     * Create a new Twilio provider.\n     *\n     * @param {string} providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} name - Provider name.\n     * @param {string} from - Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.\n     * @param {string} accountSid - Twilio account secret ID.\n     * @param {string} authToken - Twilio authentication token.\n     * @param {boolean} enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    createTwilioProvider(\n        providerId: string,\n        name: string,\n        from?: string,\n        accountSid?: string,\n        authToken?: string,\n        enabled?: boolean,\n    ): Promise<Models.Provider>;\n    createTwilioProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name: string;\n                  from?: string;\n                  accountSid?: string;\n                  authToken?: string;\n                  enabled?: boolean;\n              }\n            | string,\n        ...rest: [string?, string?, string?, string?, boolean?]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name: string;\n            from?: string;\n            accountSid?: string;\n            authToken?: string;\n            enabled?: boolean;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name: string;\n                from?: string;\n                accountSid?: string;\n                authToken?: string;\n                enabled?: boolean;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                from: rest[1] as string,\n                accountSid: rest[2] as string,\n                authToken: rest[3] as string,\n                enabled: rest[4] as boolean,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const from = params.from;\n        const accountSid = params.accountSid;\n        const authToken = params.authToken;\n        const enabled = params.enabled;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n        const apiPath = '/messaging/providers/twilio';\n        const apiPayload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            apiPayload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof from !== 'undefined') {\n            apiPayload['from'] = from;\n        }\n        if (typeof accountSid !== 'undefined') {\n            apiPayload['accountSid'] = accountSid;\n        }\n        if (typeof authToken !== 'undefined') {\n            apiPayload['authToken'] = authToken;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('post', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Update a Twilio provider by its unique ID.\n     *\n     * @param {string} params.providerId - Provider ID.\n     * @param {string} params.name - Provider name.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @param {string} params.accountSid - Twilio account secret ID.\n     * @param {string} params.authToken - Twilio authentication token.\n     * @param {string} params.from - Sender number.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    updateTwilioProvider(params: {\n        providerId: string;\n        name?: string;\n        enabled?: boolean;\n        accountSid?: string;\n        authToken?: string;\n        from?: string;\n    }): Promise<Models.Provider>;\n    /**\n     * Update a Twilio provider by its unique ID.\n     *\n     * @param {string} providerId - Provider ID.\n     * @param {string} name - Provider name.\n     * @param {boolean} enabled - Set as enabled.\n     * @param {string} accountSid - Twilio account secret ID.\n     * @param {string} authToken - Twilio authentication token.\n     * @param {string} from - Sender number.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    updateTwilioProvider(\n        providerId: string,\n        name?: string,\n        enabled?: boolean,\n        accountSid?: string,\n        authToken?: string,\n        from?: string,\n    ): Promise<Models.Provider>;\n    updateTwilioProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name?: string;\n                  enabled?: boolean;\n                  accountSid?: string;\n                  authToken?: string;\n                  from?: string;\n              }\n            | string,\n        ...rest: [string?, boolean?, string?, string?, string?]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name?: string;\n            enabled?: boolean;\n            accountSid?: string;\n            authToken?: string;\n            from?: string;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name?: string;\n                enabled?: boolean;\n                accountSid?: string;\n                authToken?: string;\n                from?: string;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                enabled: rest[1] as boolean,\n                accountSid: rest[2] as string,\n                authToken: rest[3] as string,\n                from: rest[4] as string,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const enabled = params.enabled;\n        const accountSid = params.accountSid;\n        const authToken = params.authToken;\n        const from = params.from;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        const apiPath = '/messaging/providers/twilio/{providerId}'.replace(\n            '{providerId}',\n            encodeURIComponent(String(providerId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        if (typeof accountSid !== 'undefined') {\n            apiPayload['accountSid'] = accountSid;\n        }\n        if (typeof authToken !== 'undefined') {\n            apiPayload['authToken'] = authToken;\n        }\n        if (typeof from !== 'undefined') {\n            apiPayload['from'] = from;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('patch', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Create a new Vonage provider.\n     *\n     * @param {string} params.providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} params.name - Provider name.\n     * @param {string} params.from - Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.\n     * @param {string} params.apiKey - Vonage API key.\n     * @param {string} params.apiSecret - Vonage API secret.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    createVonageProvider(params: {\n        providerId: string;\n        name: string;\n        from?: string;\n        apiKey?: string;\n        apiSecret?: string;\n        enabled?: boolean;\n    }): Promise<Models.Provider>;\n    /**\n     * Create a new Vonage provider.\n     *\n     * @param {string} providerId - Provider ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.\n     * @param {string} name - Provider name.\n     * @param {string} from - Sender Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.\n     * @param {string} apiKey - Vonage API key.\n     * @param {string} apiSecret - Vonage API secret.\n     * @param {boolean} enabled - Set as enabled.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    createVonageProvider(\n        providerId: string,\n        name: string,\n        from?: string,\n        apiKey?: string,\n        apiSecret?: string,\n        enabled?: boolean,\n    ): Promise<Models.Provider>;\n    createVonageProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name: string;\n                  from?: string;\n                  apiKey?: string;\n                  apiSecret?: string;\n                  enabled?: boolean;\n              }\n            | string,\n        ...rest: [string?, string?, string?, string?, boolean?]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name: string;\n            from?: string;\n            apiKey?: string;\n            apiSecret?: string;\n            enabled?: boolean;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name: string;\n                from?: string;\n                apiKey?: string;\n                apiSecret?: string;\n                enabled?: boolean;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                from: rest[1] as string,\n                apiKey: rest[2] as string,\n                apiSecret: rest[3] as string,\n                enabled: rest[4] as boolean,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const from = params.from;\n        const apiKey = params.apiKey;\n        const apiSecret = params.apiSecret;\n        const enabled = params.enabled;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n        const apiPath = '/messaging/providers/vonage';\n        const apiPayload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            apiPayload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof from !== 'undefined') {\n            apiPayload['from'] = from;\n        }\n        if (typeof apiKey !== 'undefined') {\n            apiPayload['apiKey'] = apiKey;\n        }\n        if (typeof apiSecret !== 'undefined') {\n            apiPayload['apiSecret'] = apiSecret;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('post', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Update a Vonage provider by its unique ID.\n     *\n     * @param {string} params.providerId - Provider ID.\n     * @param {string} params.name - Provider name.\n     * @param {boolean} params.enabled - Set as enabled.\n     * @param {string} params.apiKey - Vonage API key.\n     * @param {string} params.apiSecret - Vonage API secret.\n     * @param {string} params.from - Sender number.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    updateVonageProvider(params: {\n        providerId: string;\n        name?: string;\n        enabled?: boolean;\n        apiKey?: string;\n        apiSecret?: string;\n        from?: string;\n    }): Promise<Models.Provider>;\n    /**\n     * Update a Vonage provider by its unique ID.\n     *\n     * @param {string} providerId - Provider ID.\n     * @param {string} name - Provider name.\n     * @param {boolean} enabled - Set as enabled.\n     * @param {string} apiKey - Vonage API key.\n     * @param {string} apiSecret - Vonage API secret.\n     * @param {string} from - Sender number.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    updateVonageProvider(\n        providerId: string,\n        name?: string,\n        enabled?: boolean,\n        apiKey?: string,\n        apiSecret?: string,\n        from?: string,\n    ): Promise<Models.Provider>;\n    updateVonageProvider(\n        paramsOrFirst:\n            | {\n                  providerId: string;\n                  name?: string;\n                  enabled?: boolean;\n                  apiKey?: string;\n                  apiSecret?: string;\n                  from?: string;\n              }\n            | string,\n        ...rest: [string?, boolean?, string?, string?, string?]\n    ): Promise<Models.Provider> {\n        let params: {\n            providerId: string;\n            name?: string;\n            enabled?: boolean;\n            apiKey?: string;\n            apiSecret?: string;\n            from?: string;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                providerId: string;\n                name?: string;\n                enabled?: boolean;\n                apiKey?: string;\n                apiSecret?: string;\n                from?: string;\n            };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                name: rest[0] as string,\n                enabled: rest[1] as boolean,\n                apiKey: rest[2] as string,\n                apiSecret: rest[3] as string,\n                from: rest[4] as string,\n            };\n        }\n\n        const providerId = params.providerId;\n        const name = params.name;\n        const enabled = params.enabled;\n        const apiKey = params.apiKey;\n        const apiSecret = params.apiSecret;\n        const from = params.from;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        const apiPath = '/messaging/providers/vonage/{providerId}'.replace(\n            '{providerId}',\n            encodeURIComponent(String(providerId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            apiPayload['enabled'] = enabled;\n        }\n        if (typeof apiKey !== 'undefined') {\n            apiPayload['apiKey'] = apiKey;\n        }\n        if (typeof apiSecret !== 'undefined') {\n            apiPayload['apiSecret'] = apiSecret;\n        }\n        if (typeof from !== 'undefined') {\n            apiPayload['from'] = from;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('patch', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Get a provider by its unique ID.\n     *\n     *\n     * @param {string} params.providerId - Provider ID.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     */\n    getProvider(params: { providerId: string }): Promise<Models.Provider>;\n    /**\n     * Get a provider by its unique ID.\n     *\n     *\n     * @param {string} providerId - Provider ID.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Provider>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    getProvider(providerId: string): Promise<Models.Provider>;\n    getProvider(\n        paramsOrFirst: { providerId: string } | string,\n    ): Promise<Models.Provider> {\n        let params: { providerId: string };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as { providerId: string };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n            };\n        }\n\n        const providerId = params.providerId;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        const apiPath = '/messaging/providers/{providerId}'.replace(\n            '{providerId}',\n            encodeURIComponent(String(providerId)),\n        );\n        const apiPayload: Payload = {};\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            accept: 'application/json',\n        };\n\n        return this.client.call('get', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Delete a provider by its unique ID.\n     *\n     * @param {string} params.providerId - Provider ID.\n     * @throws {AppwriteException}\n     * @returns {Promise<{}>}\n     */\n    deleteProvider(params: { providerId: string }): Promise<{}>;\n    /**\n     * Delete a provider by its unique ID.\n     *\n     * @param {string} providerId - Provider ID.\n     * @throws {AppwriteException}\n     * @returns {Promise<{}>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    deleteProvider(providerId: string): Promise<{}>;\n    deleteProvider(\n        paramsOrFirst: { providerId: string } | string,\n    ): Promise<{}> {\n        let params: { providerId: string };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as { providerId: string };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n            };\n        }\n\n        const providerId = params.providerId;\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"providerId\"',\n            );\n        }\n        const apiPath = '/messaging/providers/{providerId}'.replace(\n            '{providerId}',\n            encodeURIComponent(String(providerId)),\n        );\n        const apiPayload: Payload = {};\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n        };\n\n        return this.client.call('delete', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Get a list of all topics from the current Appwrite project.\n     *\n     * @param {string[]} params.queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, emailTotal, smsTotal, pushTotal\n     * @param {string} params.search - Search term to filter your list results. Max length: 256 chars.\n     * @param {boolean} params.total - When set to false, the total count returned will be 0 and will not be calculated.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.TopicList>}\n     */\n    listTopics(params?: {\n        queries?: string[];\n        search?: string;\n        total?: boolean;\n    }): Promise<Models.TopicList>;\n    /**\n     * Get a list of all topics from the current Appwrite project.\n     *\n     * @param {string[]} queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, description, emailTotal, smsTotal, pushTotal\n     * @param {string} search - Search term to filter your list results. Max length: 256 chars.\n     * @param {boolean} total - When set to false, the total count returned will be 0 and will not be calculated.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.TopicList>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    listTopics(\n        queries?: string[],\n        search?: string,\n        total?: boolean,\n    ): Promise<Models.TopicList>;\n    listTopics(\n        paramsOrFirst?:\n            { queries?: string[]; search?: string; total?: boolean } | string[],\n        ...rest: [string?, boolean?]\n    ): Promise<Models.TopicList> {\n        let params: { queries?: string[]; search?: string; total?: boolean };\n\n        if (\n            !paramsOrFirst ||\n            (paramsOrFirst &&\n                typeof paramsOrFirst === 'object' &&\n                !Array.isArray(paramsOrFirst))\n        ) {\n            params = (paramsOrFirst || {}) as {\n                queries?: string[];\n                search?: string;\n                total?: boolean;\n            };\n        } else {\n            params = {\n                queries: paramsOrFirst as string[],\n                search: rest[0] as string,\n                total: rest[1] as boolean,\n            };\n        }\n\n        const queries = params.queries;\n        const search = params.search;\n        const total = params.total;\n        const apiPath = '/messaging/topics';\n        const apiPayload: Payload = {};\n        if (typeof queries !== 'undefined') {\n            apiPayload['queries'] = queries;\n        }\n        if (typeof search !== 'undefined') {\n            apiPayload['search'] = search;\n        }\n        if (typeof total !== 'undefined') {\n            apiPayload['total'] = total;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            accept: 'application/json',\n        };\n\n        return this.client.call('get', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Create a new topic.\n     *\n     * @param {string} params.topicId - Topic ID. Choose a custom Topic ID or a new Topic ID.\n     * @param {string} params.name - Topic Name.\n     * @param {string[]} params.subscribe - An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https://appwrite.io/docs/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Topic>}\n     */\n    createTopic(params: {\n        topicId: string;\n        name: string;\n        subscribe?: string[];\n    }): Promise<Models.Topic>;\n    /**\n     * Create a new topic.\n     *\n     * @param {string} topicId - Topic ID. Choose a custom Topic ID or a new Topic ID.\n     * @param {string} name - Topic Name.\n     * @param {string[]} subscribe - An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https://appwrite.io/docs/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Topic>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    createTopic(\n        topicId: string,\n        name: string,\n        subscribe?: string[],\n    ): Promise<Models.Topic>;\n    createTopic(\n        paramsOrFirst:\n            { topicId: string; name: string; subscribe?: string[] } | string,\n        ...rest: [string?, string[]?]\n    ): Promise<Models.Topic> {\n        let params: { topicId: string; name: string; subscribe?: string[] };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                topicId: string;\n                name: string;\n                subscribe?: string[];\n            };\n        } else {\n            params = {\n                topicId: paramsOrFirst as string,\n                name: rest[0] as string,\n                subscribe: rest[1] as string[],\n            };\n        }\n\n        const topicId = params.topicId;\n        const name = params.name;\n        const subscribe = params.subscribe;\n        if (typeof topicId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"topicId\"',\n            );\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n        const apiPath = '/messaging/topics';\n        const apiPayload: Payload = {};\n        if (typeof topicId !== 'undefined') {\n            apiPayload['topicId'] = topicId;\n        }\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof subscribe !== 'undefined') {\n            apiPayload['subscribe'] = subscribe;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('post', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Get a topic by its unique ID.\n     *\n     *\n     * @param {string} params.topicId - Topic ID.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Topic>}\n     */\n    getTopic(params: { topicId: string }): Promise<Models.Topic>;\n    /**\n     * Get a topic by its unique ID.\n     *\n     *\n     * @param {string} topicId - Topic ID.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Topic>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    getTopic(topicId: string): Promise<Models.Topic>;\n    getTopic(\n        paramsOrFirst: { topicId: string } | string,\n    ): Promise<Models.Topic> {\n        let params: { topicId: string };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as { topicId: string };\n        } else {\n            params = {\n                topicId: paramsOrFirst as string,\n            };\n        }\n\n        const topicId = params.topicId;\n        if (typeof topicId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"topicId\"',\n            );\n        }\n        const apiPath = '/messaging/topics/{topicId}'.replace(\n            '{topicId}',\n            encodeURIComponent(String(topicId)),\n        );\n        const apiPayload: Payload = {};\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            accept: 'application/json',\n        };\n\n        return this.client.call('get', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Update a topic by its unique ID.\n     *\n     *\n     * @param {string} params.topicId - Topic ID.\n     * @param {string} params.name - Topic Name.\n     * @param {string[]} params.subscribe - An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https://appwrite.io/docs/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Topic>}\n     */\n    updateTopic(params: {\n        topicId: string;\n        name?: string;\n        subscribe?: string[];\n    }): Promise<Models.Topic>;\n    /**\n     * Update a topic by its unique ID.\n     *\n     *\n     * @param {string} topicId - Topic ID.\n     * @param {string} name - Topic Name.\n     * @param {string[]} subscribe - An array of role strings with subscribe permission. By default all users are granted with any subscribe permission. [learn more about roles](https://appwrite.io/docs/permissions#permission-roles). Maximum of 100 roles are allowed, each 64 characters long.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Topic>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    updateTopic(\n        topicId: string,\n        name?: string,\n        subscribe?: string[],\n    ): Promise<Models.Topic>;\n    updateTopic(\n        paramsOrFirst:\n            { topicId: string; name?: string; subscribe?: string[] } | string,\n        ...rest: [string?, string[]?]\n    ): Promise<Models.Topic> {\n        let params: { topicId: string; name?: string; subscribe?: string[] };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                topicId: string;\n                name?: string;\n                subscribe?: string[];\n            };\n        } else {\n            params = {\n                topicId: paramsOrFirst as string,\n                name: rest[0] as string,\n                subscribe: rest[1] as string[],\n            };\n        }\n\n        const topicId = params.topicId;\n        const name = params.name;\n        const subscribe = params.subscribe;\n        if (typeof topicId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"topicId\"',\n            );\n        }\n        const apiPath = '/messaging/topics/{topicId}'.replace(\n            '{topicId}',\n            encodeURIComponent(String(topicId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof name !== 'undefined') {\n            apiPayload['name'] = name;\n        }\n        if (typeof subscribe !== 'undefined') {\n            apiPayload['subscribe'] = subscribe;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('patch', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Delete a topic by its unique ID.\n     *\n     * @param {string} params.topicId - Topic ID.\n     * @throws {AppwriteException}\n     * @returns {Promise<{}>}\n     */\n    deleteTopic(params: { topicId: string }): Promise<{}>;\n    /**\n     * Delete a topic by its unique ID.\n     *\n     * @param {string} topicId - Topic ID.\n     * @throws {AppwriteException}\n     * @returns {Promise<{}>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    deleteTopic(topicId: string): Promise<{}>;\n    deleteTopic(paramsOrFirst: { topicId: string } | string): Promise<{}> {\n        let params: { topicId: string };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as { topicId: string };\n        } else {\n            params = {\n                topicId: paramsOrFirst as string,\n            };\n        }\n\n        const topicId = params.topicId;\n        if (typeof topicId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"topicId\"',\n            );\n        }\n        const apiPath = '/messaging/topics/{topicId}'.replace(\n            '{topicId}',\n            encodeURIComponent(String(topicId)),\n        );\n        const apiPayload: Payload = {};\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n        };\n\n        return this.client.call('delete', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Get a list of all subscribers from the current Appwrite project.\n     *\n     * @param {string} params.topicId - Topic ID. The topic ID subscribed to.\n     * @param {string[]} params.queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: targetId, topicId, userId, providerType\n     * @param {string} params.search - Search term to filter your list results. Max length: 256 chars.\n     * @param {boolean} params.total - When set to false, the total count returned will be 0 and will not be calculated.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.SubscriberList>}\n     */\n    listSubscribers(params: {\n        topicId: string;\n        queries?: string[];\n        search?: string;\n        total?: boolean;\n    }): Promise<Models.SubscriberList>;\n    /**\n     * Get a list of all subscribers from the current Appwrite project.\n     *\n     * @param {string} topicId - Topic ID. The topic ID subscribed to.\n     * @param {string[]} queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: targetId, topicId, userId, providerType\n     * @param {string} search - Search term to filter your list results. Max length: 256 chars.\n     * @param {boolean} total - When set to false, the total count returned will be 0 and will not be calculated.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.SubscriberList>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    listSubscribers(\n        topicId: string,\n        queries?: string[],\n        search?: string,\n        total?: boolean,\n    ): Promise<Models.SubscriberList>;\n    listSubscribers(\n        paramsOrFirst:\n            | {\n                  topicId: string;\n                  queries?: string[];\n                  search?: string;\n                  total?: boolean;\n              }\n            | string,\n        ...rest: [string[]?, string?, boolean?]\n    ): Promise<Models.SubscriberList> {\n        let params: {\n            topicId: string;\n            queries?: string[];\n            search?: string;\n            total?: boolean;\n        };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                topicId: string;\n                queries?: string[];\n                search?: string;\n                total?: boolean;\n            };\n        } else {\n            params = {\n                topicId: paramsOrFirst as string,\n                queries: rest[0] as string[],\n                search: rest[1] as string,\n                total: rest[2] as boolean,\n            };\n        }\n\n        const topicId = params.topicId;\n        const queries = params.queries;\n        const search = params.search;\n        const total = params.total;\n        if (typeof topicId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"topicId\"',\n            );\n        }\n        const apiPath = '/messaging/topics/{topicId}/subscribers'.replace(\n            '{topicId}',\n            encodeURIComponent(String(topicId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof queries !== 'undefined') {\n            apiPayload['queries'] = queries;\n        }\n        if (typeof search !== 'undefined') {\n            apiPayload['search'] = search;\n        }\n        if (typeof total !== 'undefined') {\n            apiPayload['total'] = total;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            accept: 'application/json',\n        };\n\n        return this.client.call('get', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Create a new subscriber.\n     *\n     * @param {string} params.topicId - Topic ID. The topic ID to subscribe to.\n     * @param {string} params.subscriberId - Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.\n     * @param {string} params.targetId - Target ID. The target ID to link to the specified Topic ID.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Subscriber>}\n     */\n    createSubscriber(params: {\n        topicId: string;\n        subscriberId: string;\n        targetId: string;\n    }): Promise<Models.Subscriber>;\n    /**\n     * Create a new subscriber.\n     *\n     * @param {string} topicId - Topic ID. The topic ID to subscribe to.\n     * @param {string} subscriberId - Subscriber ID. Choose a custom Subscriber ID or a new Subscriber ID.\n     * @param {string} targetId - Target ID. The target ID to link to the specified Topic ID.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Subscriber>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    createSubscriber(\n        topicId: string,\n        subscriberId: string,\n        targetId: string,\n    ): Promise<Models.Subscriber>;\n    createSubscriber(\n        paramsOrFirst:\n            | { topicId: string; subscriberId: string; targetId: string }\n            | string,\n        ...rest: [string?, string?]\n    ): Promise<Models.Subscriber> {\n        let params: { topicId: string; subscriberId: string; targetId: string };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                topicId: string;\n                subscriberId: string;\n                targetId: string;\n            };\n        } else {\n            params = {\n                topicId: paramsOrFirst as string,\n                subscriberId: rest[0] as string,\n                targetId: rest[1] as string,\n            };\n        }\n\n        const topicId = params.topicId;\n        const subscriberId = params.subscriberId;\n        const targetId = params.targetId;\n        if (typeof topicId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"topicId\"',\n            );\n        }\n        if (typeof subscriberId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"subscriberId\"',\n            );\n        }\n        if (typeof targetId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"targetId\"',\n            );\n        }\n        const apiPath = '/messaging/topics/{topicId}/subscribers'.replace(\n            '{topicId}',\n            encodeURIComponent(String(topicId)),\n        );\n        const apiPayload: Payload = {};\n        if (typeof subscriberId !== 'undefined') {\n            apiPayload['subscriberId'] = subscriberId;\n        }\n        if (typeof targetId !== 'undefined') {\n            apiPayload['targetId'] = targetId;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n            accept: 'application/json',\n        };\n\n        return this.client.call('post', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Get a subscriber by its unique ID.\n     *\n     *\n     * @param {string} params.topicId - Topic ID. The topic ID subscribed to.\n     * @param {string} params.subscriberId - Subscriber ID.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Subscriber>}\n     */\n    getSubscriber(params: {\n        topicId: string;\n        subscriberId: string;\n    }): Promise<Models.Subscriber>;\n    /**\n     * Get a subscriber by its unique ID.\n     *\n     *\n     * @param {string} topicId - Topic ID. The topic ID subscribed to.\n     * @param {string} subscriberId - Subscriber ID.\n     * @throws {AppwriteException}\n     * @returns {Promise<Models.Subscriber>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    getSubscriber(\n        topicId: string,\n        subscriberId: string,\n    ): Promise<Models.Subscriber>;\n    getSubscriber(\n        paramsOrFirst: { topicId: string; subscriberId: string } | string,\n        ...rest: [string?]\n    ): Promise<Models.Subscriber> {\n        let params: { topicId: string; subscriberId: string };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                topicId: string;\n                subscriberId: string;\n            };\n        } else {\n            params = {\n                topicId: paramsOrFirst as string,\n                subscriberId: rest[0] as string,\n            };\n        }\n\n        const topicId = params.topicId;\n        const subscriberId = params.subscriberId;\n        if (typeof topicId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"topicId\"',\n            );\n        }\n        if (typeof subscriberId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"subscriberId\"',\n            );\n        }\n        const apiPath = '/messaging/topics/{topicId}/subscribers/{subscriberId}'\n            .replace('{topicId}', encodeURIComponent(String(topicId)))\n            .replace(\n                '{subscriberId}',\n                encodeURIComponent(String(subscriberId)),\n            );\n        const apiPayload: Payload = {};\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            accept: 'application/json',\n        };\n\n        return this.client.call('get', uri, apiHeaders, apiPayload);\n    }\n\n    /**\n     * Delete a subscriber by its unique ID.\n     *\n     * @param {string} params.topicId - Topic ID. The topic ID subscribed to.\n     * @param {string} params.subscriberId - Subscriber ID.\n     * @throws {AppwriteException}\n     * @returns {Promise<{}>}\n     */\n    deleteSubscriber(params: {\n        topicId: string;\n        subscriberId: string;\n    }): Promise<{}>;\n    /**\n     * Delete a subscriber by its unique ID.\n     *\n     * @param {string} topicId - Topic ID. The topic ID subscribed to.\n     * @param {string} subscriberId - Subscriber ID.\n     * @throws {AppwriteException}\n     * @returns {Promise<{}>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    deleteSubscriber(topicId: string, subscriberId: string): Promise<{}>;\n    deleteSubscriber(\n        paramsOrFirst: { topicId: string; subscriberId: string } | string,\n        ...rest: [string?]\n    ): Promise<{}> {\n        let params: { topicId: string; subscriberId: string };\n\n        if (\n            paramsOrFirst &&\n            typeof paramsOrFirst === 'object' &&\n            !Array.isArray(paramsOrFirst)\n        ) {\n            params = (paramsOrFirst || {}) as {\n                topicId: string;\n                subscriberId: string;\n            };\n        } else {\n            params = {\n                topicId: paramsOrFirst as string,\n                subscriberId: rest[0] as string,\n            };\n        }\n\n        const topicId = params.topicId;\n        const subscriberId = params.subscriberId;\n        if (typeof topicId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"topicId\"',\n            );\n        }\n        if (typeof subscriberId === 'undefined') {\n            throw new AppwriteException(\n                'Missing required parameter: \"subscriberId\"',\n            );\n        }\n        const apiPath = '/messaging/topics/{topicId}/subscribers/{subscriberId}'\n            .replace('{topicId}', encodeURIComponent(String(topicId)))\n            .replace(\n                '{subscriberId}',\n                encodeURIComponent(String(subscriberId)),\n            );\n        const apiPayload: Payload = {};\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'X-Appwrite-Project': this.client.config.project,\n            'content-type': 'application/json',\n        };\n\n        return this.client.call('delete', uri, apiHeaders, apiPayload);\n    }\n}\n"]}