{"version":3,"sources":["../../src/services/messaging.ts"],"names":[],"mappings":"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","file":"messaging.mjs","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\n\nimport { MessagePriority } from '../enums/message-priority';\nimport { SmtpEncryption } from '../enums/smtp-encryption';\n\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?: { queries?: string[], search?: string, total?: boolean }): 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(queries?: string[], search?: string, total?: boolean): Promise<Models.MessageList>;\n    listMessages(\n        paramsOrFirst?: { 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 (!paramsOrFirst || (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { queries?: string[], search?: string, total?: boolean };\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\n\n        const apiPath = '/messaging/messages';\n        const payload: Payload = {};\n        if (typeof queries !== 'undefined') {\n            payload['queries'] = queries;\n        }\n        if (typeof search !== 'undefined') {\n            payload['search'] = search;\n        }\n        if (typeof total !== 'undefined') {\n            payload['total'] = total;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n        }\n\n        return this.client.call(\n            'get',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { messageId: string, subject: string, content: string, topics?: string[], users?: string[], targets?: string[], cc?: string[], bcc?: string[], attachments?: string[], draft?: boolean, html?: boolean, scheduledAt?: string }): 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(messageId: string, subject: string, content: string, topics?: string[], users?: string[], targets?: string[], cc?: string[], bcc?: string[], attachments?: string[], draft?: boolean, html?: boolean, scheduledAt?: string): Promise<Models.Message>;\n    createEmail(\n        paramsOrFirst: { messageId: string, subject: string, content: string, topics?: string[], users?: string[], targets?: string[], cc?: string[], bcc?: string[], attachments?: string[], draft?: boolean, html?: boolean, scheduledAt?: string } | string,\n        ...rest: [(string)?, (string)?, (string[])?, (string[])?, (string[])?, (string[])?, (string[])?, (string[])?, (boolean)?, (boolean)?, (string)?]    \n    ): Promise<Models.Message> {\n        let params: { messageId: string, subject: string, content: string, topics?: string[], users?: string[], targets?: string[], cc?: string[], bcc?: string[], attachments?: string[], draft?: boolean, html?: boolean, scheduledAt?: string };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { messageId: string, subject: string, content: string, topics?: string[], users?: string[], targets?: string[], cc?: string[], bcc?: string[], attachments?: string[], draft?: boolean, html?: boolean, scheduledAt?: string };\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\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"messageId\"');\n        }\n        if (typeof subject === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"subject\"');\n        }\n        if (typeof content === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"content\"');\n        }\n\n        const apiPath = '/messaging/messages/email';\n        const payload: Payload = {};\n        if (typeof messageId !== 'undefined') {\n            payload['messageId'] = messageId;\n        }\n        if (typeof subject !== 'undefined') {\n            payload['subject'] = subject;\n        }\n        if (typeof content !== 'undefined') {\n            payload['content'] = content;\n        }\n        if (typeof topics !== 'undefined') {\n            payload['topics'] = topics;\n        }\n        if (typeof users !== 'undefined') {\n            payload['users'] = users;\n        }\n        if (typeof targets !== 'undefined') {\n            payload['targets'] = targets;\n        }\n        if (typeof cc !== 'undefined') {\n            payload['cc'] = cc;\n        }\n        if (typeof bcc !== 'undefined') {\n            payload['bcc'] = bcc;\n        }\n        if (typeof attachments !== 'undefined') {\n            payload['attachments'] = attachments;\n        }\n        if (typeof draft !== 'undefined') {\n            payload['draft'] = draft;\n        }\n        if (typeof html !== 'undefined') {\n            payload['html'] = html;\n        }\n        if (typeof scheduledAt !== 'undefined') {\n            payload['scheduledAt'] = scheduledAt;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'post',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { messageId: string, topics?: string[], users?: string[], targets?: string[], subject?: string, content?: string, draft?: boolean, html?: boolean, cc?: string[], bcc?: string[], scheduledAt?: string, attachments?: string[] }): 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(messageId: string, topics?: string[], users?: string[], targets?: string[], subject?: string, content?: string, draft?: boolean, html?: boolean, cc?: string[], bcc?: string[], scheduledAt?: string, attachments?: string[]): Promise<Models.Message>;\n    updateEmail(\n        paramsOrFirst: { messageId: string, topics?: string[], users?: string[], targets?: string[], subject?: string, content?: string, draft?: boolean, html?: boolean, cc?: string[], bcc?: string[], scheduledAt?: string, attachments?: string[] } | string,\n        ...rest: [(string[])?, (string[])?, (string[])?, (string)?, (string)?, (boolean)?, (boolean)?, (string[])?, (string[])?, (string)?, (string[])?]    \n    ): Promise<Models.Message> {\n        let params: { messageId: string, topics?: string[], users?: string[], targets?: string[], subject?: string, content?: string, draft?: boolean, html?: boolean, cc?: string[], bcc?: string[], scheduledAt?: string, attachments?: string[] };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { messageId: string, topics?: string[], users?: string[], targets?: string[], subject?: string, content?: string, draft?: boolean, html?: boolean, cc?: string[], bcc?: string[], scheduledAt?: string, attachments?: string[] };\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\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"messageId\"');\n        }\n\n        const apiPath = '/messaging/messages/email/{messageId}'.replace('{messageId}', messageId);\n        const payload: Payload = {};\n        if (typeof topics !== 'undefined') {\n            payload['topics'] = topics;\n        }\n        if (typeof users !== 'undefined') {\n            payload['users'] = users;\n        }\n        if (typeof targets !== 'undefined') {\n            payload['targets'] = targets;\n        }\n        if (typeof subject !== 'undefined') {\n            payload['subject'] = subject;\n        }\n        if (typeof content !== 'undefined') {\n            payload['content'] = content;\n        }\n        if (typeof draft !== 'undefined') {\n            payload['draft'] = draft;\n        }\n        if (typeof html !== 'undefined') {\n            payload['html'] = html;\n        }\n        if (typeof cc !== 'undefined') {\n            payload['cc'] = cc;\n        }\n        if (typeof bcc !== 'undefined') {\n            payload['bcc'] = bcc;\n        }\n        if (typeof scheduledAt !== 'undefined') {\n            payload['scheduledAt'] = scheduledAt;\n        }\n        if (typeof attachments !== 'undefined') {\n            payload['attachments'] = attachments;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'patch',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { messageId: string, title?: string, body?: string, topics?: string[], users?: string[], targets?: string[], data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: number, draft?: boolean, scheduledAt?: string, contentAvailable?: boolean, critical?: boolean, priority?: MessagePriority }): 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(messageId: string, title?: string, body?: string, topics?: string[], users?: string[], targets?: string[], data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: number, draft?: boolean, scheduledAt?: string, contentAvailable?: boolean, critical?: boolean, priority?: MessagePriority): Promise<Models.Message>;\n    createPush(\n        paramsOrFirst: { messageId: string, title?: string, body?: string, topics?: string[], users?: string[], targets?: string[], data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: number, draft?: boolean, scheduledAt?: string, contentAvailable?: boolean, critical?: boolean, priority?: MessagePriority } | string,\n        ...rest: [(string)?, (string)?, (string[])?, (string[])?, (string[])?, (object)?, (string)?, (string)?, (string)?, (string)?, (string)?, (string)?, (number)?, (boolean)?, (string)?, (boolean)?, (boolean)?, (MessagePriority)?]    \n    ): Promise<Models.Message> {\n        let params: { messageId: string, title?: string, body?: string, topics?: string[], users?: string[], targets?: string[], data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: number, draft?: boolean, scheduledAt?: string, contentAvailable?: boolean, critical?: boolean, priority?: MessagePriority };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { messageId: string, title?: string, body?: string, topics?: string[], users?: string[], targets?: string[], data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: number, draft?: boolean, scheduledAt?: string, contentAvailable?: boolean, critical?: boolean, priority?: MessagePriority };\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\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"messageId\"');\n        }\n\n        const apiPath = '/messaging/messages/push';\n        const payload: Payload = {};\n        if (typeof messageId !== 'undefined') {\n            payload['messageId'] = messageId;\n        }\n        if (typeof title !== 'undefined') {\n            payload['title'] = title;\n        }\n        if (typeof body !== 'undefined') {\n            payload['body'] = body;\n        }\n        if (typeof topics !== 'undefined') {\n            payload['topics'] = topics;\n        }\n        if (typeof users !== 'undefined') {\n            payload['users'] = users;\n        }\n        if (typeof targets !== 'undefined') {\n            payload['targets'] = targets;\n        }\n        if (typeof data !== 'undefined') {\n            payload['data'] = data;\n        }\n        if (typeof action !== 'undefined') {\n            payload['action'] = action;\n        }\n        if (typeof image !== 'undefined') {\n            payload['image'] = image;\n        }\n        if (typeof icon !== 'undefined') {\n            payload['icon'] = icon;\n        }\n        if (typeof sound !== 'undefined') {\n            payload['sound'] = sound;\n        }\n        if (typeof color !== 'undefined') {\n            payload['color'] = color;\n        }\n        if (typeof tag !== 'undefined') {\n            payload['tag'] = tag;\n        }\n        if (typeof badge !== 'undefined') {\n            payload['badge'] = badge;\n        }\n        if (typeof draft !== 'undefined') {\n            payload['draft'] = draft;\n        }\n        if (typeof scheduledAt !== 'undefined') {\n            payload['scheduledAt'] = scheduledAt;\n        }\n        if (typeof contentAvailable !== 'undefined') {\n            payload['contentAvailable'] = contentAvailable;\n        }\n        if (typeof critical !== 'undefined') {\n            payload['critical'] = critical;\n        }\n        if (typeof priority !== 'undefined') {\n            payload['priority'] = priority;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'post',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { messageId: string, topics?: string[], users?: string[], targets?: string[], title?: string, body?: string, data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: number, draft?: boolean, scheduledAt?: string, contentAvailable?: boolean, critical?: boolean, priority?: MessagePriority }): 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(messageId: string, topics?: string[], users?: string[], targets?: string[], title?: string, body?: string, data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: number, draft?: boolean, scheduledAt?: string, contentAvailable?: boolean, critical?: boolean, priority?: MessagePriority): Promise<Models.Message>;\n    updatePush(\n        paramsOrFirst: { messageId: string, topics?: string[], users?: string[], targets?: string[], title?: string, body?: string, data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: number, draft?: boolean, scheduledAt?: string, contentAvailable?: boolean, critical?: boolean, priority?: MessagePriority } | string,\n        ...rest: [(string[])?, (string[])?, (string[])?, (string)?, (string)?, (object)?, (string)?, (string)?, (string)?, (string)?, (string)?, (string)?, (number)?, (boolean)?, (string)?, (boolean)?, (boolean)?, (MessagePriority)?]    \n    ): Promise<Models.Message> {\n        let params: { messageId: string, topics?: string[], users?: string[], targets?: string[], title?: string, body?: string, data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: number, draft?: boolean, scheduledAt?: string, contentAvailable?: boolean, critical?: boolean, priority?: MessagePriority };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { messageId: string, topics?: string[], users?: string[], targets?: string[], title?: string, body?: string, data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: number, draft?: boolean, scheduledAt?: string, contentAvailable?: boolean, critical?: boolean, priority?: MessagePriority };\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\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"messageId\"');\n        }\n\n        const apiPath = '/messaging/messages/push/{messageId}'.replace('{messageId}', messageId);\n        const payload: Payload = {};\n        if (typeof topics !== 'undefined') {\n            payload['topics'] = topics;\n        }\n        if (typeof users !== 'undefined') {\n            payload['users'] = users;\n        }\n        if (typeof targets !== 'undefined') {\n            payload['targets'] = targets;\n        }\n        if (typeof title !== 'undefined') {\n            payload['title'] = title;\n        }\n        if (typeof body !== 'undefined') {\n            payload['body'] = body;\n        }\n        if (typeof data !== 'undefined') {\n            payload['data'] = data;\n        }\n        if (typeof action !== 'undefined') {\n            payload['action'] = action;\n        }\n        if (typeof image !== 'undefined') {\n            payload['image'] = image;\n        }\n        if (typeof icon !== 'undefined') {\n            payload['icon'] = icon;\n        }\n        if (typeof sound !== 'undefined') {\n            payload['sound'] = sound;\n        }\n        if (typeof color !== 'undefined') {\n            payload['color'] = color;\n        }\n        if (typeof tag !== 'undefined') {\n            payload['tag'] = tag;\n        }\n        if (typeof badge !== 'undefined') {\n            payload['badge'] = badge;\n        }\n        if (typeof draft !== 'undefined') {\n            payload['draft'] = draft;\n        }\n        if (typeof scheduledAt !== 'undefined') {\n            payload['scheduledAt'] = scheduledAt;\n        }\n        if (typeof contentAvailable !== 'undefined') {\n            payload['contentAvailable'] = contentAvailable;\n        }\n        if (typeof critical !== 'undefined') {\n            payload['critical'] = critical;\n        }\n        if (typeof priority !== 'undefined') {\n            payload['priority'] = priority;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'patch',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { messageId: string, content: string, topics?: string[], users?: string[], targets?: string[], draft?: boolean, scheduledAt?: string }): 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(messageId: string, content: string, topics?: string[], users?: string[], targets?: string[], draft?: boolean, scheduledAt?: string): Promise<Models.Message>;\n    createSms(\n        paramsOrFirst: { messageId: string, content: string, topics?: string[], users?: string[], targets?: string[], draft?: boolean, scheduledAt?: string } | string,\n        ...rest: [(string)?, (string[])?, (string[])?, (string[])?, (boolean)?, (string)?]    \n    ): Promise<Models.Message> {\n        let params: { messageId: string, content: string, topics?: string[], users?: string[], targets?: string[], draft?: boolean, scheduledAt?: string };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { messageId: string, content: string, topics?: string[], users?: string[], targets?: string[], draft?: boolean, scheduledAt?: string };\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\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"messageId\"');\n        }\n        if (typeof content === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"content\"');\n        }\n\n        const apiPath = '/messaging/messages/sms';\n        const payload: Payload = {};\n        if (typeof messageId !== 'undefined') {\n            payload['messageId'] = messageId;\n        }\n        if (typeof content !== 'undefined') {\n            payload['content'] = content;\n        }\n        if (typeof topics !== 'undefined') {\n            payload['topics'] = topics;\n        }\n        if (typeof users !== 'undefined') {\n            payload['users'] = users;\n        }\n        if (typeof targets !== 'undefined') {\n            payload['targets'] = targets;\n        }\n        if (typeof draft !== 'undefined') {\n            payload['draft'] = draft;\n        }\n        if (typeof scheduledAt !== 'undefined') {\n            payload['scheduledAt'] = scheduledAt;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'post',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { messageId: string, content: string, topics?: string[], users?: string[], targets?: string[], draft?: boolean, scheduledAt?: string }): 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(messageId: string, content: string, topics?: string[], users?: string[], targets?: string[], draft?: boolean, scheduledAt?: string): Promise<Models.Message>;\n    createSMS(\n        paramsOrFirst: { messageId: string, content: string, topics?: string[], users?: string[], targets?: string[], draft?: boolean, scheduledAt?: string } | string,\n        ...rest: [(string)?, (string[])?, (string[])?, (string[])?, (boolean)?, (string)?]    \n    ): Promise<Models.Message> {\n        let params: { messageId: string, content: string, topics?: string[], users?: string[], targets?: string[], draft?: boolean, scheduledAt?: string };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { messageId: string, content: string, topics?: string[], users?: string[], targets?: string[], draft?: boolean, scheduledAt?: string };\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\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"messageId\"');\n        }\n        if (typeof content === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"content\"');\n        }\n\n        const apiPath = '/messaging/messages/sms';\n        const payload: Payload = {};\n        if (typeof messageId !== 'undefined') {\n            payload['messageId'] = messageId;\n        }\n        if (typeof content !== 'undefined') {\n            payload['content'] = content;\n        }\n        if (typeof topics !== 'undefined') {\n            payload['topics'] = topics;\n        }\n        if (typeof users !== 'undefined') {\n            payload['users'] = users;\n        }\n        if (typeof targets !== 'undefined') {\n            payload['targets'] = targets;\n        }\n        if (typeof draft !== 'undefined') {\n            payload['draft'] = draft;\n        }\n        if (typeof scheduledAt !== 'undefined') {\n            payload['scheduledAt'] = scheduledAt;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'post',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { messageId: string, topics?: string[], users?: string[], targets?: string[], content?: string, draft?: boolean, scheduledAt?: string }): 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(messageId: string, topics?: string[], users?: string[], targets?: string[], content?: string, draft?: boolean, scheduledAt?: string): Promise<Models.Message>;\n    updateSms(\n        paramsOrFirst: { messageId: string, topics?: string[], users?: string[], targets?: string[], content?: string, draft?: boolean, scheduledAt?: string } | string,\n        ...rest: [(string[])?, (string[])?, (string[])?, (string)?, (boolean)?, (string)?]    \n    ): Promise<Models.Message> {\n        let params: { messageId: string, topics?: string[], users?: string[], targets?: string[], content?: string, draft?: boolean, scheduledAt?: string };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { messageId: string, topics?: string[], users?: string[], targets?: string[], content?: string, draft?: boolean, scheduledAt?: string };\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\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"messageId\"');\n        }\n\n        const apiPath = '/messaging/messages/sms/{messageId}'.replace('{messageId}', messageId);\n        const payload: Payload = {};\n        if (typeof topics !== 'undefined') {\n            payload['topics'] = topics;\n        }\n        if (typeof users !== 'undefined') {\n            payload['users'] = users;\n        }\n        if (typeof targets !== 'undefined') {\n            payload['targets'] = targets;\n        }\n        if (typeof content !== 'undefined') {\n            payload['content'] = content;\n        }\n        if (typeof draft !== 'undefined') {\n            payload['draft'] = draft;\n        }\n        if (typeof scheduledAt !== 'undefined') {\n            payload['scheduledAt'] = scheduledAt;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'patch',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { messageId: string, topics?: string[], users?: string[], targets?: string[], content?: string, draft?: boolean, scheduledAt?: string }): 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(messageId: string, topics?: string[], users?: string[], targets?: string[], content?: string, draft?: boolean, scheduledAt?: string): Promise<Models.Message>;\n    updateSMS(\n        paramsOrFirst: { messageId: string, topics?: string[], users?: string[], targets?: string[], content?: string, draft?: boolean, scheduledAt?: string } | string,\n        ...rest: [(string[])?, (string[])?, (string[])?, (string)?, (boolean)?, (string)?]    \n    ): Promise<Models.Message> {\n        let params: { messageId: string, topics?: string[], users?: string[], targets?: string[], content?: string, draft?: boolean, scheduledAt?: string };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { messageId: string, topics?: string[], users?: string[], targets?: string[], content?: string, draft?: boolean, scheduledAt?: string };\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\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"messageId\"');\n        }\n\n        const apiPath = '/messaging/messages/sms/{messageId}'.replace('{messageId}', messageId);\n        const payload: Payload = {};\n        if (typeof topics !== 'undefined') {\n            payload['topics'] = topics;\n        }\n        if (typeof users !== 'undefined') {\n            payload['users'] = users;\n        }\n        if (typeof targets !== 'undefined') {\n            payload['targets'] = targets;\n        }\n        if (typeof content !== 'undefined') {\n            payload['content'] = content;\n        }\n        if (typeof draft !== 'undefined') {\n            payload['draft'] = draft;\n        }\n        if (typeof scheduledAt !== 'undefined') {\n            payload['scheduledAt'] = scheduledAt;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'patch',\n            uri,\n            apiHeaders,\n            payload,\n        );\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 ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { messageId: string };\n        } else {\n            params = {\n                messageId: paramsOrFirst as string            \n            };\n        }\n        \n        const messageId = params.messageId;\n\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"messageId\"');\n        }\n\n        const apiPath = '/messaging/messages/{messageId}'.replace('{messageId}', messageId);\n        const payload: Payload = {};\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n        }\n\n        return this.client.call(\n            'get',\n            uri,\n            apiHeaders,\n            payload,\n        );\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(\n        paramsOrFirst: { messageId: string } | string    \n    ): Promise<{}> {\n        let params: { messageId: string };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { messageId: string };\n        } else {\n            params = {\n                messageId: paramsOrFirst as string            \n            };\n        }\n        \n        const messageId = params.messageId;\n\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"messageId\"');\n        }\n\n        const apiPath = '/messaging/messages/{messageId}'.replace('{messageId}', messageId);\n        const payload: Payload = {};\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'delete',\n            uri,\n            apiHeaders,\n            payload,\n        );\n    }\n\n    /**\n     * Get the message activity logs listed by its unique ID.\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). Only supported methods are limit and offset\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.LogList>}\n     */\n    listMessageLogs(params: { messageId: string, queries?: string[], total?: boolean }): Promise<Models.LogList>;\n    /**\n     * Get the message activity logs listed by its unique ID.\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). Only supported methods are limit and offset\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.LogList>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    listMessageLogs(messageId: string, queries?: string[], total?: boolean): Promise<Models.LogList>;\n    listMessageLogs(\n        paramsOrFirst: { messageId: string, queries?: string[], total?: boolean } | string,\n        ...rest: [(string[])?, (boolean)?]    \n    ): Promise<Models.LogList> {\n        let params: { messageId: string, queries?: string[], total?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { messageId: string, queries?: string[], total?: boolean };\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\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"messageId\"');\n        }\n\n        const apiPath = '/messaging/messages/{messageId}/logs'.replace('{messageId}', messageId);\n        const payload: Payload = {};\n        if (typeof queries !== 'undefined') {\n            payload['queries'] = queries;\n        }\n        if (typeof total !== 'undefined') {\n            payload['total'] = total;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n        }\n\n        return this.client.call(\n            'get',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { messageId: string, queries?: string[], total?: boolean }): 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(messageId: string, queries?: string[], total?: boolean): Promise<Models.TargetList>;\n    listTargets(\n        paramsOrFirst: { 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 ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { messageId: string, queries?: string[], total?: boolean };\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\n        if (typeof messageId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"messageId\"');\n        }\n\n        const apiPath = '/messaging/messages/{messageId}/targets'.replace('{messageId}', messageId);\n        const payload: Payload = {};\n        if (typeof queries !== 'undefined') {\n            payload['queries'] = queries;\n        }\n        if (typeof total !== 'undefined') {\n            payload['total'] = total;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n        }\n\n        return this.client.call(\n            'get',\n            uri,\n            apiHeaders,\n            payload,\n        );\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?: { queries?: string[], search?: string, total?: boolean }): 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(queries?: string[], search?: string, total?: boolean): Promise<Models.ProviderList>;\n    listProviders(\n        paramsOrFirst?: { 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 (!paramsOrFirst || (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { queries?: string[], search?: string, total?: boolean };\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\n\n        const apiPath = '/messaging/providers';\n        const payload: Payload = {};\n        if (typeof queries !== 'undefined') {\n            payload['queries'] = queries;\n        }\n        if (typeof search !== 'undefined') {\n            payload['search'] = search;\n        }\n        if (typeof total !== 'undefined') {\n            payload['total'] = total;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n        }\n\n        return this.client.call(\n            'get',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name: string, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean, enabled?: boolean }): 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(providerId: string, name: string, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean, enabled?: boolean): Promise<Models.Provider>;\n    createApnsProvider(\n        paramsOrFirst: { providerId: string, name: string, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean, enabled?: boolean } | string,\n        ...rest: [(string)?, (string)?, (string)?, (string)?, (string)?, (boolean)?, (boolean)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name: string, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean, enabled?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name: string, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean, enabled?: boolean };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n\n        const apiPath = '/messaging/providers/apns';\n        const payload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            payload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof authKey !== 'undefined') {\n            payload['authKey'] = authKey;\n        }\n        if (typeof authKeyId !== 'undefined') {\n            payload['authKeyId'] = authKeyId;\n        }\n        if (typeof teamId !== 'undefined') {\n            payload['teamId'] = teamId;\n        }\n        if (typeof bundleId !== 'undefined') {\n            payload['bundleId'] = bundleId;\n        }\n        if (typeof sandbox !== 'undefined') {\n            payload['sandbox'] = sandbox;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'post',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name: string, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean, enabled?: boolean }): 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(providerId: string, name: string, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean, enabled?: boolean): Promise<Models.Provider>;\n    createAPNSProvider(\n        paramsOrFirst: { providerId: string, name: string, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean, enabled?: boolean } | string,\n        ...rest: [(string)?, (string)?, (string)?, (string)?, (string)?, (boolean)?, (boolean)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name: string, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean, enabled?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name: string, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean, enabled?: boolean };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n\n        const apiPath = '/messaging/providers/apns';\n        const payload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            payload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof authKey !== 'undefined') {\n            payload['authKey'] = authKey;\n        }\n        if (typeof authKeyId !== 'undefined') {\n            payload['authKeyId'] = authKeyId;\n        }\n        if (typeof teamId !== 'undefined') {\n            payload['teamId'] = teamId;\n        }\n        if (typeof bundleId !== 'undefined') {\n            payload['bundleId'] = bundleId;\n        }\n        if (typeof sandbox !== 'undefined') {\n            payload['sandbox'] = sandbox;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'post',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name?: string, enabled?: boolean, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean }): 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(providerId: string, name?: string, enabled?: boolean, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean): Promise<Models.Provider>;\n    updateApnsProvider(\n        paramsOrFirst: { providerId: string, name?: string, enabled?: boolean, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean } | string,\n        ...rest: [(string)?, (boolean)?, (string)?, (string)?, (string)?, (string)?, (boolean)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name?: string, enabled?: boolean, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name?: string, enabled?: boolean, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n\n        const apiPath = '/messaging/providers/apns/{providerId}'.replace('{providerId}', providerId);\n        const payload: Payload = {};\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        if (typeof authKey !== 'undefined') {\n            payload['authKey'] = authKey;\n        }\n        if (typeof authKeyId !== 'undefined') {\n            payload['authKeyId'] = authKeyId;\n        }\n        if (typeof teamId !== 'undefined') {\n            payload['teamId'] = teamId;\n        }\n        if (typeof bundleId !== 'undefined') {\n            payload['bundleId'] = bundleId;\n        }\n        if (typeof sandbox !== 'undefined') {\n            payload['sandbox'] = sandbox;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'patch',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name?: string, enabled?: boolean, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean }): 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(providerId: string, name?: string, enabled?: boolean, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean): Promise<Models.Provider>;\n    updateAPNSProvider(\n        paramsOrFirst: { providerId: string, name?: string, enabled?: boolean, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean } | string,\n        ...rest: [(string)?, (boolean)?, (string)?, (string)?, (string)?, (string)?, (boolean)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name?: string, enabled?: boolean, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name?: string, enabled?: boolean, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n\n        const apiPath = '/messaging/providers/apns/{providerId}'.replace('{providerId}', providerId);\n        const payload: Payload = {};\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        if (typeof authKey !== 'undefined') {\n            payload['authKey'] = authKey;\n        }\n        if (typeof authKeyId !== 'undefined') {\n            payload['authKeyId'] = authKeyId;\n        }\n        if (typeof teamId !== 'undefined') {\n            payload['teamId'] = teamId;\n        }\n        if (typeof bundleId !== 'undefined') {\n            payload['bundleId'] = bundleId;\n        }\n        if (typeof sandbox !== 'undefined') {\n            payload['sandbox'] = sandbox;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'patch',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name: string, serviceAccountJSON?: object, enabled?: boolean }): 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(providerId: string, name: string, serviceAccountJSON?: object, enabled?: boolean): Promise<Models.Provider>;\n    createFcmProvider(\n        paramsOrFirst: { providerId: string, name: string, serviceAccountJSON?: object, enabled?: boolean } | string,\n        ...rest: [(string)?, (object)?, (boolean)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name: string, serviceAccountJSON?: object, enabled?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name: string, serviceAccountJSON?: object, enabled?: boolean };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n\n        const apiPath = '/messaging/providers/fcm';\n        const payload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            payload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof serviceAccountJSON !== 'undefined') {\n            payload['serviceAccountJSON'] = serviceAccountJSON;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'post',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name: string, serviceAccountJSON?: object, enabled?: boolean }): 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(providerId: string, name: string, serviceAccountJSON?: object, enabled?: boolean): Promise<Models.Provider>;\n    createFCMProvider(\n        paramsOrFirst: { providerId: string, name: string, serviceAccountJSON?: object, enabled?: boolean } | string,\n        ...rest: [(string)?, (object)?, (boolean)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name: string, serviceAccountJSON?: object, enabled?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name: string, serviceAccountJSON?: object, enabled?: boolean };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n\n        const apiPath = '/messaging/providers/fcm';\n        const payload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            payload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof serviceAccountJSON !== 'undefined') {\n            payload['serviceAccountJSON'] = serviceAccountJSON;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'post',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name?: string, enabled?: boolean, serviceAccountJSON?: object }): 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(providerId: string, name?: string, enabled?: boolean, serviceAccountJSON?: object): Promise<Models.Provider>;\n    updateFcmProvider(\n        paramsOrFirst: { providerId: string, name?: string, enabled?: boolean, serviceAccountJSON?: object } | string,\n        ...rest: [(string)?, (boolean)?, (object)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name?: string, enabled?: boolean, serviceAccountJSON?: object };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name?: string, enabled?: boolean, serviceAccountJSON?: object };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n\n        const apiPath = '/messaging/providers/fcm/{providerId}'.replace('{providerId}', providerId);\n        const payload: Payload = {};\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        if (typeof serviceAccountJSON !== 'undefined') {\n            payload['serviceAccountJSON'] = serviceAccountJSON;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'patch',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name?: string, enabled?: boolean, serviceAccountJSON?: object }): 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(providerId: string, name?: string, enabled?: boolean, serviceAccountJSON?: object): Promise<Models.Provider>;\n    updateFCMProvider(\n        paramsOrFirst: { providerId: string, name?: string, enabled?: boolean, serviceAccountJSON?: object } | string,\n        ...rest: [(string)?, (boolean)?, (object)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name?: string, enabled?: boolean, serviceAccountJSON?: object };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name?: string, enabled?: boolean, serviceAccountJSON?: object };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n\n        const apiPath = '/messaging/providers/fcm/{providerId}'.replace('{providerId}', providerId);\n        const payload: Payload = {};\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        if (typeof serviceAccountJSON !== 'undefined') {\n            payload['serviceAccountJSON'] = serviceAccountJSON;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'patch',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name: string, apiKey?: string, domain?: string, isEuRegion?: boolean, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean }): 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(providerId: string, name: string, apiKey?: string, domain?: string, isEuRegion?: boolean, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise<Models.Provider>;\n    createMailgunProvider(\n        paramsOrFirst: { providerId: string, name: string, apiKey?: string, domain?: string, isEuRegion?: boolean, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean } | string,\n        ...rest: [(string)?, (string)?, (string)?, (boolean)?, (string)?, (string)?, (string)?, (string)?, (boolean)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name: string, apiKey?: string, domain?: string, isEuRegion?: boolean, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name: string, apiKey?: string, domain?: string, isEuRegion?: boolean, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n\n        const apiPath = '/messaging/providers/mailgun';\n        const payload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            payload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof apiKey !== 'undefined') {\n            payload['apiKey'] = apiKey;\n        }\n        if (typeof domain !== 'undefined') {\n            payload['domain'] = domain;\n        }\n        if (typeof isEuRegion !== 'undefined') {\n            payload['isEuRegion'] = isEuRegion;\n        }\n        if (typeof fromName !== 'undefined') {\n            payload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            payload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            payload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            payload['replyToEmail'] = replyToEmail;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'post',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name?: string, apiKey?: string, domain?: string, isEuRegion?: boolean, enabled?: boolean, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string }): 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(providerId: string, name?: string, apiKey?: string, domain?: string, isEuRegion?: boolean, enabled?: boolean, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string): Promise<Models.Provider>;\n    updateMailgunProvider(\n        paramsOrFirst: { providerId: string, name?: string, apiKey?: string, domain?: string, isEuRegion?: boolean, enabled?: boolean, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string } | string,\n        ...rest: [(string)?, (string)?, (string)?, (boolean)?, (boolean)?, (string)?, (string)?, (string)?, (string)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name?: string, apiKey?: string, domain?: string, isEuRegion?: boolean, enabled?: boolean, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name?: string, apiKey?: string, domain?: string, isEuRegion?: boolean, enabled?: boolean, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n\n        const apiPath = '/messaging/providers/mailgun/{providerId}'.replace('{providerId}', providerId);\n        const payload: Payload = {};\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof apiKey !== 'undefined') {\n            payload['apiKey'] = apiKey;\n        }\n        if (typeof domain !== 'undefined') {\n            payload['domain'] = domain;\n        }\n        if (typeof isEuRegion !== 'undefined') {\n            payload['isEuRegion'] = isEuRegion;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        if (typeof fromName !== 'undefined') {\n            payload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            payload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            payload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            payload['replyToEmail'] = replyToEmail;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'patch',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name: string, templateId?: string, senderId?: string, authKey?: string, enabled?: boolean }): 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(providerId: string, name: string, templateId?: string, senderId?: string, authKey?: string, enabled?: boolean): Promise<Models.Provider>;\n    createMsg91Provider(\n        paramsOrFirst: { providerId: string, name: string, templateId?: string, senderId?: string, authKey?: string, enabled?: boolean } | string,\n        ...rest: [(string)?, (string)?, (string)?, (string)?, (boolean)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name: string, templateId?: string, senderId?: string, authKey?: string, enabled?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name: string, templateId?: string, senderId?: string, authKey?: string, enabled?: boolean };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n\n        const apiPath = '/messaging/providers/msg91';\n        const payload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            payload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof templateId !== 'undefined') {\n            payload['templateId'] = templateId;\n        }\n        if (typeof senderId !== 'undefined') {\n            payload['senderId'] = senderId;\n        }\n        if (typeof authKey !== 'undefined') {\n            payload['authKey'] = authKey;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'post',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name?: string, enabled?: boolean, templateId?: string, senderId?: string, authKey?: string }): 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(providerId: string, name?: string, enabled?: boolean, templateId?: string, senderId?: string, authKey?: string): Promise<Models.Provider>;\n    updateMsg91Provider(\n        paramsOrFirst: { providerId: string, name?: string, enabled?: boolean, templateId?: string, senderId?: string, authKey?: string } | string,\n        ...rest: [(string)?, (boolean)?, (string)?, (string)?, (string)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name?: string, enabled?: boolean, templateId?: string, senderId?: string, authKey?: string };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name?: string, enabled?: boolean, templateId?: string, senderId?: string, authKey?: string };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n\n        const apiPath = '/messaging/providers/msg91/{providerId}'.replace('{providerId}', providerId);\n        const payload: Payload = {};\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        if (typeof templateId !== 'undefined') {\n            payload['templateId'] = templateId;\n        }\n        if (typeof senderId !== 'undefined') {\n            payload['senderId'] = senderId;\n        }\n        if (typeof authKey !== 'undefined') {\n            payload['authKey'] = authKey;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'patch',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name: string, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean }): 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(providerId: string, name: string, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise<Models.Provider>;\n    createResendProvider(\n        paramsOrFirst: { providerId: string, name: string, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean } | string,\n        ...rest: [(string)?, (string)?, (string)?, (string)?, (string)?, (string)?, (boolean)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name: string, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name: string, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n\n        const apiPath = '/messaging/providers/resend';\n        const payload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            payload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof apiKey !== 'undefined') {\n            payload['apiKey'] = apiKey;\n        }\n        if (typeof fromName !== 'undefined') {\n            payload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            payload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            payload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            payload['replyToEmail'] = replyToEmail;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'post',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name?: string, enabled?: boolean, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string }): 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(providerId: string, name?: string, enabled?: boolean, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string): Promise<Models.Provider>;\n    updateResendProvider(\n        paramsOrFirst: { providerId: string, name?: string, enabled?: boolean, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string } | string,\n        ...rest: [(string)?, (boolean)?, (string)?, (string)?, (string)?, (string)?, (string)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name?: string, enabled?: boolean, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name?: string, enabled?: boolean, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n\n        const apiPath = '/messaging/providers/resend/{providerId}'.replace('{providerId}', providerId);\n        const payload: Payload = {};\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        if (typeof apiKey !== 'undefined') {\n            payload['apiKey'] = apiKey;\n        }\n        if (typeof fromName !== 'undefined') {\n            payload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            payload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            payload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            payload['replyToEmail'] = replyToEmail;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'patch',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name: string, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean }): 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(providerId: string, name: string, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise<Models.Provider>;\n    createSendgridProvider(\n        paramsOrFirst: { providerId: string, name: string, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean } | string,\n        ...rest: [(string)?, (string)?, (string)?, (string)?, (string)?, (string)?, (boolean)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name: string, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name: string, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n\n        const apiPath = '/messaging/providers/sendgrid';\n        const payload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            payload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof apiKey !== 'undefined') {\n            payload['apiKey'] = apiKey;\n        }\n        if (typeof fromName !== 'undefined') {\n            payload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            payload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            payload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            payload['replyToEmail'] = replyToEmail;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'post',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name?: string, enabled?: boolean, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string }): 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(providerId: string, name?: string, enabled?: boolean, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string): Promise<Models.Provider>;\n    updateSendgridProvider(\n        paramsOrFirst: { providerId: string, name?: string, enabled?: boolean, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string } | string,\n        ...rest: [(string)?, (boolean)?, (string)?, (string)?, (string)?, (string)?, (string)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name?: string, enabled?: boolean, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name?: string, enabled?: boolean, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n\n        const apiPath = '/messaging/providers/sendgrid/{providerId}'.replace('{providerId}', providerId);\n        const payload: Payload = {};\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        if (typeof apiKey !== 'undefined') {\n            payload['apiKey'] = apiKey;\n        }\n        if (typeof fromName !== 'undefined') {\n            payload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            payload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            payload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            payload['replyToEmail'] = replyToEmail;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'patch',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name: string, host: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean }): 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(providerId: string, name: string, host: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise<Models.Provider>;\n    createSmtpProvider(\n        paramsOrFirst: { providerId: string, name: string, host: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean } | string,\n        ...rest: [(string)?, (string)?, (number)?, (string)?, (string)?, (SmtpEncryption)?, (boolean)?, (string)?, (string)?, (string)?, (string)?, (string)?, (boolean)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name: string, host: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name: string, host: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\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\n        const apiPath = '/messaging/providers/smtp';\n        const payload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            payload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof host !== 'undefined') {\n            payload['host'] = host;\n        }\n        if (typeof port !== 'undefined') {\n            payload['port'] = port;\n        }\n        if (typeof username !== 'undefined') {\n            payload['username'] = username;\n        }\n        if (typeof password !== 'undefined') {\n            payload['password'] = password;\n        }\n        if (typeof encryption !== 'undefined') {\n            payload['encryption'] = encryption;\n        }\n        if (typeof autoTLS !== 'undefined') {\n            payload['autoTLS'] = autoTLS;\n        }\n        if (typeof mailer !== 'undefined') {\n            payload['mailer'] = mailer;\n        }\n        if (typeof fromName !== 'undefined') {\n            payload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            payload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            payload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            payload['replyToEmail'] = replyToEmail;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'post',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name: string, host: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean }): 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(providerId: string, name: string, host: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise<Models.Provider>;\n    createSMTPProvider(\n        paramsOrFirst: { providerId: string, name: string, host: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean } | string,\n        ...rest: [(string)?, (string)?, (number)?, (string)?, (string)?, (SmtpEncryption)?, (boolean)?, (string)?, (string)?, (string)?, (string)?, (string)?, (boolean)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name: string, host: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name: string, host: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\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\n        const apiPath = '/messaging/providers/smtp';\n        const payload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            payload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof host !== 'undefined') {\n            payload['host'] = host;\n        }\n        if (typeof port !== 'undefined') {\n            payload['port'] = port;\n        }\n        if (typeof username !== 'undefined') {\n            payload['username'] = username;\n        }\n        if (typeof password !== 'undefined') {\n            payload['password'] = password;\n        }\n        if (typeof encryption !== 'undefined') {\n            payload['encryption'] = encryption;\n        }\n        if (typeof autoTLS !== 'undefined') {\n            payload['autoTLS'] = autoTLS;\n        }\n        if (typeof mailer !== 'undefined') {\n            payload['mailer'] = mailer;\n        }\n        if (typeof fromName !== 'undefined') {\n            payload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            payload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            payload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            payload['replyToEmail'] = replyToEmail;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'post',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name?: string, host?: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean }): 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(providerId: string, name?: string, host?: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise<Models.Provider>;\n    updateSmtpProvider(\n        paramsOrFirst: { providerId: string, name?: string, host?: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean } | string,\n        ...rest: [(string)?, (string)?, (number)?, (string)?, (string)?, (SmtpEncryption)?, (boolean)?, (string)?, (string)?, (string)?, (string)?, (string)?, (boolean)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name?: string, host?: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name?: string, host?: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n\n        const apiPath = '/messaging/providers/smtp/{providerId}'.replace('{providerId}', providerId);\n        const payload: Payload = {};\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof host !== 'undefined') {\n            payload['host'] = host;\n        }\n        if (typeof port !== 'undefined') {\n            payload['port'] = port;\n        }\n        if (typeof username !== 'undefined') {\n            payload['username'] = username;\n        }\n        if (typeof password !== 'undefined') {\n            payload['password'] = password;\n        }\n        if (typeof encryption !== 'undefined') {\n            payload['encryption'] = encryption;\n        }\n        if (typeof autoTLS !== 'undefined') {\n            payload['autoTLS'] = autoTLS;\n        }\n        if (typeof mailer !== 'undefined') {\n            payload['mailer'] = mailer;\n        }\n        if (typeof fromName !== 'undefined') {\n            payload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            payload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            payload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            payload['replyToEmail'] = replyToEmail;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'patch',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name?: string, host?: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean }): 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(providerId: string, name?: string, host?: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise<Models.Provider>;\n    updateSMTPProvider(\n        paramsOrFirst: { providerId: string, name?: string, host?: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean } | string,\n        ...rest: [(string)?, (string)?, (number)?, (string)?, (string)?, (SmtpEncryption)?, (boolean)?, (string)?, (string)?, (string)?, (string)?, (string)?, (boolean)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name?: string, host?: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name?: string, host?: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n\n        const apiPath = '/messaging/providers/smtp/{providerId}'.replace('{providerId}', providerId);\n        const payload: Payload = {};\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof host !== 'undefined') {\n            payload['host'] = host;\n        }\n        if (typeof port !== 'undefined') {\n            payload['port'] = port;\n        }\n        if (typeof username !== 'undefined') {\n            payload['username'] = username;\n        }\n        if (typeof password !== 'undefined') {\n            payload['password'] = password;\n        }\n        if (typeof encryption !== 'undefined') {\n            payload['encryption'] = encryption;\n        }\n        if (typeof autoTLS !== 'undefined') {\n            payload['autoTLS'] = autoTLS;\n        }\n        if (typeof mailer !== 'undefined') {\n            payload['mailer'] = mailer;\n        }\n        if (typeof fromName !== 'undefined') {\n            payload['fromName'] = fromName;\n        }\n        if (typeof fromEmail !== 'undefined') {\n            payload['fromEmail'] = fromEmail;\n        }\n        if (typeof replyToName !== 'undefined') {\n            payload['replyToName'] = replyToName;\n        }\n        if (typeof replyToEmail !== 'undefined') {\n            payload['replyToEmail'] = replyToEmail;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'patch',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name: string, from?: string, customerId?: string, apiKey?: string, enabled?: boolean }): 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(providerId: string, name: string, from?: string, customerId?: string, apiKey?: string, enabled?: boolean): Promise<Models.Provider>;\n    createTelesignProvider(\n        paramsOrFirst: { providerId: string, name: string, from?: string, customerId?: string, apiKey?: string, enabled?: boolean } | string,\n        ...rest: [(string)?, (string)?, (string)?, (string)?, (boolean)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name: string, from?: string, customerId?: string, apiKey?: string, enabled?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name: string, from?: string, customerId?: string, apiKey?: string, enabled?: boolean };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n\n        const apiPath = '/messaging/providers/telesign';\n        const payload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            payload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof from !== 'undefined') {\n            payload['from'] = from;\n        }\n        if (typeof customerId !== 'undefined') {\n            payload['customerId'] = customerId;\n        }\n        if (typeof apiKey !== 'undefined') {\n            payload['apiKey'] = apiKey;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'post',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name?: string, enabled?: boolean, customerId?: string, apiKey?: string, from?: string }): 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(providerId: string, name?: string, enabled?: boolean, customerId?: string, apiKey?: string, from?: string): Promise<Models.Provider>;\n    updateTelesignProvider(\n        paramsOrFirst: { providerId: string, name?: string, enabled?: boolean, customerId?: string, apiKey?: string, from?: string } | string,\n        ...rest: [(string)?, (boolean)?, (string)?, (string)?, (string)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name?: string, enabled?: boolean, customerId?: string, apiKey?: string, from?: string };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name?: string, enabled?: boolean, customerId?: string, apiKey?: string, from?: string };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n\n        const apiPath = '/messaging/providers/telesign/{providerId}'.replace('{providerId}', providerId);\n        const payload: Payload = {};\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        if (typeof customerId !== 'undefined') {\n            payload['customerId'] = customerId;\n        }\n        if (typeof apiKey !== 'undefined') {\n            payload['apiKey'] = apiKey;\n        }\n        if (typeof from !== 'undefined') {\n            payload['from'] = from;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'patch',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name: string, from?: string, username?: string, apiKey?: string, enabled?: boolean }): 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(providerId: string, name: string, from?: string, username?: string, apiKey?: string, enabled?: boolean): Promise<Models.Provider>;\n    createTextmagicProvider(\n        paramsOrFirst: { providerId: string, name: string, from?: string, username?: string, apiKey?: string, enabled?: boolean } | string,\n        ...rest: [(string)?, (string)?, (string)?, (string)?, (boolean)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name: string, from?: string, username?: string, apiKey?: string, enabled?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name: string, from?: string, username?: string, apiKey?: string, enabled?: boolean };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n\n        const apiPath = '/messaging/providers/textmagic';\n        const payload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            payload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof from !== 'undefined') {\n            payload['from'] = from;\n        }\n        if (typeof username !== 'undefined') {\n            payload['username'] = username;\n        }\n        if (typeof apiKey !== 'undefined') {\n            payload['apiKey'] = apiKey;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'post',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name?: string, enabled?: boolean, username?: string, apiKey?: string, from?: string }): 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(providerId: string, name?: string, enabled?: boolean, username?: string, apiKey?: string, from?: string): Promise<Models.Provider>;\n    updateTextmagicProvider(\n        paramsOrFirst: { providerId: string, name?: string, enabled?: boolean, username?: string, apiKey?: string, from?: string } | string,\n        ...rest: [(string)?, (boolean)?, (string)?, (string)?, (string)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name?: string, enabled?: boolean, username?: string, apiKey?: string, from?: string };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name?: string, enabled?: boolean, username?: string, apiKey?: string, from?: string };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n\n        const apiPath = '/messaging/providers/textmagic/{providerId}'.replace('{providerId}', providerId);\n        const payload: Payload = {};\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        if (typeof username !== 'undefined') {\n            payload['username'] = username;\n        }\n        if (typeof apiKey !== 'undefined') {\n            payload['apiKey'] = apiKey;\n        }\n        if (typeof from !== 'undefined') {\n            payload['from'] = from;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'patch',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name: string, from?: string, accountSid?: string, authToken?: string, enabled?: boolean }): 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(providerId: string, name: string, from?: string, accountSid?: string, authToken?: string, enabled?: boolean): Promise<Models.Provider>;\n    createTwilioProvider(\n        paramsOrFirst: { providerId: string, name: string, from?: string, accountSid?: string, authToken?: string, enabled?: boolean } | string,\n        ...rest: [(string)?, (string)?, (string)?, (string)?, (boolean)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name: string, from?: string, accountSid?: string, authToken?: string, enabled?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name: string, from?: string, accountSid?: string, authToken?: string, enabled?: boolean };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n\n        const apiPath = '/messaging/providers/twilio';\n        const payload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            payload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof from !== 'undefined') {\n            payload['from'] = from;\n        }\n        if (typeof accountSid !== 'undefined') {\n            payload['accountSid'] = accountSid;\n        }\n        if (typeof authToken !== 'undefined') {\n            payload['authToken'] = authToken;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'post',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name?: string, enabled?: boolean, accountSid?: string, authToken?: string, from?: string }): 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(providerId: string, name?: string, enabled?: boolean, accountSid?: string, authToken?: string, from?: string): Promise<Models.Provider>;\n    updateTwilioProvider(\n        paramsOrFirst: { providerId: string, name?: string, enabled?: boolean, accountSid?: string, authToken?: string, from?: string } | string,\n        ...rest: [(string)?, (boolean)?, (string)?, (string)?, (string)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name?: string, enabled?: boolean, accountSid?: string, authToken?: string, from?: string };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name?: string, enabled?: boolean, accountSid?: string, authToken?: string, from?: string };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n\n        const apiPath = '/messaging/providers/twilio/{providerId}'.replace('{providerId}', providerId);\n        const payload: Payload = {};\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        if (typeof accountSid !== 'undefined') {\n            payload['accountSid'] = accountSid;\n        }\n        if (typeof authToken !== 'undefined') {\n            payload['authToken'] = authToken;\n        }\n        if (typeof from !== 'undefined') {\n            payload['from'] = from;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'patch',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name: string, from?: string, apiKey?: string, apiSecret?: string, enabled?: boolean }): 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(providerId: string, name: string, from?: string, apiKey?: string, apiSecret?: string, enabled?: boolean): Promise<Models.Provider>;\n    createVonageProvider(\n        paramsOrFirst: { providerId: string, name: string, from?: string, apiKey?: string, apiSecret?: string, enabled?: boolean } | string,\n        ...rest: [(string)?, (string)?, (string)?, (string)?, (boolean)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name: string, from?: string, apiKey?: string, apiSecret?: string, enabled?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name: string, from?: string, apiKey?: string, apiSecret?: string, enabled?: boolean };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n\n        const apiPath = '/messaging/providers/vonage';\n        const payload: Payload = {};\n        if (typeof providerId !== 'undefined') {\n            payload['providerId'] = providerId;\n        }\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof from !== 'undefined') {\n            payload['from'] = from;\n        }\n        if (typeof apiKey !== 'undefined') {\n            payload['apiKey'] = apiKey;\n        }\n        if (typeof apiSecret !== 'undefined') {\n            payload['apiSecret'] = apiSecret;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'post',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { providerId: string, name?: string, enabled?: boolean, apiKey?: string, apiSecret?: string, from?: string }): 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(providerId: string, name?: string, enabled?: boolean, apiKey?: string, apiSecret?: string, from?: string): Promise<Models.Provider>;\n    updateVonageProvider(\n        paramsOrFirst: { providerId: string, name?: string, enabled?: boolean, apiKey?: string, apiSecret?: string, from?: string } | string,\n        ...rest: [(string)?, (boolean)?, (string)?, (string)?, (string)?]    \n    ): Promise<Models.Provider> {\n        let params: { providerId: string, name?: string, enabled?: boolean, apiKey?: string, apiSecret?: string, from?: string };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, name?: string, enabled?: boolean, apiKey?: string, apiSecret?: string, from?: string };\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\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n\n        const apiPath = '/messaging/providers/vonage/{providerId}'.replace('{providerId}', providerId);\n        const payload: Payload = {};\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof enabled !== 'undefined') {\n            payload['enabled'] = enabled;\n        }\n        if (typeof apiKey !== 'undefined') {\n            payload['apiKey'] = apiKey;\n        }\n        if (typeof apiSecret !== 'undefined') {\n            payload['apiSecret'] = apiSecret;\n        }\n        if (typeof from !== 'undefined') {\n            payload['from'] = from;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'patch',\n            uri,\n            apiHeaders,\n            payload,\n        );\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 ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string            \n            };\n        }\n        \n        const providerId = params.providerId;\n\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n\n        const apiPath = '/messaging/providers/{providerId}'.replace('{providerId}', providerId);\n        const payload: Payload = {};\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n        }\n\n        return this.client.call(\n            'get',\n            uri,\n            apiHeaders,\n            payload,\n        );\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 ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string            \n            };\n        }\n        \n        const providerId = params.providerId;\n\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n\n        const apiPath = '/messaging/providers/{providerId}'.replace('{providerId}', providerId);\n        const payload: Payload = {};\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'delete',\n            uri,\n            apiHeaders,\n            payload,\n        );\n    }\n\n    /**\n     * Get the provider activity logs listed by its unique ID.\n     *\n     * @param {string} params.providerId - Provider 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). Only supported methods are limit and offset\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.LogList>}\n     */\n    listProviderLogs(params: { providerId: string, queries?: string[], total?: boolean }): Promise<Models.LogList>;\n    /**\n     * Get the provider activity logs listed by its unique ID.\n     *\n     * @param {string} providerId - Provider 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). Only supported methods are limit and offset\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.LogList>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    listProviderLogs(providerId: string, queries?: string[], total?: boolean): Promise<Models.LogList>;\n    listProviderLogs(\n        paramsOrFirst: { providerId: string, queries?: string[], total?: boolean } | string,\n        ...rest: [(string[])?, (boolean)?]    \n    ): Promise<Models.LogList> {\n        let params: { providerId: string, queries?: string[], total?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { providerId: string, queries?: string[], total?: boolean };\n        } else {\n            params = {\n                providerId: paramsOrFirst as string,\n                queries: rest[0] as string[],\n                total: rest[1] as boolean            \n            };\n        }\n        \n        const providerId = params.providerId;\n        const queries = params.queries;\n        const total = params.total;\n\n        if (typeof providerId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"providerId\"');\n        }\n\n        const apiPath = '/messaging/providers/{providerId}/logs'.replace('{providerId}', providerId);\n        const payload: Payload = {};\n        if (typeof queries !== 'undefined') {\n            payload['queries'] = queries;\n        }\n        if (typeof total !== 'undefined') {\n            payload['total'] = total;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n        }\n\n        return this.client.call(\n            'get',\n            uri,\n            apiHeaders,\n            payload,\n        );\n    }\n\n    /**\n     * Get the subscriber activity logs listed by its unique ID.\n     *\n     * @param {string} params.subscriberId - Subscriber 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). Only supported methods are limit and offset\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.LogList>}\n     */\n    listSubscriberLogs(params: { subscriberId: string, queries?: string[], total?: boolean }): Promise<Models.LogList>;\n    /**\n     * Get the subscriber activity logs listed by its unique ID.\n     *\n     * @param {string} subscriberId - Subscriber 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). Only supported methods are limit and offset\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.LogList>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    listSubscriberLogs(subscriberId: string, queries?: string[], total?: boolean): Promise<Models.LogList>;\n    listSubscriberLogs(\n        paramsOrFirst: { subscriberId: string, queries?: string[], total?: boolean } | string,\n        ...rest: [(string[])?, (boolean)?]    \n    ): Promise<Models.LogList> {\n        let params: { subscriberId: string, queries?: string[], total?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { subscriberId: string, queries?: string[], total?: boolean };\n        } else {\n            params = {\n                subscriberId: paramsOrFirst as string,\n                queries: rest[0] as string[],\n                total: rest[1] as boolean            \n            };\n        }\n        \n        const subscriberId = params.subscriberId;\n        const queries = params.queries;\n        const total = params.total;\n\n        if (typeof subscriberId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"subscriberId\"');\n        }\n\n        const apiPath = '/messaging/subscribers/{subscriberId}/logs'.replace('{subscriberId}', subscriberId);\n        const payload: Payload = {};\n        if (typeof queries !== 'undefined') {\n            payload['queries'] = queries;\n        }\n        if (typeof total !== 'undefined') {\n            payload['total'] = total;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n        }\n\n        return this.client.call(\n            'get',\n            uri,\n            apiHeaders,\n            payload,\n        );\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?: { queries?: string[], search?: string, total?: boolean }): 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(queries?: string[], search?: string, total?: boolean): Promise<Models.TopicList>;\n    listTopics(\n        paramsOrFirst?: { 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 (!paramsOrFirst || (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { queries?: string[], search?: string, total?: boolean };\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\n\n        const apiPath = '/messaging/topics';\n        const payload: Payload = {};\n        if (typeof queries !== 'undefined') {\n            payload['queries'] = queries;\n        }\n        if (typeof search !== 'undefined') {\n            payload['search'] = search;\n        }\n        if (typeof total !== 'undefined') {\n            payload['total'] = total;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n        }\n\n        return this.client.call(\n            'get',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { topicId: string, name: string, subscribe?: string[] }): 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(topicId: string, name: string, subscribe?: string[]): Promise<Models.Topic>;\n    createTopic(\n        paramsOrFirst: { 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 ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { topicId: string, name: string, subscribe?: string[] };\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\n        if (typeof topicId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"topicId\"');\n        }\n        if (typeof name === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"name\"');\n        }\n\n        const apiPath = '/messaging/topics';\n        const payload: Payload = {};\n        if (typeof topicId !== 'undefined') {\n            payload['topicId'] = topicId;\n        }\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof subscribe !== 'undefined') {\n            payload['subscribe'] = subscribe;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'post',\n            uri,\n            apiHeaders,\n            payload,\n        );\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 ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { topicId: string };\n        } else {\n            params = {\n                topicId: paramsOrFirst as string            \n            };\n        }\n        \n        const topicId = params.topicId;\n\n        if (typeof topicId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"topicId\"');\n        }\n\n        const apiPath = '/messaging/topics/{topicId}'.replace('{topicId}', topicId);\n        const payload: Payload = {};\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n        }\n\n        return this.client.call(\n            'get',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { topicId: string, name?: string, subscribe?: string[] }): 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(topicId: string, name?: string, subscribe?: string[]): Promise<Models.Topic>;\n    updateTopic(\n        paramsOrFirst: { 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 ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { topicId: string, name?: string, subscribe?: string[] };\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\n        if (typeof topicId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"topicId\"');\n        }\n\n        const apiPath = '/messaging/topics/{topicId}'.replace('{topicId}', topicId);\n        const payload: Payload = {};\n        if (typeof name !== 'undefined') {\n            payload['name'] = name;\n        }\n        if (typeof subscribe !== 'undefined') {\n            payload['subscribe'] = subscribe;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'patch',\n            uri,\n            apiHeaders,\n            payload,\n        );\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(\n        paramsOrFirst: { topicId: string } | string    \n    ): Promise<{}> {\n        let params: { topicId: string };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { topicId: string };\n        } else {\n            params = {\n                topicId: paramsOrFirst as string            \n            };\n        }\n        \n        const topicId = params.topicId;\n\n        if (typeof topicId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"topicId\"');\n        }\n\n        const apiPath = '/messaging/topics/{topicId}'.replace('{topicId}', topicId);\n        const payload: Payload = {};\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'delete',\n            uri,\n            apiHeaders,\n            payload,\n        );\n    }\n\n    /**\n     * Get the topic activity logs listed by its unique ID.\n     *\n     * @param {string} params.topicId - Topic 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). Only supported methods are limit and offset\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.LogList>}\n     */\n    listTopicLogs(params: { topicId: string, queries?: string[], total?: boolean }): Promise<Models.LogList>;\n    /**\n     * Get the topic activity logs listed by its unique ID.\n     *\n     * @param {string} topicId - Topic 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). Only supported methods are limit and offset\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.LogList>}\n     * @deprecated Use the object parameter style method for a better developer experience.\n     */\n    listTopicLogs(topicId: string, queries?: string[], total?: boolean): Promise<Models.LogList>;\n    listTopicLogs(\n        paramsOrFirst: { topicId: string, queries?: string[], total?: boolean } | string,\n        ...rest: [(string[])?, (boolean)?]    \n    ): Promise<Models.LogList> {\n        let params: { topicId: string, queries?: string[], total?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { topicId: string, queries?: string[], total?: boolean };\n        } else {\n            params = {\n                topicId: paramsOrFirst as string,\n                queries: rest[0] as string[],\n                total: rest[1] as boolean            \n            };\n        }\n        \n        const topicId = params.topicId;\n        const queries = params.queries;\n        const total = params.total;\n\n        if (typeof topicId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"topicId\"');\n        }\n\n        const apiPath = '/messaging/topics/{topicId}/logs'.replace('{topicId}', topicId);\n        const payload: Payload = {};\n        if (typeof queries !== 'undefined') {\n            payload['queries'] = queries;\n        }\n        if (typeof total !== 'undefined') {\n            payload['total'] = total;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n        }\n\n        return this.client.call(\n            'get',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { topicId: string, queries?: string[], search?: string, total?: boolean }): 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(topicId: string, queries?: string[], search?: string, total?: boolean): Promise<Models.SubscriberList>;\n    listSubscribers(\n        paramsOrFirst: { topicId: string, queries?: string[], search?: string, total?: boolean } | string,\n        ...rest: [(string[])?, (string)?, (boolean)?]    \n    ): Promise<Models.SubscriberList> {\n        let params: { topicId: string, queries?: string[], search?: string, total?: boolean };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { topicId: string, queries?: string[], search?: string, total?: boolean };\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\n        if (typeof topicId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"topicId\"');\n        }\n\n        const apiPath = '/messaging/topics/{topicId}/subscribers'.replace('{topicId}', topicId);\n        const payload: Payload = {};\n        if (typeof queries !== 'undefined') {\n            payload['queries'] = queries;\n        }\n        if (typeof search !== 'undefined') {\n            payload['search'] = search;\n        }\n        if (typeof total !== 'undefined') {\n            payload['total'] = total;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n        }\n\n        return this.client.call(\n            'get',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { topicId: string, subscriberId: string, targetId: string }): 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(topicId: string, subscriberId: string, targetId: string): Promise<Models.Subscriber>;\n    createSubscriber(\n        paramsOrFirst: { topicId: string, subscriberId: string, targetId: string } | string,\n        ...rest: [(string)?, (string)?]    \n    ): Promise<Models.Subscriber> {\n        let params: { topicId: string, subscriberId: string, targetId: string };\n        \n        if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { topicId: string, subscriberId: string, targetId: string };\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\n        if (typeof topicId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"topicId\"');\n        }\n        if (typeof subscriberId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"subscriberId\"');\n        }\n        if (typeof targetId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"targetId\"');\n        }\n\n        const apiPath = '/messaging/topics/{topicId}/subscribers'.replace('{topicId}', topicId);\n        const payload: Payload = {};\n        if (typeof subscriberId !== 'undefined') {\n            payload['subscriberId'] = subscriberId;\n        }\n        if (typeof targetId !== 'undefined') {\n            payload['targetId'] = targetId;\n        }\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'post',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { topicId: string, subscriberId: string }): 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(topicId: string, subscriberId: string): 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 ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { topicId: string, subscriberId: string };\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\n        if (typeof topicId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"topicId\"');\n        }\n        if (typeof subscriberId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"subscriberId\"');\n        }\n\n        const apiPath = '/messaging/topics/{topicId}/subscribers/{subscriberId}'.replace('{topicId}', topicId).replace('{subscriberId}', subscriberId);\n        const payload: Payload = {};\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n        }\n\n        return this.client.call(\n            'get',\n            uri,\n            apiHeaders,\n            payload,\n        );\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: { topicId: string, subscriberId: string }): 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 ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n            params = (paramsOrFirst || {}) as { topicId: string, subscriberId: string };\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\n        if (typeof topicId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"topicId\"');\n        }\n        if (typeof subscriberId === 'undefined') {\n            throw new AppwriteException('Missing required parameter: \"subscriberId\"');\n        }\n\n        const apiPath = '/messaging/topics/{topicId}/subscribers/{subscriberId}'.replace('{topicId}', topicId).replace('{subscriberId}', subscriberId);\n        const payload: Payload = {};\n        const uri = new URL(this.client.config.endpoint + apiPath);\n\n        const apiHeaders: { [header: string]: string } = {\n            'content-type': 'application/json',\n        }\n\n        return this.client.call(\n            'delete',\n            uri,\n            apiHeaders,\n            payload,\n        );\n    }\n}\n"]}