// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
//   protoc-gen-ts_proto  v1.181.1
//   protoc               v3.12.4
// source: policy/monitoring/ThrottlingPolicy.proto

/* eslint-disable */
import { type Any } from "google-protobuf/google/protobuf/any_pb.js";
import { type Metadata } from "../../common/Metadata.js";

/** Copyright Super iPaaS Integration LLC, an IBM Company 2024 */

/** The Throttling Policy related information is captured in the message ThrottlingPolicy */
export interface ThrottlingPolicy {
  kind?: string | undefined;
  apiVersion?:
    | string
    | undefined;
  /** common metadata to identify a specific asset in the files */
  metadata?: Metadata | undefined;
  kindEnum?: ThrottlingPolicy_KindEnums | undefined;
  spec?: ThrottlingPolicy_Spec | undefined;
}

/** Kind id supported for Throttling policy */
export enum ThrottlingPolicy_KindEnums {
  RateLimiter = "RateLimiter",
}

/** The message specified the information related to the Alert Configuration */
export interface ThrottlingPolicy_AlertConfiguration {
  interval?: string | undefined;
  frequency?: string | undefined;
  message?: string | undefined;
  destinations?: Any[] | undefined;
}

/** The Spec is used to define the list of enables, maximum limit, applications, application specific and alert configuration */
export interface ThrottlingPolicy_Spec {
  /** Can be enabled or disabled */
  enabled?:
    | boolean
    | undefined;
  /** Single instance of maximum limit can be given */
  maxLimit?:
    | number
    | undefined;
  /** Multiple instances of application can be given */
  applications?:
    | string[]
    | undefined;
  /** application specific can be enabled or disabled */
  applicationSpecific?:
    | boolean
    | undefined;
  /**
   * Field 'alert_configuration' with JSON name 'alert-configuration' accepts the value of either 'alert_configuration' or 'alert-configuration' from the YAML file.
   * If both 'alert_configuration' and 'alert-configuration' are specified, the value of 'alert-configuration' takes priority.
   * Multiple instances of alert configuration can be given with JSON name "alert-configuration".
   */
  "alert-configuration"?: ThrottlingPolicy_AlertConfiguration | undefined;
}
