// @generated by protoc-gen-es v1.10.0 with parameter "target=ts"
// @generated from file notification.proto (package api, syntax proto3)
/* eslint-disable */
// @ts-nocheck

import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
import { Message, proto3, protoInt64 } from "@bufbuild/protobuf";

/**
 * @generated from enum api.NotificationType
 */
export enum NotificationType {
  /**
   * @generated from enum value: NOTIFICATION_TYPE_UNDEFINED = 0;
   */
  UNDEFINED = 0,

  /**
   * @generated from enum value: NOTIFICATION_TYPE_TEXT = 1;
   */
  TEXT = 1,

  /**
   * @generated from enum value: NOTIFICATION_TYPE_ADAPTIVE_CARD = 2;
   */
  ADAPTIVE_CARD = 2,
}
// Retrieve enum metadata with: proto3.getEnumType(NotificationType)
proto3.util.setEnumType(NotificationType, "api.NotificationType", [
  { no: 0, name: "NOTIFICATION_TYPE_UNDEFINED" },
  { no: 1, name: "NOTIFICATION_TYPE_TEXT" },
  { no: 2, name: "NOTIFICATION_TYPE_ADAPTIVE_CARD" },
]);

/**
 * @generated from enum api.NotificationCategory
 */
export enum NotificationCategory {
  /**
   * @generated from enum value: NOTIFICATION_CATEGORY_UNDEFINED = 0;
   */
  UNDEFINED = 0,

  /**
   * @generated from enum value: NOTIFICATION_CATEGORY_DATA_EXTRACTION = 1;
   */
  DATA_EXTRACTION = 1,

  /**
   * @generated from enum value: NOTIFICATION_CATEGORY_SYSTEM = 2;
   */
  SYSTEM = 2,
}
// Retrieve enum metadata with: proto3.getEnumType(NotificationCategory)
proto3.util.setEnumType(NotificationCategory, "api.NotificationCategory", [
  { no: 0, name: "NOTIFICATION_CATEGORY_UNDEFINED" },
  { no: 1, name: "NOTIFICATION_CATEGORY_DATA_EXTRACTION" },
  { no: 2, name: "NOTIFICATION_CATEGORY_SYSTEM" },
]);

/**
 * @generated from message api.Notification
 */
export class Notification extends Message<Notification> {
  /**
   * @generated from field: string Payload = 1;
   */
  Payload = "";

  /**
   * @generated from field: api.NotificationType Type = 2;
   */
  Type = NotificationType.UNDEFINED;

  /**
   * @generated from field: string TemplateName = 3;
   */
  TemplateName = "";

  /**
   * @generated from field: string AckID = 4;
   */
  AckID = "";

  /**
   * @generated from field: api.NotificationCategory Category = 5;
   */
  Category = NotificationCategory.UNDEFINED;

  /**
   * @generated from field: string ID = 6;
   */
  ID = "";

  constructor(data?: PartialMessage<Notification>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.Notification";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Payload", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "Type", kind: "enum", T: proto3.getEnumType(NotificationType) },
    { no: 3, name: "TemplateName", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "AckID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 5, name: "Category", kind: "enum", T: proto3.getEnumType(NotificationCategory) },
    { no: 6, name: "ID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Notification {
    return new Notification().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Notification {
    return new Notification().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Notification {
    return new Notification().fromJsonString(jsonString, options);
  }

  static equals(a: Notification | PlainMessage<Notification> | undefined, b: Notification | PlainMessage<Notification> | undefined): boolean {
    return proto3.util.equals(Notification, a, b);
  }
}

/**
 * @generated from message api.NotificationRequest
 */
export class NotificationRequest extends Message<NotificationRequest> {
  /**
   * @generated from field: string Payload = 1;
   */
  Payload = "";

  /**
   * @generated from field: api.NotificationType Type = 2;
   */
  Type = NotificationType.UNDEFINED;

  /**
   * @generated from field: string TemplateName = 3;
   */
  TemplateName = "";

  /**
   * @generated from field: api.NotificationCategory Category = 4;
   */
  Category = NotificationCategory.UNDEFINED;

  constructor(data?: PartialMessage<NotificationRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.NotificationRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Payload", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "Type", kind: "enum", T: proto3.getEnumType(NotificationType) },
    { no: 3, name: "TemplateName", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "Category", kind: "enum", T: proto3.getEnumType(NotificationCategory) },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): NotificationRequest {
    return new NotificationRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): NotificationRequest {
    return new NotificationRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): NotificationRequest {
    return new NotificationRequest().fromJsonString(jsonString, options);
  }

  static equals(a: NotificationRequest | PlainMessage<NotificationRequest> | undefined, b: NotificationRequest | PlainMessage<NotificationRequest> | undefined): boolean {
    return proto3.util.equals(NotificationRequest, a, b);
  }
}

/**
 * @generated from message api.PublishToUserRequest
 */
export class PublishToUserRequest extends Message<PublishToUserRequest> {
  /**
   * @generated from field: string UserID = 1;
   */
  UserID = "";

  /**
   * @generated from field: int64 ExpirationDate = 2;
   */
  ExpirationDate = protoInt64.zero;

  /**
   * @generated from field: api.NotificationRequest Notification = 3;
   */
  Notification?: NotificationRequest;

  constructor(data?: PartialMessage<PublishToUserRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.PublishToUserRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "UserID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "ExpirationDate", kind: "scalar", T: 3 /* ScalarType.INT64 */ },
    { no: 3, name: "Notification", kind: "message", T: NotificationRequest },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): PublishToUserRequest {
    return new PublishToUserRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): PublishToUserRequest {
    return new PublishToUserRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): PublishToUserRequest {
    return new PublishToUserRequest().fromJsonString(jsonString, options);
  }

  static equals(a: PublishToUserRequest | PlainMessage<PublishToUserRequest> | undefined, b: PublishToUserRequest | PlainMessage<PublishToUserRequest> | undefined): boolean {
    return proto3.util.equals(PublishToUserRequest, a, b);
  }
}

/**
 * @generated from message api.PublishToUserResult
 */
export class PublishToUserResult extends Message<PublishToUserResult> {
  constructor(data?: PartialMessage<PublishToUserResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.PublishToUserResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): PublishToUserResult {
    return new PublishToUserResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): PublishToUserResult {
    return new PublishToUserResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): PublishToUserResult {
    return new PublishToUserResult().fromJsonString(jsonString, options);
  }

  static equals(a: PublishToUserResult | PlainMessage<PublishToUserResult> | undefined, b: PublishToUserResult | PlainMessage<PublishToUserResult> | undefined): boolean {
    return proto3.util.equals(PublishToUserResult, a, b);
  }
}

/**
 * @generated from message api.NotificationListItem
 */
export class NotificationListItem extends Message<NotificationListItem> {
  /**
   * @generated from field: string Payload = 1;
   */
  Payload = "";

  /**
   * @generated from field: api.NotificationType Type = 2;
   */
  Type = NotificationType.UNDEFINED;

  /**
   * @generated from field: string TemplateName = 3;
   */
  TemplateName = "";

  /**
   * @generated from field: api.NotificationCategory Category = 4;
   */
  Category = NotificationCategory.UNDEFINED;

  /**
   * @generated from field: string ID = 5;
   */
  ID = "";

  constructor(data?: PartialMessage<NotificationListItem>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.NotificationListItem";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Payload", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 2, name: "Type", kind: "enum", T: proto3.getEnumType(NotificationType) },
    { no: 3, name: "TemplateName", kind: "scalar", T: 9 /* ScalarType.STRING */ },
    { no: 4, name: "Category", kind: "enum", T: proto3.getEnumType(NotificationCategory) },
    { no: 5, name: "ID", kind: "scalar", T: 9 /* ScalarType.STRING */ },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): NotificationListItem {
    return new NotificationListItem().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): NotificationListItem {
    return new NotificationListItem().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): NotificationListItem {
    return new NotificationListItem().fromJsonString(jsonString, options);
  }

  static equals(a: NotificationListItem | PlainMessage<NotificationListItem> | undefined, b: NotificationListItem | PlainMessage<NotificationListItem> | undefined): boolean {
    return proto3.util.equals(NotificationListItem, a, b);
  }
}

/**
 * @generated from message api.ListNotificationRequest
 */
export class ListNotificationRequest extends Message<ListNotificationRequest> {
  constructor(data?: PartialMessage<ListNotificationRequest>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListNotificationRequest";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListNotificationRequest {
    return new ListNotificationRequest().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListNotificationRequest {
    return new ListNotificationRequest().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListNotificationRequest {
    return new ListNotificationRequest().fromJsonString(jsonString, options);
  }

  static equals(a: ListNotificationRequest | PlainMessage<ListNotificationRequest> | undefined, b: ListNotificationRequest | PlainMessage<ListNotificationRequest> | undefined): boolean {
    return proto3.util.equals(ListNotificationRequest, a, b);
  }
}

/**
 * @generated from message api.ListNotificationResult
 */
export class ListNotificationResult extends Message<ListNotificationResult> {
  /**
   * @generated from field: repeated api.NotificationListItem Notifications = 1;
   */
  Notifications: NotificationListItem[] = [];

  constructor(data?: PartialMessage<ListNotificationResult>) {
    super();
    proto3.util.initPartial(data, this);
  }

  static readonly runtime: typeof proto3 = proto3;
  static readonly typeName = "api.ListNotificationResult";
  static readonly fields: FieldList = proto3.util.newFieldList(() => [
    { no: 1, name: "Notifications", kind: "message", T: NotificationListItem, repeated: true },
  ]);

  static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListNotificationResult {
    return new ListNotificationResult().fromBinary(bytes, options);
  }

  static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListNotificationResult {
    return new ListNotificationResult().fromJson(jsonValue, options);
  }

  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListNotificationResult {
    return new ListNotificationResult().fromJsonString(jsonString, options);
  }

  static equals(a: ListNotificationResult | PlainMessage<ListNotificationResult> | undefined, b: ListNotificationResult | PlainMessage<ListNotificationResult> | undefined): boolean {
    return proto3.util.equals(ListNotificationResult, a, b);
  }
}

