/* 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 K8SWasmPluginV1Alpha1 {
  /**
   * Extend the functionality provided by the Istio proxy through WebAssembly filters. See more details at: https://istio.io/docs/reference/config/proxy_extensions/wasm-plugin.html
   */
  spec: {
    /**
     * Specifies the failure behavior for the plugin due to fatal errors.
     *
     * Valid Options: FAIL_CLOSE, FAIL_OPEN
     */
    failStrategy?: string;
    /**
     * The pull behaviour to be applied when fetching Wasm module by either OCI image or `http/https`.
     *
     * Valid Options: IfNotPresent, Always
     */
    imagePullPolicy?: string;
    /**
     * Credentials to use for OCI image pulling.
     */
    imagePullSecret?: string;
    /**
     * Specifies the criteria to determine which traffic is passed to WasmPlugin.
     */
    match?: {
      /**
       * Criteria for selecting traffic by their direction.
       *
       * Valid Options: CLIENT, SERVER, CLIENT_AND_SERVER
       */
      mode?: "UNDEFINED" | "CLIENT" | "SERVER" | "CLIENT_AND_SERVER";
      /**
       * Criteria for selecting traffic by their destination port.
       */
      ports?: {
        number: number;
      }[];
    }[];
    /**
     * Determines where in the filter chain this `WasmPlugin` is to be injected.
     *
     * Valid Options: AUTHN, AUTHZ, STATS
     */
    phase?: string;
    /**
     * The configuration that will be passed on to the plugin.
     */
    pluginConfig?: {};
    /**
     * The plugin name to be used in the Envoy configuration (used to be called `rootID`).
     */
    pluginName?: string;
    /**
     * Determines ordering of `WasmPlugins` in the same `phase`.
     */
    priority?: number;
    /**
     * Criteria used to select the specific set of pods/VMs on which this plugin configuration should be applied.
     */
    selector?: {
      /**
       * One or more labels that indicate a specific set of pods/VMs on which a policy should be applied.
       */
      matchLabels?: {
        [k: string]: string;
      };
    };
    /**
     * SHA256 checksum that will be used to verify Wasm module or OCI container.
     */
    sha256?: 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;
          }
        ];
    /**
     * Specifies the type of Wasm Extension to be used.
     *
     * Valid Options: HTTP, NETWORK
     */
    type?: string;
    /**
     * URL of a Wasm module or OCI container.
     */
    url: string;
    verificationKey?: string;
    /**
     * Configuration for a Wasm VM.
     */
    vmConfig?: {
      /**
       * Specifies environment variables to be injected to this VM.
       *
       * @maxItems 256
       */
      env?: {
        /**
         * Name of the environment variable.
         */
        name: string;
        /**
         * Value for the environment variable.
         */
        value?: string;
        /**
         * Source for the environment variable's value.
         *
         * Valid Options: INLINE, HOST
         */
        valueFrom?: "INLINE" | "HOST";
      }[];
    };
  };
  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;
      };
    }[];
  };
}
