node-appwrite 21.0.0 → 22.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +2 -2
  3. package/dist/client.js +37 -5
  4. package/dist/client.js.map +1 -1
  5. package/dist/client.mjs +1505 -5
  6. package/dist/client.mjs.map +1 -1
  7. package/dist/enums/browser-permission.d.mts +24 -0
  8. package/dist/enums/browser-permission.d.ts +24 -0
  9. package/dist/enums/browser-permission.js +29 -0
  10. package/dist/enums/browser-permission.js.map +1 -0
  11. package/dist/enums/browser-permission.mjs +28 -0
  12. package/dist/enums/browser-permission.mjs.map +1 -0
  13. package/dist/enums/deployment-status.d.mts +1 -0
  14. package/dist/enums/deployment-status.d.ts +1 -0
  15. package/dist/enums/deployment-status.js +1 -0
  16. package/dist/enums/deployment-status.js.map +1 -1
  17. package/dist/enums/deployment-status.mjs +1 -0
  18. package/dist/enums/deployment-status.mjs.map +1 -1
  19. package/dist/enums/name.d.mts +1 -0
  20. package/dist/enums/name.d.ts +1 -0
  21. package/dist/enums/name.js +1 -0
  22. package/dist/enums/name.js.map +1 -1
  23. package/dist/enums/name.mjs +1 -0
  24. package/dist/enums/name.mjs.map +1 -1
  25. package/dist/enums/o-auth-provider.d.mts +1 -2
  26. package/dist/enums/o-auth-provider.d.ts +1 -2
  27. package/dist/enums/o-auth-provider.js +0 -1
  28. package/dist/enums/o-auth-provider.js.map +1 -1
  29. package/dist/enums/o-auth-provider.mjs +0 -1
  30. package/dist/enums/o-auth-provider.mjs.map +1 -1
  31. package/dist/enums/order-by.d.mts +6 -0
  32. package/dist/enums/order-by.d.ts +6 -0
  33. package/dist/enums/order-by.js +11 -0
  34. package/dist/enums/order-by.js.map +1 -0
  35. package/dist/enums/order-by.mjs +10 -0
  36. package/dist/enums/order-by.mjs.map +1 -0
  37. package/dist/enums/roles.d.mts +7 -0
  38. package/dist/enums/roles.d.ts +7 -0
  39. package/dist/enums/roles.js +12 -0
  40. package/dist/enums/roles.js.map +1 -0
  41. package/dist/enums/roles.mjs +11 -0
  42. package/dist/enums/roles.mjs.map +1 -0
  43. package/dist/enums/scopes.d.mts +59 -0
  44. package/dist/enums/scopes.d.ts +59 -0
  45. package/dist/enums/scopes.js +64 -0
  46. package/dist/enums/scopes.js.map +1 -0
  47. package/dist/enums/scopes.mjs +63 -0
  48. package/dist/enums/scopes.mjs.map +1 -0
  49. package/dist/index.d.mts +5 -2
  50. package/dist/index.d.ts +5 -2
  51. package/dist/index.js +21 -6
  52. package/dist/index.js.map +1 -1
  53. package/dist/index.mjs +5 -2
  54. package/dist/index.mjs.map +1 -1
  55. package/dist/models.d.mts +367 -6
  56. package/dist/models.d.ts +367 -6
  57. package/dist/query.d.mts +38 -8
  58. package/dist/query.d.ts +38 -8
  59. package/dist/query.js +48 -7
  60. package/dist/query.js.map +1 -1
  61. package/dist/query.mjs +44 -7
  62. package/dist/query.mjs.map +1 -1
  63. package/dist/services/account.d.mts +13 -1
  64. package/dist/services/account.d.ts +13 -1
  65. package/dist/services/account.js +13 -7
  66. package/dist/services/account.js.map +1 -1
  67. package/dist/services/account.mjs +13 -7
  68. package/dist/services/account.mjs.map +1 -1
  69. package/dist/services/avatars.d.mts +9 -8
  70. package/dist/services/avatars.d.ts +9 -8
  71. package/dist/services/avatars.js.map +1 -1
  72. package/dist/services/avatars.mjs.map +1 -1
  73. package/dist/services/databases.d.mts +336 -35
  74. package/dist/services/databases.d.ts +336 -35
  75. package/dist/services/databases.js +480 -10
  76. package/dist/services/databases.js.map +1 -1
  77. package/dist/services/databases.mjs +480 -10
  78. package/dist/services/databases.mjs.map +1 -1
  79. package/dist/services/functions.d.mts +9 -8
  80. package/dist/services/functions.d.ts +9 -8
  81. package/dist/services/functions.js.map +1 -1
  82. package/dist/services/functions.mjs.map +1 -1
  83. package/dist/services/graphql.js.map +1 -1
  84. package/dist/services/graphql.mjs.map +1 -1
  85. package/dist/services/health.d.mts +25 -6
  86. package/dist/services/health.d.ts +25 -6
  87. package/dist/services/health.js +27 -3
  88. package/dist/services/health.js.map +1 -1
  89. package/dist/services/health.mjs +27 -3
  90. package/dist/services/health.mjs.map +1 -1
  91. package/dist/services/messaging.js.map +1 -1
  92. package/dist/services/messaging.mjs.map +1 -1
  93. package/dist/services/sites.js.map +1 -1
  94. package/dist/services/sites.mjs.map +1 -1
  95. package/dist/services/storage.d.mts +12 -12
  96. package/dist/services/storage.d.ts +12 -12
  97. package/dist/services/storage.js.map +1 -1
  98. package/dist/services/storage.mjs.map +1 -1
  99. package/dist/services/tables-db.d.mts +336 -33
  100. package/dist/services/tables-db.d.ts +336 -33
  101. package/dist/services/tables-db.js +480 -7
  102. package/dist/services/tables-db.js.map +1 -1
  103. package/dist/services/tables-db.mjs +480 -7
  104. package/dist/services/tables-db.mjs.map +1 -1
  105. package/dist/services/teams.d.mts +9 -8
  106. package/dist/services/teams.d.ts +9 -8
  107. package/dist/services/teams.js.map +1 -1
  108. package/dist/services/teams.mjs.map +1 -1
  109. package/dist/services/tokens.js.map +1 -1
  110. package/dist/services/tokens.mjs.map +1 -1
  111. package/dist/services/users.js.map +1 -1
  112. package/dist/services/users.mjs.map +1 -1
  113. package/package.json +4 -2
  114. package/dist/enums/output.d.mts +0 -11
  115. package/dist/enums/output.d.ts +0 -11
  116. package/dist/enums/output.js +0 -16
  117. package/dist/enums/output.js.map +0 -1
  118. package/dist/enums/output.mjs +0 -15
  119. package/dist/enums/output.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/services/messaging.ts"],"names":[],"mappings":"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","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: 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.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: 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.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"]}
1
+ {"version":3,"sources":["../../src/services/messaging.ts"],"names":[],"mappings":"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","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: 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.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: 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.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"]}