{"version":3,"sources":["node_modules/@vendasta/email/fesm2020/vendasta-email.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { Injectable, inject, NgModule } from '@angular/core';\nimport { map, mapTo, shareReplay } from 'rxjs/operators';\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\nfunction enumStringToValue$8(enumRef, value) {\n  if (typeof value === 'number') {\n    return value;\n  }\n  return enumRef[value];\n}\nclass Access {\n  static fromProto(proto) {\n    let m = new Access();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.scope !== 'undefined') {\n      toReturn['scope'] = this.scope;\n    }\n    if (typeof this.public !== 'undefined') {\n      toReturn['public'] = this.public;\n    }\n    return toReturn;\n  }\n}\nfunction enumStringToValue$7(enumRef, value) {\n  if (typeof value === 'number') {\n    return value;\n  }\n  return enumRef[value];\n}\nclass DateRange {\n  static fromProto(proto) {\n    let m = new DateRange();\n    m = Object.assign(m, proto);\n    if (proto.start) {\n      m.start = new Date(proto.start);\n    }\n    if (proto.end) {\n      m.end = new Date(proto.end);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.start !== 'undefined' && this.start !== null) {\n      toReturn['start'] = 'toApiJson' in this.start ? this.start.toApiJson() : this.start;\n    }\n    if (typeof this.end !== 'undefined' && this.end !== null) {\n      toReturn['end'] = 'toApiJson' in this.end ? this.end.toApiJson() : this.end;\n    }\n    return toReturn;\n  }\n}\nfunction enumStringToValue$6(enumRef, value) {\n  if (typeof value === 'number') {\n    return value;\n  }\n  return enumRef[value];\n}\nclass EmailDomain {\n  static fromProto(proto) {\n    let m = new EmailDomain();\n    m = Object.assign(m, proto);\n    if (proto.mail) {\n      m.mail = Record.fromProto(proto.mail);\n    }\n    if (proto.dkim1) {\n      m.dkim1 = Record.fromProto(proto.dkim1);\n    }\n    if (proto.dkim2) {\n      m.dkim2 = Record.fromProto(proto.dkim2);\n    }\n    if (proto.dmarc) {\n      m.dmarc = Record.fromProto(proto.dmarc);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.partnerId !== 'undefined') {\n      toReturn['partnerId'] = this.partnerId;\n    }\n    if (typeof this.businessId !== 'undefined') {\n      toReturn['businessId'] = this.businessId;\n    }\n    if (typeof this.domain !== 'undefined') {\n      toReturn['domain'] = this.domain;\n    }\n    if (typeof this.mail !== 'undefined' && this.mail !== null) {\n      toReturn['mail'] = 'toApiJson' in this.mail ? this.mail.toApiJson() : this.mail;\n    }\n    if (typeof this.dkim1 !== 'undefined' && this.dkim1 !== null) {\n      toReturn['dkim1'] = 'toApiJson' in this.dkim1 ? this.dkim1.toApiJson() : this.dkim1;\n    }\n    if (typeof this.dkim2 !== 'undefined' && this.dkim2 !== null) {\n      toReturn['dkim2'] = 'toApiJson' in this.dkim2 ? this.dkim2.toApiJson() : this.dkim2;\n    }\n    if (typeof this.apiKey !== 'undefined') {\n      toReturn['apiKey'] = this.apiKey;\n    }\n    if (typeof this.subUserId !== 'undefined') {\n      toReturn['subUserId'] = this.subUserId;\n    }\n    if (typeof this.applicationId !== 'undefined') {\n      toReturn['applicationId'] = this.applicationId;\n    }\n    if (typeof this.domainId !== 'undefined') {\n      toReturn['domainId'] = this.domainId;\n    }\n    if (typeof this.sendAsEmail !== 'undefined') {\n      toReturn['sendAsEmail'] = this.sendAsEmail;\n    }\n    if (typeof this.sendAsName !== 'undefined') {\n      toReturn['sendAsName'] = this.sendAsName;\n    }\n    if (typeof this.dmarc !== 'undefined' && this.dmarc !== null) {\n      toReturn['dmarc'] = 'toApiJson' in this.dmarc ? this.dmarc.toApiJson() : this.dmarc;\n    }\n    return toReturn;\n  }\n}\nclass Record {\n  static fromProto(proto) {\n    let m = new Record();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.type !== 'undefined') {\n      toReturn['type'] = this.type;\n    }\n    if (typeof this.subdomain !== 'undefined') {\n      toReturn['subdomain'] = this.subdomain;\n    }\n    if (typeof this.value !== 'undefined') {\n      toReturn['value'] = this.value;\n    }\n    if (typeof this.currentValue !== 'undefined') {\n      toReturn['currentValue'] = this.currentValue;\n    }\n    if (typeof this.verified !== 'undefined') {\n      toReturn['verified'] = this.verified;\n    }\n    return toReturn;\n  }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar EventType = /*#__PURE__*/function (EventType) {\n  EventType[EventType[\"EMPTY\"] = 0] = \"EMPTY\";\n  EventType[EventType[\"PROCESSED\"] = 1] = \"PROCESSED\";\n  EventType[EventType[\"DELIVERED\"] = 2] = \"DELIVERED\";\n  EventType[EventType[\"OPENED\"] = 3] = \"OPENED\";\n  EventType[EventType[\"CLICKED\"] = 4] = \"CLICKED\";\n  EventType[EventType[\"BOUNCED\"] = 5] = \"BOUNCED\";\n  EventType[EventType[\"DEFERRED\"] = 6] = \"DEFERRED\";\n  EventType[EventType[\"DROPPED\"] = 7] = \"DROPPED\";\n  EventType[EventType[\"SPAMREPORT\"] = 8] = \"SPAMREPORT\";\n  EventType[EventType[\"UNSUBSCRIBED\"] = 9] = \"UNSUBSCRIBED\";\n  EventType[EventType[\"RESUBSCRIBED\"] = 10] = \"RESUBSCRIBED\";\n  return EventType;\n}(EventType || {});\nvar NotificationType = /*#__PURE__*/function (NotificationType) {\n  NotificationType[NotificationType[\"NOTIFICATION_TYPE_PRODUCT_UPSELL\"] = 0] = \"NOTIFICATION_TYPE_PRODUCT_UPSELL\";\n  NotificationType[NotificationType[\"NOTIFICATION_TYPE_PRODUCT_ADOPTION\"] = 1] = \"NOTIFICATION_TYPE_PRODUCT_ADOPTION\";\n  NotificationType[NotificationType[\"NOTIFICATION_TYPE_CUSTOMER_ACQUISITION\"] = 2] = \"NOTIFICATION_TYPE_CUSTOMER_ACQUISITION\";\n  return NotificationType;\n}(NotificationType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ContentContentType = /*#__PURE__*/function (ContentContentType) {\n  ContentContentType[ContentContentType[\"TEXT_PLAIN\"] = 0] = \"TEXT_PLAIN\";\n  ContentContentType[ContentContentType[\"TEXT_HTML\"] = 1] = \"TEXT_HTML\";\n  return ContentContentType;\n}(ContentContentType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar BounceSenderType = /*#__PURE__*/function (BounceSenderType) {\n  BounceSenderType[BounceSenderType[\"UNBOUNCE_SENDER_TYPE_INVALID\"] = 0] = \"UNBOUNCE_SENDER_TYPE_INVALID\";\n  BounceSenderType[BounceSenderType[\"UNBOUNCE_SENDER_TYPE_PARTNER\"] = 1] = \"UNBOUNCE_SENDER_TYPE_PARTNER\";\n  BounceSenderType[BounceSenderType[\"UNBOUNCE_SENDER_TYPE_BUSINESS\"] = 2] = \"UNBOUNCE_SENDER_TYPE_BUSINESS\";\n  BounceSenderType[BounceSenderType[\"UNBOUNCE_SENDER_TYPE_YESWARE\"] = 3] = \"UNBOUNCE_SENDER_TYPE_YESWARE\";\n  return BounceSenderType;\n}(BounceSenderType || {});\nvar ChangeEmailDomainStatus = /*#__PURE__*/function (ChangeEmailDomainStatus) {\n  ChangeEmailDomainStatus[ChangeEmailDomainStatus[\"CHANGE_EMAIL_DOMAIN_STATUS_INVALID\"] = 0] = \"CHANGE_EMAIL_DOMAIN_STATUS_INVALID\";\n  ChangeEmailDomainStatus[ChangeEmailDomainStatus[\"CHANGE_EMAIL_DOMAIN_STATUS_ACCEPTED\"] = 1] = \"CHANGE_EMAIL_DOMAIN_STATUS_ACCEPTED\";\n  ChangeEmailDomainStatus[ChangeEmailDomainStatus[\"CHANGE_EMAIL_DOMAIN_STATUS_PENDING\"] = 2] = \"CHANGE_EMAIL_DOMAIN_STATUS_PENDING\";\n  return ChangeEmailDomainStatus;\n}(ChangeEmailDomainStatus || {});\nvar EmailQueueStatus = /*#__PURE__*/function (EmailQueueStatus) {\n  EmailQueueStatus[EmailQueueStatus[\"EMAIL_QUEUE_STATUS_UNSPECIFIED\"] = 0] = \"EMAIL_QUEUE_STATUS_UNSPECIFIED\";\n  EmailQueueStatus[EmailQueueStatus[\"EMAIL_QUEUE_STATUS_RUNNING\"] = 1] = \"EMAIL_QUEUE_STATUS_RUNNING\";\n  EmailQueueStatus[EmailQueueStatus[\"EMAIL_QUEUE_STATUS_DISABLED\"] = 2] = \"EMAIL_QUEUE_STATUS_DISABLED\";\n  return EmailQueueStatus;\n}(EmailQueueStatus || {});\nvar Namespace = /*#__PURE__*/function (Namespace) {\n  Namespace[Namespace[\"NAMESPACE_INVALID\"] = 0] = \"NAMESPACE_INVALID\";\n  Namespace[Namespace[\"NAMESPACE_EMAIL\"] = 1] = \"NAMESPACE_EMAIL\";\n  return Namespace;\n}(Namespace || {});\nvar RecipientStatusEnum = /*#__PURE__*/function (RecipientStatusEnum) {\n  RecipientStatusEnum[RecipientStatusEnum[\"RECIPIENT_STATUS_INVALID\"] = 0] = \"RECIPIENT_STATUS_INVALID\";\n  RecipientStatusEnum[RecipientStatusEnum[\"RECIPIENT_STATUS_HARD\"] = 1] = \"RECIPIENT_STATUS_HARD\";\n  RecipientStatusEnum[RecipientStatusEnum[\"RECIPIENT_STATUS_SOFT\"] = 2] = \"RECIPIENT_STATUS_SOFT\";\n  RecipientStatusEnum[RecipientStatusEnum[\"RECIPIENT_STATUS_UNKNOWN\"] = 3] = \"RECIPIENT_STATUS_UNKNOWN\";\n  RecipientStatusEnum[RecipientStatusEnum[\"RECIPIENT_STATUS_RESET\"] = 4] = \"RECIPIENT_STATUS_RESET\";\n  RecipientStatusEnum[RecipientStatusEnum[\"RECIPIENT_STATUS_NOT_BLOCKED\"] = 5] = \"RECIPIENT_STATUS_NOT_BLOCKED\";\n  return RecipientStatusEnum;\n}(RecipientStatusEnum || {});\nvar SenderType = /*#__PURE__*/function (SenderType) {\n  SenderType[SenderType[\"SENDER_TYPE_INVALID\"] = 0] = \"SENDER_TYPE_INVALID\";\n  SenderType[SenderType[\"SENDER_TYPE_PARTNER\"] = 1] = \"SENDER_TYPE_PARTNER\";\n  SenderType[SenderType[\"SENDER_TYPE_BUSINESS\"] = 2] = \"SENDER_TYPE_BUSINESS\";\n  return SenderType;\n}(SenderType || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums Index.\n// *********************************\n\nfunction enumStringToValue$5(enumRef, value) {\n  if (typeof value === 'number') {\n    return value;\n  }\n  return enumRef[value];\n}\nclass EmailEvent {\n  static fromProto(proto) {\n    let m = new EmailEvent();\n    m = Object.assign(m, proto);\n    if (proto.eventType) {\n      m.eventType = enumStringToValue$5(EventType, proto.eventType);\n    }\n    if (proto.eventTime) {\n      m.eventTime = new Date(proto.eventTime);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.emailId !== 'undefined') {\n      toReturn['emailId'] = this.emailId;\n    }\n    if (typeof this.eventId !== 'undefined') {\n      toReturn['eventId'] = this.eventId;\n    }\n    if (typeof this.eventType !== 'undefined') {\n      toReturn['eventType'] = this.eventType;\n    }\n    if (typeof this.eventTime !== 'undefined' && this.eventTime !== null) {\n      toReturn['eventTime'] = 'toApiJson' in this.eventTime ? this.eventTime.toApiJson() : this.eventTime;\n    }\n    if (typeof this.ipAddress !== 'undefined') {\n      toReturn['ipAddress'] = this.ipAddress;\n    }\n    if (typeof this.userAgent !== 'undefined') {\n      toReturn['userAgent'] = this.userAgent;\n    }\n    if (typeof this.urlClicked !== 'undefined') {\n      toReturn['urlClicked'] = this.urlClicked;\n    }\n    if (typeof this.reason !== 'undefined') {\n      toReturn['reason'] = this.reason;\n    }\n    if (typeof this.urlClickedNormalized !== 'undefined') {\n      toReturn['urlClickedNormalized'] = this.urlClickedNormalized;\n    }\n    if (typeof this.emailAddress !== 'undefined') {\n      toReturn['emailAddress'] = this.emailAddress;\n    }\n    return toReturn;\n  }\n}\nfunction enumStringToValue$4(enumRef, value) {\n  if (typeof value === 'number') {\n    return value;\n  }\n  return enumRef[value];\n}\nclass Attribute {\n  static fromProto(proto) {\n    let m = new Attribute();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.key !== 'undefined') {\n      toReturn['key'] = this.key;\n    }\n    if (typeof this.value !== 'undefined') {\n      toReturn['value'] = this.value;\n    }\n    return toReturn;\n  }\n}\nclass Bucket {\n  static fromProto(proto) {\n    let m = new Bucket();\n    m = Object.assign(m, proto);\n    if (proto.attribute) {\n      m.attribute = Attribute.fromProto(proto.attribute);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.bucketName !== 'undefined') {\n      toReturn['bucketName'] = this.bucketName;\n    }\n    if (typeof this.attribute !== 'undefined' && this.attribute !== null) {\n      toReturn['attribute'] = 'toApiJson' in this.attribute ? this.attribute.toApiJson() : this.attribute;\n    }\n    return toReturn;\n  }\n}\nclass ContactParticipant {\n  static fromProto(proto) {\n    let m = new ContactParticipant();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.contactId !== 'undefined') {\n      toReturn['contactId'] = this.contactId;\n    }\n    if (typeof this.namespace !== 'undefined') {\n      toReturn['namespace'] = this.namespace;\n    }\n    return toReturn;\n  }\n}\nclass Content {\n  static fromProto(proto) {\n    let m = new Content();\n    m = Object.assign(m, proto);\n    if (proto.type) {\n      m.type = enumStringToValue$4(ContentContentType, proto.type);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.type !== 'undefined') {\n      toReturn['type'] = this.type;\n    }\n    if (typeof this.value !== 'undefined') {\n      toReturn['value'] = this.value;\n    }\n    if (typeof this.sensitive !== 'undefined') {\n      toReturn['sensitive'] = this.sensitive;\n    }\n    return toReturn;\n  }\n}\nclass EmailMessage {\n  static fromProto(proto) {\n    let m = new EmailMessage();\n    m = Object.assign(m, proto);\n    if (proto.to) {\n      m.to = proto.to.map(Participant.fromProto);\n    }\n    if (proto.cc) {\n      m.cc = proto.cc.map(Participant.fromProto);\n    }\n    if (proto.bcc) {\n      m.bcc = proto.bcc.map(Participant.fromProto);\n    }\n    if (proto.from) {\n      m.from = Participant.fromProto(proto.from);\n    }\n    if (proto.replyTo) {\n      m.replyTo = Participant.fromProto(proto.replyTo);\n    }\n    if (proto.content) {\n      m.content = proto.content.map(Content.fromProto);\n    }\n    if (proto.attributes) {\n      m.attributes = proto.attributes.map(Attribute.fromProto);\n    }\n    if (proto.timestamp) {\n      m.timestamp = new Date(proto.timestamp);\n    }\n    if (proto.headers) {\n      m.headers = proto.headers.map(Header.fromProto);\n    }\n    if (proto.attachments) {\n      m.attachments = proto.attachments.map(GCSAttachment.fromProto);\n    }\n    if (proto.urlAttachments) {\n      m.urlAttachments = proto.urlAttachments.map(URLAttachment.fromProto);\n    }\n    if (proto.serviceProviderInfo) {\n      m.serviceProviderInfo = ServiceProviderInfo.fromProto(proto.serviceProviderInfo);\n    }\n    if (proto.links) {\n      m.links = proto.links.map(Links.fromProto);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.to !== 'undefined' && this.to !== null) {\n      toReturn['to'] = 'toApiJson' in this.to ? this.to.toApiJson() : this.to;\n    }\n    if (typeof this.cc !== 'undefined' && this.cc !== null) {\n      toReturn['cc'] = 'toApiJson' in this.cc ? this.cc.toApiJson() : this.cc;\n    }\n    if (typeof this.bcc !== 'undefined' && this.bcc !== null) {\n      toReturn['bcc'] = 'toApiJson' in this.bcc ? this.bcc.toApiJson() : this.bcc;\n    }\n    if (typeof this.from !== 'undefined' && this.from !== null) {\n      toReturn['from'] = 'toApiJson' in this.from ? this.from.toApiJson() : this.from;\n    }\n    if (typeof this.replyTo !== 'undefined' && this.replyTo !== null) {\n      toReturn['replyTo'] = 'toApiJson' in this.replyTo ? this.replyTo.toApiJson() : this.replyTo;\n    }\n    if (typeof this.subject !== 'undefined') {\n      toReturn['subject'] = this.subject;\n    }\n    if (typeof this.content !== 'undefined' && this.content !== null) {\n      toReturn['content'] = 'toApiJson' in this.content ? this.content.toApiJson() : this.content;\n    }\n    if (typeof this.attributes !== 'undefined' && this.attributes !== null) {\n      toReturn['attributes'] = 'toApiJson' in this.attributes ? this.attributes.toApiJson() : this.attributes;\n    }\n    if (typeof this.emailId !== 'undefined') {\n      toReturn['emailId'] = this.emailId;\n    }\n    if (typeof this.timestamp !== 'undefined' && this.timestamp !== null) {\n      toReturn['timestamp'] = 'toApiJson' in this.timestamp ? this.timestamp.toApiJson() : this.timestamp;\n    }\n    if (typeof this.headers !== 'undefined' && this.headers !== null) {\n      toReturn['headers'] = 'toApiJson' in this.headers ? this.headers.toApiJson() : this.headers;\n    }\n    if (typeof this.attachments !== 'undefined' && this.attachments !== null) {\n      toReturn['attachments'] = 'toApiJson' in this.attachments ? this.attachments.toApiJson() : this.attachments;\n    }\n    if (typeof this.urlAttachments !== 'undefined' && this.urlAttachments !== null) {\n      toReturn['urlAttachments'] = 'toApiJson' in this.urlAttachments ? this.urlAttachments.toApiJson() : this.urlAttachments;\n    }\n    if (typeof this.serviceProviderInfo !== 'undefined' && this.serviceProviderInfo !== null) {\n      toReturn['serviceProviderInfo'] = 'toApiJson' in this.serviceProviderInfo ? this.serviceProviderInfo.toApiJson() : this.serviceProviderInfo;\n    }\n    if (typeof this.links !== 'undefined' && this.links !== null) {\n      toReturn['links'] = 'toApiJson' in this.links ? this.links.toApiJson() : this.links;\n    }\n    if (typeof this.originUserId !== 'undefined') {\n      toReturn['originUserId'] = this.originUserId;\n    }\n    return toReturn;\n  }\n}\nclass EmailMessageV2 {\n  static fromProto(proto) {\n    let m = new EmailMessageV2();\n    m = Object.assign(m, proto);\n    if (proto.to) {\n      m.to = UserParticipant.fromProto(proto.to);\n    }\n    if (proto.from) {\n      m.from = Participant.fromProto(proto.from);\n    }\n    if (proto.replyTo) {\n      m.replyTo = Participant.fromProto(proto.replyTo);\n    }\n    if (proto.content) {\n      m.content = proto.content.map(Content.fromProto);\n    }\n    if (proto.attributes) {\n      m.attributes = proto.attributes.map(Attribute.fromProto);\n    }\n    if (proto.timestamp) {\n      m.timestamp = new Date(proto.timestamp);\n    }\n    if (proto.headers) {\n      m.headers = proto.headers.map(Header.fromProto);\n    }\n    if (proto.attachments) {\n      m.attachments = proto.attachments.map(GCSAttachment.fromProto);\n    }\n    if (proto.urlAttachments) {\n      m.urlAttachments = proto.urlAttachments.map(URLAttachment.fromProto);\n    }\n    if (proto.serviceProviderInfo) {\n      m.serviceProviderInfo = ServiceProviderInfo.fromProto(proto.serviceProviderInfo);\n    }\n    if (proto.links) {\n      m.links = proto.links.map(Links.fromProto);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.to !== 'undefined' && this.to !== null) {\n      toReturn['to'] = 'toApiJson' in this.to ? this.to.toApiJson() : this.to;\n    }\n    if (typeof this.from !== 'undefined' && this.from !== null) {\n      toReturn['from'] = 'toApiJson' in this.from ? this.from.toApiJson() : this.from;\n    }\n    if (typeof this.replyTo !== 'undefined' && this.replyTo !== null) {\n      toReturn['replyTo'] = 'toApiJson' in this.replyTo ? this.replyTo.toApiJson() : this.replyTo;\n    }\n    if (typeof this.subject !== 'undefined') {\n      toReturn['subject'] = this.subject;\n    }\n    if (typeof this.content !== 'undefined' && this.content !== null) {\n      toReturn['content'] = 'toApiJson' in this.content ? this.content.toApiJson() : this.content;\n    }\n    if (typeof this.attributes !== 'undefined' && this.attributes !== null) {\n      toReturn['attributes'] = 'toApiJson' in this.attributes ? this.attributes.toApiJson() : this.attributes;\n    }\n    if (typeof this.emailId !== 'undefined') {\n      toReturn['emailId'] = this.emailId;\n    }\n    if (typeof this.timestamp !== 'undefined' && this.timestamp !== null) {\n      toReturn['timestamp'] = 'toApiJson' in this.timestamp ? this.timestamp.toApiJson() : this.timestamp;\n    }\n    if (typeof this.headers !== 'undefined' && this.headers !== null) {\n      toReturn['headers'] = 'toApiJson' in this.headers ? this.headers.toApiJson() : this.headers;\n    }\n    if (typeof this.attachments !== 'undefined' && this.attachments !== null) {\n      toReturn['attachments'] = 'toApiJson' in this.attachments ? this.attachments.toApiJson() : this.attachments;\n    }\n    if (typeof this.urlAttachments !== 'undefined' && this.urlAttachments !== null) {\n      toReturn['urlAttachments'] = 'toApiJson' in this.urlAttachments ? this.urlAttachments.toApiJson() : this.urlAttachments;\n    }\n    if (typeof this.serviceProviderInfo !== 'undefined' && this.serviceProviderInfo !== null) {\n      toReturn['serviceProviderInfo'] = 'toApiJson' in this.serviceProviderInfo ? this.serviceProviderInfo.toApiJson() : this.serviceProviderInfo;\n    }\n    if (typeof this.links !== 'undefined' && this.links !== null) {\n      toReturn['links'] = 'toApiJson' in this.links ? this.links.toApiJson() : this.links;\n    }\n    return toReturn;\n  }\n}\nclass EmailWithCustomDomainMessage {\n  static fromProto(proto) {\n    let m = new EmailWithCustomDomainMessage();\n    m = Object.assign(m, proto);\n    if (proto.to) {\n      m.to = proto.to.map(Participant.fromProto);\n    }\n    if (proto.cc) {\n      m.cc = proto.cc.map(Participant.fromProto);\n    }\n    if (proto.bcc) {\n      m.bcc = proto.bcc.map(Participant.fromProto);\n    }\n    if (proto.replyTo) {\n      m.replyTo = Participant.fromProto(proto.replyTo);\n    }\n    if (proto.content) {\n      m.content = proto.content.map(Content.fromProto);\n    }\n    if (proto.attributes) {\n      m.attributes = proto.attributes.map(Attribute.fromProto);\n    }\n    if (proto.timestamp) {\n      m.timestamp = new Date(proto.timestamp);\n    }\n    if (proto.headers) {\n      m.headers = proto.headers.map(Header.fromProto);\n    }\n    if (proto.attachments) {\n      m.attachments = proto.attachments.map(GCSAttachment.fromProto);\n    }\n    if (proto.urlAttachments) {\n      m.urlAttachments = proto.urlAttachments.map(URLAttachment.fromProto);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.to !== 'undefined' && this.to !== null) {\n      toReturn['to'] = 'toApiJson' in this.to ? this.to.toApiJson() : this.to;\n    }\n    if (typeof this.cc !== 'undefined' && this.cc !== null) {\n      toReturn['cc'] = 'toApiJson' in this.cc ? this.cc.toApiJson() : this.cc;\n    }\n    if (typeof this.bcc !== 'undefined' && this.bcc !== null) {\n      toReturn['bcc'] = 'toApiJson' in this.bcc ? this.bcc.toApiJson() : this.bcc;\n    }\n    if (typeof this.replyTo !== 'undefined' && this.replyTo !== null) {\n      toReturn['replyTo'] = 'toApiJson' in this.replyTo ? this.replyTo.toApiJson() : this.replyTo;\n    }\n    if (typeof this.subject !== 'undefined') {\n      toReturn['subject'] = this.subject;\n    }\n    if (typeof this.content !== 'undefined' && this.content !== null) {\n      toReturn['content'] = 'toApiJson' in this.content ? this.content.toApiJson() : this.content;\n    }\n    if (typeof this.attributes !== 'undefined' && this.attributes !== null) {\n      toReturn['attributes'] = 'toApiJson' in this.attributes ? this.attributes.toApiJson() : this.attributes;\n    }\n    if (typeof this.emailId !== 'undefined') {\n      toReturn['emailId'] = this.emailId;\n    }\n    if (typeof this.timestamp !== 'undefined' && this.timestamp !== null) {\n      toReturn['timestamp'] = 'toApiJson' in this.timestamp ? this.timestamp.toApiJson() : this.timestamp;\n    }\n    if (typeof this.headers !== 'undefined' && this.headers !== null) {\n      toReturn['headers'] = 'toApiJson' in this.headers ? this.headers.toApiJson() : this.headers;\n    }\n    if (typeof this.attachments !== 'undefined' && this.attachments !== null) {\n      toReturn['attachments'] = 'toApiJson' in this.attachments ? this.attachments.toApiJson() : this.attachments;\n    }\n    if (typeof this.urlAttachments !== 'undefined' && this.urlAttachments !== null) {\n      toReturn['urlAttachments'] = 'toApiJson' in this.urlAttachments ? this.urlAttachments.toApiJson() : this.urlAttachments;\n    }\n    return toReturn;\n  }\n}\nclass GCSAttachment {\n  static fromProto(proto) {\n    let m = new GCSAttachment();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.bucket !== 'undefined') {\n      toReturn['bucket'] = this.bucket;\n    }\n    if (typeof this.filename !== 'undefined') {\n      toReturn['filename'] = this.filename;\n    }\n    if (typeof this.attachedFilename !== 'undefined') {\n      toReturn['attachedFilename'] = this.attachedFilename;\n    }\n    return toReturn;\n  }\n}\nclass Header {\n  static fromProto(proto) {\n    let m = new Header();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.key !== 'undefined') {\n      toReturn['key'] = this.key;\n    }\n    if (typeof this.value !== 'undefined') {\n      toReturn['value'] = this.value;\n    }\n    return toReturn;\n  }\n}\nclass Links {\n  static fromProto(proto) {\n    let m = new Links();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.url !== 'undefined') {\n      toReturn['url'] = this.url;\n    }\n    if (typeof this.normalizedUrl !== 'undefined') {\n      toReturn['normalizedUrl'] = this.normalizedUrl;\n    }\n    return toReturn;\n  }\n}\nclass Participant {\n  static fromProto(proto) {\n    let m = new Participant();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.name !== 'undefined') {\n      toReturn['name'] = this.name;\n    }\n    if (typeof this.emailAddress !== 'undefined') {\n      toReturn['emailAddress'] = this.emailAddress;\n    }\n    return toReturn;\n  }\n}\nclass ServiceProviderInfo {\n  static fromProto(proto) {\n    let m = new ServiceProviderInfo();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.subUserId !== 'undefined') {\n      toReturn['subUserId'] = this.subUserId;\n    }\n    return toReturn;\n  }\n}\nclass URLAttachment {\n  static fromProto(proto) {\n    let m = new URLAttachment();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.fileUrl !== 'undefined') {\n      toReturn['fileUrl'] = this.fileUrl;\n    }\n    if (typeof this.attachedFilename !== 'undefined') {\n      toReturn['attachedFilename'] = this.attachedFilename;\n    }\n    return toReturn;\n  }\n}\nclass UserParticipant {\n  static fromProto(proto) {\n    let m = new UserParticipant();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.userId !== 'undefined') {\n      toReturn['userId'] = this.userId;\n    }\n    return toReturn;\n  }\n}\nclass WhiteLabelEmailMessage {\n  static fromProto(proto) {\n    let m = new WhiteLabelEmailMessage();\n    m = Object.assign(m, proto);\n    if (proto.attributes) {\n      m.attributes = proto.attributes.map(Attribute.fromProto);\n    }\n    if (proto.links) {\n      m.links = proto.links.map(Links.fromProto);\n    }\n    if (proto.attachments) {\n      m.attachments = proto.attachments.map(GCSAttachment.fromProto);\n    }\n    if (proto.urlAttachments) {\n      m.urlAttachments = proto.urlAttachments.map(URLAttachment.fromProto);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.subject !== 'undefined') {\n      toReturn['subject'] = this.subject;\n    }\n    if (typeof this.htmlContent !== 'undefined') {\n      toReturn['htmlContent'] = this.htmlContent;\n    }\n    if (typeof this.plainTextContent !== 'undefined') {\n      toReturn['plainTextContent'] = this.plainTextContent;\n    }\n    if (typeof this.attributes !== 'undefined' && this.attributes !== null) {\n      toReturn['attributes'] = 'toApiJson' in this.attributes ? this.attributes.toApiJson() : this.attributes;\n    }\n    if (typeof this.links !== 'undefined' && this.links !== null) {\n      toReturn['links'] = 'toApiJson' in this.links ? this.links.toApiJson() : this.links;\n    }\n    if (typeof this.attachments !== 'undefined' && this.attachments !== null) {\n      toReturn['attachments'] = 'toApiJson' in this.attachments ? this.attachments.toApiJson() : this.attachments;\n    }\n    if (typeof this.urlAttachments !== 'undefined' && this.urlAttachments !== null) {\n      toReturn['urlAttachments'] = 'toApiJson' in this.urlAttachments ? this.urlAttachments.toApiJson() : this.urlAttachments;\n    }\n    return toReturn;\n  }\n}\nfunction enumStringToValue$3(enumRef, value) {\n  if (typeof value === 'number') {\n    return value;\n  }\n  return enumRef[value];\n}\nclass PartnerEmailQuota {\n  static fromProto(proto) {\n    let m = new PartnerEmailQuota();\n    m = Object.assign(m, proto);\n    if (proto.dailyQuota) {\n      m.dailyQuota = parseInt(proto.dailyQuota, 10);\n    }\n    if (proto.created) {\n      m.created = new Date(proto.created);\n    }\n    if (proto.updated) {\n      m.updated = new Date(proto.updated);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.partnerId !== 'undefined') {\n      toReturn['partnerId'] = this.partnerId;\n    }\n    if (typeof this.dailyQuota !== 'undefined') {\n      toReturn['dailyQuota'] = this.dailyQuota;\n    }\n    if (typeof this.created !== 'undefined' && this.created !== null) {\n      toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n    }\n    if (typeof this.updated !== 'undefined' && this.updated !== null) {\n      toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n    }\n    return toReturn;\n  }\n}\nfunction enumStringToValue$2(enumRef, value) {\n  if (typeof value === 'number') {\n    return value;\n  }\n  return enumRef[value];\n}\nclass AttachmentInfo {\n  static fromProto(proto) {\n    let m = new AttachmentInfo();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.filename !== 'undefined') {\n      toReturn['filename'] = this.filename;\n    }\n    if (typeof this.name !== 'undefined') {\n      toReturn['name'] = this.name;\n    }\n    if (typeof this.contentType !== 'undefined') {\n      toReturn['contentType'] = this.contentType;\n    }\n    if (typeof this.contentId !== 'undefined') {\n      toReturn['contentId'] = this.contentId;\n    }\n    if (typeof this.charset !== 'undefined') {\n      toReturn['charset'] = this.charset;\n    }\n    if (typeof this.storageObjectName !== 'undefined') {\n      toReturn['storageObjectName'] = this.storageObjectName;\n    }\n    if (typeof this.storageObjectUrl !== 'undefined') {\n      toReturn['storageObjectUrl'] = this.storageObjectUrl;\n    }\n    return toReturn;\n  }\n}\nclass Envelope {\n  static fromProto(proto) {\n    let m = new Envelope();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.toField !== 'undefined') {\n      toReturn['toField'] = this.toField;\n    }\n    if (typeof this.fromField !== 'undefined') {\n      toReturn['fromField'] = this.fromField;\n    }\n    return toReturn;\n  }\n}\nclass InboundMessage {\n  static fromProto(proto) {\n    let m = new InboundMessage();\n    m = Object.assign(m, proto);\n    if (proto.contentIds) {\n      m.contentIds = proto.contentIds.map(Attribute.fromProto);\n    }\n    if (proto.toField) {\n      m.toField = proto.toField.map(Participant.fromProto);\n    }\n    if (proto.fromField) {\n      m.fromField = Participant.fromProto(proto.fromField);\n    }\n    if (proto.envelope) {\n      m.envelope = Envelope.fromProto(proto.envelope);\n    }\n    if (proto.attachmentInfo) {\n      m.attachmentInfo = proto.attachmentInfo.map(AttachmentInfo.fromProto);\n    }\n    if (proto.charsets) {\n      m.charsets = proto.charsets.map(Attribute.fromProto);\n    }\n    if (proto.created) {\n      m.created = new Date(proto.created);\n    }\n    if (proto.updated) {\n      m.updated = new Date(proto.updated);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.emailId !== 'undefined') {\n      toReturn['emailId'] = this.emailId;\n    }\n    if (typeof this.headers !== 'undefined') {\n      toReturn['headers'] = this.headers;\n    }\n    if (typeof this.dkim !== 'undefined') {\n      toReturn['dkim'] = this.dkim;\n    }\n    if (typeof this.contentIds !== 'undefined' && this.contentIds !== null) {\n      toReturn['contentIds'] = 'toApiJson' in this.contentIds ? this.contentIds.toApiJson() : this.contentIds;\n    }\n    if (typeof this.toField !== 'undefined' && this.toField !== null) {\n      toReturn['toField'] = 'toApiJson' in this.toField ? this.toField.toApiJson() : this.toField;\n    }\n    if (typeof this.fromField !== 'undefined' && this.fromField !== null) {\n      toReturn['fromField'] = 'toApiJson' in this.fromField ? this.fromField.toApiJson() : this.fromField;\n    }\n    if (typeof this.contentText !== 'undefined') {\n      toReturn['contentText'] = this.contentText;\n    }\n    if (typeof this.contentHtml !== 'undefined') {\n      toReturn['contentHtml'] = this.contentHtml;\n    }\n    if (typeof this.senderIp !== 'undefined') {\n      toReturn['senderIp'] = this.senderIp;\n    }\n    if (typeof this.spamReport !== 'undefined') {\n      toReturn['spamReport'] = this.spamReport;\n    }\n    if (typeof this.envelope !== 'undefined' && this.envelope !== null) {\n      toReturn['envelope'] = 'toApiJson' in this.envelope ? this.envelope.toApiJson() : this.envelope;\n    }\n    if (typeof this.attachments !== 'undefined') {\n      toReturn['attachments'] = this.attachments;\n    }\n    if (typeof this.attachmentInfo !== 'undefined' && this.attachmentInfo !== null) {\n      toReturn['attachmentInfo'] = 'toApiJson' in this.attachmentInfo ? this.attachmentInfo.toApiJson() : this.attachmentInfo;\n    }\n    if (typeof this.subject !== 'undefined') {\n      toReturn['subject'] = this.subject;\n    }\n    if (typeof this.spamScore !== 'undefined') {\n      toReturn['spamScore'] = this.spamScore;\n    }\n    if (typeof this.charsets !== 'undefined' && this.charsets !== null) {\n      toReturn['charsets'] = 'toApiJson' in this.charsets ? this.charsets.toApiJson() : this.charsets;\n    }\n    if (typeof this.spf !== 'undefined') {\n      toReturn['spf'] = this.spf;\n    }\n    if (typeof this.rawMessage !== 'undefined') {\n      toReturn['rawMessage'] = this.rawMessage;\n    }\n    if (typeof this.created !== 'undefined' && this.created !== null) {\n      toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n    }\n    if (typeof this.updated !== 'undefined' && this.updated !== null) {\n      toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n    }\n    return toReturn;\n  }\n}\nclass InboundMessageMapping {\n  static fromProto(proto) {\n    let m = new InboundMessageMapping();\n    m = Object.assign(m, proto);\n    if (proto.attributes) {\n      m.attributes = proto.attributes.map(Attribute.fromProto);\n    }\n    if (proto.created) {\n      m.created = new Date(proto.created);\n    }\n    if (proto.updated) {\n      m.updated = new Date(proto.updated);\n    }\n    if (proto.deleted) {\n      m.deleted = new Date(proto.deleted);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.mappingId !== 'undefined') {\n      toReturn['mappingId'] = this.mappingId;\n    }\n    if (typeof this.appNamespace !== 'undefined') {\n      toReturn['appNamespace'] = this.appNamespace;\n    }\n    if (typeof this.idempotencyKey !== 'undefined') {\n      toReturn['idempotencyKey'] = this.idempotencyKey;\n    }\n    if (typeof this.attributes !== 'undefined' && this.attributes !== null) {\n      toReturn['attributes'] = 'toApiJson' in this.attributes ? this.attributes.toApiJson() : this.attributes;\n    }\n    if (typeof this.created !== 'undefined' && this.created !== null) {\n      toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n    }\n    if (typeof this.updated !== 'undefined' && this.updated !== null) {\n      toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n    }\n    if (typeof this.deleted !== 'undefined' && this.deleted !== null) {\n      toReturn['deleted'] = 'toApiJson' in this.deleted ? this.deleted.toApiJson() : this.deleted;\n    }\n    return toReturn;\n  }\n}\nfunction enumStringToValue$1(enumRef, value) {\n  if (typeof value === 'number') {\n    return value;\n  }\n  return enumRef[value];\n}\nclass CheckDisposableEmailRequest {\n  static fromProto(proto) {\n    let m = new CheckDisposableEmailRequest();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.email !== 'undefined') {\n      toReturn['email'] = this.email;\n    }\n    return toReturn;\n  }\n}\nclass CheckDisposableEmailResponse {\n  static fromProto(proto) {\n    let m = new CheckDisposableEmailResponse();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.isDisposable !== 'undefined') {\n      toReturn['isDisposable'] = this.isDisposable;\n    }\n    return toReturn;\n  }\n}\nfunction enumStringToValue(enumRef, value) {\n  if (typeof value === 'number') {\n    return value;\n  }\n  return enumRef[value];\n}\nclass AdminSetEmailQueuesStatusRequest {\n  static fromProto(proto) {\n    let m = new AdminSetEmailQueuesStatusRequest();\n    m = Object.assign(m, proto);\n    if (proto.status) {\n      m.status = enumStringToValue(EmailQueueStatus, proto.status);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.status !== 'undefined') {\n      toReturn['status'] = this.status;\n    }\n    return toReturn;\n  }\n}\nclass BatchSearchRecipientStatusRequest {\n  static fromProto(proto) {\n    let m = new BatchSearchRecipientStatusRequest();\n    m = Object.assign(m, proto);\n    if (proto.sender) {\n      m.sender = Sender.fromProto(proto.sender);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.sender !== 'undefined' && this.sender !== null) {\n      toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n    }\n    if (typeof this.recipientEmails !== 'undefined') {\n      toReturn['recipientEmails'] = this.recipientEmails;\n    }\n    return toReturn;\n  }\n}\nclass BatchSearchRecipientStatusResponse {\n  static fromProto(proto) {\n    let m = new BatchSearchRecipientStatusResponse();\n    m = Object.assign(m, proto);\n    if (proto.recipientStatuses) {\n      m.recipientStatuses = proto.recipientStatuses.map(Status.fromProto);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.recipientStatuses !== 'undefined' && this.recipientStatuses !== null) {\n      toReturn['recipientStatuses'] = 'toApiJson' in this.recipientStatuses ? this.recipientStatuses.toApiJson() : this.recipientStatuses;\n    }\n    return toReturn;\n  }\n}\nclass BounceSender {\n  static fromProto(proto) {\n    let m = new BounceSender();\n    m = Object.assign(m, proto);\n    if (proto.type) {\n      m.type = enumStringToValue(BounceSenderType, proto.type);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.type !== 'undefined') {\n      toReturn['type'] = this.type;\n    }\n    if (typeof this.id !== 'undefined') {\n      toReturn['id'] = this.id;\n    }\n    return toReturn;\n  }\n}\nclass BulkUpsertPartnerEmailQuotaRequest {\n  static fromProto(proto) {\n    let m = new BulkUpsertPartnerEmailQuotaRequest();\n    m = Object.assign(m, proto);\n    if (proto.partnerEmailQuota) {\n      m.partnerEmailQuota = proto.partnerEmailQuota.map(PartnerEmailQuotaMutation.fromProto);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.partnerEmailQuota !== 'undefined' && this.partnerEmailQuota !== null) {\n      toReturn['partnerEmailQuota'] = 'toApiJson' in this.partnerEmailQuota ? this.partnerEmailQuota.toApiJson() : this.partnerEmailQuota;\n    }\n    return toReturn;\n  }\n}\nclass Category {\n  static fromProto(proto) {\n    let m = new Category();\n    m = Object.assign(m, proto);\n    if (proto.namespace) {\n      m.namespace = enumStringToValue(Namespace, proto.namespace);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.namespace !== 'undefined') {\n      toReturn['namespace'] = this.namespace;\n    }\n    if (typeof this.id !== 'undefined') {\n      toReturn['id'] = this.id;\n    }\n    if (typeof this.name !== 'undefined') {\n      toReturn['name'] = this.name;\n    }\n    return toReturn;\n  }\n}\nclass ChangeEmailDomainRequest {\n  static fromProto(proto) {\n    let m = new ChangeEmailDomainRequest();\n    m = Object.assign(m, proto);\n    if (proto.senderType) {\n      m.senderType = enumStringToValue(SenderType, proto.senderType);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.senderType !== 'undefined') {\n      toReturn['senderType'] = this.senderType;\n    }\n    if (typeof this.senderId !== 'undefined') {\n      toReturn['senderId'] = this.senderId;\n    }\n    if (typeof this.sendFromDomain !== 'undefined') {\n      toReturn['sendFromDomain'] = this.sendFromDomain;\n    }\n    if (typeof this.sendFromUsername !== 'undefined') {\n      toReturn['sendFromUsername'] = this.sendFromUsername;\n    }\n    if (typeof this.replyToEmail !== 'undefined') {\n      toReturn['replyToEmail'] = this.replyToEmail;\n    }\n    if (typeof this.sendFromName !== 'undefined') {\n      toReturn['sendFromName'] = this.sendFromName;\n    }\n    return toReturn;\n  }\n}\nclass ChangeEmailDomainResponse {\n  static fromProto(proto) {\n    let m = new ChangeEmailDomainResponse();\n    m = Object.assign(m, proto);\n    if (proto.status) {\n      m.status = enumStringToValue(ChangeEmailDomainStatus, proto.status);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.status !== 'undefined') {\n      toReturn['status'] = this.status;\n    }\n    return toReturn;\n  }\n}\nclass CreateBlockRequest {\n  static fromProto(proto) {\n    let m = new CreateBlockRequest();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.blockType !== 'undefined') {\n      toReturn['blockType'] = this.blockType;\n    }\n    if (typeof this.message !== 'undefined') {\n      toReturn['message'] = this.message;\n    }\n    if (typeof this.conditions !== 'undefined') {\n      toReturn['conditions'] = this.conditions;\n    }\n    return toReturn;\n  }\n}\nclass CreateBlockResponse {\n  static fromProto(proto) {\n    let m = new CreateBlockResponse();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.blockType !== 'undefined') {\n      toReturn['blockType'] = this.blockType;\n    }\n    if (typeof this.id !== 'undefined') {\n      toReturn['id'] = this.id;\n    }\n    return toReturn;\n  }\n}\nclass CreateEmailDomainRequest {\n  static fromProto(proto) {\n    let m = new CreateEmailDomainRequest();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.partnerId !== 'undefined') {\n      toReturn['partnerId'] = this.partnerId;\n    }\n    if (typeof this.applicationId !== 'undefined') {\n      toReturn['applicationId'] = this.applicationId;\n    }\n    if (typeof this.businessId !== 'undefined') {\n      toReturn['businessId'] = this.businessId;\n    }\n    if (typeof this.userId !== 'undefined') {\n      toReturn['userId'] = this.userId;\n    }\n    if (typeof this.domain !== 'undefined') {\n      toReturn['domain'] = this.domain;\n    }\n    return toReturn;\n  }\n}\nclass CreateEmailDomainWithSendAsRequest {\n  static fromProto(proto) {\n    let m = new CreateEmailDomainWithSendAsRequest();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.partnerId !== 'undefined') {\n      toReturn['partnerId'] = this.partnerId;\n    }\n    if (typeof this.applicationId !== 'undefined') {\n      toReturn['applicationId'] = this.applicationId;\n    }\n    if (typeof this.businessId !== 'undefined') {\n      toReturn['businessId'] = this.businessId;\n    }\n    if (typeof this.userId !== 'undefined') {\n      toReturn['userId'] = this.userId;\n    }\n    if (typeof this.domain !== 'undefined') {\n      toReturn['domain'] = this.domain;\n    }\n    if (typeof this.sendAsEmail !== 'undefined') {\n      toReturn['sendAsEmail'] = this.sendAsEmail;\n    }\n    if (typeof this.sendAsName !== 'undefined') {\n      toReturn['sendAsName'] = this.sendAsName;\n    }\n    return toReturn;\n  }\n}\nclass CreateInboundMessageMappingRequest {\n  static fromProto(proto) {\n    let m = new CreateInboundMessageMappingRequest();\n    m = Object.assign(m, proto);\n    if (proto.attributes) {\n      m.attributes = proto.attributes.map(Attribute.fromProto);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.appNamespace !== 'undefined') {\n      toReturn['appNamespace'] = this.appNamespace;\n    }\n    if (typeof this.idempotencyKey !== 'undefined') {\n      toReturn['idempotencyKey'] = this.idempotencyKey;\n    }\n    if (typeof this.attributes !== 'undefined' && this.attributes !== null) {\n      toReturn['attributes'] = 'toApiJson' in this.attributes ? this.attributes.toApiJson() : this.attributes;\n    }\n    return toReturn;\n  }\n}\nclass CreateInboundMessageMappingResponse {\n  static fromProto(proto) {\n    let m = new CreateInboundMessageMappingResponse();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.mappingId !== 'undefined') {\n      toReturn['mappingId'] = this.mappingId;\n    }\n    return toReturn;\n  }\n}\nclass CreatePendingDomainRequest {\n  static fromProto(proto) {\n    let m = new CreatePendingDomainRequest();\n    m = Object.assign(m, proto);\n    if (proto.sender) {\n      m.sender = Sender.fromProto(proto.sender);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.sender !== 'undefined' && this.sender !== null) {\n      toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n    }\n    if (typeof this.domain !== 'undefined') {\n      toReturn['domain'] = this.domain;\n    }\n    return toReturn;\n  }\n}\nclass CustomSender {\n  static fromProto(proto) {\n    let m = new CustomSender();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.customEmailUsername !== 'undefined') {\n      toReturn['customEmailUsername'] = this.customEmailUsername;\n    }\n    if (typeof this.name !== 'undefined') {\n      toReturn['name'] = this.name;\n    }\n    if (typeof this.replyTo !== 'undefined') {\n      toReturn['replyTo'] = this.replyTo;\n    }\n    return toReturn;\n  }\n}\nclass DeleteBlockRequest {\n  static fromProto(proto) {\n    let m = new DeleteBlockRequest();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.blockType !== 'undefined') {\n      toReturn['blockType'] = this.blockType;\n    }\n    if (typeof this.id !== 'undefined') {\n      toReturn['id'] = this.id;\n    }\n    return toReturn;\n  }\n}\nclass DeleteEmailDomainRequest {\n  static fromProto(proto) {\n    let m = new DeleteEmailDomainRequest();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.partnerId !== 'undefined') {\n      toReturn['partnerId'] = this.partnerId;\n    }\n    if (typeof this.applicationId !== 'undefined') {\n      toReturn['applicationId'] = this.applicationId;\n    }\n    if (typeof this.businessId !== 'undefined') {\n      toReturn['businessId'] = this.businessId;\n    }\n    return toReturn;\n  }\n}\nclass DeletePartnerEmailQuotaRequest {\n  static fromProto(proto) {\n    let m = new DeletePartnerEmailQuotaRequest();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.partnerId !== 'undefined') {\n      toReturn['partnerId'] = this.partnerId;\n    }\n    return toReturn;\n  }\n}\nclass DeletePendingEmailDomainRequest {\n  static fromProto(proto) {\n    let m = new DeletePendingEmailDomainRequest();\n    m = Object.assign(m, proto);\n    if (proto.senderType) {\n      m.senderType = enumStringToValue(SenderType, proto.senderType);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.senderType !== 'undefined') {\n      toReturn['senderType'] = this.senderType;\n    }\n    if (typeof this.senderId !== 'undefined') {\n      toReturn['senderId'] = this.senderId;\n    }\n    if (typeof this.domain !== 'undefined') {\n      toReturn['domain'] = this.domain;\n    }\n    return toReturn;\n  }\n}\nclass DeleteSubUserRequest {\n  static fromProto(proto) {\n    let m = new DeleteSubUserRequest();\n    m = Object.assign(m, proto);\n    if (proto.senderType) {\n      m.senderType = enumStringToValue(SenderType, proto.senderType);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.senderType !== 'undefined') {\n      toReturn['senderType'] = this.senderType;\n    }\n    if (typeof this.senderId !== 'undefined') {\n      toReturn['senderId'] = this.senderId;\n    }\n    return toReturn;\n  }\n}\nclass EmailEventBucket {\n  static fromProto(proto) {\n    let m = new EmailEventBucket();\n    m = Object.assign(m, proto);\n    if (proto.eventRollup) {\n      m.eventRollup = proto.eventRollup.map(EmailEventBucketEventRollup.fromProto);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.bucketName !== 'undefined') {\n      toReturn['bucketName'] = this.bucketName;\n    }\n    if (typeof this.eventRollup !== 'undefined' && this.eventRollup !== null) {\n      toReturn['eventRollup'] = 'toApiJson' in this.eventRollup ? this.eventRollup.toApiJson() : this.eventRollup;\n    }\n    return toReturn;\n  }\n}\nclass EmailEventFilter {\n  static fromProto(proto) {\n    let m = new EmailEventFilter();\n    m = Object.assign(m, proto);\n    if (proto.notificationTypes) {\n      m.notificationTypes = proto.notificationTypes.map(v => enumStringToValue(NotificationType, v));\n    }\n    if (proto.eventTypes) {\n      m.eventTypes = proto.eventTypes.map(v => enumStringToValue(EventType, v));\n    }\n    if (proto.dateRange) {\n      m.dateRange = DateRange.fromProto(proto.dateRange);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.partnerId !== 'undefined') {\n      toReturn['partnerId'] = this.partnerId;\n    }\n    if (typeof this.marketId !== 'undefined') {\n      toReturn['marketId'] = this.marketId;\n    }\n    if (typeof this.notificationTypes !== 'undefined') {\n      toReturn['notificationTypes'] = this.notificationTypes;\n    }\n    if (typeof this.eventTypes !== 'undefined') {\n      toReturn['eventTypes'] = this.eventTypes;\n    }\n    if (typeof this.dateRange !== 'undefined' && this.dateRange !== null) {\n      toReturn['dateRange'] = 'toApiJson' in this.dateRange ? this.dateRange.toApiJson() : this.dateRange;\n    }\n    return toReturn;\n  }\n}\nclass EmailEventBucketEventRollup {\n  static fromProto(proto) {\n    let m = new EmailEventBucketEventRollup();\n    m = Object.assign(m, proto);\n    if (proto.date) {\n      m.date = new Date(proto.date);\n    }\n    if (proto.quantity) {\n      m.quantity = parseInt(proto.quantity, 10);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.date !== 'undefined' && this.date !== null) {\n      toReturn['date'] = 'toApiJson' in this.date ? this.date.toApiJson() : this.date;\n    }\n    if (typeof this.quantity !== 'undefined') {\n      toReturn['quantity'] = this.quantity;\n    }\n    return toReturn;\n  }\n}\nclass GetAttributeEventStatsResponseEventStats {\n  static fromProto(proto) {\n    let m = new GetAttributeEventStatsResponseEventStats();\n    m = Object.assign(m, proto);\n    if (proto.eventType) {\n      m.eventType = enumStringToValue(EventType, proto.eventType);\n    }\n    if (proto.count) {\n      m.count = parseInt(proto.count, 10);\n    }\n    if (proto.uniqueCount) {\n      m.uniqueCount = parseInt(proto.uniqueCount, 10);\n    }\n    if (proto.uniqueRecipients) {\n      m.uniqueRecipients = parseInt(proto.uniqueRecipients, 10);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.eventType !== 'undefined') {\n      toReturn['eventType'] = this.eventType;\n    }\n    if (typeof this.count !== 'undefined') {\n      toReturn['count'] = this.count;\n    }\n    if (typeof this.uniqueCount !== 'undefined') {\n      toReturn['uniqueCount'] = this.uniqueCount;\n    }\n    if (typeof this.uniqueRecipients !== 'undefined') {\n      toReturn['uniqueRecipients'] = this.uniqueRecipients;\n    }\n    return toReturn;\n  }\n}\nclass ExportAttributeEventClickStatsRequest {\n  static fromProto(proto) {\n    let m = new ExportAttributeEventClickStatsRequest();\n    m = Object.assign(m, proto);\n    if (proto.sender) {\n      m.sender = Sender.fromProto(proto.sender);\n    }\n    if (proto.attribute) {\n      m.attribute = Attribute.fromProto(proto.attribute);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.sender !== 'undefined' && this.sender !== null) {\n      toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n    }\n    if (typeof this.normalizedUrl !== 'undefined') {\n      toReturn['normalizedUrl'] = this.normalizedUrl;\n    }\n    if (typeof this.attribute !== 'undefined' && this.attribute !== null) {\n      toReturn['attribute'] = 'toApiJson' in this.attribute ? this.attribute.toApiJson() : this.attribute;\n    }\n    if (typeof this.userId !== 'undefined') {\n      toReturn['userId'] = this.userId;\n    }\n    return toReturn;\n  }\n}\nclass GetAttributeEventLinkStatsRequest {\n  static fromProto(proto) {\n    let m = new GetAttributeEventLinkStatsRequest();\n    m = Object.assign(m, proto);\n    if (proto.sender) {\n      m.sender = Sender.fromProto(proto.sender);\n    }\n    if (proto.attribute) {\n      m.attribute = Attribute.fromProto(proto.attribute);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.sender !== 'undefined' && this.sender !== null) {\n      toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n    }\n    if (typeof this.attribute !== 'undefined' && this.attribute !== null) {\n      toReturn['attribute'] = 'toApiJson' in this.attribute ? this.attribute.toApiJson() : this.attribute;\n    }\n    return toReturn;\n  }\n}\nclass GetAttributeEventLinkStatsResponse {\n  static fromProto(proto) {\n    let m = new GetAttributeEventLinkStatsResponse();\n    m = Object.assign(m, proto);\n    if (proto.data) {\n      m.data = proto.data.map(LinkStats.fromProto);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.data !== 'undefined' && this.data !== null) {\n      toReturn['data'] = 'toApiJson' in this.data ? this.data.toApiJson() : this.data;\n    }\n    return toReturn;\n  }\n}\nclass GetAttributeEventStatsRequest {\n  static fromProto(proto) {\n    let m = new GetAttributeEventStatsRequest();\n    m = Object.assign(m, proto);\n    if (proto.sender) {\n      m.sender = Sender.fromProto(proto.sender);\n    }\n    if (proto.attribute) {\n      m.attribute = Attribute.fromProto(proto.attribute);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.sender !== 'undefined' && this.sender !== null) {\n      toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n    }\n    if (typeof this.attribute !== 'undefined' && this.attribute !== null) {\n      toReturn['attribute'] = 'toApiJson' in this.attribute ? this.attribute.toApiJson() : this.attribute;\n    }\n    return toReturn;\n  }\n}\nclass GetAttributeEventStatsResponse {\n  static fromProto(proto) {\n    let m = new GetAttributeEventStatsResponse();\n    m = Object.assign(m, proto);\n    if (proto.data) {\n      m.data = proto.data.map(GetAttributeEventStatsResponseEventStats.fromProto);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.data !== 'undefined' && this.data !== null) {\n      toReturn['data'] = 'toApiJson' in this.data ? this.data.toApiJson() : this.data;\n    }\n    return toReturn;\n  }\n}\nclass GetBlockRequest {\n  static fromProto(proto) {\n    let m = new GetBlockRequest();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.blockType !== 'undefined') {\n      toReturn['blockType'] = this.blockType;\n    }\n    if (typeof this.id !== 'undefined') {\n      toReturn['id'] = this.id;\n    }\n    return toReturn;\n  }\n}\nclass GetBlockResponse {\n  static fromProto(proto) {\n    let m = new GetBlockResponse();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.blockType !== 'undefined') {\n      toReturn['blockType'] = this.blockType;\n    }\n    if (typeof this.id !== 'undefined') {\n      toReturn['id'] = this.id;\n    }\n    if (typeof this.message !== 'undefined') {\n      toReturn['message'] = this.message;\n    }\n    if (typeof this.conditions !== 'undefined') {\n      toReturn['conditions'] = this.conditions;\n    }\n    return toReturn;\n  }\n}\nclass GetBouncedRecipientRequest {\n  static fromProto(proto) {\n    let m = new GetBouncedRecipientRequest();\n    m = Object.assign(m, proto);\n    if (proto.sender) {\n      m.sender = BounceSender.fromProto(proto.sender);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.sender !== 'undefined' && this.sender !== null) {\n      toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n    }\n    if (typeof this.recipientEmail !== 'undefined') {\n      toReturn['recipientEmail'] = this.recipientEmail;\n    }\n    return toReturn;\n  }\n}\nclass GetBouncedRecipientResponse {\n  static fromProto(proto) {\n    let m = new GetBouncedRecipientResponse();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.recipientEmail !== 'undefined') {\n      toReturn['recipientEmail'] = this.recipientEmail;\n    }\n    return toReturn;\n  }\n}\nclass GetCategoriesRequest {\n  static fromProto(proto) {\n    let m = new GetCategoriesRequest();\n    m = Object.assign(m, proto);\n    if (proto.senderType) {\n      m.senderType = enumStringToValue(SenderType, proto.senderType);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.senderType !== 'undefined') {\n      toReturn['senderType'] = this.senderType;\n    }\n    if (typeof this.senderId !== 'undefined') {\n      toReturn['senderId'] = this.senderId;\n    }\n    return toReturn;\n  }\n}\nclass GetCategoriesResponse {\n  static fromProto(proto) {\n    let m = new GetCategoriesResponse();\n    m = Object.assign(m, proto);\n    if (proto.categories) {\n      m.categories = proto.categories.map(Category.fromProto);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.categories !== 'undefined' && this.categories !== null) {\n      toReturn['categories'] = 'toApiJson' in this.categories ? this.categories.toApiJson() : this.categories;\n    }\n    return toReturn;\n  }\n}\nclass GetCategoryPreferencesRequest {\n  static fromProto(proto) {\n    let m = new GetCategoryPreferencesRequest();\n    m = Object.assign(m, proto);\n    if (proto.senderType) {\n      m.senderType = enumStringToValue(SenderType, proto.senderType);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.senderType !== 'undefined') {\n      toReturn['senderType'] = this.senderType;\n    }\n    if (typeof this.senderId !== 'undefined') {\n      toReturn['senderId'] = this.senderId;\n    }\n    if (typeof this.recipientId !== 'undefined') {\n      toReturn['recipientId'] = this.recipientId;\n    }\n    return toReturn;\n  }\n}\nclass GetCategoryPreferencesResponse {\n  static fromProto(proto) {\n    let m = new GetCategoryPreferencesResponse();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.optedInEmailCategoryIds !== 'undefined') {\n      toReturn['optedInEmailCategoryIds'] = this.optedInEmailCategoryIds;\n    }\n    if (typeof this.emailPreferenceInitialized !== 'undefined') {\n      toReturn['emailPreferenceInitialized'] = this.emailPreferenceInitialized;\n    }\n    return toReturn;\n  }\n}\nclass GetDefaultDomainRequest {\n  static fromProto(proto) {\n    let m = new GetDefaultDomainRequest();\n    m = Object.assign(m, proto);\n    if (proto.senderType) {\n      m.senderType = enumStringToValue(SenderType, proto.senderType);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.senderType !== 'undefined') {\n      toReturn['senderType'] = this.senderType;\n    }\n    return toReturn;\n  }\n}\nclass GetDefaultDomainResponse {\n  static fromProto(proto) {\n    let m = new GetDefaultDomainResponse();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.domain !== 'undefined') {\n      toReturn['domain'] = this.domain;\n    }\n    return toReturn;\n  }\n}\nclass GetEmailDomainRequest {\n  static fromProto(proto) {\n    let m = new GetEmailDomainRequest();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.partnerId !== 'undefined') {\n      toReturn['partnerId'] = this.partnerId;\n    }\n    if (typeof this.applicationId !== 'undefined') {\n      toReturn['applicationId'] = this.applicationId;\n    }\n    if (typeof this.businessId !== 'undefined') {\n      toReturn['businessId'] = this.businessId;\n    }\n    return toReturn;\n  }\n}\nclass GetEmailDomainResponse {\n  static fromProto(proto) {\n    let m = new GetEmailDomainResponse();\n    m = Object.assign(m, proto);\n    if (proto.domain) {\n      m.domain = EmailDomain.fromProto(proto.domain);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.domain !== 'undefined' && this.domain !== null) {\n      toReturn['domain'] = 'toApiJson' in this.domain ? this.domain.toApiJson() : this.domain;\n    }\n    return toReturn;\n  }\n}\nclass GetEmailQueuesStatusRequest {\n  static fromProto(proto) {\n    let m = new GetEmailQueuesStatusRequest();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    return toReturn;\n  }\n}\nclass GetEmailQueuesStatusResponse {\n  static fromProto(proto) {\n    let m = new GetEmailQueuesStatusResponse();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.running !== 'undefined') {\n      toReturn['running'] = this.running;\n    }\n    return toReturn;\n  }\n}\nclass GetInboundMessageMappingRequest {\n  static fromProto(proto) {\n    let m = new GetInboundMessageMappingRequest();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.appNamespace !== 'undefined') {\n      toReturn['appNamespace'] = this.appNamespace;\n    }\n    if (typeof this.idempotencyKey !== 'undefined') {\n      toReturn['idempotencyKey'] = this.idempotencyKey;\n    }\n    return toReturn;\n  }\n}\nclass GetInboundMessageMappingResponse {\n  static fromProto(proto) {\n    let m = new GetInboundMessageMappingResponse();\n    m = Object.assign(m, proto);\n    if (proto.inboundMessageMapping) {\n      m.inboundMessageMapping = InboundMessageMapping.fromProto(proto.inboundMessageMapping);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.inboundMessageMapping !== 'undefined' && this.inboundMessageMapping !== null) {\n      toReturn['inboundMessageMapping'] = 'toApiJson' in this.inboundMessageMapping ? this.inboundMessageMapping.toApiJson() : this.inboundMessageMapping;\n    }\n    return toReturn;\n  }\n}\nclass GetInboundMessageRequest {\n  static fromProto(proto) {\n    let m = new GetInboundMessageRequest();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.emailId !== 'undefined') {\n      toReturn['emailId'] = this.emailId;\n    }\n    return toReturn;\n  }\n}\nclass GetInboundMessageResponse {\n  static fromProto(proto) {\n    let m = new GetInboundMessageResponse();\n    m = Object.assign(m, proto);\n    if (proto.inboundMessage) {\n      m.inboundMessage = InboundMessage.fromProto(proto.inboundMessage);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.inboundMessage !== 'undefined' && this.inboundMessage !== null) {\n      toReturn['inboundMessage'] = 'toApiJson' in this.inboundMessage ? this.inboundMessage.toApiJson() : this.inboundMessage;\n    }\n    return toReturn;\n  }\n}\nclass GetMessageRequest {\n  static fromProto(proto) {\n    let m = new GetMessageRequest();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.emailId !== 'undefined') {\n      toReturn['emailId'] = this.emailId;\n    }\n    return toReturn;\n  }\n}\nclass GetMessageResponse {\n  static fromProto(proto) {\n    let m = new GetMessageResponse();\n    m = Object.assign(m, proto);\n    if (proto.message) {\n      m.message = EmailMessage.fromProto(proto.message);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.message !== 'undefined' && this.message !== null) {\n      toReturn['message'] = 'toApiJson' in this.message ? this.message.toApiJson() : this.message;\n    }\n    return toReturn;\n  }\n}\nclass GetMultiEmailRollupsRequest {\n  static fromProto(proto) {\n    let m = new GetMultiEmailRollupsRequest();\n    m = Object.assign(m, proto);\n    if (proto.buckets) {\n      m.buckets = proto.buckets.map(Bucket.fromProto);\n    }\n    if (proto.filter) {\n      m.filter = EmailEventFilter.fromProto(proto.filter);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.buckets !== 'undefined' && this.buckets !== null) {\n      toReturn['buckets'] = 'toApiJson' in this.buckets ? this.buckets.toApiJson() : this.buckets;\n    }\n    if (typeof this.filter !== 'undefined' && this.filter !== null) {\n      toReturn['filter'] = 'toApiJson' in this.filter ? this.filter.toApiJson() : this.filter;\n    }\n    return toReturn;\n  }\n}\nclass GetMultiEmailRollupsResponse {\n  static fromProto(proto) {\n    let m = new GetMultiEmailRollupsResponse();\n    m = Object.assign(m, proto);\n    if (proto.emailRollups) {\n      m.emailRollups = proto.emailRollups.map(EmailEventBucket.fromProto);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.emailRollups !== 'undefined' && this.emailRollups !== null) {\n      toReturn['emailRollups'] = 'toApiJson' in this.emailRollups ? this.emailRollups.toApiJson() : this.emailRollups;\n    }\n    return toReturn;\n  }\n}\nclass GetMultiMessageRequest {\n  static fromProto(proto) {\n    let m = new GetMultiMessageRequest();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.emailIds !== 'undefined') {\n      toReturn['emailIds'] = this.emailIds;\n    }\n    return toReturn;\n  }\n}\nclass GetMultiMessageResponse {\n  static fromProto(proto) {\n    let m = new GetMultiMessageResponse();\n    m = Object.assign(m, proto);\n    if (proto.messages) {\n      m.messages = proto.messages.map(EmailMessage.fromProto);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.messages !== 'undefined' && this.messages !== null) {\n      toReturn['messages'] = 'toApiJson' in this.messages ? this.messages.toApiJson() : this.messages;\n    }\n    return toReturn;\n  }\n}\nclass GetMultiPartnerEmailQuotaRequest {\n  static fromProto(proto) {\n    let m = new GetMultiPartnerEmailQuotaRequest();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.partnerIds !== 'undefined') {\n      toReturn['partnerIds'] = this.partnerIds;\n    }\n    return toReturn;\n  }\n}\nclass GetMultiPartnerEmailQuotaResponse {\n  static fromProto(proto) {\n    let m = new GetMultiPartnerEmailQuotaResponse();\n    m = Object.assign(m, proto);\n    if (proto.partnerEmailQuotas) {\n      m.partnerEmailQuotas = proto.partnerEmailQuotas.map(PartnerEmailQuota.fromProto);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.partnerEmailQuotas !== 'undefined' && this.partnerEmailQuotas !== null) {\n      toReturn['partnerEmailQuotas'] = 'toApiJson' in this.partnerEmailQuotas ? this.partnerEmailQuotas.toApiJson() : this.partnerEmailQuotas;\n    }\n    return toReturn;\n  }\n}\nclass GetPendingEmailDomainRequest {\n  static fromProto(proto) {\n    let m = new GetPendingEmailDomainRequest();\n    m = Object.assign(m, proto);\n    if (proto.senderType) {\n      m.senderType = enumStringToValue(SenderType, proto.senderType);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.senderType !== 'undefined') {\n      toReturn['senderType'] = this.senderType;\n    }\n    if (typeof this.senderId !== 'undefined') {\n      toReturn['senderId'] = this.senderId;\n    }\n    return toReturn;\n  }\n}\nclass GetPendingEmailDomainResponse {\n  static fromProto(proto) {\n    let m = new GetPendingEmailDomainResponse();\n    m = Object.assign(m, proto);\n    if (proto.senderType) {\n      m.senderType = enumStringToValue(SenderType, proto.senderType);\n    }\n    if (proto.targets) {\n      m.targets = GetPendingEmailDomainTargetCNameRecords.fromProto(proto.targets);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.senderType !== 'undefined') {\n      toReturn['senderType'] = this.senderType;\n    }\n    if (typeof this.senderId !== 'undefined') {\n      toReturn['senderId'] = this.senderId;\n    }\n    if (typeof this.sendFromDomain !== 'undefined') {\n      toReturn['sendFromDomain'] = this.sendFromDomain;\n    }\n    if (typeof this.targetSpf !== 'undefined') {\n      toReturn['targetSpf'] = this.targetSpf;\n    }\n    if (typeof this.currentSpf !== 'undefined') {\n      toReturn['currentSpf'] = this.currentSpf;\n    }\n    if (typeof this.sendFromUsername !== 'undefined') {\n      toReturn['sendFromUsername'] = this.sendFromUsername;\n    }\n    if (typeof this.targets !== 'undefined' && this.targets !== null) {\n      toReturn['targets'] = 'toApiJson' in this.targets ? this.targets.toApiJson() : this.targets;\n    }\n    return toReturn;\n  }\n}\nclass GetPendingEmailDomainTargetCNameRecords {\n  static fromProto(proto) {\n    let m = new GetPendingEmailDomainTargetCNameRecords();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.mailSubdomain !== 'undefined') {\n      toReturn['mailSubdomain'] = this.mailSubdomain;\n    }\n    if (typeof this.mailValue !== 'undefined') {\n      toReturn['mailValue'] = this.mailValue;\n    }\n    if (typeof this.dkim1Subdomain !== 'undefined') {\n      toReturn['dkim1Subdomain'] = this.dkim1Subdomain;\n    }\n    if (typeof this.dkim1Value !== 'undefined') {\n      toReturn['dkim1Value'] = this.dkim1Value;\n    }\n    if (typeof this.dkim2Subdomain !== 'undefined') {\n      toReturn['dkim2Subdomain'] = this.dkim2Subdomain;\n    }\n    if (typeof this.dkim2Value !== 'undefined') {\n      toReturn['dkim2Value'] = this.dkim2Value;\n    }\n    if (typeof this.dmarcSubdomain !== 'undefined') {\n      toReturn['dmarcSubdomain'] = this.dmarcSubdomain;\n    }\n    if (typeof this.dmarcValue !== 'undefined') {\n      toReturn['dmarcValue'] = this.dmarcValue;\n    }\n    return toReturn;\n  }\n}\nclass GetReplyEmailRequest {\n  static fromProto(proto) {\n    let m = new GetReplyEmailRequest();\n    m = Object.assign(m, proto);\n    if (proto.sender) {\n      m.sender = Sender.fromProto(proto.sender);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.sender !== 'undefined' && this.sender !== null) {\n      toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n    }\n    if (typeof this.idempotencyKey !== 'undefined') {\n      toReturn['idempotencyKey'] = this.idempotencyKey;\n    }\n    return toReturn;\n  }\n}\nclass GetReplyEmailResponse {\n  static fromProto(proto) {\n    let m = new GetReplyEmailResponse();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.replyAddress !== 'undefined') {\n      toReturn['replyAddress'] = this.replyAddress;\n    }\n    return toReturn;\n  }\n}\nclass GetSenderInfoRequest {\n  static fromProto(proto) {\n    let m = new GetSenderInfoRequest();\n    m = Object.assign(m, proto);\n    if (proto.sender) {\n      m.sender = Sender.fromProto(proto.sender);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.sender !== 'undefined' && this.sender !== null) {\n      toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n    }\n    return toReturn;\n  }\n}\nclass GetSenderInfoResponse {\n  static fromProto(proto) {\n    let m = new GetSenderInfoResponse();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.domain !== 'undefined') {\n      toReturn['domain'] = this.domain;\n    }\n    if (typeof this.isPlatformAuthorized !== 'undefined') {\n      toReturn['isPlatformAuthorized'] = this.isPlatformAuthorized;\n    }\n    if (typeof this.isDefaultForSenderType !== 'undefined') {\n      toReturn['isDefaultForSenderType'] = this.isDefaultForSenderType;\n    }\n    if (typeof this.preferredEmailUsername !== 'undefined') {\n      toReturn['preferredEmailUsername'] = this.preferredEmailUsername;\n    }\n    if (typeof this.preferredEmailDisplayName !== 'undefined') {\n      toReturn['preferredEmailDisplayName'] = this.preferredEmailDisplayName;\n    }\n    if (typeof this.preferredReplyToEmailAddress !== 'undefined') {\n      toReturn['preferredReplyToEmailAddress'] = this.preferredReplyToEmailAddress;\n    }\n    return toReturn;\n  }\n}\nclass GetUnsubscribeLinkRequest {\n  static fromProto(proto) {\n    let m = new GetUnsubscribeLinkRequest();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.id !== 'undefined') {\n      toReturn['id'] = this.id;\n    }\n    return toReturn;\n  }\n}\nclass GetUnsubscribeLinkResponse {\n  static fromProto(proto) {\n    let m = new GetUnsubscribeLinkResponse();\n    m = Object.assign(m, proto);\n    if (proto.senderType) {\n      m.senderType = enumStringToValue(SenderType, proto.senderType);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.emailId !== 'undefined') {\n      toReturn['emailId'] = this.emailId;\n    }\n    if (typeof this.senderType !== 'undefined') {\n      toReturn['senderType'] = this.senderType;\n    }\n    if (typeof this.senderId !== 'undefined') {\n      toReturn['senderId'] = this.senderId;\n    }\n    if (typeof this.recipientIds !== 'undefined') {\n      toReturn['recipientIds'] = this.recipientIds;\n    }\n    return toReturn;\n  }\n}\nclass GetUnsubscribedRecipientRequest {\n  static fromProto(proto) {\n    let m = new GetUnsubscribedRecipientRequest();\n    m = Object.assign(m, proto);\n    if (proto.senderType) {\n      m.senderType = enumStringToValue(SenderType, proto.senderType);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.senderType !== 'undefined') {\n      toReturn['senderType'] = this.senderType;\n    }\n    if (typeof this.senderId !== 'undefined') {\n      toReturn['senderId'] = this.senderId;\n    }\n    if (typeof this.recipientEmail !== 'undefined') {\n      toReturn['recipientEmail'] = this.recipientEmail;\n    }\n    return toReturn;\n  }\n}\nclass GetUnsubscribedRecipientResponse {\n  static fromProto(proto) {\n    let m = new GetUnsubscribedRecipientResponse();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.recipientEmail !== 'undefined') {\n      toReturn['recipientEmail'] = this.recipientEmail;\n    }\n    return toReturn;\n  }\n}\nclass InboundMessageMappingOptions {\n  static fromProto(proto) {\n    let m = new InboundMessageMappingOptions();\n    m = Object.assign(m, proto);\n    if (proto.attributes) {\n      m.attributes = proto.attributes.map(Attribute.fromProto);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.appNamespace !== 'undefined') {\n      toReturn['appNamespace'] = this.appNamespace;\n    }\n    if (typeof this.ownerId !== 'undefined') {\n      toReturn['ownerId'] = this.ownerId;\n    }\n    if (typeof this.attributes !== 'undefined' && this.attributes !== null) {\n      toReturn['attributes'] = 'toApiJson' in this.attributes ? this.attributes.toApiJson() : this.attributes;\n    }\n    return toReturn;\n  }\n}\nclass InitializeSubUserRequest {\n  static fromProto(proto) {\n    let m = new InitializeSubUserRequest();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.senderType !== 'undefined') {\n      toReturn['senderType'] = this.senderType;\n    }\n    if (typeof this.senderId !== 'undefined') {\n      toReturn['senderId'] = this.senderId;\n    }\n    return toReturn;\n  }\n}\nclass InitiateEmailDomainRectifyRequest {\n  static fromProto(proto) {\n    let m = new InitiateEmailDomainRectifyRequest();\n    m = Object.assign(m, proto);\n    if (proto.senderType) {\n      m.senderType = enumStringToValue(SenderType, proto.senderType);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.senderType !== 'undefined') {\n      toReturn['senderType'] = this.senderType;\n    }\n    if (typeof this.senderId !== 'undefined') {\n      toReturn['senderId'] = this.senderId;\n    }\n    if (typeof this.bypassFrequencyLimit !== 'undefined') {\n      toReturn['bypassFrequencyLimit'] = this.bypassFrequencyLimit;\n    }\n    return toReturn;\n  }\n}\nclass InitiateEmailDomainRollbackRequest {\n  static fromProto(proto) {\n    let m = new InitiateEmailDomainRollbackRequest();\n    m = Object.assign(m, proto);\n    if (proto.senderType) {\n      m.senderType = enumStringToValue(SenderType, proto.senderType);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.senderType !== 'undefined') {\n      toReturn['senderType'] = this.senderType;\n    }\n    if (typeof this.senderId !== 'undefined') {\n      toReturn['senderId'] = this.senderId;\n    }\n    return toReturn;\n  }\n}\nclass LinkClickStats {\n  static fromProto(proto) {\n    let m = new LinkClickStats();\n    m = Object.assign(m, proto);\n    if (proto.recipient) {\n      m.recipient = LinkClickStatsRecipient.fromProto(proto.recipient);\n    }\n    if (proto.recentDate) {\n      m.recentDate = new Date(proto.recentDate);\n    }\n    if (proto.count) {\n      m.count = parseInt(proto.count, 10);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.recipient !== 'undefined' && this.recipient !== null) {\n      toReturn['recipient'] = 'toApiJson' in this.recipient ? this.recipient.toApiJson() : this.recipient;\n    }\n    if (typeof this.recentDate !== 'undefined' && this.recentDate !== null) {\n      toReturn['recentDate'] = 'toApiJson' in this.recentDate ? this.recentDate.toApiJson() : this.recentDate;\n    }\n    if (typeof this.count !== 'undefined') {\n      toReturn['count'] = this.count;\n    }\n    return toReturn;\n  }\n}\nclass LinkStats {\n  static fromProto(proto) {\n    let m = new LinkStats();\n    m = Object.assign(m, proto);\n    if (proto.totalClicks) {\n      m.totalClicks = parseInt(proto.totalClicks, 10);\n    }\n    if (proto.uniqueClicks) {\n      m.uniqueClicks = parseInt(proto.uniqueClicks, 10);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.url !== 'undefined') {\n      toReturn['url'] = this.url;\n    }\n    if (typeof this.totalClicks !== 'undefined') {\n      toReturn['totalClicks'] = this.totalClicks;\n    }\n    if (typeof this.uniqueClicks !== 'undefined') {\n      toReturn['uniqueClicks'] = this.uniqueClicks;\n    }\n    if (typeof this.clickRate !== 'undefined') {\n      toReturn['clickRate'] = this.clickRate;\n    }\n    return toReturn;\n  }\n}\nclass ListAllDomainsRequest {\n  static fromProto(proto) {\n    let m = new ListAllDomainsRequest();\n    m = Object.assign(m, proto);\n    if (proto.sender) {\n      m.sender = Sender.fromProto(proto.sender);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.sender !== 'undefined' && this.sender !== null) {\n      toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n    }\n    return toReturn;\n  }\n}\nclass ListAllDomainsResponse {\n  static fromProto(proto) {\n    let m = new ListAllDomainsResponse();\n    m = Object.assign(m, proto);\n    if (proto.domains) {\n      m.domains = proto.domains.map(SenderDomain.fromProto);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.domains !== 'undefined' && this.domains !== null) {\n      toReturn['domains'] = 'toApiJson' in this.domains ? this.domains.toApiJson() : this.domains;\n    }\n    return toReturn;\n  }\n}\nclass ListEmailEventsRequestListEmailEventsFilters {\n  static fromProto(proto) {\n    let m = new ListEmailEventsRequestListEmailEventsFilters();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.emailId !== 'undefined') {\n      toReturn['emailId'] = this.emailId;\n    }\n    if (typeof this.partnerId !== 'undefined') {\n      toReturn['partnerId'] = this.partnerId;\n    }\n    if (typeof this.businessId !== 'undefined') {\n      toReturn['businessId'] = this.businessId;\n    }\n    return toReturn;\n  }\n}\nclass ListEmailEventsRequest {\n  static fromProto(proto) {\n    let m = new ListEmailEventsRequest();\n    m = Object.assign(m, proto);\n    if (proto.filters) {\n      m.filters = ListEmailEventsRequestListEmailEventsFilters.fromProto(proto.filters);\n    }\n    if (proto.pagingOptions) {\n      m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.filters !== 'undefined' && this.filters !== null) {\n      toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n    }\n    if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n      toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n    }\n    return toReturn;\n  }\n}\nclass ListEmailEventsResponse {\n  static fromProto(proto) {\n    let m = new ListEmailEventsResponse();\n    m = Object.assign(m, proto);\n    if (proto.events) {\n      m.events = proto.events.map(EmailEvent.fromProto);\n    }\n    if (proto.pagingMetadata) {\n      m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.events !== 'undefined' && this.events !== null) {\n      toReturn['events'] = 'toApiJson' in this.events ? this.events.toApiJson() : this.events;\n    }\n    if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n      toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n    }\n    if (typeof this.nextCursor !== 'undefined') {\n      toReturn['nextCursor'] = this.nextCursor;\n    }\n    return toReturn;\n  }\n}\nclass ListEmailsRequestListEmailsFilters {\n  static fromProto(proto) {\n    let m = new ListEmailsRequestListEmailsFilters();\n    m = Object.assign(m, proto);\n    if (proto.dateRange) {\n      m.dateRange = DateRange.fromProto(proto.dateRange);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.to !== 'undefined') {\n      toReturn['to'] = this.to;\n    }\n    if (typeof this.from !== 'undefined') {\n      toReturn['from'] = this.from;\n    }\n    if (typeof this.dateRange !== 'undefined' && this.dateRange !== null) {\n      toReturn['dateRange'] = 'toApiJson' in this.dateRange ? this.dateRange.toApiJson() : this.dateRange;\n    }\n    if (typeof this.espId !== 'undefined') {\n      toReturn['espId'] = this.espId;\n    }\n    if (typeof this.partnerId !== 'undefined') {\n      toReturn['partnerId'] = this.partnerId;\n    }\n    if (typeof this.applicationId !== 'undefined') {\n      toReturn['applicationId'] = this.applicationId;\n    }\n    if (typeof this.businessId !== 'undefined') {\n      toReturn['businessId'] = this.businessId;\n    }\n    if (typeof this.espIds !== 'undefined') {\n      toReturn['espIds'] = this.espIds;\n    }\n    if (typeof this.subuserId !== 'undefined') {\n      toReturn['subuserId'] = this.subuserId;\n    }\n    return toReturn;\n  }\n}\nclass ListEmailsRequest {\n  static fromProto(proto) {\n    let m = new ListEmailsRequest();\n    m = Object.assign(m, proto);\n    if (proto.filters) {\n      m.filters = ListEmailsRequestListEmailsFilters.fromProto(proto.filters);\n    }\n    if (proto.pagingOptions) {\n      m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.searchTerm !== 'undefined') {\n      toReturn['searchTerm'] = this.searchTerm;\n    }\n    if (typeof this.filters !== 'undefined' && this.filters !== null) {\n      toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n    }\n    if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n      toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n    }\n    return toReturn;\n  }\n}\nclass ListEmailsResponse {\n  static fromProto(proto) {\n    let m = new ListEmailsResponse();\n    m = Object.assign(m, proto);\n    if (proto.emails) {\n      m.emails = proto.emails.map(EmailMessage.fromProto);\n    }\n    if (proto.pagingMetadata) {\n      m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.emails !== 'undefined' && this.emails !== null) {\n      toReturn['emails'] = 'toApiJson' in this.emails ? this.emails.toApiJson() : this.emails;\n    }\n    if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n      toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n    }\n    return toReturn;\n  }\n}\nclass ListEventsForAttributesRequest {\n  static fromProto(proto) {\n    let m = new ListEventsForAttributesRequest();\n    m = Object.assign(m, proto);\n    if (proto.attribute) {\n      m.attribute = Attribute.fromProto(proto.attribute);\n    }\n    if (proto.sender) {\n      m.sender = Sender.fromProto(proto.sender);\n    }\n    if (proto.pageSize) {\n      m.pageSize = parseInt(proto.pageSize, 10);\n    }\n    if (proto.eventTypes) {\n      m.eventTypes = proto.eventTypes.map(v => enumStringToValue(EventType, v));\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.attribute !== 'undefined' && this.attribute !== null) {\n      toReturn['attribute'] = 'toApiJson' in this.attribute ? this.attribute.toApiJson() : this.attribute;\n    }\n    if (typeof this.sender !== 'undefined' && this.sender !== null) {\n      toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n    }\n    if (typeof this.cursor !== 'undefined') {\n      toReturn['cursor'] = this.cursor;\n    }\n    if (typeof this.pageSize !== 'undefined') {\n      toReturn['pageSize'] = this.pageSize;\n    }\n    if (typeof this.eventTypes !== 'undefined') {\n      toReturn['eventTypes'] = this.eventTypes;\n    }\n    return toReturn;\n  }\n}\nclass ListEventsForAttributesResponse {\n  static fromProto(proto) {\n    let m = new ListEventsForAttributesResponse();\n    m = Object.assign(m, proto);\n    if (proto.events) {\n      m.events = proto.events.map(EmailEvent.fromProto);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.events !== 'undefined' && this.events !== null) {\n      toReturn['events'] = 'toApiJson' in this.events ? this.events.toApiJson() : this.events;\n    }\n    if (typeof this.cursor !== 'undefined') {\n      toReturn['cursor'] = this.cursor;\n    }\n    if (typeof this.hasMore !== 'undefined') {\n      toReturn['hasMore'] = this.hasMore;\n    }\n    return toReturn;\n  }\n}\nclass ListLinkClickActivityForAttributeRequest {\n  static fromProto(proto) {\n    let m = new ListLinkClickActivityForAttributeRequest();\n    m = Object.assign(m, proto);\n    if (proto.sender) {\n      m.sender = Sender.fromProto(proto.sender);\n    }\n    if (proto.attribute) {\n      m.attribute = Attribute.fromProto(proto.attribute);\n    }\n    if (proto.pagingOptions) {\n      m.pagingOptions = ListLinkClickActivityForAttributeRequestPagedRequestOptions.fromProto(proto.pagingOptions);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.sender !== 'undefined' && this.sender !== null) {\n      toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n    }\n    if (typeof this.attribute !== 'undefined' && this.attribute !== null) {\n      toReturn['attribute'] = 'toApiJson' in this.attribute ? this.attribute.toApiJson() : this.attribute;\n    }\n    if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n      toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n    }\n    if (typeof this.normalizedUrl !== 'undefined') {\n      toReturn['normalizedUrl'] = this.normalizedUrl;\n    }\n    return toReturn;\n  }\n}\nclass ListLinkClickActivityForAttributeResponse {\n  static fromProto(proto) {\n    let m = new ListLinkClickActivityForAttributeResponse();\n    m = Object.assign(m, proto);\n    if (proto.pagingMetadata) {\n      m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n    }\n    if (proto.data) {\n      m.data = proto.data.map(LinkClickStats.fromProto);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n      toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n    }\n    if (typeof this.data !== 'undefined' && this.data !== null) {\n      toReturn['data'] = 'toApiJson' in this.data ? this.data.toApiJson() : this.data;\n    }\n    return toReturn;\n  }\n}\nclass ListSendGridSubUserReputationsRequest {\n  static fromProto(proto) {\n    let m = new ListSendGridSubUserReputationsRequest();\n    m = Object.assign(m, proto);\n    if (proto.pageSize) {\n      m.pageSize = parseInt(proto.pageSize, 10);\n    }\n    if (proto.cursor) {\n      m.cursor = parseInt(proto.cursor, 10);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.pageSize !== 'undefined') {\n      toReturn['pageSize'] = this.pageSize;\n    }\n    if (typeof this.cursor !== 'undefined') {\n      toReturn['cursor'] = this.cursor;\n    }\n    return toReturn;\n  }\n}\nclass ListSendGridSubUserReputationsResponse {\n  static fromProto(proto) {\n    let m = new ListSendGridSubUserReputationsResponse();\n    m = Object.assign(m, proto);\n    if (proto.reputations) {\n      m.reputations = proto.reputations.map(SendGridSubUserReputation.fromProto);\n    }\n    if (proto.nextCursor) {\n      m.nextCursor = parseInt(proto.nextCursor, 10);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.reputations !== 'undefined' && this.reputations !== null) {\n      toReturn['reputations'] = 'toApiJson' in this.reputations ? this.reputations.toApiJson() : this.reputations;\n    }\n    if (typeof this.nextCursor !== 'undefined') {\n      toReturn['nextCursor'] = this.nextCursor;\n    }\n    return toReturn;\n  }\n}\nclass ListSendGridTeammatesRequest {\n  static fromProto(proto) {\n    let m = new ListSendGridTeammatesRequest();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    return toReturn;\n  }\n}\nclass ListSendGridTeammatesResponse {\n  static fromProto(proto) {\n    let m = new ListSendGridTeammatesResponse();\n    m = Object.assign(m, proto);\n    if (proto.teammates) {\n      m.teammates = proto.teammates.map(SendGridTeammate.fromProto);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.teammates !== 'undefined' && this.teammates !== null) {\n      toReturn['teammates'] = 'toApiJson' in this.teammates ? this.teammates.toApiJson() : this.teammates;\n    }\n    return toReturn;\n  }\n}\nclass PagedRequestOptions {\n  static fromProto(proto) {\n    let m = new PagedRequestOptions();\n    m = Object.assign(m, proto);\n    if (proto.pageSize) {\n      m.pageSize = parseInt(proto.pageSize, 10);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.cursor !== 'undefined') {\n      toReturn['cursor'] = this.cursor;\n    }\n    if (typeof this.pageSize !== 'undefined') {\n      toReturn['pageSize'] = this.pageSize;\n    }\n    return toReturn;\n  }\n}\nclass ListLinkClickActivityForAttributeRequestPagedRequestOptions {\n  static fromProto(proto) {\n    let m = new ListLinkClickActivityForAttributeRequestPagedRequestOptions();\n    m = Object.assign(m, proto);\n    if (proto.pageSize) {\n      m.pageSize = parseInt(proto.pageSize, 10);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.cursor !== 'undefined') {\n      toReturn['cursor'] = this.cursor;\n    }\n    if (typeof this.pageSize !== 'undefined') {\n      toReturn['pageSize'] = this.pageSize;\n    }\n    return toReturn;\n  }\n}\nclass PagedResponseMetadata {\n  static fromProto(proto) {\n    let m = new PagedResponseMetadata();\n    m = Object.assign(m, proto);\n    if (proto.totalResults) {\n      m.totalResults = parseInt(proto.totalResults, 10);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.nextCursor !== 'undefined') {\n      toReturn['nextCursor'] = this.nextCursor;\n    }\n    if (typeof this.hasMore !== 'undefined') {\n      toReturn['hasMore'] = this.hasMore;\n    }\n    if (typeof this.totalResults !== 'undefined') {\n      toReturn['totalResults'] = this.totalResults;\n    }\n    return toReturn;\n  }\n}\nclass PartnerEmailQuotaMutation {\n  static fromProto(proto) {\n    let m = new PartnerEmailQuotaMutation();\n    m = Object.assign(m, proto);\n    if (proto.dailyQuota) {\n      m.dailyQuota = parseInt(proto.dailyQuota, 10);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.partnerId !== 'undefined') {\n      toReturn['partnerId'] = this.partnerId;\n    }\n    if (typeof this.dailyQuota !== 'undefined') {\n      toReturn['dailyQuota'] = this.dailyQuota;\n    }\n    return toReturn;\n  }\n}\nclass QuarantineSenderRequest {\n  static fromProto(proto) {\n    let m = new QuarantineSenderRequest();\n    m = Object.assign(m, proto);\n    if (proto.senderType) {\n      m.senderType = enumStringToValue(SenderType, proto.senderType);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.senderType !== 'undefined') {\n      toReturn['senderType'] = this.senderType;\n    }\n    if (typeof this.senderId !== 'undefined') {\n      toReturn['senderId'] = this.senderId;\n    }\n    return toReturn;\n  }\n}\nclass LinkClickStatsRecipient {\n  static fromProto(proto) {\n    let m = new LinkClickStatsRecipient();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.emailAddress !== 'undefined') {\n      toReturn['emailAddress'] = this.emailAddress;\n    }\n    return toReturn;\n  }\n}\nclass RedirectEmailRequest {\n  static fromProto(proto) {\n    let m = new RedirectEmailRequest();\n    m = Object.assign(m, proto);\n    if (proto.override) {\n      m.override = EmailMessage.fromProto(proto.override);\n    }\n    if (proto.overrideSender) {\n      m.overrideSender = Sender.fromProto(proto.overrideSender);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.authCheckOnly !== 'undefined') {\n      toReturn['authCheckOnly'] = this.authCheckOnly;\n    }\n    if (typeof this.emailId !== 'undefined') {\n      toReturn['emailId'] = this.emailId;\n    }\n    if (typeof this.newRecipientEmailAddress !== 'undefined') {\n      toReturn['newRecipientEmailAddress'] = this.newRecipientEmailAddress;\n    }\n    if (typeof this.includeContent !== 'undefined') {\n      toReturn['includeContent'] = this.includeContent;\n    }\n    if (typeof this.includeAttributes !== 'undefined') {\n      toReturn['includeAttributes'] = this.includeAttributes;\n    }\n    if (typeof this.override !== 'undefined' && this.override !== null) {\n      toReturn['override'] = 'toApiJson' in this.override ? this.override.toApiJson() : this.override;\n    }\n    if (typeof this.overrideSender !== 'undefined' && this.overrideSender !== null) {\n      toReturn['overrideSender'] = 'toApiJson' in this.overrideSender ? this.overrideSender.toApiJson() : this.overrideSender;\n    }\n    return toReturn;\n  }\n}\nclass RedirectEmailResponse {\n  static fromProto(proto) {\n    let m = new RedirectEmailResponse();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.newEmailId !== 'undefined') {\n      toReturn['newEmailId'] = this.newEmailId;\n    }\n    return toReturn;\n  }\n}\nclass ResetRecipientStatusRequest {\n  static fromProto(proto) {\n    let m = new ResetRecipientStatusRequest();\n    m = Object.assign(m, proto);\n    if (proto.sender) {\n      m.sender = Sender.fromProto(proto.sender);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.sender !== 'undefined' && this.sender !== null) {\n      toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n    }\n    if (typeof this.recipientEmail !== 'undefined') {\n      toReturn['recipientEmail'] = this.recipientEmail;\n    }\n    return toReturn;\n  }\n}\nclass ResubscribeRecipientFromUnsubscribeLinkRequest {\n  static fromProto(proto) {\n    let m = new ResubscribeRecipientFromUnsubscribeLinkRequest();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.unsubscribeLinkUrl !== 'undefined') {\n      toReturn['unsubscribeLinkUrl'] = this.unsubscribeLinkUrl;\n    }\n    if (typeof this.unsubscribeLinkId !== 'undefined') {\n      toReturn['unsubscribeLinkId'] = this.unsubscribeLinkId;\n    }\n    return toReturn;\n  }\n}\nclass ResubscribeRecipientRequest {\n  static fromProto(proto) {\n    let m = new ResubscribeRecipientRequest();\n    m = Object.assign(m, proto);\n    if (proto.senderType) {\n      m.senderType = enumStringToValue(SenderType, proto.senderType);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.senderType !== 'undefined') {\n      toReturn['senderType'] = this.senderType;\n    }\n    if (typeof this.senderId !== 'undefined') {\n      toReturn['senderId'] = this.senderId;\n    }\n    if (typeof this.recipientEmail !== 'undefined') {\n      toReturn['recipientEmail'] = this.recipientEmail;\n    }\n    return toReturn;\n  }\n}\nclass SaveCategoryPreferencesRequest {\n  static fromProto(proto) {\n    let m = new SaveCategoryPreferencesRequest();\n    m = Object.assign(m, proto);\n    if (proto.senderType) {\n      m.senderType = enumStringToValue(SenderType, proto.senderType);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.senderType !== 'undefined') {\n      toReturn['senderType'] = this.senderType;\n    }\n    if (typeof this.senderId !== 'undefined') {\n      toReturn['senderId'] = this.senderId;\n    }\n    if (typeof this.unverifiedEmailAddress !== 'undefined') {\n      toReturn['unverifiedEmailAddress'] = this.unverifiedEmailAddress;\n    }\n    if (typeof this.userId !== 'undefined') {\n      toReturn['userId'] = this.userId;\n    }\n    if (typeof this.optedInEmailCategoryIds !== 'undefined') {\n      toReturn['optedInEmailCategoryIds'] = this.optedInEmailCategoryIds;\n    }\n    return toReturn;\n  }\n}\nclass SendFromAuthorizedDomainRequest {\n  static fromProto(proto) {\n    let m = new SendFromAuthorizedDomainRequest();\n    m = Object.assign(m, proto);\n    if (proto.sender) {\n      m.sender = Sender.fromProto(proto.sender);\n    }\n    if (proto.recipient) {\n      m.recipient = Participant.fromProto(proto.recipient);\n    }\n    if (proto.message) {\n      m.message = WhiteLabelEmailMessage.fromProto(proto.message);\n    }\n    if (proto.customSender) {\n      m.customSender = CustomSender.fromProto(proto.customSender);\n    }\n    if (proto.inboundMessageMappingOptions) {\n      m.inboundMessageMappingOptions = InboundMessageMappingOptions.fromProto(proto.inboundMessageMappingOptions);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.sender !== 'undefined' && this.sender !== null) {\n      toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n    }\n    if (typeof this.recipient !== 'undefined' && this.recipient !== null) {\n      toReturn['recipient'] = 'toApiJson' in this.recipient ? this.recipient.toApiJson() : this.recipient;\n    }\n    if (typeof this.message !== 'undefined' && this.message !== null) {\n      toReturn['message'] = 'toApiJson' in this.message ? this.message.toApiJson() : this.message;\n    }\n    if (typeof this.idempotencyKey !== 'undefined') {\n      toReturn['idempotencyKey'] = this.idempotencyKey;\n    }\n    if (typeof this.transactional !== 'undefined') {\n      toReturn['transactional'] = this.transactional;\n    }\n    if (typeof this.encryptContentAtRest !== 'undefined') {\n      toReturn['encryptContentAtRest'] = this.encryptContentAtRest;\n    }\n    if (typeof this.customSender !== 'undefined' && this.customSender !== null) {\n      toReturn['customSender'] = 'toApiJson' in this.customSender ? this.customSender.toApiJson() : this.customSender;\n    }\n    if (typeof this.inboundMessageMappingOptions !== 'undefined' && this.inboundMessageMappingOptions !== null) {\n      toReturn['inboundMessageMappingOptions'] = 'toApiJson' in this.inboundMessageMappingOptions ? this.inboundMessageMappingOptions.toApiJson() : this.inboundMessageMappingOptions;\n    }\n    return toReturn;\n  }\n}\nclass SendFromAuthorizedDomainResponse {\n  static fromProto(proto) {\n    let m = new SendFromAuthorizedDomainResponse();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.emailId !== 'undefined') {\n      toReturn['emailId'] = this.emailId;\n    }\n    return toReturn;\n  }\n}\nclass SendGridSubUserReputation {\n  static fromProto(proto) {\n    let m = new SendGridSubUserReputation();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.username !== 'undefined') {\n      toReturn['username'] = this.username;\n    }\n    if (typeof this.reputationPercent !== 'undefined') {\n      toReturn['reputationPercent'] = this.reputationPercent;\n    }\n    return toReturn;\n  }\n}\nclass SendGridTeammate {\n  static fromProto(proto) {\n    let m = new SendGridTeammate();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.fullName !== 'undefined') {\n      toReturn['fullName'] = this.fullName;\n    }\n    if (typeof this.email !== 'undefined') {\n      toReturn['email'] = this.email;\n    }\n    if (typeof this.role !== 'undefined') {\n      toReturn['role'] = this.role;\n    }\n    if (typeof this.slackUserName !== 'undefined') {\n      toReturn['slackUserName'] = this.slackUserName;\n    }\n    if (typeof this.slackUrl !== 'undefined') {\n      toReturn['slackUrl'] = this.slackUrl;\n    }\n    return toReturn;\n  }\n}\nclass SendRequest {\n  static fromProto(proto) {\n    let m = new SendRequest();\n    m = Object.assign(m, proto);\n    if (proto.email) {\n      m.email = EmailMessage.fromProto(proto.email);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.email !== 'undefined' && this.email !== null) {\n      toReturn['email'] = 'toApiJson' in this.email ? this.email.toApiJson() : this.email;\n    }\n    if (typeof this.espId !== 'undefined') {\n      toReturn['espId'] = this.espId;\n    }\n    if (typeof this.idempotencyKey !== 'undefined') {\n      toReturn['idempotencyKey'] = this.idempotencyKey;\n    }\n    if (typeof this.partnerId !== 'undefined') {\n      toReturn['partnerId'] = this.partnerId;\n    }\n    if (typeof this.applicationId !== 'undefined') {\n      toReturn['applicationId'] = this.applicationId;\n    }\n    if (typeof this.businessId !== 'undefined') {\n      toReturn['businessId'] = this.businessId;\n    }\n    return toReturn;\n  }\n}\nclass SendResponse {\n  static fromProto(proto) {\n    let m = new SendResponse();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.emailId !== 'undefined') {\n      toReturn['emailId'] = this.emailId;\n    }\n    return toReturn;\n  }\n}\nclass SendV2Request {\n  static fromProto(proto) {\n    let m = new SendV2Request();\n    m = Object.assign(m, proto);\n    if (proto.email) {\n      m.email = EmailMessageV2.fromProto(proto.email);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.email !== 'undefined' && this.email !== null) {\n      toReturn['email'] = 'toApiJson' in this.email ? this.email.toApiJson() : this.email;\n    }\n    if (typeof this.espId !== 'undefined') {\n      toReturn['espId'] = this.espId;\n    }\n    if (typeof this.idempotencyKey !== 'undefined') {\n      toReturn['idempotencyKey'] = this.idempotencyKey;\n    }\n    if (typeof this.partnerId !== 'undefined') {\n      toReturn['partnerId'] = this.partnerId;\n    }\n    if (typeof this.applicationId !== 'undefined') {\n      toReturn['applicationId'] = this.applicationId;\n    }\n    if (typeof this.businessId !== 'undefined') {\n      toReturn['businessId'] = this.businessId;\n    }\n    return toReturn;\n  }\n}\nclass SendV2Response {\n  static fromProto(proto) {\n    let m = new SendV2Response();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.emailId !== 'undefined') {\n      toReturn['emailId'] = this.emailId;\n    }\n    return toReturn;\n  }\n}\nclass SendWhitelabelEmailToUserRequest {\n  static fromProto(proto) {\n    let m = new SendWhitelabelEmailToUserRequest();\n    m = Object.assign(m, proto);\n    if (proto.sender) {\n      m.sender = Sender.fromProto(proto.sender);\n    }\n    if (proto.recipientUser) {\n      m.recipientUser = UserParticipant.fromProto(proto.recipientUser);\n    }\n    if (proto.message) {\n      m.message = WhiteLabelEmailMessage.fromProto(proto.message);\n    }\n    if (proto.userParticipant) {\n      m.userParticipant = UserParticipant.fromProto(proto.userParticipant);\n    }\n    if (proto.contactParticipant) {\n      m.contactParticipant = ContactParticipant.fromProto(proto.contactParticipant);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.sender !== 'undefined' && this.sender !== null) {\n      toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n    }\n    if (typeof this.recipientUser !== 'undefined' && this.recipientUser !== null) {\n      toReturn['recipientUser'] = 'toApiJson' in this.recipientUser ? this.recipientUser.toApiJson() : this.recipientUser;\n    }\n    if (typeof this.message !== 'undefined' && this.message !== null) {\n      toReturn['message'] = 'toApiJson' in this.message ? this.message.toApiJson() : this.message;\n    }\n    if (typeof this.idempotencyKey !== 'undefined') {\n      toReturn['idempotencyKey'] = this.idempotencyKey;\n    }\n    if (typeof this.transactional !== 'undefined') {\n      toReturn['transactional'] = this.transactional;\n    }\n    if (typeof this.userParticipant !== 'undefined' && this.userParticipant !== null) {\n      toReturn['userParticipant'] = 'toApiJson' in this.userParticipant ? this.userParticipant.toApiJson() : this.userParticipant;\n    }\n    if (typeof this.contactParticipant !== 'undefined' && this.contactParticipant !== null) {\n      toReturn['contactParticipant'] = 'toApiJson' in this.contactParticipant ? this.contactParticipant.toApiJson() : this.contactParticipant;\n    }\n    return toReturn;\n  }\n}\nclass SendWhitelabelEmailToUserResponse {\n  static fromProto(proto) {\n    let m = new SendWhitelabelEmailToUserResponse();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.emailId !== 'undefined') {\n      toReturn['emailId'] = this.emailId;\n    }\n    return toReturn;\n  }\n}\nclass SendWithCustomDomainRequest {\n  static fromProto(proto) {\n    let m = new SendWithCustomDomainRequest();\n    m = Object.assign(m, proto);\n    if (proto.email) {\n      m.email = EmailWithCustomDomainMessage.fromProto(proto.email);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.email !== 'undefined' && this.email !== null) {\n      toReturn['email'] = 'toApiJson' in this.email ? this.email.toApiJson() : this.email;\n    }\n    if (typeof this.idempotencyKey !== 'undefined') {\n      toReturn['idempotencyKey'] = this.idempotencyKey;\n    }\n    if (typeof this.partnerId !== 'undefined') {\n      toReturn['partnerId'] = this.partnerId;\n    }\n    if (typeof this.applicationId !== 'undefined') {\n      toReturn['applicationId'] = this.applicationId;\n    }\n    if (typeof this.businessId !== 'undefined') {\n      toReturn['businessId'] = this.businessId;\n    }\n    if (typeof this.fallbackEmail !== 'undefined') {\n      toReturn['fallbackEmail'] = this.fallbackEmail;\n    }\n    if (typeof this.fallbackName !== 'undefined') {\n      toReturn['fallbackName'] = this.fallbackName;\n    }\n    if (typeof this.fallbackEspId !== 'undefined') {\n      toReturn['fallbackEspId'] = this.fallbackEspId;\n    }\n    return toReturn;\n  }\n}\nclass SendWithCustomDomainResponse {\n  static fromProto(proto) {\n    let m = new SendWithCustomDomainResponse();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.emailId !== 'undefined') {\n      toReturn['emailId'] = this.emailId;\n    }\n    if (typeof this.customDomainUsed !== 'undefined') {\n      toReturn['customDomainUsed'] = this.customDomainUsed;\n    }\n    return toReturn;\n  }\n}\nclass Sender {\n  static fromProto(proto) {\n    let m = new Sender();\n    m = Object.assign(m, proto);\n    if (proto.type) {\n      m.type = enumStringToValue(SenderType, proto.type);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.type !== 'undefined') {\n      toReturn['type'] = this.type;\n    }\n    if (typeof this.id !== 'undefined') {\n      toReturn['id'] = this.id;\n    }\n    if (typeof this.appNamespace !== 'undefined') {\n      toReturn['appNamespace'] = this.appNamespace;\n    }\n    return toReturn;\n  }\n}\nclass SenderDomain {\n  static fromProto(proto) {\n    let m = new SenderDomain();\n    m = Object.assign(m, proto);\n    if (proto.targets) {\n      m.targets = GetPendingEmailDomainTargetCNameRecords.fromProto(proto.targets);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.sendFromDomain !== 'undefined') {\n      toReturn['sendFromDomain'] = this.sendFromDomain;\n    }\n    if (typeof this.targetSpf !== 'undefined') {\n      toReturn['targetSpf'] = this.targetSpf;\n    }\n    if (typeof this.currentSpf !== 'undefined') {\n      toReturn['currentSpf'] = this.currentSpf;\n    }\n    if (typeof this.targets !== 'undefined' && this.targets !== null) {\n      toReturn['targets'] = 'toApiJson' in this.targets ? this.targets.toApiJson() : this.targets;\n    }\n    if (typeof this.isPrimary !== 'undefined') {\n      toReturn['isPrimary'] = this.isPrimary;\n    }\n    return toReturn;\n  }\n}\nclass SetEmailQueuesStatusRequest {\n  static fromProto(proto) {\n    let m = new SetEmailQueuesStatusRequest();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.running !== 'undefined') {\n      toReturn['running'] = this.running;\n    }\n    return toReturn;\n  }\n}\nclass Status {\n  static fromProto(proto) {\n    let m = new Status();\n    m = Object.assign(m, proto);\n    if (proto.sender) {\n      m.sender = Sender.fromProto(proto.sender);\n    }\n    if (proto.status) {\n      m.status = enumStringToValue(RecipientStatusEnum, proto.status);\n    }\n    if (proto.infractionCount) {\n      m.infractionCount = parseInt(proto.infractionCount, 10);\n    }\n    if (proto.bounceExpiry) {\n      m.bounceExpiry = new Date(proto.bounceExpiry);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.sender !== 'undefined' && this.sender !== null) {\n      toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n    }\n    if (typeof this.recipientEmail !== 'undefined') {\n      toReturn['recipientEmail'] = this.recipientEmail;\n    }\n    if (typeof this.status !== 'undefined') {\n      toReturn['status'] = this.status;\n    }\n    if (typeof this.infractionCount !== 'undefined') {\n      toReturn['infractionCount'] = this.infractionCount;\n    }\n    if (typeof this.bounceExpiry !== 'undefined' && this.bounceExpiry !== null) {\n      toReturn['bounceExpiry'] = 'toApiJson' in this.bounceExpiry ? this.bounceExpiry.toApiJson() : this.bounceExpiry;\n    }\n    return toReturn;\n  }\n}\nclass UnbounceRecipientRequest {\n  static fromProto(proto) {\n    let m = new UnbounceRecipientRequest();\n    m = Object.assign(m, proto);\n    if (proto.sender) {\n      m.sender = BounceSender.fromProto(proto.sender);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.sender !== 'undefined' && this.sender !== null) {\n      toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n    }\n    if (typeof this.recipientEmail !== 'undefined') {\n      toReturn['recipientEmail'] = this.recipientEmail;\n    }\n    return toReturn;\n  }\n}\nclass UpsertPartnerEmailQuotaRequest {\n  static fromProto(proto) {\n    let m = new UpsertPartnerEmailQuotaRequest();\n    m = Object.assign(m, proto);\n    if (proto.dailyQuota) {\n      m.dailyQuota = parseInt(proto.dailyQuota, 10);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.partnerId !== 'undefined') {\n      toReturn['partnerId'] = this.partnerId;\n    }\n    if (typeof this.dailyQuota !== 'undefined') {\n      toReturn['dailyQuota'] = this.dailyQuota;\n    }\n    return toReturn;\n  }\n}\nclass VerifyDefaultDomainMismatch {\n  static fromProto(proto) {\n    let m = new VerifyDefaultDomainMismatch();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.dnsRecordType !== 'undefined') {\n      toReturn['dnsRecordType'] = this.dnsRecordType;\n    }\n    if (typeof this.url !== 'undefined') {\n      toReturn['url'] = this.url;\n    }\n    if (typeof this.expectedValue !== 'undefined') {\n      toReturn['expectedValue'] = this.expectedValue;\n    }\n    if (typeof this.actualValue !== 'undefined') {\n      toReturn['actualValue'] = this.actualValue;\n    }\n    if (typeof this.matchedPrefix !== 'undefined') {\n      toReturn['matchedPrefix'] = this.matchedPrefix;\n    }\n    if (typeof this.matchedSuffix !== 'undefined') {\n      toReturn['matchedSuffix'] = this.matchedSuffix;\n    }\n    return toReturn;\n  }\n}\nclass VerifyDefaultDomainRequest {\n  static fromProto(proto) {\n    let m = new VerifyDefaultDomainRequest();\n    m = Object.assign(m, proto);\n    if (proto.sender) {\n      m.sender = Sender.fromProto(proto.sender);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.sender !== 'undefined' && this.sender !== null) {\n      toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n    }\n    return toReturn;\n  }\n}\nclass VerifyDefaultDomainResponse {\n  static fromProto(proto) {\n    let m = new VerifyDefaultDomainResponse();\n    m = Object.assign(m, proto);\n    if (proto.mismatches) {\n      m.mismatches = proto.mismatches.map(VerifyDefaultDomainMismatch.fromProto);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.allRecordsMatch !== 'undefined') {\n      toReturn['allRecordsMatch'] = this.allRecordsMatch;\n    }\n    if (typeof this.mismatches !== 'undefined' && this.mismatches !== null) {\n      toReturn['mismatches'] = 'toApiJson' in this.mismatches ? this.mismatches.toApiJson() : this.mismatches;\n    }\n    return toReturn;\n  }\n}\nclass VerifyEmailDomainDMARCRequest {\n  static fromProto(proto) {\n    let m = new VerifyEmailDomainDMARCRequest();\n    m = Object.assign(m, proto);\n    if (proto.sender) {\n      m.sender = Sender.fromProto(proto.sender);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.sender !== 'undefined' && this.sender !== null) {\n      toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n    }\n    return toReturn;\n  }\n}\nclass VerifyEmailDomainDMARCResponse {\n  static fromProto(proto) {\n    let m = new VerifyEmailDomainDMARCResponse();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.dmarcPass !== 'undefined') {\n      toReturn['dmarcPass'] = this.dmarcPass;\n    }\n    if (typeof this.dmarcRecord !== 'undefined') {\n      toReturn['dmarcRecord'] = this.dmarcRecord;\n    }\n    if (typeof this.reason !== 'undefined') {\n      toReturn['reason'] = this.reason;\n    }\n    return toReturn;\n  }\n}\nclass VerifyEmailDomainRequest {\n  static fromProto(proto) {\n    let m = new VerifyEmailDomainRequest();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.partnerId !== 'undefined') {\n      toReturn['partnerId'] = this.partnerId;\n    }\n    if (typeof this.applicationId !== 'undefined') {\n      toReturn['applicationId'] = this.applicationId;\n    }\n    if (typeof this.businessId !== 'undefined') {\n      toReturn['businessId'] = this.businessId;\n    }\n    return toReturn;\n  }\n}\nclass VerifyPendingEmailDomainMismatch {\n  static fromProto(proto) {\n    let m = new VerifyPendingEmailDomainMismatch();\n    m = Object.assign(m, proto);\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.dnsRecordType !== 'undefined') {\n      toReturn['dnsRecordType'] = this.dnsRecordType;\n    }\n    if (typeof this.url !== 'undefined') {\n      toReturn['url'] = this.url;\n    }\n    if (typeof this.expectedValue !== 'undefined') {\n      toReturn['expectedValue'] = this.expectedValue;\n    }\n    if (typeof this.actualValue !== 'undefined') {\n      toReturn['actualValue'] = this.actualValue;\n    }\n    if (typeof this.matchedPrefix !== 'undefined') {\n      toReturn['matchedPrefix'] = this.matchedPrefix;\n    }\n    if (typeof this.matchedSuffix !== 'undefined') {\n      toReturn['matchedSuffix'] = this.matchedSuffix;\n    }\n    return toReturn;\n  }\n}\nclass VerifyPendingEmailDomainRequest {\n  static fromProto(proto) {\n    let m = new VerifyPendingEmailDomainRequest();\n    m = Object.assign(m, proto);\n    if (proto.senderType) {\n      m.senderType = enumStringToValue(SenderType, proto.senderType);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.senderType !== 'undefined') {\n      toReturn['senderType'] = this.senderType;\n    }\n    if (typeof this.senderId !== 'undefined') {\n      toReturn['senderId'] = this.senderId;\n    }\n    return toReturn;\n  }\n}\nclass VerifyPendingEmailDomainResponse {\n  static fromProto(proto) {\n    let m = new VerifyPendingEmailDomainResponse();\n    m = Object.assign(m, proto);\n    if (proto.mismatches) {\n      m.mismatches = proto.mismatches.map(VerifyPendingEmailDomainMismatch.fromProto);\n    }\n    return m;\n  }\n  constructor(kwargs) {\n    if (!kwargs) {\n      return;\n    }\n    Object.assign(this, kwargs);\n  }\n  toApiJson() {\n    const toReturn = {};\n    if (typeof this.allRecordsMatch !== 'undefined') {\n      toReturn['allRecordsMatch'] = this.allRecordsMatch;\n    }\n    if (typeof this.mismatches !== 'undefined' && this.mismatches !== null) {\n      toReturn['mismatches'] = 'toApiJson' in this.mismatches ? this.mismatches.toApiJson() : this.mismatches;\n    }\n    return toReturn;\n  }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects Index.\n// *********************************\n\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n  'local': 'email-api.vendasta-local.com',\n  'test': '',\n  'demo': 'email-api-demo.apigateway.co',\n  'prod': 'email-api-prod.apigateway.co',\n  'production': 'email-api-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n  class HostService {\n    get host() {\n      return hostMap[environment.toLowerCase()];\n    }\n    get hostWithScheme() {\n      return 'https://' + this.host;\n    }\n  }\n  HostService.ɵfac = function HostService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || HostService)();\n  };\n  HostService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: HostService,\n    factory: HostService.ɵfac,\n    providedIn: 'root'\n  });\n  return HostService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet EmailApiService = /*#__PURE__*/(() => {\n  class EmailApiService {\n    constructor() {\n      this.hostService = inject(HostService);\n      this.http = inject(HttpClient);\n      this._host = this.hostService.hostWithScheme;\n    }\n    apiOptions() {\n      return {\n        headers: new HttpHeaders({\n          'Content-Type': 'application/json'\n        }),\n        withCredentials: true\n      };\n    }\n    send(r) {\n      const request = r.toApiJson ? r : new SendRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailService/Send\", request.toApiJson(), this.apiOptions()).pipe(map(resp => SendResponse.fromProto(resp)));\n    }\n    sendWithCustomDomain(r) {\n      const request = r.toApiJson ? r : new SendWithCustomDomainRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailService/SendWithCustomDomain\", request.toApiJson(), this.apiOptions()).pipe(map(resp => SendWithCustomDomainResponse.fromProto(resp)));\n    }\n    sendV2(r) {\n      const request = r.toApiJson ? r : new SendV2Request(r);\n      return this.http.post(this._host + \"/email.v1.EmailService/SendV2\", request.toApiJson(), this.apiOptions()).pipe(map(resp => SendV2Response.fromProto(resp)));\n    }\n    list(r) {\n      const request = r.toApiJson ? r : new ListEmailsRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListEmailsResponse.fromProto(resp)));\n    }\n    getEmailQueuesStatus(r) {\n      const request = r.toApiJson ? r : new GetEmailQueuesStatusRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailService/GetEmailQueuesStatus\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetEmailQueuesStatusResponse.fromProto(resp)));\n    }\n    setEmailQueuesStatus(r) {\n      const request = r.toApiJson ? r : new SetEmailQueuesStatusRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailService/SetEmailQueuesStatus\", request.toApiJson(), {\n        ...this.apiOptions(),\n        observe: 'response'\n      });\n    }\n    getEmailDomain(r) {\n      const request = r.toApiJson ? r : new GetEmailDomainRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailService/GetEmailDomain\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetEmailDomainResponse.fromProto(resp)));\n    }\n    createEmailDomain(r) {\n      const request = r.toApiJson ? r : new CreateEmailDomainRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailService/CreateEmailDomain\", request.toApiJson(), {\n        ...this.apiOptions(),\n        observe: 'response'\n      });\n    }\n    createEmailDomainWithSendAs(r) {\n      const request = r.toApiJson ? r : new CreateEmailDomainWithSendAsRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailService/CreateEmailDomainWithSendAs\", request.toApiJson(), {\n        ...this.apiOptions(),\n        observe: 'response'\n      });\n    }\n    verifyEmailDomain(r) {\n      const request = r.toApiJson ? r : new VerifyEmailDomainRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailService/VerifyEmailDomain\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetEmailDomainResponse.fromProto(resp)));\n    }\n    deleteEmailDomain(r) {\n      const request = r.toApiJson ? r : new DeleteEmailDomainRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailService/DeleteEmailDomain\", request.toApiJson(), {\n        ...this.apiOptions(),\n        observe: 'response'\n      });\n    }\n    changeEmailDomain(r) {\n      const request = r.toApiJson ? r : new ChangeEmailDomainRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailService/ChangeEmailDomain\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ChangeEmailDomainResponse.fromProto(resp)));\n    }\n    getPendingEmailDomain(r) {\n      const request = r.toApiJson ? r : new GetPendingEmailDomainRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailService/GetPendingEmailDomain\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetPendingEmailDomainResponse.fromProto(resp)));\n    }\n    verifyPendingEmailDomain(r) {\n      const request = r.toApiJson ? r : new VerifyPendingEmailDomainRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailService/VerifyPendingEmailDomain\", request.toApiJson(), this.apiOptions()).pipe(map(resp => VerifyPendingEmailDomainResponse.fromProto(resp)));\n    }\n    deletePendingEmailDomain(r) {\n      const request = r.toApiJson ? r : new DeletePendingEmailDomainRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailService/DeletePendingEmailDomain\", request.toApiJson(), {\n        ...this.apiOptions(),\n        observe: 'response'\n      });\n    }\n  }\n  EmailApiService.ɵfac = function EmailApiService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || EmailApiService)();\n  };\n  EmailApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: EmailApiService,\n    factory: EmailApiService.ɵfac,\n    providedIn: 'root'\n  });\n  return EmailApiService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet AdminApiService = /*#__PURE__*/(() => {\n  class AdminApiService {\n    constructor() {\n      this.hostService = inject(HostService);\n      this.http = inject(HttpClient);\n      this._host = this.hostService.hostWithScheme;\n    }\n    apiOptions() {\n      return {\n        headers: new HttpHeaders({\n          'Content-Type': 'application/json'\n        }),\n        withCredentials: true\n      };\n    }\n    setEmailQueuesStatus(r) {\n      const request = r.toApiJson ? r : new AdminSetEmailQueuesStatusRequest(r);\n      return this.http.post(this._host + \"/email.v1.Admin/SetEmailQueuesStatus\", request.toApiJson(), {\n        ...this.apiOptions(),\n        observe: 'response'\n      });\n    }\n    redirectEmail(r) {\n      const request = r.toApiJson ? r : new RedirectEmailRequest(r);\n      return this.http.post(this._host + \"/email.v1.Admin/RedirectEmail\", request.toApiJson(), this.apiOptions()).pipe(map(resp => RedirectEmailResponse.fromProto(resp)));\n    }\n    resubscribeRecipient(r) {\n      const request = r.toApiJson ? r : new ResubscribeRecipientRequest(r);\n      return this.http.post(this._host + \"/email.v1.Admin/ResubscribeRecipient\", request.toApiJson(), {\n        ...this.apiOptions(),\n        observe: 'response'\n      });\n    }\n    getUnsubscribedRecipient(r) {\n      const request = r.toApiJson ? r : new GetUnsubscribedRecipientRequest(r);\n      return this.http.post(this._host + \"/email.v1.Admin/GetUnsubscribedRecipient\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetUnsubscribedRecipientResponse.fromProto(resp)));\n    }\n    initiateEmailDomainRollback(r) {\n      const request = r.toApiJson ? r : new InitiateEmailDomainRollbackRequest(r);\n      return this.http.post(this._host + \"/email.v1.Admin/InitiateEmailDomainRollback\", request.toApiJson(), {\n        ...this.apiOptions(),\n        observe: 'response'\n      });\n    }\n    initiateEmailDomainRectify(r) {\n      const request = r.toApiJson ? r : new InitiateEmailDomainRectifyRequest(r);\n      return this.http.post(this._host + \"/email.v1.Admin/InitiateEmailDomainRectify\", request.toApiJson(), {\n        ...this.apiOptions(),\n        observe: 'response'\n      });\n    }\n    getBouncedRecipient(r) {\n      const request = r.toApiJson ? r : new GetBouncedRecipientRequest(r);\n      return this.http.post(this._host + \"/email.v1.Admin/GetBouncedRecipient\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetBouncedRecipientResponse.fromProto(resp)));\n    }\n    unbounceRecipient(r) {\n      const request = r.toApiJson ? r : new UnbounceRecipientRequest(r);\n      return this.http.post(this._host + \"/email.v1.Admin/UnbounceRecipient\", request.toApiJson(), {\n        ...this.apiOptions(),\n        observe: 'response'\n      });\n    }\n  }\n  AdminApiService.ɵfac = function AdminApiService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || AdminApiService)();\n  };\n  AdminApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: AdminApiService,\n    factory: AdminApiService.ɵfac,\n    providedIn: 'root'\n  });\n  return AdminApiService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet AdminService = /*#__PURE__*/(() => {\n  class AdminService {\n    constructor(api) {\n      this.api = api;\n    }\n    setEmailQueuesStatus(running) {\n      let statusEnum = EmailQueueStatus.EMAIL_QUEUE_STATUS_RUNNING;\n      if (!running) {\n        statusEnum = EmailQueueStatus.EMAIL_QUEUE_STATUS_DISABLED;\n      }\n      const req = new AdminSetEmailQueuesStatusRequest({\n        status: statusEnum\n      });\n      return this.api.setEmailQueuesStatus(req);\n    }\n    getUnsubscribedRecipientForPartner(partnerID, recipientEmail) {\n      const req = new GetUnsubscribedRecipientRequest({\n        senderId: partnerID,\n        senderType: SenderType.SENDER_TYPE_PARTNER,\n        recipientEmail: recipientEmail\n      });\n      return this.api.getUnsubscribedRecipient(req);\n    }\n    getUnsubscribedRecipientForBusiness(recipientEmail) {\n      const req = new GetUnsubscribedRecipientRequest({\n        senderType: SenderType.SENDER_TYPE_BUSINESS,\n        recipientEmail: recipientEmail\n      });\n      return this.api.getUnsubscribedRecipient(req);\n    }\n    getUnsubscribedRecipientForProduct(recipientEmail) {\n      const req = new GetUnsubscribedRecipientRequest({\n        senderType: SenderType.SENDER_TYPE_PARTNER,\n        recipientEmail: recipientEmail\n      });\n      return this.api.getUnsubscribedRecipient(req);\n    }\n    getBouncedRecipient(sender, recipientEmail) {\n      const req = new GetBouncedRecipientRequest({\n        sender: sender,\n        recipientEmail: recipientEmail\n      });\n      return this.api.getBouncedRecipient(req);\n    }\n    unbounceRecipient(sender, recipientEmail) {\n      const req = new UnbounceRecipientRequest({\n        sender: sender,\n        recipientEmail: recipientEmail\n      });\n      return this.api.unbounceRecipient(req);\n    }\n    resubscribeRecipientForPartner(partnerID, recipientEmail) {\n      const req = new ResubscribeRecipientRequest({\n        senderId: partnerID,\n        senderType: SenderType.SENDER_TYPE_PARTNER,\n        recipientEmail: recipientEmail\n      });\n      return this.api.resubscribeRecipient(req);\n    }\n    resubscribeRecipientForBusiness(recipientEmail) {\n      const req = new ResubscribeRecipientRequest({\n        senderType: SenderType.SENDER_TYPE_BUSINESS,\n        recipientEmail: recipientEmail\n      });\n      return this.api.resubscribeRecipient(req);\n    }\n    resubscribeRecipientForProduct(recipientEmail) {\n      const req = new ResubscribeRecipientRequest({\n        senderType: SenderType.SENDER_TYPE_PARTNER,\n        recipientEmail: recipientEmail\n      });\n      return this.api.resubscribeRecipient(req);\n    }\n    redirectEmail(emailID, newRecipientEmailAddress, authCheckOnly, includeContent, includeAttributes) {\n      const req = new RedirectEmailRequest({\n        emailId: emailID,\n        newRecipientEmailAddress: newRecipientEmailAddress,\n        authCheckOnly: authCheckOnly,\n        includeContent: includeContent,\n        includeAttributes: includeAttributes\n      });\n      return this.api.redirectEmail(req);\n    }\n  }\n  AdminService.ɵfac = function AdminService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || AdminService)(i0.ɵɵinject(AdminApiService));\n  };\n  AdminService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: AdminService,\n    factory: AdminService.ɵfac,\n    providedIn: 'root'\n  });\n  return AdminService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet EmailService = /*#__PURE__*/(() => {\n  class EmailService {\n    constructor(api, admin) {\n      this.api = api;\n      this.admin = admin;\n    }\n    createEmailDomain(partnerId, applicationId, businessId, domain, userId = '') {\n      const req = CreateEmailDomainRequest.fromProto({\n        partnerId: partnerId,\n        applicationId: applicationId,\n        businessId: businessId,\n        domain: domain,\n        userId: userId\n      });\n      return this.api.createEmailDomain(req);\n    }\n    createEmailDomainWithSendAs(partnerId, applicationId, businessId, domain, sendAsEmail, sendAsName) {\n      const req = CreateEmailDomainWithSendAsRequest.fromProto({\n        partnerId: partnerId,\n        applicationId: applicationId,\n        businessId: businessId,\n        domain: domain,\n        sendAsEmail: sendAsEmail,\n        sendAsName: sendAsName\n      });\n      return this.api.createEmailDomainWithSendAs(req);\n    }\n    getEmailDomain(partnerId, applicationId, businessId) {\n      const req = GetEmailDomainRequest.fromProto({\n        partnerId: partnerId,\n        applicationId: applicationId,\n        businessId: businessId\n      });\n      return this.api.getEmailDomain(req).pipe(map(r => r.domain));\n    }\n    verifyEmailDomain(partnerId, applicationId, businessId) {\n      const req = VerifyEmailDomainRequest.fromProto({\n        partnerId: partnerId,\n        applicationId: applicationId,\n        businessId: businessId\n      });\n      return this.api.verifyEmailDomain(req).pipe(map(r => r.domain));\n    }\n    listEmails(searchTerm, filters, pagingOptions) {\n      return this.api.list({\n        searchTerm: searchTerm,\n        pagingOptions: pagingOptions,\n        filters: filters\n      });\n    }\n    getEmailQueuesStatus() {\n      const req = GetEmailQueuesStatusRequest.fromProto({});\n      return this.api.getEmailQueuesStatus(req).pipe(map(r => r.running));\n    }\n    /**\n     * @deprecated Use AdminService.setEmailQueuesStatus\n     */\n    setEmailQueuesStatus(running) {\n      return this.admin.setEmailQueuesStatus(running);\n    }\n  }\n  EmailService.ɵfac = function EmailService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || EmailService)(i0.ɵɵinject(EmailApiService), i0.ɵɵinject(AdminService));\n  };\n  EmailService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: EmailService,\n    factory: EmailService.ɵfac,\n    providedIn: 'root'\n  });\n  return EmailService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet EmailEventApiService = /*#__PURE__*/(() => {\n  class EmailEventApiService {\n    constructor() {\n      this.hostService = inject(HostService);\n      this.http = inject(HttpClient);\n      this._host = this.hostService.hostWithScheme;\n    }\n    apiOptions() {\n      return {\n        headers: new HttpHeaders({\n          'Content-Type': 'application/json'\n        }),\n        withCredentials: true\n      };\n    }\n    list(r) {\n      const request = r.toApiJson ? r : new ListEmailEventsRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailEventService/List\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListEmailEventsResponse.fromProto(resp)));\n    }\n    getMultiEmailRollups(r) {\n      const request = r.toApiJson ? r : new GetMultiEmailRollupsRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailEventService/GetMultiEmailRollups\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiEmailRollupsResponse.fromProto(resp)));\n    }\n    listForAttributes(r) {\n      const request = r.toApiJson ? r : new ListEventsForAttributesRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailEventService/ListForAttributes\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListEventsForAttributesResponse.fromProto(resp)));\n    }\n    getAttributeEventStats(r) {\n      const request = r.toApiJson ? r : new GetAttributeEventStatsRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailEventService/GetAttributeEventStats\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetAttributeEventStatsResponse.fromProto(resp)));\n    }\n    getAttributeEventLinkStats(r) {\n      const request = r.toApiJson ? r : new GetAttributeEventLinkStatsRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailEventService/GetAttributeEventLinkStats\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetAttributeEventLinkStatsResponse.fromProto(resp)));\n    }\n    listLinkClickActivityForAttribute(r) {\n      const request = r.toApiJson ? r : new ListLinkClickActivityForAttributeRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailEventService/ListLinkClickActivityForAttribute\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListLinkClickActivityForAttributeResponse.fromProto(resp)));\n    }\n    exportAttributeEventClickStats(r) {\n      const request = r.toApiJson ? r : new ExportAttributeEventClickStatsRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailEventService/ExportAttributeEventClickStats\", request.toApiJson(), {\n        ...this.apiOptions(),\n        observe: 'response'\n      });\n    }\n  }\n  EmailEventApiService.ɵfac = function EmailEventApiService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || EmailEventApiService)();\n  };\n  EmailEventApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: EmailEventApiService,\n    factory: EmailEventApiService.ɵfac,\n    providedIn: 'root'\n  });\n  return EmailEventApiService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet BlocksApiService = /*#__PURE__*/(() => {\n  class BlocksApiService {\n    constructor() {\n      this.hostService = inject(HostService);\n      this.http = inject(HttpClient);\n      this._host = this.hostService.hostWithScheme;\n    }\n    apiOptions() {\n      return {\n        headers: new HttpHeaders({\n          'Content-Type': 'application/json'\n        }),\n        withCredentials: true\n      };\n    }\n    createBlock(r) {\n      const request = r.toApiJson ? r : new CreateBlockRequest(r);\n      return this.http.post(this._host + \"/email.v1.Blocks/CreateBlock\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateBlockResponse.fromProto(resp)));\n    }\n    getBlock(r) {\n      const request = r.toApiJson ? r : new GetBlockRequest(r);\n      return this.http.post(this._host + \"/email.v1.Blocks/GetBlock\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetBlockResponse.fromProto(resp)));\n    }\n    deleteBlock(r) {\n      const request = r.toApiJson ? r : new DeleteBlockRequest(r);\n      return this.http.post(this._host + \"/email.v1.Blocks/DeleteBlock\", request.toApiJson(), {\n        ...this.apiOptions(),\n        observe: 'response'\n      });\n    }\n  }\n  BlocksApiService.ɵfac = function BlocksApiService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || BlocksApiService)();\n  };\n  BlocksApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: BlocksApiService,\n    factory: BlocksApiService.ɵfac,\n    providedIn: 'root'\n  });\n  return BlocksApiService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet DisposableEmailApiService = /*#__PURE__*/(() => {\n  class DisposableEmailApiService {\n    constructor() {\n      this.hostService = inject(HostService);\n      this.http = inject(HttpClient);\n      this._host = this.hostService.hostWithScheme;\n    }\n    apiOptions() {\n      return {\n        headers: new HttpHeaders({\n          'Content-Type': 'application/json'\n        }),\n        withCredentials: true\n      };\n    }\n    checkDisposableEmail(r) {\n      const request = r.toApiJson ? r : new CheckDisposableEmailRequest(r);\n      return this.http.post(this._host + \"/email.v1.DisposableEmail/CheckDisposableEmail\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CheckDisposableEmailResponse.fromProto(resp)));\n    }\n  }\n  DisposableEmailApiService.ɵfac = function DisposableEmailApiService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || DisposableEmailApiService)();\n  };\n  DisposableEmailApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: DisposableEmailApiService,\n    factory: DisposableEmailApiService.ɵfac,\n    providedIn: 'root'\n  });\n  return DisposableEmailApiService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet DomainApiService = /*#__PURE__*/(() => {\n  class DomainApiService {\n    constructor() {\n      this.hostService = inject(HostService);\n      this.http = inject(HttpClient);\n      this._host = this.hostService.hostWithScheme;\n    }\n    apiOptions() {\n      return {\n        headers: new HttpHeaders({\n          'Content-Type': 'application/json'\n        }),\n        withCredentials: true\n      };\n    }\n    createPendingDomain(r) {\n      const request = r.toApiJson ? r : new CreatePendingDomainRequest(r);\n      return this.http.post(this._host + \"/email.v1.Domain/CreatePendingDomain\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetPendingEmailDomainResponse.fromProto(resp)));\n    }\n    listAllDomains(r) {\n      const request = r.toApiJson ? r : new ListAllDomainsRequest(r);\n      return this.http.post(this._host + \"/email.v1.Domain/ListAllDomains\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListAllDomainsResponse.fromProto(resp)));\n    }\n    getDefaultDomain(r) {\n      const request = r.toApiJson ? r : new GetDefaultDomainRequest(r);\n      return this.http.post(this._host + \"/email.v1.Domain/GetDefaultDomain\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetDefaultDomainResponse.fromProto(resp)));\n    }\n    verifyDefaultDomain(r) {\n      const request = r.toApiJson ? r : new VerifyDefaultDomainRequest(r);\n      return this.http.post(this._host + \"/email.v1.Domain/VerifyDefaultDomain\", request.toApiJson(), this.apiOptions()).pipe(map(resp => VerifyDefaultDomainResponse.fromProto(resp)));\n    }\n    verifyEmailDomainDmarc(r) {\n      const request = r.toApiJson ? r : new VerifyEmailDomainDMARCRequest(r);\n      return this.http.post(this._host + \"/email.v1.Domain/VerifyEmailDomainDMARC\", request.toApiJson(), this.apiOptions()).pipe(map(resp => VerifyEmailDomainDMARCResponse.fromProto(resp)));\n    }\n  }\n  DomainApiService.ɵfac = function DomainApiService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || DomainApiService)();\n  };\n  DomainApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: DomainApiService,\n    factory: DomainApiService.ɵfac,\n    providedIn: 'root'\n  });\n  return DomainApiService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet EmailClientApiService = /*#__PURE__*/(() => {\n  class EmailClientApiService {\n    constructor() {\n      this.hostService = inject(HostService);\n      this.http = inject(HttpClient);\n      this._host = this.hostService.hostWithScheme;\n    }\n    apiOptions() {\n      return {\n        headers: new HttpHeaders({\n          'Content-Type': 'application/json'\n        }),\n        withCredentials: true\n      };\n    }\n    resubscribeRecipientFromUnsubscribeLink(r) {\n      const request = r.toApiJson ? r : new ResubscribeRecipientFromUnsubscribeLinkRequest(r);\n      return this.http.post(this._host + \"/email.v1.EmailClient/ResubscribeRecipientFromUnsubscribeLink\", request.toApiJson(), {\n        ...this.apiOptions(),\n        observe: 'response'\n      });\n    }\n  }\n  EmailClientApiService.ɵfac = function EmailClientApiService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || EmailClientApiService)();\n  };\n  EmailClientApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: EmailClientApiService,\n    factory: EmailClientApiService.ɵfac,\n    providedIn: 'root'\n  });\n  return EmailClientApiService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet InboundMessageMappingApiService = /*#__PURE__*/(() => {\n  class InboundMessageMappingApiService {\n    constructor() {\n      this.hostService = inject(HostService);\n      this.http = inject(HttpClient);\n      this._host = this.hostService.hostWithScheme;\n    }\n    apiOptions() {\n      return {\n        headers: new HttpHeaders({\n          'Content-Type': 'application/json'\n        }),\n        withCredentials: true\n      };\n    }\n    createInboundMessageMapping(r) {\n      const request = r.toApiJson ? r : new CreateInboundMessageMappingRequest(r);\n      return this.http.post(this._host + \"/email.v1.InboundMessageMappingService/CreateInboundMessageMapping\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateInboundMessageMappingResponse.fromProto(resp)));\n    }\n    getInboundMessageMapping(r) {\n      const request = r.toApiJson ? r : new GetInboundMessageMappingRequest(r);\n      return this.http.post(this._host + \"/email.v1.InboundMessageMappingService/GetInboundMessageMapping\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetInboundMessageMappingResponse.fromProto(resp)));\n    }\n    getReplyEmail(r) {\n      const request = r.toApiJson ? r : new GetReplyEmailRequest(r);\n      return this.http.post(this._host + \"/email.v1.InboundMessageMappingService/GetReplyEmail\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetReplyEmailResponse.fromProto(resp)));\n    }\n  }\n  InboundMessageMappingApiService.ɵfac = function InboundMessageMappingApiService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || InboundMessageMappingApiService)();\n  };\n  InboundMessageMappingApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: InboundMessageMappingApiService,\n    factory: InboundMessageMappingApiService.ɵfac,\n    providedIn: 'root'\n  });\n  return InboundMessageMappingApiService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet InboundMessageApiService = /*#__PURE__*/(() => {\n  class InboundMessageApiService {\n    constructor() {\n      this.hostService = inject(HostService);\n      this.http = inject(HttpClient);\n      this._host = this.hostService.hostWithScheme;\n    }\n    apiOptions() {\n      return {\n        headers: new HttpHeaders({\n          'Content-Type': 'application/json'\n        }),\n        withCredentials: true\n      };\n    }\n    getInboundMessage(r) {\n      const request = r.toApiJson ? r : new GetInboundMessageRequest(r);\n      return this.http.post(this._host + \"/email.v1.InboundMessageService/GetInboundMessage\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetInboundMessageResponse.fromProto(resp)));\n    }\n  }\n  InboundMessageApiService.ɵfac = function InboundMessageApiService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || InboundMessageApiService)();\n  };\n  InboundMessageApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: InboundMessageApiService,\n    factory: InboundMessageApiService.ɵfac,\n    providedIn: 'root'\n  });\n  return InboundMessageApiService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet MessageApiService = /*#__PURE__*/(() => {\n  class MessageApiService {\n    constructor() {\n      this.hostService = inject(HostService);\n      this.http = inject(HttpClient);\n      this._host = this.hostService.hostWithScheme;\n    }\n    apiOptions() {\n      return {\n        headers: new HttpHeaders({\n          'Content-Type': 'application/json'\n        }),\n        withCredentials: true\n      };\n    }\n    getMessage(r) {\n      const request = r.toApiJson ? r : new GetMessageRequest(r);\n      return this.http.post(this._host + \"/email.v1.Message/GetMessage\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMessageResponse.fromProto(resp)));\n    }\n    getMultiMessage(r) {\n      const request = r.toApiJson ? r : new GetMultiMessageRequest(r);\n      return this.http.post(this._host + \"/email.v1.Message/GetMultiMessage\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiMessageResponse.fromProto(resp)));\n    }\n  }\n  MessageApiService.ɵfac = function MessageApiService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || MessageApiService)();\n  };\n  MessageApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: MessageApiService,\n    factory: MessageApiService.ɵfac,\n    providedIn: 'root'\n  });\n  return MessageApiService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet PartnerEmailQuotaApiService = /*#__PURE__*/(() => {\n  class PartnerEmailQuotaApiService {\n    constructor() {\n      this.hostService = inject(HostService);\n      this.http = inject(HttpClient);\n      this._host = this.hostService.hostWithScheme;\n    }\n    apiOptions() {\n      return {\n        headers: new HttpHeaders({\n          'Content-Type': 'application/json'\n        }),\n        withCredentials: true\n      };\n    }\n    upsert(r) {\n      const request = r.toApiJson ? r : new UpsertPartnerEmailQuotaRequest(r);\n      return this.http.post(this._host + \"/email.v1.PartnerEmailQuotaService/Upsert\", request.toApiJson(), {\n        ...this.apiOptions(),\n        observe: 'response'\n      });\n    }\n    bulkUpsert(r) {\n      const request = r.toApiJson ? r : new BulkUpsertPartnerEmailQuotaRequest(r);\n      return this.http.post(this._host + \"/email.v1.PartnerEmailQuotaService/BulkUpsert\", request.toApiJson(), {\n        ...this.apiOptions(),\n        observe: 'response'\n      });\n    }\n    delete(r) {\n      const request = r.toApiJson ? r : new DeletePartnerEmailQuotaRequest(r);\n      return this.http.post(this._host + \"/email.v1.PartnerEmailQuotaService/Delete\", request.toApiJson(), {\n        ...this.apiOptions(),\n        observe: 'response'\n      });\n    }\n    getMulti(r) {\n      const request = r.toApiJson ? r : new GetMultiPartnerEmailQuotaRequest(r);\n      return this.http.post(this._host + \"/email.v1.PartnerEmailQuotaService/GetMulti\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiPartnerEmailQuotaResponse.fromProto(resp)));\n    }\n  }\n  PartnerEmailQuotaApiService.ɵfac = function PartnerEmailQuotaApiService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || PartnerEmailQuotaApiService)();\n  };\n  PartnerEmailQuotaApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: PartnerEmailQuotaApiService,\n    factory: PartnerEmailQuotaApiService.ɵfac,\n    providedIn: 'root'\n  });\n  return PartnerEmailQuotaApiService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet PreferencesApiService = /*#__PURE__*/(() => {\n  class PreferencesApiService {\n    constructor() {\n      this.hostService = inject(HostService);\n      this.http = inject(HttpClient);\n      this._host = this.hostService.hostWithScheme;\n    }\n    apiOptions() {\n      return {\n        headers: new HttpHeaders({\n          'Content-Type': 'application/json'\n        }),\n        withCredentials: true\n      };\n    }\n    getCategories(r) {\n      const request = r.toApiJson ? r : new GetCategoriesRequest(r);\n      return this.http.post(this._host + \"/email.v1.Preferences/GetCategories\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetCategoriesResponse.fromProto(resp)));\n    }\n    getCategoryPreferences(r) {\n      const request = r.toApiJson ? r : new GetCategoryPreferencesRequest(r);\n      return this.http.post(this._host + \"/email.v1.Preferences/GetCategoryPreferences\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetCategoryPreferencesResponse.fromProto(resp)));\n    }\n    saveCategoryPreferences(r) {\n      const request = r.toApiJson ? r : new SaveCategoryPreferencesRequest(r);\n      return this.http.post(this._host + \"/email.v1.Preferences/SaveCategoryPreferences\", request.toApiJson(), {\n        ...this.apiOptions(),\n        observe: 'response'\n      });\n    }\n    getUnsubscribeLink(r) {\n      const request = r.toApiJson ? r : new GetUnsubscribeLinkRequest(r);\n      return this.http.post(this._host + \"/email.v1.Preferences/GetUnsubscribeLink\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetUnsubscribeLinkResponse.fromProto(resp)));\n    }\n  }\n  PreferencesApiService.ɵfac = function PreferencesApiService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || PreferencesApiService)();\n  };\n  PreferencesApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: PreferencesApiService,\n    factory: PreferencesApiService.ɵfac,\n    providedIn: 'root'\n  });\n  return PreferencesApiService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet RecipientStatusApiService = /*#__PURE__*/(() => {\n  class RecipientStatusApiService {\n    constructor() {\n      this.hostService = inject(HostService);\n      this.http = inject(HttpClient);\n      this._host = this.hostService.hostWithScheme;\n    }\n    apiOptions() {\n      return {\n        headers: new HttpHeaders({\n          'Content-Type': 'application/json'\n        }),\n        withCredentials: true\n      };\n    }\n    resetRecipientStatus(r) {\n      const request = r.toApiJson ? r : new ResetRecipientStatusRequest(r);\n      return this.http.post(this._host + \"/email.v1.RecipientStatus/ResetRecipientStatus\", request.toApiJson(), {\n        ...this.apiOptions(),\n        observe: 'response'\n      });\n    }\n    batchSearchRecipientStatus(r) {\n      const request = r.toApiJson ? r : new BatchSearchRecipientStatusRequest(r);\n      return this.http.post(this._host + \"/email.v1.RecipientStatus/BatchSearchRecipientStatus\", request.toApiJson(), this.apiOptions()).pipe(map(resp => BatchSearchRecipientStatusResponse.fromProto(resp)));\n    }\n  }\n  RecipientStatusApiService.ɵfac = function RecipientStatusApiService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || RecipientStatusApiService)();\n  };\n  RecipientStatusApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: RecipientStatusApiService,\n    factory: RecipientStatusApiService.ɵfac,\n    providedIn: 'root'\n  });\n  return RecipientStatusApiService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet SendApiService = /*#__PURE__*/(() => {\n  class SendApiService {\n    constructor() {\n      this.hostService = inject(HostService);\n      this.http = inject(HttpClient);\n      this._host = this.hostService.hostWithScheme;\n    }\n    apiOptions() {\n      return {\n        headers: new HttpHeaders({\n          'Content-Type': 'application/json'\n        }),\n        withCredentials: true\n      };\n    }\n    sendWhitelabelEmailToUser(r) {\n      const request = r.toApiJson ? r : new SendWhitelabelEmailToUserRequest(r);\n      return this.http.post(this._host + \"/email.v1.Send/SendWhitelabelEmailToUser\", request.toApiJson(), this.apiOptions()).pipe(map(resp => SendWhitelabelEmailToUserResponse.fromProto(resp)));\n    }\n    sendFromAuthorizedDomain(r) {\n      const request = r.toApiJson ? r : new SendFromAuthorizedDomainRequest(r);\n      return this.http.post(this._host + \"/email.v1.Send/SendFromAuthorizedDomain\", request.toApiJson(), this.apiOptions()).pipe(map(resp => SendFromAuthorizedDomainResponse.fromProto(resp)));\n    }\n  }\n  SendApiService.ɵfac = function SendApiService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || SendApiService)();\n  };\n  SendApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: SendApiService,\n    factory: SendApiService.ɵfac,\n    providedIn: 'root'\n  });\n  return SendApiService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet SendGridApiService = /*#__PURE__*/(() => {\n  class SendGridApiService {\n    constructor() {\n      this.hostService = inject(HostService);\n      this.http = inject(HttpClient);\n      this._host = this.hostService.hostWithScheme;\n    }\n    apiOptions() {\n      return {\n        headers: new HttpHeaders({\n          'Content-Type': 'application/json'\n        }),\n        withCredentials: true\n      };\n    }\n    listSendGridTeammates(r) {\n      const request = r.toApiJson ? r : new ListSendGridTeammatesRequest(r);\n      return this.http.post(this._host + \"/email.v1.SendGridService/ListSendGridTeammates\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListSendGridTeammatesResponse.fromProto(resp)));\n    }\n    listSendGridSubUserReputations(r) {\n      const request = r.toApiJson ? r : new ListSendGridSubUserReputationsRequest(r);\n      return this.http.post(this._host + \"/email.v1.SendGridService/ListSendGridSubUserReputations\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListSendGridSubUserReputationsResponse.fromProto(resp)));\n    }\n  }\n  SendGridApiService.ɵfac = function SendGridApiService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || SendGridApiService)();\n  };\n  SendGridApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: SendGridApiService,\n    factory: SendGridApiService.ɵfac,\n    providedIn: 'root'\n  });\n  return SendGridApiService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet SendersApiService = /*#__PURE__*/(() => {\n  class SendersApiService {\n    constructor() {\n      this.hostService = inject(HostService);\n      this.http = inject(HttpClient);\n      this._host = this.hostService.hostWithScheme;\n    }\n    apiOptions() {\n      return {\n        headers: new HttpHeaders({\n          'Content-Type': 'application/json'\n        }),\n        withCredentials: true\n      };\n    }\n    getSenderInfo(r) {\n      const request = r.toApiJson ? r : new GetSenderInfoRequest(r);\n      return this.http.post(this._host + \"/email.v1.Senders/GetSenderInfo\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetSenderInfoResponse.fromProto(resp)));\n    }\n    quarantineSender(r) {\n      const request = r.toApiJson ? r : new QuarantineSenderRequest(r);\n      return this.http.post(this._host + \"/email.v1.Senders/QuarantineSender\", request.toApiJson(), {\n        ...this.apiOptions(),\n        observe: 'response'\n      });\n    }\n  }\n  SendersApiService.ɵfac = function SendersApiService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || SendersApiService)();\n  };\n  SendersApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: SendersApiService,\n    factory: SendersApiService.ɵfac,\n    providedIn: 'root'\n  });\n  return SendersApiService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet SubUserApiService = /*#__PURE__*/(() => {\n  class SubUserApiService {\n    constructor() {\n      this.hostService = inject(HostService);\n      this.http = inject(HttpClient);\n      this._host = this.hostService.hostWithScheme;\n    }\n    apiOptions() {\n      return {\n        headers: new HttpHeaders({\n          'Content-Type': 'application/json'\n        }),\n        withCredentials: true\n      };\n    }\n    initializeSubUser(r) {\n      const request = r.toApiJson ? r : new InitializeSubUserRequest(r);\n      return this.http.post(this._host + \"/email.v1.SubUser/InitializeSubUser\", request.toApiJson(), {\n        ...this.apiOptions(),\n        observe: 'response'\n      });\n    }\n    deleteSubUser(r) {\n      const request = r.toApiJson ? r : new DeleteSubUserRequest(r);\n      return this.http.post(this._host + \"/email.v1.SubUser/DeleteSubUser\", request.toApiJson(), {\n        ...this.apiOptions(),\n        observe: 'response'\n      });\n    }\n  }\n  SubUserApiService.ɵfac = function SubUserApiService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || SubUserApiService)();\n  };\n  SubUserApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: SubUserApiService,\n    factory: SubUserApiService.ɵfac,\n    providedIn: 'root'\n  });\n  return SubUserApiService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Index.\n// *********************************\nlet EmailEventService = /*#__PURE__*/(() => {\n  class EmailEventService {\n    constructor(api) {\n      this.api = api;\n    }\n    /*\n      @params:\n        - buckets: a list or names with an key-value pair to build aggregations on. The length of the response\n        will be the same length as buckets. The key-value is for an additional filter term to use only for a specific\n        aggregation.\n        - dateRange: the range of dates to collect aggregations for.\n        - partnerId: the partner to filter all aggregations by\n        - marketId: the market to filter the aggregations by.\n        - notificationTypes: the notification types to filter the aggregations by.\n        - eventTypes: the event types to filter the aggregations by\n      @returns: an observable containing a list of buckets that correspond  have a name, corresponding to the name passed in to\n        each bucket object in the request\n      @throws: an observable of a HttpErrorResponse if the client is unable to fetch the data\n    */\n    getEventRollups(buckets, dateRange, partnerId, marketId, notificationTypes, eventTypes) {\n      if (!buckets || !buckets.length) {\n        throw new HttpErrorResponse({\n          status: 409,\n          statusText: '1 or more buckets must be passed in'\n        });\n      }\n      const req = new GetMultiEmailRollupsRequest({\n        buckets: buckets,\n        filter: new EmailEventFilter({\n          dateRange: dateRange,\n          partnerId: partnerId,\n          marketId: marketId,\n          notificationTypes: notificationTypes,\n          eventTypes: eventTypes\n        })\n      });\n      return this.api.getMultiEmailRollups(req).pipe(map(resp => (resp || {\n        emailRollups: null\n      }).emailRollups));\n    }\n    listEvents(emailId, pagingOptions, partnerId, businessId) {\n      const filters = new ListEmailEventsRequestListEmailEventsFilters({\n        emailId: emailId,\n        partnerId: partnerId,\n        businessId: businessId\n      });\n      return this.api.list({\n        filters,\n        pagingOptions\n      });\n    }\n    getAttributeEventStats(sender, attribute) {\n      return this.api.getAttributeEventStats({\n        sender: sender,\n        attribute: attribute\n      });\n    }\n    getAttributeEventLinkStats(sender, attribute) {\n      return this.api.getAttributeEventLinkStats({\n        sender: sender,\n        attribute: attribute\n      });\n    }\n    listEventsForAttribute(sender, attribute, eventTypes, cursor, pageSize) {\n      return this.api.listForAttributes({\n        sender: sender,\n        attribute: attribute,\n        eventTypes: eventTypes,\n        cursor: cursor,\n        pageSize: pageSize\n      });\n    }\n    listLinkClickActivityForAttribute(sender, attribute, normalizedURL, cursor, pageSize) {\n      return this.api.listLinkClickActivityForAttribute({\n        sender: sender,\n        attribute: attribute,\n        normalizedUrl: normalizedURL,\n        pagingOptions: {\n          cursor: cursor,\n          pageSize: pageSize\n        }\n      });\n    }\n    exportAttributeEventClickStats(sender, attribute, normalizedUrl, userId) {\n      return this.api.exportAttributeEventClickStats({\n        sender: sender,\n        attribute: attribute,\n        normalizedUrl: normalizedUrl,\n        userId: userId\n      });\n    }\n  }\n  EmailEventService.ɵfac = function EmailEventService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || EmailEventService)(i0.ɵɵinject(EmailEventApiService));\n  };\n  EmailEventService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: EmailEventService,\n    factory: EmailEventService.ɵfac,\n    providedIn: 'root'\n  });\n  return EmailEventService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet SendgridSubUsersService = /*#__PURE__*/(() => {\n  class SendgridSubUsersService {\n    constructor(api) {\n      this.api = api;\n    }\n    listSubUserReputations(pageSize = 10, cursor) {\n      const req = {\n        pageSize: pageSize,\n        cursor: cursor\n      };\n      return this.api.listSendGridSubUserReputations(req);\n    }\n  }\n  SendgridSubUsersService.ɵfac = function SendgridSubUsersService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || SendgridSubUsersService)(i0.ɵɵinject(SendGridApiService));\n  };\n  SendgridSubUsersService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: SendgridSubUsersService,\n    factory: SendgridSubUsersService.ɵfac,\n    providedIn: 'root'\n  });\n  return SendgridSubUsersService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet SendgridTeammatesService = /*#__PURE__*/(() => {\n  class SendgridTeammatesService {\n    constructor(api) {\n      this.api = api;\n    }\n    list() {\n      const req = {};\n      return this.api.listSendGridTeammates(req);\n    }\n  }\n  SendgridTeammatesService.ɵfac = function SendgridTeammatesService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || SendgridTeammatesService)(i0.ɵɵinject(SendGridApiService));\n  };\n  SendgridTeammatesService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: SendgridTeammatesService,\n    factory: SendgridTeammatesService.ɵfac,\n    providedIn: 'root'\n  });\n  return SendgridTeammatesService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet DomainService = /*#__PURE__*/(() => {\n  class DomainService {\n    constructor(api, domain) {\n      this.api = api;\n      this.domain = domain;\n    }\n    delete(partnerId, appId, businessId) {\n      const req = {\n        partnerId: partnerId,\n        applicationId: appId,\n        businessId: businessId\n      };\n      const observable = this.api.deleteEmailDomain(req).pipe(mapTo(null), shareReplay(1));\n      observable.subscribe();\n      return observable;\n    }\n    /**\n     * Requests the partner's domain and send-from address to be changed to the\n     * provided values.\n     * @param partnerID The Partner ID\n     * @param newDomain The domain for sending emails (e.g. The \"example.com\" in mail@example.com)\n     * @param newEmailUsername The username for sending emails (e.g. The \"mail\" in mail@example.com)\n     * @param appId [optional/soon-to-be-deprecated] The application ID to change\n     * @param replyTo [optional] A reply-to email that can be included on emails\n     * the domain for. Generally leave blank unless you know what you're doing.\n     */\n    changeForPartner(partnerID, newDomain, newEmailUsername, appId, replyTo, newSendFromName) {\n      return this.changeForSender(SenderType.SENDER_TYPE_PARTNER, partnerID, newDomain, newEmailUsername, replyTo, newSendFromName);\n    }\n    /**\n     * Requests the sender's domain and send-from address to be changed to the\n     * provided values.\n     * @param senderType The Sender type (e.g. partner or business)\n     * @param senderID The Sender ID (e.g. partner ID or account group ID)\n     * @param newDomain The domain for sending emails (e.g. The \"example.com\" in mail@example.com)\n     * @param newEmailUsername The username for sending emails (e.g. The \"mail\" in mail@example.com)\n     * @param replyTo [optional] A reply-to email that can be included on emails\n     * the domain for. Generally leave blank unless you know what you're doing.\n     */\n    changeForSender(senderType, senderID, newDomain, newEmailUsername, replyTo, newSendFromName) {\n      const req = new ChangeEmailDomainRequest({\n        senderType: senderType,\n        senderId: senderID,\n        sendFromDomain: newDomain,\n        sendFromUsername: newEmailUsername,\n        replyToEmail: replyTo,\n        sendFromName: newSendFromName\n      });\n      return this.api.changeEmailDomain(req).pipe(map(v => v.status));\n    }\n    createPendingDomain(senderType, senderId, domain) {\n      return this.domain.createPendingDomain({\n        sender: new Sender({\n          type: senderType,\n          id: senderId\n        }),\n        domain: domain\n      });\n    }\n    deletePendingDomain(senderType, senderId, domain) {\n      return this.api.deletePendingEmailDomain({\n        senderType: senderType,\n        senderId: senderId,\n        domain: domain\n      }).pipe(map(() => null));\n    }\n    /**\n     * Requests the pending domain for an email sender\n     * @param senderType The sender type, (ex. partner, business)\n     * @param senderID the sender ID, (ex. partnerID, businessID)\n     */\n    getPendingEmailDomain(senderType, senderID) {\n      const req = new GetPendingEmailDomainRequest({\n        senderType: senderType,\n        senderId: senderID\n      });\n      return this.api.getPendingEmailDomain(req);\n    }\n    verifyPendingDomain(senderType, senderID) {\n      const req = new VerifyPendingEmailDomainRequest({\n        senderType: senderType,\n        senderId: senderID\n      });\n      return this.api.verifyPendingEmailDomain(req).pipe(map(v => {\n        v.allRecordsMatch = Boolean(v.allRecordsMatch);\n        v.mismatches = v.mismatches || [];\n        return v;\n      }));\n    }\n    verifyDefaultDomain(senderType, senderId) {\n      const req = new VerifyDefaultDomainRequest({\n        sender: {\n          type: senderType,\n          id: senderId\n        }\n      });\n      return this.domain.verifyDefaultDomain(req).pipe(map(v => ({\n        allRecordsMatch: Boolean(v.allRecordsMatch),\n        mismatches: v.mismatches || []\n      })));\n    }\n    listAllDomains(senderType, senderID) {\n      const req = new ListAllDomainsRequest({\n        sender: {\n          type: senderType,\n          id: senderID\n        }\n      });\n      return this.domain.listAllDomains(req).pipe(map(v => {\n        v.domains = v.domains || [];\n        return v;\n      }));\n    }\n    getDefaultDomain(senderType) {\n      const req = new GetDefaultDomainRequest({\n        senderType: senderType\n      });\n      return this.domain.getDefaultDomain(req);\n    }\n    verifyDMARC(sender) {\n      const req = new VerifyEmailDomainDMARCRequest({\n        sender: sender\n      });\n      return this.domain.verifyEmailDomainDmarc(req);\n    }\n  }\n  DomainService.ɵfac = function DomainService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || DomainService)(i0.ɵɵinject(EmailApiService), i0.ɵɵinject(DomainApiService));\n  };\n  DomainService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: DomainService,\n    factory: DomainService.ɵfac,\n    providedIn: 'root'\n  });\n  return DomainService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MessageService = /*#__PURE__*/(() => {\n  class MessageService {\n    constructor(delegate) {\n      this.delegate = delegate;\n    }\n    getMessage(emailID) {\n      const req = {\n        emailId: emailID\n      };\n      return this.delegate.getMessage(req).pipe(map(v => v.message));\n    }\n  }\n  MessageService.ɵfac = function MessageService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || MessageService)(i0.ɵɵinject(MessageApiService));\n  };\n  MessageService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: MessageService,\n    factory: MessageService.ɵfac,\n    providedIn: 'root'\n  });\n  return MessageService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet PreferencesService = /*#__PURE__*/(() => {\n  class PreferencesService {\n    constructor(delegate) {\n      this.delegate = delegate;\n    }\n    getCategories(senderType, senderID) {\n      const req = new GetCategoriesRequest({\n        senderType: senderType,\n        senderId: senderID\n      });\n      return this.delegate.getCategories(req);\n    }\n    saveCategoryPreferencesForUser(senderType, senderID, recipientUserID, optedInEmailCategoryIDs) {\n      const req = new SaveCategoryPreferencesRequest({\n        senderType: senderType,\n        senderId: senderID,\n        userId: recipientUserID,\n        optedInEmailCategoryIds: optedInEmailCategoryIDs\n      });\n      return this.delegate.saveCategoryPreferences(req);\n    }\n    getCategoryPreferences(senderType, senderID, recipientID) {\n      const req = new GetCategoryPreferencesRequest({\n        senderType: senderType,\n        senderId: senderID,\n        recipientId: recipientID\n      });\n      return this.delegate.getCategoryPreferences(req);\n    }\n    getUnsubscribeLink(linkID) {\n      return this.delegate.getUnsubscribeLink({\n        id: linkID\n      });\n    }\n  }\n  PreferencesService.ɵfac = function PreferencesService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || PreferencesService)(i0.ɵɵinject(PreferencesApiService));\n  };\n  PreferencesService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: PreferencesService,\n    factory: PreferencesService.ɵfac,\n    providedIn: 'root'\n  });\n  return PreferencesService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet EmailClientService = /*#__PURE__*/(() => {\n  class EmailClientService {\n    constructor(api) {\n      this.api = api;\n    }\n    resubscribeRecipientFromUnsubscribeLink(unsubscribeLinkId) {\n      const req = new ResubscribeRecipientFromUnsubscribeLinkRequest({\n        unsubscribeLinkId: unsubscribeLinkId\n      });\n      return this.api.resubscribeRecipientFromUnsubscribeLink(req);\n    }\n  }\n  EmailClientService.ɵfac = function EmailClientService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || EmailClientService)(i0.ɵɵinject(EmailClientApiService));\n  };\n  EmailClientService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: EmailClientService,\n    factory: EmailClientService.ɵfac,\n    providedIn: 'root'\n  });\n  return EmailClientService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet RecipientStatusService = /*#__PURE__*/(() => {\n  class RecipientStatusService {\n    constructor(delegate) {\n      this.delegate = delegate;\n    }\n    // MAX email list size is 500\n    searchRecipientStatus(senderType, senderID, recipientEmails) {\n      return this.delegate.batchSearchRecipientStatus({\n        sender: {\n          type: senderType,\n          id: senderID\n        },\n        recipientEmails: recipientEmails\n      });\n    }\n  }\n  RecipientStatusService.ɵfac = function RecipientStatusService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || RecipientStatusService)(i0.ɵɵinject(RecipientStatusApiService));\n  };\n  RecipientStatusService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: RecipientStatusService,\n    factory: RecipientStatusService.ɵfac,\n    providedIn: 'root'\n  });\n  return RecipientStatusService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet EmailModule = /*#__PURE__*/(() => {\n  class EmailModule {}\n  EmailModule.ɵfac = function EmailModule_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || EmailModule)();\n  };\n  EmailModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n    type: EmailModule\n  });\n  EmailModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n    providers: [EmailService, EmailEventService, SendgridSubUsersService, SendgridTeammatesService, DomainService, AdminService, MessageService, PreferencesService, RecipientStatusService, EmailClientService]\n  });\n  return EmailModule;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet SendersService = /*#__PURE__*/(() => {\n  class SendersService {\n    constructor(senders) {\n      this.senders = senders;\n    }\n    getEmailSendingInfo(senderType, senderId) {\n      const req = {\n        sender: {\n          type: senderType,\n          id: senderId\n        }\n      };\n      return this.senders.getSenderInfo(req);\n    }\n  }\n  SendersService.ɵfac = function SendersService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || SendersService)(i0.ɵɵinject(SendersApiService));\n  };\n  SendersService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: SendersService,\n    factory: SendersService.ɵfac,\n    providedIn: 'root'\n  });\n  return SendersService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst MARKETING_SERVICE_PROVIDER_ID = 'ESP_MARKETING';\nlet MessageSendingService = /*#__PURE__*/(() => {\n  class MessageSendingService {\n    constructor(emailClientApi) {\n      this.emailClientApi = emailClientApi;\n    }\n    sendMarketingEmailFromPartner(fromName, fromEmailAddress, recipientUserID, subjectLine, emailContentHtml, partnerID, replyToName, replyToEmailAddress, options) {\n      const req = this.buildSendRequest(fromName, fromEmailAddress, recipientUserID, subjectLine, emailContentHtml, MARKETING_SERVICE_PROVIDER_ID, partnerID, replyToName, replyToEmailAddress, \"\", \"\", options);\n      return this.emailClientApi.sendV2(req);\n    }\n    sendMarketingEmailFromBusiness(fromName, fromEmailAddress, recipientUserID, subjectLine, emailContentHtml, partnerID, businessID, replyToName, replyToEmailAddress, options) {\n      const req = this.buildSendRequest(fromName, fromEmailAddress, recipientUserID, subjectLine, emailContentHtml, MARKETING_SERVICE_PROVIDER_ID, partnerID, replyToName, replyToEmailAddress, \"\", businessID, options);\n      return this.emailClientApi.sendV2(req);\n    }\n    buildSendRequest(fromName, fromEmailAddress, recipientUserID, subjectLine, emailContentHtml, espID, partnerID, replyToName, replyToEmailAddress, applicationID, businessID, options) {\n      const message = new EmailMessageV2({\n        to: {\n          userId: recipientUserID\n        },\n        from: {\n          name: fromName,\n          emailAddress: fromEmailAddress\n        },\n        subject: subjectLine,\n        content: [{\n          type: ContentContentType.TEXT_HTML,\n          value: emailContentHtml\n        }]\n      });\n      if (!!replyToName && !!replyToEmailAddress) {\n        message.replyTo = {\n          name: replyToName,\n          emailAddress: replyToEmailAddress\n        };\n      }\n      if (!!options) {\n        if (!!options.attributes) {\n          message.attributes = options.attributes;\n        }\n        if (!!options.headers) {\n          message.headers = options.headers;\n        }\n        if (!!options.attachments) {\n          message.attachments = options.attachments;\n        }\n        if (!!options.urlAttachments) {\n          message.urlAttachments = options.urlAttachments;\n        }\n      }\n      const req = new SendV2Request({\n        email: message,\n        partnerId: partnerID,\n        espId: espID,\n        applicationId: applicationID ? applicationID : '',\n        businessId: businessID ? businessID : ''\n      });\n      if (!!applicationID) {\n        req.applicationId = applicationID;\n      }\n      if (!!businessID) {\n        req.businessId = businessID;\n      }\n      if (!!options?.idempotencyKey) {\n        req.idempotencyKey = options.idempotencyKey;\n      }\n      return req;\n    }\n  }\n  MessageSendingService.ɵfac = function MessageSendingService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || MessageSendingService)(i0.ɵɵinject(EmailApiService));\n  };\n  MessageSendingService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: MessageSendingService,\n    factory: MessageSendingService.ɵfac,\n    providedIn: 'root'\n  });\n  return MessageSendingService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet BlockService = /*#__PURE__*/(() => {\n  class BlockService {\n    constructor(api) {\n      this.api = api;\n    }\n    createBlock(blockType, message, conditions) {\n      const req = new CreateBlockRequest({\n        blockType: blockType,\n        message: message,\n        conditions: conditions\n      });\n      return this.api.createBlock(req);\n    }\n    getBlock(blockType, id) {\n      const req = new GetBlockRequest({\n        blockType: blockType,\n        id: id\n      });\n      return this.api.getBlock(req);\n    }\n    deleteBlock(blockType, id) {\n      const req = new DeleteBlockRequest({\n        blockType: blockType,\n        id: id\n      });\n      return this.api.deleteBlock(req);\n    }\n  }\n  BlockService.ɵfac = function BlockService_Factory(__ngFactoryType__) {\n    return new (__ngFactoryType__ || BlockService)(i0.ɵɵinject(BlocksApiService));\n  };\n  BlockService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n    token: BlockService,\n    factory: BlockService.ɵfac,\n    providedIn: 'root'\n  });\n  return BlockService;\n})();\n(() => {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Access, AdminService, AdminSetEmailQueuesStatusRequest, AttachmentInfo, Attribute, BatchSearchRecipientStatusRequest, BatchSearchRecipientStatusResponse, BlockService, BounceSender, BounceSenderType, Bucket, BulkUpsertPartnerEmailQuotaRequest, Category, ChangeEmailDomainRequest, ChangeEmailDomainResponse, ChangeEmailDomainStatus, CheckDisposableEmailRequest, CheckDisposableEmailResponse, ContactParticipant, Content, ContentContentType, CreateBlockRequest, CreateBlockResponse, CreateEmailDomainRequest, CreateEmailDomainWithSendAsRequest, CreateInboundMessageMappingRequest, CreateInboundMessageMappingResponse, CreatePendingDomainRequest, CustomSender, DateRange, DeleteBlockRequest, DeleteEmailDomainRequest, DeletePartnerEmailQuotaRequest, DeletePendingEmailDomainRequest, DeleteSubUserRequest, DomainService, EmailClientService, EmailDomain, EmailEvent, EmailEventBucket, EmailEventBucketEventRollup, EmailEventFilter, EmailEventService, EmailMessage, EmailMessageV2, EmailModule, EmailQueueStatus, EmailService, EmailWithCustomDomainMessage, Envelope, EventType, ExportAttributeEventClickStatsRequest, GCSAttachment, GetAttributeEventLinkStatsRequest, GetAttributeEventLinkStatsResponse, GetAttributeEventStatsRequest, GetAttributeEventStatsResponse, GetAttributeEventStatsResponseEventStats, GetBlockRequest, GetBlockResponse, GetBouncedRecipientRequest, GetBouncedRecipientResponse, GetCategoriesRequest, GetCategoriesResponse, GetCategoryPreferencesRequest, GetCategoryPreferencesResponse, GetDefaultDomainRequest, GetDefaultDomainResponse, GetEmailDomainRequest, GetEmailDomainResponse, GetEmailQueuesStatusRequest, GetEmailQueuesStatusResponse, GetInboundMessageMappingRequest, GetInboundMessageMappingResponse, GetInboundMessageRequest, GetInboundMessageResponse, GetMessageRequest, GetMessageResponse, GetMultiEmailRollupsRequest, GetMultiEmailRollupsResponse, GetMultiMessageRequest, GetMultiMessageResponse, GetMultiPartnerEmailQuotaRequest, GetMultiPartnerEmailQuotaResponse, GetPendingEmailDomainRequest, GetPendingEmailDomainResponse, GetPendingEmailDomainTargetCNameRecords, GetReplyEmailRequest, GetReplyEmailResponse, GetSenderInfoRequest, GetSenderInfoResponse, GetUnsubscribeLinkRequest, GetUnsubscribeLinkResponse, GetUnsubscribedRecipientRequest, GetUnsubscribedRecipientResponse, Header, InboundMessage, InboundMessageMapping, InboundMessageMappingOptions, InitializeSubUserRequest, InitiateEmailDomainRectifyRequest, InitiateEmailDomainRollbackRequest, LinkClickStats, LinkClickStatsRecipient, LinkStats, Links, ListAllDomainsRequest, ListAllDomainsResponse, ListEmailEventsRequest, ListEmailEventsRequestListEmailEventsFilters, ListEmailEventsResponse, ListEmailsRequest, ListEmailsRequestListEmailsFilters, ListEmailsResponse, ListEventsForAttributesRequest, ListEventsForAttributesResponse, ListLinkClickActivityForAttributeRequest, ListLinkClickActivityForAttributeRequestPagedRequestOptions, ListLinkClickActivityForAttributeResponse, ListSendGridSubUserReputationsRequest, ListSendGridSubUserReputationsResponse, ListSendGridTeammatesRequest, ListSendGridTeammatesResponse, MessageSendingService, MessageService, Namespace, NotificationType, PagedRequestOptions, PagedResponseMetadata, Participant, PartnerEmailQuota, PartnerEmailQuotaMutation, PreferencesService, QuarantineSenderRequest, RecipientStatusEnum, RecipientStatusService, Record, RedirectEmailRequest, RedirectEmailResponse, ResetRecipientStatusRequest, ResubscribeRecipientFromUnsubscribeLinkRequest, ResubscribeRecipientRequest, SaveCategoryPreferencesRequest, SendFromAuthorizedDomainRequest, SendFromAuthorizedDomainResponse, SendGridSubUserReputation, SendGridTeammate, SendRequest, SendResponse, SendV2Request, SendV2Response, SendWhitelabelEmailToUserRequest, SendWhitelabelEmailToUserResponse, SendWithCustomDomainRequest, SendWithCustomDomainResponse, Sender, SenderDomain, SenderType, SendersService, SendgridSubUsersService, SendgridTeammatesService, ServiceProviderInfo, SetEmailQueuesStatusRequest, Status, URLAttachment, UnbounceRecipientRequest, UpsertPartnerEmailQuotaRequest, UserParticipant, VerifyDefaultDomainMismatch, VerifyDefaultDomainRequest, VerifyDefaultDomainResponse, VerifyEmailDomainDMARCRequest, VerifyEmailDomainDMARCResponse, VerifyEmailDomainRequest, VerifyPendingEmailDomainMismatch, VerifyPendingEmailDomainRequest, VerifyPendingEmailDomainResponse, WhiteLabelEmailMessage };\n"],"mappings":"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","names":["enumStringToValue$5","enumRef","value","enumStringToValue$4","enumStringToValue","DateRange","EmailDomain","Record","EventType","NotificationType","ContentContentType","BounceSenderType","ChangeEmailDomainStatus","EmailQueueStatus","SenderType","EmailEvent","Attribute","Bucket","Content","EmailMessage","EmailMessageV2","EmailWithCustomDomainMessage","GCSAttachment","Header","Links","Participant","ServiceProviderInfo","URLAttachment","UserParticipant","AdminSetEmailQueuesStatusRequest","BounceSender","ChangeEmailDomainRequest","ChangeEmailDomainResponse","CreateEmailDomainRequest","CreateEmailDomainWithSendAsRequest","CreatePendingDomainRequest","DeleteEmailDomainRequest","DeletePendingEmailDomainRequest","EmailEventBucket","EmailEventFilter","EmailEventBucketEventRollup","GetAttributeEventStatsResponseEventStats","ExportAttributeEventClickStatsRequest","GetAttributeEventLinkStatsRequest","GetAttributeEventLinkStatsResponse","GetAttributeEventStatsRequest","GetAttributeEventStatsResponse","GetBouncedRecipientRequest","GetBouncedRecipientResponse","GetDefaultDomainRequest","GetDefaultDomainResponse","GetEmailDomainRequest","GetEmailDomainResponse","GetEmailQueuesStatusRequest","GetEmailQueuesStatusResponse","GetMessageRequest","GetMessageResponse","GetMultiEmailRollupsRequest","GetMultiEmailRollupsResponse","GetMultiMessageRequest","GetMultiMessageResponse","GetPendingEmailDomainRequest","GetPendingEmailDomainResponse","GetPendingEmailDomainTargetCNameRecords","GetSenderInfoRequest","GetSenderInfoResponse","GetUnsubscribedRecipientRequest","GetUnsubscribedRecipientResponse","InitiateEmailDomainRectifyRequest","InitiateEmailDomainRollbackRequest","LinkClickStats","LinkStats","ListAllDomainsRequest","ListAllDomainsResponse","ListEmailEventsRequestListEmailEventsFilters","ListEmailEventsRequest","ListEmailEventsResponse","ListEmailsRequestListEmailsFilters","ListEmailsRequest","ListEmailsResponse","ListEventsForAttributesRequest","ListEventsForAttributesResponse","ListLinkClickActivityForAttributeRequest","ListLinkClickActivityForAttributeResponse","PagedRequestOptions","ListLinkClickActivityForAttributeRequestPagedRequestOptions","PagedResponseMetadata","QuarantineSenderRequest","LinkClickStatsRecipient","RedirectEmailRequest","RedirectEmailResponse","ResubscribeRecipientRequest","SendRequest","SendResponse","SendV2Request","SendV2Response","SendWithCustomDomainRequest","SendWithCustomDomainResponse","Sender","SenderDomain","SetEmailQueuesStatusRequest","UnbounceRecipientRequest","VerifyDefaultDomainMismatch","VerifyDefaultDomainRequest","VerifyDefaultDomainResponse","VerifyEmailDomainDMARCRequest","VerifyEmailDomainDMARCResponse","VerifyEmailDomainRequest","VerifyPendingEmailDomainMismatch","VerifyPendingEmailDomainRequest","VerifyPendingEmailDomainResponse","environment","hostMap","HostService","EmailApiService","AdminApiService","AdminService","EmailService","EmailEventApiService","DomainApiService","MessageApiService","SendersApiService","EmailEventService","DomainService","MessageService","SendersService","init_vendasta_email","__esmMin","init_core","init_operators","init_http","_DateRange","proto","m","kwargs","toReturn","_EmailDomain","_Record","_EmailEvent","_Attribute","_Bucket","_Content","_EmailMessage","_EmailMessageV2","_EmailWithCustomDomainMessage","_GCSAttachment","_Header","_Links","_Participant","_ServiceProviderInfo","_URLAttachment","_UserParticipant","_AdminSetEmailQueuesStatusRequest","_BounceSender","_ChangeEmailDomainRequest","_ChangeEmailDomainResponse","_CreateEmailDomainRequest","_CreateEmailDomainWithSendAsRequest","_CreatePendingDomainRequest","_DeleteEmailDomainRequest","_DeletePendingEmailDomainRequest","_EmailEventBucket","_EmailEventFilter","v","_EmailEventBucketEventRollup","_GetAttributeEventStatsResponseEventStats","_ExportAttributeEventClickStatsRequest","_GetAttributeEventLinkStatsRequest","_GetAttributeEventLinkStatsResponse","_GetAttributeEventStatsRequest","_GetAttributeEventStatsResponse","_GetBouncedRecipientRequest","_GetBouncedRecipientResponse","_GetDefaultDomainRequest","_GetDefaultDomainResponse","_GetEmailDomainRequest","_GetEmailDomainResponse","_GetEmailQueuesStatusRequest","_GetEmailQueuesStatusResponse","_GetMessageRequest","_GetMessageResponse","_GetMultiEmailRollupsRequest","_GetMultiEmailRollupsResponse","_GetMultiMessageRequest","_GetMultiMessageResponse","_GetPendingEmailDomainRequest","_GetPendingEmailDomainResponse","_GetPendingEmailDomainTargetCNameRecords","_GetSenderInfoRequest","_GetSenderInfoResponse","_GetUnsubscribedRecipientRequest","_GetUnsubscribedRecipientResponse","_InitiateEmailDomainRectifyRequest","_InitiateEmailDomainRollbackRequest","_LinkClickStats","_LinkStats","_ListAllDomainsRequest","_ListAllDomainsResponse","_ListEmailEventsRequestListEmailEventsFilters","_ListEmailEventsRequest","_ListEmailEventsResponse","_ListEmailsRequestListEmailsFilters","_ListEmailsRequest","_ListEmailsResponse","_ListEventsForAttributesRequest","_ListEventsForAttributesResponse","_ListLinkClickActivityForAttributeRequest","_ListLinkClickActivityForAttributeResponse","_PagedRequestOptions","_ListLinkClickActivityForAttributeRequestPagedRequestOptions","_PagedResponseMetadata","_QuarantineSenderRequest","_LinkClickStatsRecipient","_RedirectEmailRequest","_RedirectEmailResponse","_ResubscribeRecipientRequest","_SendRequest","_SendResponse","_SendV2Request","_SendV2Response","_SendWithCustomDomainRequest","_SendWithCustomDomainResponse","_Sender","_SenderDomain","_SetEmailQueuesStatusRequest","_UnbounceRecipientRequest","_VerifyDefaultDomainMismatch","_VerifyDefaultDomainRequest","_VerifyDefaultDomainResponse","_VerifyEmailDomainDMARCRequest","_VerifyEmailDomainDMARCResponse","_VerifyEmailDomainRequest","_VerifyPendingEmailDomainMismatch","_VerifyPendingEmailDomainRequest","_VerifyPendingEmailDomainResponse","__ngFactoryType__","ɵɵdefineInjectable","inject","HttpClient","HttpHeaders","r","request","map","resp","__spreadProps","__spreadValues","api","running","statusEnum","req","partnerID","recipientEmail","sender","emailID","newRecipientEmailAddress","authCheckOnly","includeContent","includeAttributes","ɵɵinject","admin","partnerId","applicationId","businessId","domain","userId","sendAsEmail","sendAsName","searchTerm","filters","pagingOptions","buckets","dateRange","marketId","notificationTypes","eventTypes","HttpErrorResponse","emailId","attribute","cursor","pageSize","normalizedURL","normalizedUrl","appId","observable","mapTo","shareReplay","newDomain","newEmailUsername","replyTo","newSendFromName","senderType","senderID","senderId","delegate","senders"],"x_google_ignoreList":[0]}