/* eslint-disable */
/**
 * This file was automatically generated by json-schema-to-typescript.
 * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
 * and run json-schema-to-typescript to regenerate this file.
 */

export interface K8STelemetryV1Alpha1 {
  /**
   * Telemetry configuration for workloads. See more details at: https://istio.io/docs/reference/config/telemetry.html
   */
  spec?: {
    /**
     * Optional.
     */
    accessLogging?: {
      /**
       * Controls logging.
       */
      disabled?: boolean;
      /**
       * Optional.
       */
      filter?: {
        /**
         * CEL expression for selecting when requests/connections should be logged.
         */
        expression?: string;
      };
      /**
       * Allows tailoring of logging behavior to specific conditions.
       */
      match?: {
        /**
         * This determines whether or not to apply the access logging configuration based on the direction of traffic relative to the proxied workload.
         *
         * Valid Options: CLIENT_AND_SERVER, CLIENT, SERVER
         */
        mode?: "CLIENT_AND_SERVER" | "CLIENT" | "SERVER";
      };
      /**
       * Optional.
       */
      providers?: {
        /**
         * Required.
         */
        name: string;
      }[];
    }[];
    /**
     * Optional.
     */
    metrics?: {
      /**
       * Optional.
       */
      overrides?: {
        /**
         * Optional.
         */
        disabled?: boolean;
        /**
         * Match allows providing the scope of the override.
         */
        match?: {
          [k: string]: unknown;
        };
        /**
         * Optional.
         */
        tagOverrides?: {
          [k: string]: {
            /**
             * Operation controls whether or not to update/add a tag, or to remove it.
             *
             * Valid Options: UPSERT, REMOVE
             */
            operation?: "UPSERT" | "REMOVE";
            /**
             * Value is only considered if the operation is `UPSERT`.
             */
            value?: string;
          };
        };
      }[];
      /**
       * Optional.
       */
      providers?: {
        /**
         * Required.
         */
        name: string;
      }[];
      /**
       * Optional.
       */
      reportingInterval?: string;
    }[];
    /**
     * Optional.
     */
    selector?: {
      /**
       * One or more labels that indicate a specific set of pods/VMs on which a policy should be applied.
       */
      matchLabels?: {
        [k: string]: string;
      };
    };
    targetRef?: {
      /**
       * group is the group of the target resource.
       */
      group?: string;
      /**
       * kind is kind of the target resource.
       */
      kind: string;
      /**
       * name is the name of the target resource.
       */
      name: string;
      /**
       * namespace is the namespace of the referent.
       */
      namespace?: string;
    };
    /**
     * Optional.
     *
     * @maxItems 16
     */
    targetRefs?:
      | []
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ]
      | [
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          },
          {
            /**
             * group is the group of the target resource.
             */
            group?: string;
            /**
             * kind is kind of the target resource.
             */
            kind: string;
            /**
             * name is the name of the target resource.
             */
            name: string;
            /**
             * namespace is the namespace of the referent.
             */
            namespace?: string;
          }
        ];
    /**
     * Optional.
     */
    tracing?: {
      /**
       * Optional.
       */
      customTags?: {
        [k: string]: {
          [k: string]: unknown;
        };
      };
      /**
       * Controls span reporting.
       */
      disableSpanReporting?: boolean;
      /**
       * Allows tailoring of behavior to specific conditions.
       */
      match?: {
        /**
         * This determines whether or not to apply the tracing configuration based on the direction of traffic relative to the proxied workload.
         *
         * Valid Options: CLIENT_AND_SERVER, CLIENT, SERVER
         */
        mode?: "CLIENT_AND_SERVER" | "CLIENT" | "SERVER";
      };
      /**
       * Optional.
       */
      providers?: {
        /**
         * Required.
         */
        name: string;
      }[];
      /**
       * Controls the rate at which traffic will be selected for tracing if no prior sampling decision has been made.
       */
      randomSamplingPercentage?: number;
      useRequestIdForTraceSampling?: boolean;
    }[];
  };
  status?: {
    /**
     * Current service state of the resource.
     */
    conditions?: {
      /**
       * Last time we probed the condition.
       */
      lastProbeTime?: string;
      /**
       * Last time the condition transitioned from one status to another.
       */
      lastTransitionTime?: string;
      /**
       * Human-readable message indicating details about last transition.
       */
      message?: string;
      /**
       * Unique, one-word, CamelCase reason for the condition's last transition.
       */
      reason?: string;
      /**
       * Status is the status of the condition.
       */
      status?: string;
      /**
       * Type is the type of the condition.
       */
      type?: string;
    }[];
    /**
     * Resource Generation to which the Reconciled Condition refers.
     */
    observedGeneration?: number | string;
    /**
     * Includes any errors or warnings detected by Istio's analyzers.
     */
    validationMessages?: {
      /**
       * A url pointing to the Istio documentation for this specific error type.
       */
      documentationUrl?: string;
      /**
       * Represents how severe a message is.
       *
       * Valid Options: UNKNOWN, ERROR, WARNING, INFO
       */
      level?: "UNKNOWN" | "ERROR" | "WARNING" | "INFO";
      type?: {
        /**
         * A 7 character code matching `^IST[0-9]{4}$` intended to uniquely identify the message type.
         */
        code?: string;
        /**
         * A human-readable name for the message type.
         */
        name?: string;
      };
    }[];
  };
}
