// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
//   protoc-gen-ts_proto  v2.6.1
//   protoc               v3.17.1
// source: package/Plan.proto

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

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

export interface Plan {
  kind?:
    | string
    | undefined;
  /** common metadata to identify a specific asset in the files */
  metadata?: Metadata | undefined;
  spec?: Plan_Spec | undefined;
  kindEnum?: Plan_KindEnums | undefined;
  apiVersion?: string | undefined;
}

export enum Plan_KindEnums {
  Plan = "Plan",
}

export interface Plan_Pricing {
  currency?: string | undefined;
  value?: number | undefined;
}

export interface Plan_WithQuota {
  $ref?: string | undefined;
  unlimited?: Plan_EmptyObject | undefined;
}

export interface Plan_EmptyObject {
}

export interface Plan_WithRateLimit {
  name?: string | undefined;
  maxRequest?: number | undefined;
  interval?: string | undefined;
  alertMessage?: string | undefined;
  alertConfiguration?: string | undefined;
}

export interface Plan_Qos {
  withQuota?: Plan_WithQuota[] | undefined;
  withRateLimit?: Plan_WithRateLimit[] | undefined;
}

export interface Plan_Spec {
  pricing?: Plan_Pricing | undefined;
  qos?: Plan_Qos | undefined;
  "x-datapower-config"?: Plan_XDatapowerConfig | undefined;
  isApprovalRequired?: boolean | undefined;
}

export interface Plan_OverrideWithQuota {
  onLimitReach?: string | undefined;
  maxRequest?: number | undefined;
  interval?: string | undefined;
  name?: string | undefined;
  unlimited?: Plan_EmptyObject | undefined;
}

export interface Plan_Operations {
  path?: string | undefined;
  method?: string | undefined;
  operationId?: string | undefined;
  withQuota?: Plan_OverrideWithQuota[] | undefined;
}

export interface Plan_OverrideApis {
  $ref?: string | undefined;
  operations?: Plan_Operations[] | undefined;
}

export interface Plan_XDatapowerConfig {
  withAssemblyCountLimit?: Plan_WithAssemblyCountLimit[] | undefined;
  withAssemblyRateLimit?: Plan_WithAssemblyRateLimit[] | undefined;
  withAssemblyQuotaLimit?: Plan_WithAssemblyQuotaLimit[] | undefined;
  apis?: Plan_OverrideApis[] | undefined;
}

export interface Plan_WithAssemblyCountLimit {
  /** as we can also have unlimited defining this as string */
  maxRequest?: string | undefined;
  name?: string | undefined;
}

export interface Plan_WithAssemblyRateLimit {
  maxRequest?: number | undefined;
  interval?: string | undefined;
  name?: string | undefined;
}

export interface Plan_WithAssemblyQuotaLimit {
  maxRequest?: number | undefined;
  interval?: string | undefined;
  name?: string | undefined;
}
