/* 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 K8SEnvoyFilterV1Alpha3 {
  /**
   * Customizing Envoy configuration generated by Istio. See more details at: https://istio.io/docs/reference/config/networking/envoy-filter.html
   */
  spec?: {
    /**
     * One or more patches with match conditions.
     */
    configPatches?: {
      /**
       * Specifies where in the Envoy configuration, the patch should be applied.
       *
       * Valid Options: LISTENER, FILTER_CHAIN, NETWORK_FILTER, HTTP_FILTER, ROUTE_CONFIGURATION, VIRTUAL_HOST, HTTP_ROUTE, CLUSTER, EXTENSION_CONFIG, BOOTSTRAP, LISTENER_FILTER
       */
      applyTo?:
        | "INVALID"
        | "LISTENER"
        | "FILTER_CHAIN"
        | "NETWORK_FILTER"
        | "HTTP_FILTER"
        | "ROUTE_CONFIGURATION"
        | "VIRTUAL_HOST"
        | "HTTP_ROUTE"
        | "CLUSTER"
        | "EXTENSION_CONFIG"
        | "BOOTSTRAP"
        | "LISTENER_FILTER";
      /**
       * Match on listener/route configuration/cluster.
       */
      match?: {
        [k: string]: unknown;
      };
      /**
       * The patch to apply along with the operation.
       */
      patch?: {
        /**
         * Determines the filter insertion order.
         *
         * Valid Options: AUTHN, AUTHZ, STATS
         */
        filterClass?: "UNSPECIFIED" | "AUTHN" | "AUTHZ" | "STATS";
        /**
         * Determines how the patch should be applied.
         *
         * Valid Options: MERGE, ADD, REMOVE, INSERT_BEFORE, INSERT_AFTER, INSERT_FIRST, REPLACE
         */
        operation?:
          | "INVALID"
          | "MERGE"
          | "ADD"
          | "REMOVE"
          | "INSERT_BEFORE"
          | "INSERT_AFTER"
          | "INSERT_FIRST"
          | "REPLACE";
        /**
         * The JSON config of the object being patched.
         */
        value?: {};
      };
    }[];
    /**
     * Priority defines the order in which patch sets are applied within a context.
     */
    priority?: number;
    /**
     * 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;
          }
        ];
    /**
     * Criteria used to select the specific set of pods/VMs on which this patch configuration should be applied.
     */
    workloadSelector?: {
      /**
       * One or more labels that indicate a specific set of pods/VMs on which the configuration should be applied.
       */
      labels?: {
        [k: string]: string;
      };
    };
  };
  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;
      };
    }[];
  };
}
