/* 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.
 */

/**
 * Application is a definition of Application resource.
 */
export interface K8SApplicationV1Alpha1 {
  /**
   * APIVersion defines the versioned schema of this representation of an object.
   * Servers should convert recognized schemas to the latest internal value, and
   * may reject unrecognized values.
   * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
   */
  apiVersion?: string;
  /**
   * Kind is a string value representing the REST resource this object represents.
   * Servers may infer this from the endpoint the client submits requests to.
   * Cannot be updated.
   * In CamelCase.
   * More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
   */
  kind?: string;
  metadata: {};
  /**
   * Operation contains information about a requested or running operation
   */
  operation?: {
    /**
     * Info is a list of informational items for this operation
     */
    info?: {
      name: string;
      value: string;
    }[];
    /**
     * InitiatedBy contains information about who initiated the operations
     */
    initiatedBy?: {
      /**
       * Automated is set to true if operation was initiated automatically by the application controller.
       */
      automated?: boolean;
      /**
       * Username contains the name of a user who started operation
       */
      username?: string;
    };
    /**
     * Retry controls the strategy to apply if a sync fails
     */
    retry?: {
      /**
       * Backoff controls how to backoff on subsequent retries of failed syncs
       */
      backoff?: {
        /**
         * Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h")
         */
        duration?: string;
        /**
         * Factor is a factor to multiply the base duration after each failed retry
         */
        factor?: number;
        /**
         * MaxDuration is the maximum amount of time allowed for the backoff strategy
         */
        maxDuration?: string;
      };
      /**
       * Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
       */
      limit?: number;
    };
    /**
     * Sync contains parameters for the operation
     */
    sync?: {
      /**
       * SelfHealAttemptsCount contains the number of auto-heal attempts
       */
      autoHealAttemptsCount?: number;
      /**
       * DryRun specifies to perform a `kubectl apply --dry-run` without actually performing the sync
       */
      dryRun?: boolean;
      /**
       * Manifests is an optional field that overrides sync source with a local directory for development
       */
      manifests?: string[];
      /**
       * Prune specifies to delete resources from the cluster that are no longer tracked in git
       */
      prune?: boolean;
      /**
       * Resources describes which resources shall be part of the sync
       */
      resources?: {
        group?: string;
        kind: string;
        name: string;
        namespace?: string;
      }[];
      /**
       * Revision is the revision (Git) or chart version (Helm) which to sync the application to
       * If omitted, will use the revision specified in app spec.
       */
      revision?: string;
      /**
       * Revisions is the list of revision (Git) or chart version (Helm) which to sync each source in sources field for the application to
       * If omitted, will use the revision specified in app spec.
       */
      revisions?: string[];
      /**
       * Source overrides the source definition set in the application.
       * This is typically set in a Rollback operation and is nil during a Sync operation
       */
      source?: {
        /**
         * Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
         */
        chart?: string;
        /**
         * Directory holds path/directory specific options
         */
        directory?: {
          /**
           * Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
           */
          exclude?: string;
          /**
           * Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
           */
          include?: string;
          /**
           * Jsonnet holds options specific to Jsonnet
           */
          jsonnet?: {
            /**
             * ExtVars is a list of Jsonnet External Variables
             */
            extVars?: {
              code?: boolean;
              name: string;
              value: string;
            }[];
            /**
             * Additional library search dirs
             */
            libs?: string[];
            /**
             * TLAS is a list of Jsonnet Top-level Arguments
             */
            tlas?: {
              code?: boolean;
              name: string;
              value: string;
            }[];
          };
          /**
           * Recurse specifies whether to scan a directory recursively for manifests
           */
          recurse?: boolean;
        };
        /**
         * Helm holds helm specific options
         */
        helm?: {
          /**
           * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
           * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
           */
          apiVersions?: string[];
          /**
           * FileParameters are file parameters to the helm template
           */
          fileParameters?: {
            /**
             * Name is the name of the Helm parameter
             */
            name?: string;
            /**
             * Path is the path to the file containing the values for the Helm parameter
             */
            path?: string;
          }[];
          /**
           * IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values
           */
          ignoreMissingValueFiles?: boolean;
          /**
           * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
           * uses the Kubernetes version of the target cluster.
           */
          kubeVersion?: string;
          /**
           * Namespace is an optional namespace to template with. If left empty, defaults to the app's destination namespace.
           */
          namespace?: string;
          /**
           * Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
           */
          parameters?: {
            /**
             * ForceString determines whether to tell Helm to interpret booleans and numbers as strings
             */
            forceString?: boolean;
            /**
             * Name is the name of the Helm parameter
             */
            name?: string;
            /**
             * Value is the value for the Helm parameter
             */
            value?: string;
          }[];
          /**
           * PassCredentials pass credentials to all domains (Helm's --pass-credentials)
           */
          passCredentials?: boolean;
          /**
           * ReleaseName is the Helm release name to use. If omitted it will use the application name
           */
          releaseName?: string;
          /**
           * SkipCrds skips custom resource definition installation step (Helm's --skip-crds)
           */
          skipCrds?: boolean;
          /**
           * SkipSchemaValidation skips JSON schema validation (Helm's --skip-schema-validation)
           */
          skipSchemaValidation?: boolean;
          /**
           * SkipTests skips test manifest installation step (Helm's --skip-tests).
           */
          skipTests?: boolean;
          /**
           * ValuesFiles is a list of Helm value files to use when generating a template
           */
          valueFiles?: string[];
          /**
           * Values specifies Helm values to be passed to helm template, typically defined as a block. ValuesObject takes precedence over Values, so use one or the other.
           */
          values?: string;
          /**
           * ValuesObject specifies Helm values to be passed to helm template, defined as a map. This takes precedence over Values.
           */
          valuesObject?: {};
          /**
           * Version is the Helm version to use for templating ("3")
           */
          version?: string;
        };
        /**
         * Kustomize holds kustomize specific options
         */
        kustomize?: {
          /**
           * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
           * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
           */
          apiVersions?: string[];
          /**
           * CommonAnnotations is a list of additional annotations to add to rendered manifests
           */
          commonAnnotations?: {
            [k: string]: string;
          };
          /**
           * CommonAnnotationsEnvsubst specifies whether to apply env variables substitution for annotation values
           */
          commonAnnotationsEnvsubst?: boolean;
          /**
           * CommonLabels is a list of additional labels to add to rendered manifests
           */
          commonLabels?: {
            [k: string]: string;
          };
          /**
           * Components specifies a list of kustomize components to add to the kustomization before building
           */
          components?: string[];
          /**
           * ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps
           */
          forceCommonAnnotations?: boolean;
          /**
           * ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps
           */
          forceCommonLabels?: boolean;
          /**
           * IgnoreMissingComponents prevents kustomize from failing when components do not exist locally by not appending them to kustomization file
           */
          ignoreMissingComponents?: boolean;
          /**
           * Images is a list of Kustomize image override specifications
           */
          images?: string[];
          /**
           * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
           * uses the Kubernetes version of the target cluster.
           */
          kubeVersion?: string;
          /**
           * LabelIncludeTemplates specifies whether to apply common labels to resource templates or not
           */
          labelIncludeTemplates?: boolean;
          /**
           * LabelWithoutSelector specifies whether to apply common labels to resource selectors or not
           */
          labelWithoutSelector?: boolean;
          /**
           * NamePrefix is a prefix appended to resources for Kustomize apps
           */
          namePrefix?: string;
          /**
           * NameSuffix is a suffix appended to resources for Kustomize apps
           */
          nameSuffix?: string;
          /**
           * Namespace sets the namespace that Kustomize adds to all resources
           */
          namespace?: string;
          /**
           * Patches is a list of Kustomize patches
           */
          patches?: {
            options?: {
              [k: string]: boolean;
            };
            patch?: string;
            path?: string;
            target?: {
              annotationSelector?: string;
              group?: string;
              kind?: string;
              labelSelector?: string;
              name?: string;
              namespace?: string;
              version?: string;
            };
          }[];
          /**
           * Replicas is a list of Kustomize Replicas override specifications
           */
          replicas?: {
            /**
             * Number of replicas
             */
            count: number | string;
            /**
             * Name of Deployment or StatefulSet
             */
            name: string;
          }[];
          /**
           * Version controls which version of Kustomize to use for rendering manifests
           */
          version?: string;
        };
        /**
         * Name is used to refer to a source and is displayed in the UI. It is used in multi-source Applications.
         */
        name?: string;
        /**
         * Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
         */
        path?: string;
        /**
         * Plugin holds config management plugin specific options
         */
        plugin?: {
          /**
           * Env is a list of environment variable entries
           */
          env?: {
            /**
             * Name is the name of the variable, usually expressed in uppercase
             */
            name: string;
            /**
             * Value is the value of the variable
             */
            value: string;
          }[];
          name?: string;
          parameters?: {
            /**
             * Array is the value of an array type parameter.
             */
            array?: string[];
            /**
             * Map is the value of a map type parameter.
             */
            map?: {
              [k: string]: string;
            };
            /**
             * Name is the name identifying a parameter.
             */
            name?: string;
            /**
             * String_ is the value of a string type parameter.
             */
            string?: string;
          }[];
        };
        /**
         * Ref is reference to another source within sources field. This field will not be used if used with a `source` tag.
         */
        ref?: string;
        /**
         * RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
         */
        repoURL: string;
        /**
         * TargetRevision defines the revision of the source to sync the application to.
         * In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.
         * In case of Helm, this is a semver tag for the Chart's version.
         */
        targetRevision?: string;
      };
      /**
       * Sources overrides the source definition set in the application.
       * This is typically set in a Rollback operation and is nil during a Sync operation
       */
      sources?: {
        /**
         * Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
         */
        chart?: string;
        /**
         * Directory holds path/directory specific options
         */
        directory?: {
          /**
           * Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
           */
          exclude?: string;
          /**
           * Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
           */
          include?: string;
          /**
           * Jsonnet holds options specific to Jsonnet
           */
          jsonnet?: {
            /**
             * ExtVars is a list of Jsonnet External Variables
             */
            extVars?: {
              code?: boolean;
              name: string;
              value: string;
            }[];
            /**
             * Additional library search dirs
             */
            libs?: string[];
            /**
             * TLAS is a list of Jsonnet Top-level Arguments
             */
            tlas?: {
              code?: boolean;
              name: string;
              value: string;
            }[];
          };
          /**
           * Recurse specifies whether to scan a directory recursively for manifests
           */
          recurse?: boolean;
        };
        /**
         * Helm holds helm specific options
         */
        helm?: {
          /**
           * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
           * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
           */
          apiVersions?: string[];
          /**
           * FileParameters are file parameters to the helm template
           */
          fileParameters?: {
            /**
             * Name is the name of the Helm parameter
             */
            name?: string;
            /**
             * Path is the path to the file containing the values for the Helm parameter
             */
            path?: string;
          }[];
          /**
           * IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values
           */
          ignoreMissingValueFiles?: boolean;
          /**
           * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
           * uses the Kubernetes version of the target cluster.
           */
          kubeVersion?: string;
          /**
           * Namespace is an optional namespace to template with. If left empty, defaults to the app's destination namespace.
           */
          namespace?: string;
          /**
           * Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
           */
          parameters?: {
            /**
             * ForceString determines whether to tell Helm to interpret booleans and numbers as strings
             */
            forceString?: boolean;
            /**
             * Name is the name of the Helm parameter
             */
            name?: string;
            /**
             * Value is the value for the Helm parameter
             */
            value?: string;
          }[];
          /**
           * PassCredentials pass credentials to all domains (Helm's --pass-credentials)
           */
          passCredentials?: boolean;
          /**
           * ReleaseName is the Helm release name to use. If omitted it will use the application name
           */
          releaseName?: string;
          /**
           * SkipCrds skips custom resource definition installation step (Helm's --skip-crds)
           */
          skipCrds?: boolean;
          /**
           * SkipSchemaValidation skips JSON schema validation (Helm's --skip-schema-validation)
           */
          skipSchemaValidation?: boolean;
          /**
           * SkipTests skips test manifest installation step (Helm's --skip-tests).
           */
          skipTests?: boolean;
          /**
           * ValuesFiles is a list of Helm value files to use when generating a template
           */
          valueFiles?: string[];
          /**
           * Values specifies Helm values to be passed to helm template, typically defined as a block. ValuesObject takes precedence over Values, so use one or the other.
           */
          values?: string;
          /**
           * ValuesObject specifies Helm values to be passed to helm template, defined as a map. This takes precedence over Values.
           */
          valuesObject?: {};
          /**
           * Version is the Helm version to use for templating ("3")
           */
          version?: string;
        };
        /**
         * Kustomize holds kustomize specific options
         */
        kustomize?: {
          /**
           * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
           * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
           */
          apiVersions?: string[];
          /**
           * CommonAnnotations is a list of additional annotations to add to rendered manifests
           */
          commonAnnotations?: {
            [k: string]: string;
          };
          /**
           * CommonAnnotationsEnvsubst specifies whether to apply env variables substitution for annotation values
           */
          commonAnnotationsEnvsubst?: boolean;
          /**
           * CommonLabels is a list of additional labels to add to rendered manifests
           */
          commonLabels?: {
            [k: string]: string;
          };
          /**
           * Components specifies a list of kustomize components to add to the kustomization before building
           */
          components?: string[];
          /**
           * ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps
           */
          forceCommonAnnotations?: boolean;
          /**
           * ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps
           */
          forceCommonLabels?: boolean;
          /**
           * IgnoreMissingComponents prevents kustomize from failing when components do not exist locally by not appending them to kustomization file
           */
          ignoreMissingComponents?: boolean;
          /**
           * Images is a list of Kustomize image override specifications
           */
          images?: string[];
          /**
           * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
           * uses the Kubernetes version of the target cluster.
           */
          kubeVersion?: string;
          /**
           * LabelIncludeTemplates specifies whether to apply common labels to resource templates or not
           */
          labelIncludeTemplates?: boolean;
          /**
           * LabelWithoutSelector specifies whether to apply common labels to resource selectors or not
           */
          labelWithoutSelector?: boolean;
          /**
           * NamePrefix is a prefix appended to resources for Kustomize apps
           */
          namePrefix?: string;
          /**
           * NameSuffix is a suffix appended to resources for Kustomize apps
           */
          nameSuffix?: string;
          /**
           * Namespace sets the namespace that Kustomize adds to all resources
           */
          namespace?: string;
          /**
           * Patches is a list of Kustomize patches
           */
          patches?: {
            options?: {
              [k: string]: boolean;
            };
            patch?: string;
            path?: string;
            target?: {
              annotationSelector?: string;
              group?: string;
              kind?: string;
              labelSelector?: string;
              name?: string;
              namespace?: string;
              version?: string;
            };
          }[];
          /**
           * Replicas is a list of Kustomize Replicas override specifications
           */
          replicas?: {
            /**
             * Number of replicas
             */
            count: number | string;
            /**
             * Name of Deployment or StatefulSet
             */
            name: string;
          }[];
          /**
           * Version controls which version of Kustomize to use for rendering manifests
           */
          version?: string;
        };
        /**
         * Name is used to refer to a source and is displayed in the UI. It is used in multi-source Applications.
         */
        name?: string;
        /**
         * Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
         */
        path?: string;
        /**
         * Plugin holds config management plugin specific options
         */
        plugin?: {
          /**
           * Env is a list of environment variable entries
           */
          env?: {
            /**
             * Name is the name of the variable, usually expressed in uppercase
             */
            name: string;
            /**
             * Value is the value of the variable
             */
            value: string;
          }[];
          name?: string;
          parameters?: {
            /**
             * Array is the value of an array type parameter.
             */
            array?: string[];
            /**
             * Map is the value of a map type parameter.
             */
            map?: {
              [k: string]: string;
            };
            /**
             * Name is the name identifying a parameter.
             */
            name?: string;
            /**
             * String_ is the value of a string type parameter.
             */
            string?: string;
          }[];
        };
        /**
         * Ref is reference to another source within sources field. This field will not be used if used with a `source` tag.
         */
        ref?: string;
        /**
         * RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
         */
        repoURL: string;
        /**
         * TargetRevision defines the revision of the source to sync the application to.
         * In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.
         * In case of Helm, this is a semver tag for the Chart's version.
         */
        targetRevision?: string;
      }[];
      /**
       * SyncOptions provide per-sync sync-options, e.g. Validate=false
       */
      syncOptions?: string[];
      /**
       * SyncStrategy describes how to perform the sync
       */
      syncStrategy?: {
        /**
         * Apply will perform a `kubectl apply` to perform the sync.
         */
        apply?: {
          /**
           * Force indicates whether or not to supply the --force flag to `kubectl apply`.
           * The --force flag deletes and re-create the resource, when PATCH encounters conflict and has
           * retried for 5 times.
           */
          force?: boolean;
        };
        /**
         * Hook will submit any referenced resources to perform the sync. This is the default strategy
         */
        hook?: {
          /**
           * Force indicates whether or not to supply the --force flag to `kubectl apply`.
           * The --force flag deletes and re-create the resource, when PATCH encounters conflict and has
           * retried for 5 times.
           */
          force?: boolean;
        };
      };
    };
  };
  /**
   * ApplicationSpec represents desired application state. Contains link to repository with application definition and additional parameters link definition revision.
   */
  spec: {
    /**
     * Destination is a reference to the target Kubernetes server and namespace
     */
    destination: {
      /**
       * Name is an alternate way of specifying the target cluster by its symbolic name. This must be set if Server is not set.
       */
      name?: string;
      /**
       * Namespace specifies the target namespace for the application's resources.
       * The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace
       */
      namespace?: string;
      /**
       * Server specifies the URL of the target cluster's Kubernetes control plane API. This must be set if Name is not set.
       */
      server?: string;
    };
    /**
     * IgnoreDifferences is a list of resources and their fields which should be ignored during comparison
     */
    ignoreDifferences?: {
      group?: string;
      jqPathExpressions?: string[];
      jsonPointers?: string[];
      kind: string;
      /**
       * ManagedFieldsManagers is a list of trusted managers. Fields mutated by those managers will take precedence over the
       * desired state defined in the SCM and won't be displayed in diffs
       */
      managedFieldsManagers?: string[];
      name?: string;
      namespace?: string;
    }[];
    /**
     * Info contains a list of information (URLs, email addresses, and plain text) that relates to the application
     */
    info?: {
      name: string;
      value: string;
    }[];
    /**
     * Project is a reference to the project this application belongs to.
     * The empty string means that application belongs to the 'default' project.
     */
    project: string;
    /**
     * RevisionHistoryLimit limits the number of items kept in the application's revision history, which is used for informational purposes as well as for rollbacks to previous versions.
     * This should only be changed in exceptional circumstances.
     * Setting to zero will store no history. This will reduce storage used.
     * Increasing will increase the space used to store the history, so we do not recommend increasing it.
     * Default is 10.
     */
    revisionHistoryLimit?: number;
    /**
     * Source is a reference to the location of the application's manifests or chart
     */
    source?: {
      /**
       * Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
       */
      chart?: string;
      /**
       * Directory holds path/directory specific options
       */
      directory?: {
        /**
         * Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
         */
        exclude?: string;
        /**
         * Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
         */
        include?: string;
        /**
         * Jsonnet holds options specific to Jsonnet
         */
        jsonnet?: {
          /**
           * ExtVars is a list of Jsonnet External Variables
           */
          extVars?: {
            code?: boolean;
            name: string;
            value: string;
          }[];
          /**
           * Additional library search dirs
           */
          libs?: string[];
          /**
           * TLAS is a list of Jsonnet Top-level Arguments
           */
          tlas?: {
            code?: boolean;
            name: string;
            value: string;
          }[];
        };
        /**
         * Recurse specifies whether to scan a directory recursively for manifests
         */
        recurse?: boolean;
      };
      /**
       * Helm holds helm specific options
       */
      helm?: {
        /**
         * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
         * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
         */
        apiVersions?: string[];
        /**
         * FileParameters are file parameters to the helm template
         */
        fileParameters?: {
          /**
           * Name is the name of the Helm parameter
           */
          name?: string;
          /**
           * Path is the path to the file containing the values for the Helm parameter
           */
          path?: string;
        }[];
        /**
         * IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values
         */
        ignoreMissingValueFiles?: boolean;
        /**
         * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
         * uses the Kubernetes version of the target cluster.
         */
        kubeVersion?: string;
        /**
         * Namespace is an optional namespace to template with. If left empty, defaults to the app's destination namespace.
         */
        namespace?: string;
        /**
         * Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
         */
        parameters?: {
          /**
           * ForceString determines whether to tell Helm to interpret booleans and numbers as strings
           */
          forceString?: boolean;
          /**
           * Name is the name of the Helm parameter
           */
          name?: string;
          /**
           * Value is the value for the Helm parameter
           */
          value?: string;
        }[];
        /**
         * PassCredentials pass credentials to all domains (Helm's --pass-credentials)
         */
        passCredentials?: boolean;
        /**
         * ReleaseName is the Helm release name to use. If omitted it will use the application name
         */
        releaseName?: string;
        /**
         * SkipCrds skips custom resource definition installation step (Helm's --skip-crds)
         */
        skipCrds?: boolean;
        /**
         * SkipSchemaValidation skips JSON schema validation (Helm's --skip-schema-validation)
         */
        skipSchemaValidation?: boolean;
        /**
         * SkipTests skips test manifest installation step (Helm's --skip-tests).
         */
        skipTests?: boolean;
        /**
         * ValuesFiles is a list of Helm value files to use when generating a template
         */
        valueFiles?: string[];
        /**
         * Values specifies Helm values to be passed to helm template, typically defined as a block. ValuesObject takes precedence over Values, so use one or the other.
         */
        values?: string;
        /**
         * ValuesObject specifies Helm values to be passed to helm template, defined as a map. This takes precedence over Values.
         */
        valuesObject?: {};
        /**
         * Version is the Helm version to use for templating ("3")
         */
        version?: string;
      };
      /**
       * Kustomize holds kustomize specific options
       */
      kustomize?: {
        /**
         * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
         * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
         */
        apiVersions?: string[];
        /**
         * CommonAnnotations is a list of additional annotations to add to rendered manifests
         */
        commonAnnotations?: {
          [k: string]: string;
        };
        /**
         * CommonAnnotationsEnvsubst specifies whether to apply env variables substitution for annotation values
         */
        commonAnnotationsEnvsubst?: boolean;
        /**
         * CommonLabels is a list of additional labels to add to rendered manifests
         */
        commonLabels?: {
          [k: string]: string;
        };
        /**
         * Components specifies a list of kustomize components to add to the kustomization before building
         */
        components?: string[];
        /**
         * ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps
         */
        forceCommonAnnotations?: boolean;
        /**
         * ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps
         */
        forceCommonLabels?: boolean;
        /**
         * IgnoreMissingComponents prevents kustomize from failing when components do not exist locally by not appending them to kustomization file
         */
        ignoreMissingComponents?: boolean;
        /**
         * Images is a list of Kustomize image override specifications
         */
        images?: string[];
        /**
         * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
         * uses the Kubernetes version of the target cluster.
         */
        kubeVersion?: string;
        /**
         * LabelIncludeTemplates specifies whether to apply common labels to resource templates or not
         */
        labelIncludeTemplates?: boolean;
        /**
         * LabelWithoutSelector specifies whether to apply common labels to resource selectors or not
         */
        labelWithoutSelector?: boolean;
        /**
         * NamePrefix is a prefix appended to resources for Kustomize apps
         */
        namePrefix?: string;
        /**
         * NameSuffix is a suffix appended to resources for Kustomize apps
         */
        nameSuffix?: string;
        /**
         * Namespace sets the namespace that Kustomize adds to all resources
         */
        namespace?: string;
        /**
         * Patches is a list of Kustomize patches
         */
        patches?: {
          options?: {
            [k: string]: boolean;
          };
          patch?: string;
          path?: string;
          target?: {
            annotationSelector?: string;
            group?: string;
            kind?: string;
            labelSelector?: string;
            name?: string;
            namespace?: string;
            version?: string;
          };
        }[];
        /**
         * Replicas is a list of Kustomize Replicas override specifications
         */
        replicas?: {
          /**
           * Number of replicas
           */
          count: number | string;
          /**
           * Name of Deployment or StatefulSet
           */
          name: string;
        }[];
        /**
         * Version controls which version of Kustomize to use for rendering manifests
         */
        version?: string;
      };
      /**
       * Name is used to refer to a source and is displayed in the UI. It is used in multi-source Applications.
       */
      name?: string;
      /**
       * Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
       */
      path?: string;
      /**
       * Plugin holds config management plugin specific options
       */
      plugin?: {
        /**
         * Env is a list of environment variable entries
         */
        env?: {
          /**
           * Name is the name of the variable, usually expressed in uppercase
           */
          name: string;
          /**
           * Value is the value of the variable
           */
          value: string;
        }[];
        name?: string;
        parameters?: {
          /**
           * Array is the value of an array type parameter.
           */
          array?: string[];
          /**
           * Map is the value of a map type parameter.
           */
          map?: {
            [k: string]: string;
          };
          /**
           * Name is the name identifying a parameter.
           */
          name?: string;
          /**
           * String_ is the value of a string type parameter.
           */
          string?: string;
        }[];
      };
      /**
       * Ref is reference to another source within sources field. This field will not be used if used with a `source` tag.
       */
      ref?: string;
      /**
       * RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
       */
      repoURL: string;
      /**
       * TargetRevision defines the revision of the source to sync the application to.
       * In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.
       * In case of Helm, this is a semver tag for the Chart's version.
       */
      targetRevision?: string;
    };
    /**
     * SourceHydrator provides a way to push hydrated manifests back to git before syncing them to the cluster.
     */
    sourceHydrator?: {
      /**
       * DrySource specifies where the dry "don't repeat yourself" manifest source lives.
       */
      drySource: {
        /**
         * Path is a directory path within the Git repository where the manifests are located
         */
        path: string;
        /**
         * RepoURL is the URL to the git repository that contains the application manifests
         */
        repoURL: string;
        /**
         * TargetRevision defines the revision of the source to hydrate
         */
        targetRevision: string;
      };
      /**
       * HydrateTo specifies an optional "staging" location to push hydrated manifests to. An external system would then
       * have to move manifests to the SyncSource, e.g. by pull request.
       */
      hydrateTo?: {
        /**
         * TargetBranch is the branch to which hydrated manifests should be committed
         */
        targetBranch: string;
      };
      /**
       * SyncSource specifies where to sync hydrated manifests from.
       */
      syncSource: {
        /**
         * Path is a directory path within the git repository where hydrated manifests should be committed to and synced
         * from. If hydrateTo is set, this is just the path from which hydrated manifests will be synced.
         */
        path: string;
        /**
         * TargetBranch is the branch to which hydrated manifests should be committed
         */
        targetBranch: string;
      };
    };
    /**
     * Sources is a reference to the location of the application's manifests or chart
     */
    sources?: {
      /**
       * Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
       */
      chart?: string;
      /**
       * Directory holds path/directory specific options
       */
      directory?: {
        /**
         * Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
         */
        exclude?: string;
        /**
         * Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
         */
        include?: string;
        /**
         * Jsonnet holds options specific to Jsonnet
         */
        jsonnet?: {
          /**
           * ExtVars is a list of Jsonnet External Variables
           */
          extVars?: {
            code?: boolean;
            name: string;
            value: string;
          }[];
          /**
           * Additional library search dirs
           */
          libs?: string[];
          /**
           * TLAS is a list of Jsonnet Top-level Arguments
           */
          tlas?: {
            code?: boolean;
            name: string;
            value: string;
          }[];
        };
        /**
         * Recurse specifies whether to scan a directory recursively for manifests
         */
        recurse?: boolean;
      };
      /**
       * Helm holds helm specific options
       */
      helm?: {
        /**
         * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
         * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
         */
        apiVersions?: string[];
        /**
         * FileParameters are file parameters to the helm template
         */
        fileParameters?: {
          /**
           * Name is the name of the Helm parameter
           */
          name?: string;
          /**
           * Path is the path to the file containing the values for the Helm parameter
           */
          path?: string;
        }[];
        /**
         * IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values
         */
        ignoreMissingValueFiles?: boolean;
        /**
         * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
         * uses the Kubernetes version of the target cluster.
         */
        kubeVersion?: string;
        /**
         * Namespace is an optional namespace to template with. If left empty, defaults to the app's destination namespace.
         */
        namespace?: string;
        /**
         * Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
         */
        parameters?: {
          /**
           * ForceString determines whether to tell Helm to interpret booleans and numbers as strings
           */
          forceString?: boolean;
          /**
           * Name is the name of the Helm parameter
           */
          name?: string;
          /**
           * Value is the value for the Helm parameter
           */
          value?: string;
        }[];
        /**
         * PassCredentials pass credentials to all domains (Helm's --pass-credentials)
         */
        passCredentials?: boolean;
        /**
         * ReleaseName is the Helm release name to use. If omitted it will use the application name
         */
        releaseName?: string;
        /**
         * SkipCrds skips custom resource definition installation step (Helm's --skip-crds)
         */
        skipCrds?: boolean;
        /**
         * SkipSchemaValidation skips JSON schema validation (Helm's --skip-schema-validation)
         */
        skipSchemaValidation?: boolean;
        /**
         * SkipTests skips test manifest installation step (Helm's --skip-tests).
         */
        skipTests?: boolean;
        /**
         * ValuesFiles is a list of Helm value files to use when generating a template
         */
        valueFiles?: string[];
        /**
         * Values specifies Helm values to be passed to helm template, typically defined as a block. ValuesObject takes precedence over Values, so use one or the other.
         */
        values?: string;
        /**
         * ValuesObject specifies Helm values to be passed to helm template, defined as a map. This takes precedence over Values.
         */
        valuesObject?: {};
        /**
         * Version is the Helm version to use for templating ("3")
         */
        version?: string;
      };
      /**
       * Kustomize holds kustomize specific options
       */
      kustomize?: {
        /**
         * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
         * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
         */
        apiVersions?: string[];
        /**
         * CommonAnnotations is a list of additional annotations to add to rendered manifests
         */
        commonAnnotations?: {
          [k: string]: string;
        };
        /**
         * CommonAnnotationsEnvsubst specifies whether to apply env variables substitution for annotation values
         */
        commonAnnotationsEnvsubst?: boolean;
        /**
         * CommonLabels is a list of additional labels to add to rendered manifests
         */
        commonLabels?: {
          [k: string]: string;
        };
        /**
         * Components specifies a list of kustomize components to add to the kustomization before building
         */
        components?: string[];
        /**
         * ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps
         */
        forceCommonAnnotations?: boolean;
        /**
         * ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps
         */
        forceCommonLabels?: boolean;
        /**
         * IgnoreMissingComponents prevents kustomize from failing when components do not exist locally by not appending them to kustomization file
         */
        ignoreMissingComponents?: boolean;
        /**
         * Images is a list of Kustomize image override specifications
         */
        images?: string[];
        /**
         * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
         * uses the Kubernetes version of the target cluster.
         */
        kubeVersion?: string;
        /**
         * LabelIncludeTemplates specifies whether to apply common labels to resource templates or not
         */
        labelIncludeTemplates?: boolean;
        /**
         * LabelWithoutSelector specifies whether to apply common labels to resource selectors or not
         */
        labelWithoutSelector?: boolean;
        /**
         * NamePrefix is a prefix appended to resources for Kustomize apps
         */
        namePrefix?: string;
        /**
         * NameSuffix is a suffix appended to resources for Kustomize apps
         */
        nameSuffix?: string;
        /**
         * Namespace sets the namespace that Kustomize adds to all resources
         */
        namespace?: string;
        /**
         * Patches is a list of Kustomize patches
         */
        patches?: {
          options?: {
            [k: string]: boolean;
          };
          patch?: string;
          path?: string;
          target?: {
            annotationSelector?: string;
            group?: string;
            kind?: string;
            labelSelector?: string;
            name?: string;
            namespace?: string;
            version?: string;
          };
        }[];
        /**
         * Replicas is a list of Kustomize Replicas override specifications
         */
        replicas?: {
          /**
           * Number of replicas
           */
          count: number | string;
          /**
           * Name of Deployment or StatefulSet
           */
          name: string;
        }[];
        /**
         * Version controls which version of Kustomize to use for rendering manifests
         */
        version?: string;
      };
      /**
       * Name is used to refer to a source and is displayed in the UI. It is used in multi-source Applications.
       */
      name?: string;
      /**
       * Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
       */
      path?: string;
      /**
       * Plugin holds config management plugin specific options
       */
      plugin?: {
        /**
         * Env is a list of environment variable entries
         */
        env?: {
          /**
           * Name is the name of the variable, usually expressed in uppercase
           */
          name: string;
          /**
           * Value is the value of the variable
           */
          value: string;
        }[];
        name?: string;
        parameters?: {
          /**
           * Array is the value of an array type parameter.
           */
          array?: string[];
          /**
           * Map is the value of a map type parameter.
           */
          map?: {
            [k: string]: string;
          };
          /**
           * Name is the name identifying a parameter.
           */
          name?: string;
          /**
           * String_ is the value of a string type parameter.
           */
          string?: string;
        }[];
      };
      /**
       * Ref is reference to another source within sources field. This field will not be used if used with a `source` tag.
       */
      ref?: string;
      /**
       * RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
       */
      repoURL: string;
      /**
       * TargetRevision defines the revision of the source to sync the application to.
       * In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.
       * In case of Helm, this is a semver tag for the Chart's version.
       */
      targetRevision?: string;
    }[];
    /**
     * SyncPolicy controls when and how a sync will be performed
     */
    syncPolicy?: {
      /**
       * Automated will keep an application synced to the target revision
       */
      automated?: {
        /**
         * AllowEmpty allows apps have zero live resources (default: false)
         */
        allowEmpty?: boolean;
        /**
         * Prune specifies whether to delete resources from the cluster that are not found in the sources anymore as part of automated sync (default: false)
         */
        prune?: boolean;
        /**
         * SelfHeal specifies whether to revert resources back to their desired state upon modification in the cluster (default: false)
         */
        selfHeal?: boolean;
      };
      /**
       * ManagedNamespaceMetadata controls metadata in the given namespace (if CreateNamespace=true)
       */
      managedNamespaceMetadata?: {
        annotations?: {
          [k: string]: string;
        };
        labels?: {
          [k: string]: string;
        };
      };
      /**
       * Retry controls failed sync retry behavior
       */
      retry?: {
        /**
         * Backoff controls how to backoff on subsequent retries of failed syncs
         */
        backoff?: {
          /**
           * Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h")
           */
          duration?: string;
          /**
           * Factor is a factor to multiply the base duration after each failed retry
           */
          factor?: number;
          /**
           * MaxDuration is the maximum amount of time allowed for the backoff strategy
           */
          maxDuration?: string;
        };
        /**
         * Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
         */
        limit?: number;
      };
      /**
       * Options allow you to specify whole app sync-options
       */
      syncOptions?: string[];
    };
  };
  /**
   * ApplicationStatus contains status information for the application
   */
  status?: {
    /**
     * Conditions is a list of currently observed application conditions
     */
    conditions?: {
      /**
       * LastTransitionTime is the time the condition was last observed
       */
      lastTransitionTime?: string;
      /**
       * Message contains human-readable message indicating details about condition
       */
      message: string;
      /**
       * Type is an application condition type
       */
      type: string;
    }[];
    /**
     * ControllerNamespace indicates the namespace in which the application controller is located
     */
    controllerNamespace?: string;
    /**
     * Health contains information about the application's current health status
     */
    health?: {
      /**
       * LastTransitionTime is the time the HealthStatus was set or updated
       */
      lastTransitionTime?: string;
      /**
       * Message is a human-readable informational message describing the health status
       */
      message?: string;
      /**
       * Status holds the status code of the application or resource
       */
      status?: string;
    };
    /**
     * History contains information about the application's sync history
     */
    history?: {
      /**
       * DeployStartedAt holds the time the sync operation started
       */
      deployStartedAt?: string;
      /**
       * DeployedAt holds the time the sync operation completed
       */
      deployedAt: string;
      /**
       * ID is an auto incrementing identifier of the RevisionHistory
       */
      id: number;
      /**
       * InitiatedBy contains information about who initiated the operations
       */
      initiatedBy?: {
        /**
         * Automated is set to true if operation was initiated automatically by the application controller.
         */
        automated?: boolean;
        /**
         * Username contains the name of a user who started operation
         */
        username?: string;
      };
      /**
       * Revision holds the revision the sync was performed against
       */
      revision?: string;
      /**
       * Revisions holds the revision of each source in sources field the sync was performed against
       */
      revisions?: string[];
      /**
       * Source is a reference to the application source used for the sync operation
       */
      source?: {
        /**
         * Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
         */
        chart?: string;
        /**
         * Directory holds path/directory specific options
         */
        directory?: {
          /**
           * Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
           */
          exclude?: string;
          /**
           * Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
           */
          include?: string;
          /**
           * Jsonnet holds options specific to Jsonnet
           */
          jsonnet?: {
            /**
             * ExtVars is a list of Jsonnet External Variables
             */
            extVars?: {
              code?: boolean;
              name: string;
              value: string;
            }[];
            /**
             * Additional library search dirs
             */
            libs?: string[];
            /**
             * TLAS is a list of Jsonnet Top-level Arguments
             */
            tlas?: {
              code?: boolean;
              name: string;
              value: string;
            }[];
          };
          /**
           * Recurse specifies whether to scan a directory recursively for manifests
           */
          recurse?: boolean;
        };
        /**
         * Helm holds helm specific options
         */
        helm?: {
          /**
           * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
           * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
           */
          apiVersions?: string[];
          /**
           * FileParameters are file parameters to the helm template
           */
          fileParameters?: {
            /**
             * Name is the name of the Helm parameter
             */
            name?: string;
            /**
             * Path is the path to the file containing the values for the Helm parameter
             */
            path?: string;
          }[];
          /**
           * IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values
           */
          ignoreMissingValueFiles?: boolean;
          /**
           * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
           * uses the Kubernetes version of the target cluster.
           */
          kubeVersion?: string;
          /**
           * Namespace is an optional namespace to template with. If left empty, defaults to the app's destination namespace.
           */
          namespace?: string;
          /**
           * Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
           */
          parameters?: {
            /**
             * ForceString determines whether to tell Helm to interpret booleans and numbers as strings
             */
            forceString?: boolean;
            /**
             * Name is the name of the Helm parameter
             */
            name?: string;
            /**
             * Value is the value for the Helm parameter
             */
            value?: string;
          }[];
          /**
           * PassCredentials pass credentials to all domains (Helm's --pass-credentials)
           */
          passCredentials?: boolean;
          /**
           * ReleaseName is the Helm release name to use. If omitted it will use the application name
           */
          releaseName?: string;
          /**
           * SkipCrds skips custom resource definition installation step (Helm's --skip-crds)
           */
          skipCrds?: boolean;
          /**
           * SkipSchemaValidation skips JSON schema validation (Helm's --skip-schema-validation)
           */
          skipSchemaValidation?: boolean;
          /**
           * SkipTests skips test manifest installation step (Helm's --skip-tests).
           */
          skipTests?: boolean;
          /**
           * ValuesFiles is a list of Helm value files to use when generating a template
           */
          valueFiles?: string[];
          /**
           * Values specifies Helm values to be passed to helm template, typically defined as a block. ValuesObject takes precedence over Values, so use one or the other.
           */
          values?: string;
          /**
           * ValuesObject specifies Helm values to be passed to helm template, defined as a map. This takes precedence over Values.
           */
          valuesObject?: {};
          /**
           * Version is the Helm version to use for templating ("3")
           */
          version?: string;
        };
        /**
         * Kustomize holds kustomize specific options
         */
        kustomize?: {
          /**
           * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
           * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
           */
          apiVersions?: string[];
          /**
           * CommonAnnotations is a list of additional annotations to add to rendered manifests
           */
          commonAnnotations?: {
            [k: string]: string;
          };
          /**
           * CommonAnnotationsEnvsubst specifies whether to apply env variables substitution for annotation values
           */
          commonAnnotationsEnvsubst?: boolean;
          /**
           * CommonLabels is a list of additional labels to add to rendered manifests
           */
          commonLabels?: {
            [k: string]: string;
          };
          /**
           * Components specifies a list of kustomize components to add to the kustomization before building
           */
          components?: string[];
          /**
           * ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps
           */
          forceCommonAnnotations?: boolean;
          /**
           * ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps
           */
          forceCommonLabels?: boolean;
          /**
           * IgnoreMissingComponents prevents kustomize from failing when components do not exist locally by not appending them to kustomization file
           */
          ignoreMissingComponents?: boolean;
          /**
           * Images is a list of Kustomize image override specifications
           */
          images?: string[];
          /**
           * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
           * uses the Kubernetes version of the target cluster.
           */
          kubeVersion?: string;
          /**
           * LabelIncludeTemplates specifies whether to apply common labels to resource templates or not
           */
          labelIncludeTemplates?: boolean;
          /**
           * LabelWithoutSelector specifies whether to apply common labels to resource selectors or not
           */
          labelWithoutSelector?: boolean;
          /**
           * NamePrefix is a prefix appended to resources for Kustomize apps
           */
          namePrefix?: string;
          /**
           * NameSuffix is a suffix appended to resources for Kustomize apps
           */
          nameSuffix?: string;
          /**
           * Namespace sets the namespace that Kustomize adds to all resources
           */
          namespace?: string;
          /**
           * Patches is a list of Kustomize patches
           */
          patches?: {
            options?: {
              [k: string]: boolean;
            };
            patch?: string;
            path?: string;
            target?: {
              annotationSelector?: string;
              group?: string;
              kind?: string;
              labelSelector?: string;
              name?: string;
              namespace?: string;
              version?: string;
            };
          }[];
          /**
           * Replicas is a list of Kustomize Replicas override specifications
           */
          replicas?: {
            /**
             * Number of replicas
             */
            count: number | string;
            /**
             * Name of Deployment or StatefulSet
             */
            name: string;
          }[];
          /**
           * Version controls which version of Kustomize to use for rendering manifests
           */
          version?: string;
        };
        /**
         * Name is used to refer to a source and is displayed in the UI. It is used in multi-source Applications.
         */
        name?: string;
        /**
         * Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
         */
        path?: string;
        /**
         * Plugin holds config management plugin specific options
         */
        plugin?: {
          /**
           * Env is a list of environment variable entries
           */
          env?: {
            /**
             * Name is the name of the variable, usually expressed in uppercase
             */
            name: string;
            /**
             * Value is the value of the variable
             */
            value: string;
          }[];
          name?: string;
          parameters?: {
            /**
             * Array is the value of an array type parameter.
             */
            array?: string[];
            /**
             * Map is the value of a map type parameter.
             */
            map?: {
              [k: string]: string;
            };
            /**
             * Name is the name identifying a parameter.
             */
            name?: string;
            /**
             * String_ is the value of a string type parameter.
             */
            string?: string;
          }[];
        };
        /**
         * Ref is reference to another source within sources field. This field will not be used if used with a `source` tag.
         */
        ref?: string;
        /**
         * RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
         */
        repoURL: string;
        /**
         * TargetRevision defines the revision of the source to sync the application to.
         * In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.
         * In case of Helm, this is a semver tag for the Chart's version.
         */
        targetRevision?: string;
      };
      /**
       * Sources is a reference to the application sources used for the sync operation
       */
      sources?: {
        /**
         * Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
         */
        chart?: string;
        /**
         * Directory holds path/directory specific options
         */
        directory?: {
          /**
           * Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
           */
          exclude?: string;
          /**
           * Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
           */
          include?: string;
          /**
           * Jsonnet holds options specific to Jsonnet
           */
          jsonnet?: {
            /**
             * ExtVars is a list of Jsonnet External Variables
             */
            extVars?: {
              code?: boolean;
              name: string;
              value: string;
            }[];
            /**
             * Additional library search dirs
             */
            libs?: string[];
            /**
             * TLAS is a list of Jsonnet Top-level Arguments
             */
            tlas?: {
              code?: boolean;
              name: string;
              value: string;
            }[];
          };
          /**
           * Recurse specifies whether to scan a directory recursively for manifests
           */
          recurse?: boolean;
        };
        /**
         * Helm holds helm specific options
         */
        helm?: {
          /**
           * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
           * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
           */
          apiVersions?: string[];
          /**
           * FileParameters are file parameters to the helm template
           */
          fileParameters?: {
            /**
             * Name is the name of the Helm parameter
             */
            name?: string;
            /**
             * Path is the path to the file containing the values for the Helm parameter
             */
            path?: string;
          }[];
          /**
           * IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values
           */
          ignoreMissingValueFiles?: boolean;
          /**
           * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
           * uses the Kubernetes version of the target cluster.
           */
          kubeVersion?: string;
          /**
           * Namespace is an optional namespace to template with. If left empty, defaults to the app's destination namespace.
           */
          namespace?: string;
          /**
           * Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
           */
          parameters?: {
            /**
             * ForceString determines whether to tell Helm to interpret booleans and numbers as strings
             */
            forceString?: boolean;
            /**
             * Name is the name of the Helm parameter
             */
            name?: string;
            /**
             * Value is the value for the Helm parameter
             */
            value?: string;
          }[];
          /**
           * PassCredentials pass credentials to all domains (Helm's --pass-credentials)
           */
          passCredentials?: boolean;
          /**
           * ReleaseName is the Helm release name to use. If omitted it will use the application name
           */
          releaseName?: string;
          /**
           * SkipCrds skips custom resource definition installation step (Helm's --skip-crds)
           */
          skipCrds?: boolean;
          /**
           * SkipSchemaValidation skips JSON schema validation (Helm's --skip-schema-validation)
           */
          skipSchemaValidation?: boolean;
          /**
           * SkipTests skips test manifest installation step (Helm's --skip-tests).
           */
          skipTests?: boolean;
          /**
           * ValuesFiles is a list of Helm value files to use when generating a template
           */
          valueFiles?: string[];
          /**
           * Values specifies Helm values to be passed to helm template, typically defined as a block. ValuesObject takes precedence over Values, so use one or the other.
           */
          values?: string;
          /**
           * ValuesObject specifies Helm values to be passed to helm template, defined as a map. This takes precedence over Values.
           */
          valuesObject?: {};
          /**
           * Version is the Helm version to use for templating ("3")
           */
          version?: string;
        };
        /**
         * Kustomize holds kustomize specific options
         */
        kustomize?: {
          /**
           * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
           * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
           */
          apiVersions?: string[];
          /**
           * CommonAnnotations is a list of additional annotations to add to rendered manifests
           */
          commonAnnotations?: {
            [k: string]: string;
          };
          /**
           * CommonAnnotationsEnvsubst specifies whether to apply env variables substitution for annotation values
           */
          commonAnnotationsEnvsubst?: boolean;
          /**
           * CommonLabels is a list of additional labels to add to rendered manifests
           */
          commonLabels?: {
            [k: string]: string;
          };
          /**
           * Components specifies a list of kustomize components to add to the kustomization before building
           */
          components?: string[];
          /**
           * ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps
           */
          forceCommonAnnotations?: boolean;
          /**
           * ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps
           */
          forceCommonLabels?: boolean;
          /**
           * IgnoreMissingComponents prevents kustomize from failing when components do not exist locally by not appending them to kustomization file
           */
          ignoreMissingComponents?: boolean;
          /**
           * Images is a list of Kustomize image override specifications
           */
          images?: string[];
          /**
           * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
           * uses the Kubernetes version of the target cluster.
           */
          kubeVersion?: string;
          /**
           * LabelIncludeTemplates specifies whether to apply common labels to resource templates or not
           */
          labelIncludeTemplates?: boolean;
          /**
           * LabelWithoutSelector specifies whether to apply common labels to resource selectors or not
           */
          labelWithoutSelector?: boolean;
          /**
           * NamePrefix is a prefix appended to resources for Kustomize apps
           */
          namePrefix?: string;
          /**
           * NameSuffix is a suffix appended to resources for Kustomize apps
           */
          nameSuffix?: string;
          /**
           * Namespace sets the namespace that Kustomize adds to all resources
           */
          namespace?: string;
          /**
           * Patches is a list of Kustomize patches
           */
          patches?: {
            options?: {
              [k: string]: boolean;
            };
            patch?: string;
            path?: string;
            target?: {
              annotationSelector?: string;
              group?: string;
              kind?: string;
              labelSelector?: string;
              name?: string;
              namespace?: string;
              version?: string;
            };
          }[];
          /**
           * Replicas is a list of Kustomize Replicas override specifications
           */
          replicas?: {
            /**
             * Number of replicas
             */
            count: number | string;
            /**
             * Name of Deployment or StatefulSet
             */
            name: string;
          }[];
          /**
           * Version controls which version of Kustomize to use for rendering manifests
           */
          version?: string;
        };
        /**
         * Name is used to refer to a source and is displayed in the UI. It is used in multi-source Applications.
         */
        name?: string;
        /**
         * Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
         */
        path?: string;
        /**
         * Plugin holds config management plugin specific options
         */
        plugin?: {
          /**
           * Env is a list of environment variable entries
           */
          env?: {
            /**
             * Name is the name of the variable, usually expressed in uppercase
             */
            name: string;
            /**
             * Value is the value of the variable
             */
            value: string;
          }[];
          name?: string;
          parameters?: {
            /**
             * Array is the value of an array type parameter.
             */
            array?: string[];
            /**
             * Map is the value of a map type parameter.
             */
            map?: {
              [k: string]: string;
            };
            /**
             * Name is the name identifying a parameter.
             */
            name?: string;
            /**
             * String_ is the value of a string type parameter.
             */
            string?: string;
          }[];
        };
        /**
         * Ref is reference to another source within sources field. This field will not be used if used with a `source` tag.
         */
        ref?: string;
        /**
         * RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
         */
        repoURL: string;
        /**
         * TargetRevision defines the revision of the source to sync the application to.
         * In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.
         * In case of Helm, this is a semver tag for the Chart's version.
         */
        targetRevision?: string;
      }[];
    }[];
    /**
     * ObservedAt indicates when the application state was updated without querying latest git state
     * Deprecated: controller no longer updates ObservedAt field
     */
    observedAt?: string;
    /**
     * OperationState contains information about any ongoing operations, such as a sync
     */
    operationState?: {
      /**
       * FinishedAt contains time of operation completion
       */
      finishedAt?: string;
      /**
       * Message holds any pertinent messages when attempting to perform operation (typically errors).
       */
      message?: string;
      /**
       * Operation is the original requested operation
       */
      operation: {
        /**
         * Info is a list of informational items for this operation
         */
        info?: {
          name: string;
          value: string;
        }[];
        /**
         * InitiatedBy contains information about who initiated the operations
         */
        initiatedBy?: {
          /**
           * Automated is set to true if operation was initiated automatically by the application controller.
           */
          automated?: boolean;
          /**
           * Username contains the name of a user who started operation
           */
          username?: string;
        };
        /**
         * Retry controls the strategy to apply if a sync fails
         */
        retry?: {
          /**
           * Backoff controls how to backoff on subsequent retries of failed syncs
           */
          backoff?: {
            /**
             * Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h")
             */
            duration?: string;
            /**
             * Factor is a factor to multiply the base duration after each failed retry
             */
            factor?: number;
            /**
             * MaxDuration is the maximum amount of time allowed for the backoff strategy
             */
            maxDuration?: string;
          };
          /**
           * Limit is the maximum number of attempts for retrying a failed sync. If set to 0, no retries will be performed.
           */
          limit?: number;
        };
        /**
         * Sync contains parameters for the operation
         */
        sync?: {
          /**
           * SelfHealAttemptsCount contains the number of auto-heal attempts
           */
          autoHealAttemptsCount?: number;
          /**
           * DryRun specifies to perform a `kubectl apply --dry-run` without actually performing the sync
           */
          dryRun?: boolean;
          /**
           * Manifests is an optional field that overrides sync source with a local directory for development
           */
          manifests?: string[];
          /**
           * Prune specifies to delete resources from the cluster that are no longer tracked in git
           */
          prune?: boolean;
          /**
           * Resources describes which resources shall be part of the sync
           */
          resources?: {
            group?: string;
            kind: string;
            name: string;
            namespace?: string;
          }[];
          /**
           * Revision is the revision (Git) or chart version (Helm) which to sync the application to
           * If omitted, will use the revision specified in app spec.
           */
          revision?: string;
          /**
           * Revisions is the list of revision (Git) or chart version (Helm) which to sync each source in sources field for the application to
           * If omitted, will use the revision specified in app spec.
           */
          revisions?: string[];
          /**
           * Source overrides the source definition set in the application.
           * This is typically set in a Rollback operation and is nil during a Sync operation
           */
          source?: {
            /**
             * Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
             */
            chart?: string;
            /**
             * Directory holds path/directory specific options
             */
            directory?: {
              /**
               * Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
               */
              exclude?: string;
              /**
               * Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
               */
              include?: string;
              /**
               * Jsonnet holds options specific to Jsonnet
               */
              jsonnet?: {
                /**
                 * ExtVars is a list of Jsonnet External Variables
                 */
                extVars?: {
                  code?: boolean;
                  name: string;
                  value: string;
                }[];
                /**
                 * Additional library search dirs
                 */
                libs?: string[];
                /**
                 * TLAS is a list of Jsonnet Top-level Arguments
                 */
                tlas?: {
                  code?: boolean;
                  name: string;
                  value: string;
                }[];
              };
              /**
               * Recurse specifies whether to scan a directory recursively for manifests
               */
              recurse?: boolean;
            };
            /**
             * Helm holds helm specific options
             */
            helm?: {
              /**
               * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
               * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
               */
              apiVersions?: string[];
              /**
               * FileParameters are file parameters to the helm template
               */
              fileParameters?: {
                /**
                 * Name is the name of the Helm parameter
                 */
                name?: string;
                /**
                 * Path is the path to the file containing the values for the Helm parameter
                 */
                path?: string;
              }[];
              /**
               * IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values
               */
              ignoreMissingValueFiles?: boolean;
              /**
               * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
               * uses the Kubernetes version of the target cluster.
               */
              kubeVersion?: string;
              /**
               * Namespace is an optional namespace to template with. If left empty, defaults to the app's destination namespace.
               */
              namespace?: string;
              /**
               * Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
               */
              parameters?: {
                /**
                 * ForceString determines whether to tell Helm to interpret booleans and numbers as strings
                 */
                forceString?: boolean;
                /**
                 * Name is the name of the Helm parameter
                 */
                name?: string;
                /**
                 * Value is the value for the Helm parameter
                 */
                value?: string;
              }[];
              /**
               * PassCredentials pass credentials to all domains (Helm's --pass-credentials)
               */
              passCredentials?: boolean;
              /**
               * ReleaseName is the Helm release name to use. If omitted it will use the application name
               */
              releaseName?: string;
              /**
               * SkipCrds skips custom resource definition installation step (Helm's --skip-crds)
               */
              skipCrds?: boolean;
              /**
               * SkipSchemaValidation skips JSON schema validation (Helm's --skip-schema-validation)
               */
              skipSchemaValidation?: boolean;
              /**
               * SkipTests skips test manifest installation step (Helm's --skip-tests).
               */
              skipTests?: boolean;
              /**
               * ValuesFiles is a list of Helm value files to use when generating a template
               */
              valueFiles?: string[];
              /**
               * Values specifies Helm values to be passed to helm template, typically defined as a block. ValuesObject takes precedence over Values, so use one or the other.
               */
              values?: string;
              /**
               * ValuesObject specifies Helm values to be passed to helm template, defined as a map. This takes precedence over Values.
               */
              valuesObject?: {};
              /**
               * Version is the Helm version to use for templating ("3")
               */
              version?: string;
            };
            /**
             * Kustomize holds kustomize specific options
             */
            kustomize?: {
              /**
               * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
               * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
               */
              apiVersions?: string[];
              /**
               * CommonAnnotations is a list of additional annotations to add to rendered manifests
               */
              commonAnnotations?: {
                [k: string]: string;
              };
              /**
               * CommonAnnotationsEnvsubst specifies whether to apply env variables substitution for annotation values
               */
              commonAnnotationsEnvsubst?: boolean;
              /**
               * CommonLabels is a list of additional labels to add to rendered manifests
               */
              commonLabels?: {
                [k: string]: string;
              };
              /**
               * Components specifies a list of kustomize components to add to the kustomization before building
               */
              components?: string[];
              /**
               * ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps
               */
              forceCommonAnnotations?: boolean;
              /**
               * ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps
               */
              forceCommonLabels?: boolean;
              /**
               * IgnoreMissingComponents prevents kustomize from failing when components do not exist locally by not appending them to kustomization file
               */
              ignoreMissingComponents?: boolean;
              /**
               * Images is a list of Kustomize image override specifications
               */
              images?: string[];
              /**
               * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
               * uses the Kubernetes version of the target cluster.
               */
              kubeVersion?: string;
              /**
               * LabelIncludeTemplates specifies whether to apply common labels to resource templates or not
               */
              labelIncludeTemplates?: boolean;
              /**
               * LabelWithoutSelector specifies whether to apply common labels to resource selectors or not
               */
              labelWithoutSelector?: boolean;
              /**
               * NamePrefix is a prefix appended to resources for Kustomize apps
               */
              namePrefix?: string;
              /**
               * NameSuffix is a suffix appended to resources for Kustomize apps
               */
              nameSuffix?: string;
              /**
               * Namespace sets the namespace that Kustomize adds to all resources
               */
              namespace?: string;
              /**
               * Patches is a list of Kustomize patches
               */
              patches?: {
                options?: {
                  [k: string]: boolean;
                };
                patch?: string;
                path?: string;
                target?: {
                  annotationSelector?: string;
                  group?: string;
                  kind?: string;
                  labelSelector?: string;
                  name?: string;
                  namespace?: string;
                  version?: string;
                };
              }[];
              /**
               * Replicas is a list of Kustomize Replicas override specifications
               */
              replicas?: {
                /**
                 * Number of replicas
                 */
                count: number | string;
                /**
                 * Name of Deployment or StatefulSet
                 */
                name: string;
              }[];
              /**
               * Version controls which version of Kustomize to use for rendering manifests
               */
              version?: string;
            };
            /**
             * Name is used to refer to a source and is displayed in the UI. It is used in multi-source Applications.
             */
            name?: string;
            /**
             * Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
             */
            path?: string;
            /**
             * Plugin holds config management plugin specific options
             */
            plugin?: {
              /**
               * Env is a list of environment variable entries
               */
              env?: {
                /**
                 * Name is the name of the variable, usually expressed in uppercase
                 */
                name: string;
                /**
                 * Value is the value of the variable
                 */
                value: string;
              }[];
              name?: string;
              parameters?: {
                /**
                 * Array is the value of an array type parameter.
                 */
                array?: string[];
                /**
                 * Map is the value of a map type parameter.
                 */
                map?: {
                  [k: string]: string;
                };
                /**
                 * Name is the name identifying a parameter.
                 */
                name?: string;
                /**
                 * String_ is the value of a string type parameter.
                 */
                string?: string;
              }[];
            };
            /**
             * Ref is reference to another source within sources field. This field will not be used if used with a `source` tag.
             */
            ref?: string;
            /**
             * RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
             */
            repoURL: string;
            /**
             * TargetRevision defines the revision of the source to sync the application to.
             * In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.
             * In case of Helm, this is a semver tag for the Chart's version.
             */
            targetRevision?: string;
          };
          /**
           * Sources overrides the source definition set in the application.
           * This is typically set in a Rollback operation and is nil during a Sync operation
           */
          sources?: {
            /**
             * Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
             */
            chart?: string;
            /**
             * Directory holds path/directory specific options
             */
            directory?: {
              /**
               * Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
               */
              exclude?: string;
              /**
               * Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
               */
              include?: string;
              /**
               * Jsonnet holds options specific to Jsonnet
               */
              jsonnet?: {
                /**
                 * ExtVars is a list of Jsonnet External Variables
                 */
                extVars?: {
                  code?: boolean;
                  name: string;
                  value: string;
                }[];
                /**
                 * Additional library search dirs
                 */
                libs?: string[];
                /**
                 * TLAS is a list of Jsonnet Top-level Arguments
                 */
                tlas?: {
                  code?: boolean;
                  name: string;
                  value: string;
                }[];
              };
              /**
               * Recurse specifies whether to scan a directory recursively for manifests
               */
              recurse?: boolean;
            };
            /**
             * Helm holds helm specific options
             */
            helm?: {
              /**
               * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
               * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
               */
              apiVersions?: string[];
              /**
               * FileParameters are file parameters to the helm template
               */
              fileParameters?: {
                /**
                 * Name is the name of the Helm parameter
                 */
                name?: string;
                /**
                 * Path is the path to the file containing the values for the Helm parameter
                 */
                path?: string;
              }[];
              /**
               * IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values
               */
              ignoreMissingValueFiles?: boolean;
              /**
               * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
               * uses the Kubernetes version of the target cluster.
               */
              kubeVersion?: string;
              /**
               * Namespace is an optional namespace to template with. If left empty, defaults to the app's destination namespace.
               */
              namespace?: string;
              /**
               * Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
               */
              parameters?: {
                /**
                 * ForceString determines whether to tell Helm to interpret booleans and numbers as strings
                 */
                forceString?: boolean;
                /**
                 * Name is the name of the Helm parameter
                 */
                name?: string;
                /**
                 * Value is the value for the Helm parameter
                 */
                value?: string;
              }[];
              /**
               * PassCredentials pass credentials to all domains (Helm's --pass-credentials)
               */
              passCredentials?: boolean;
              /**
               * ReleaseName is the Helm release name to use. If omitted it will use the application name
               */
              releaseName?: string;
              /**
               * SkipCrds skips custom resource definition installation step (Helm's --skip-crds)
               */
              skipCrds?: boolean;
              /**
               * SkipSchemaValidation skips JSON schema validation (Helm's --skip-schema-validation)
               */
              skipSchemaValidation?: boolean;
              /**
               * SkipTests skips test manifest installation step (Helm's --skip-tests).
               */
              skipTests?: boolean;
              /**
               * ValuesFiles is a list of Helm value files to use when generating a template
               */
              valueFiles?: string[];
              /**
               * Values specifies Helm values to be passed to helm template, typically defined as a block. ValuesObject takes precedence over Values, so use one or the other.
               */
              values?: string;
              /**
               * ValuesObject specifies Helm values to be passed to helm template, defined as a map. This takes precedence over Values.
               */
              valuesObject?: {};
              /**
               * Version is the Helm version to use for templating ("3")
               */
              version?: string;
            };
            /**
             * Kustomize holds kustomize specific options
             */
            kustomize?: {
              /**
               * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
               * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
               */
              apiVersions?: string[];
              /**
               * CommonAnnotations is a list of additional annotations to add to rendered manifests
               */
              commonAnnotations?: {
                [k: string]: string;
              };
              /**
               * CommonAnnotationsEnvsubst specifies whether to apply env variables substitution for annotation values
               */
              commonAnnotationsEnvsubst?: boolean;
              /**
               * CommonLabels is a list of additional labels to add to rendered manifests
               */
              commonLabels?: {
                [k: string]: string;
              };
              /**
               * Components specifies a list of kustomize components to add to the kustomization before building
               */
              components?: string[];
              /**
               * ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps
               */
              forceCommonAnnotations?: boolean;
              /**
               * ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps
               */
              forceCommonLabels?: boolean;
              /**
               * IgnoreMissingComponents prevents kustomize from failing when components do not exist locally by not appending them to kustomization file
               */
              ignoreMissingComponents?: boolean;
              /**
               * Images is a list of Kustomize image override specifications
               */
              images?: string[];
              /**
               * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
               * uses the Kubernetes version of the target cluster.
               */
              kubeVersion?: string;
              /**
               * LabelIncludeTemplates specifies whether to apply common labels to resource templates or not
               */
              labelIncludeTemplates?: boolean;
              /**
               * LabelWithoutSelector specifies whether to apply common labels to resource selectors or not
               */
              labelWithoutSelector?: boolean;
              /**
               * NamePrefix is a prefix appended to resources for Kustomize apps
               */
              namePrefix?: string;
              /**
               * NameSuffix is a suffix appended to resources for Kustomize apps
               */
              nameSuffix?: string;
              /**
               * Namespace sets the namespace that Kustomize adds to all resources
               */
              namespace?: string;
              /**
               * Patches is a list of Kustomize patches
               */
              patches?: {
                options?: {
                  [k: string]: boolean;
                };
                patch?: string;
                path?: string;
                target?: {
                  annotationSelector?: string;
                  group?: string;
                  kind?: string;
                  labelSelector?: string;
                  name?: string;
                  namespace?: string;
                  version?: string;
                };
              }[];
              /**
               * Replicas is a list of Kustomize Replicas override specifications
               */
              replicas?: {
                /**
                 * Number of replicas
                 */
                count: number | string;
                /**
                 * Name of Deployment or StatefulSet
                 */
                name: string;
              }[];
              /**
               * Version controls which version of Kustomize to use for rendering manifests
               */
              version?: string;
            };
            /**
             * Name is used to refer to a source and is displayed in the UI. It is used in multi-source Applications.
             */
            name?: string;
            /**
             * Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
             */
            path?: string;
            /**
             * Plugin holds config management plugin specific options
             */
            plugin?: {
              /**
               * Env is a list of environment variable entries
               */
              env?: {
                /**
                 * Name is the name of the variable, usually expressed in uppercase
                 */
                name: string;
                /**
                 * Value is the value of the variable
                 */
                value: string;
              }[];
              name?: string;
              parameters?: {
                /**
                 * Array is the value of an array type parameter.
                 */
                array?: string[];
                /**
                 * Map is the value of a map type parameter.
                 */
                map?: {
                  [k: string]: string;
                };
                /**
                 * Name is the name identifying a parameter.
                 */
                name?: string;
                /**
                 * String_ is the value of a string type parameter.
                 */
                string?: string;
              }[];
            };
            /**
             * Ref is reference to another source within sources field. This field will not be used if used with a `source` tag.
             */
            ref?: string;
            /**
             * RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
             */
            repoURL: string;
            /**
             * TargetRevision defines the revision of the source to sync the application to.
             * In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.
             * In case of Helm, this is a semver tag for the Chart's version.
             */
            targetRevision?: string;
          }[];
          /**
           * SyncOptions provide per-sync sync-options, e.g. Validate=false
           */
          syncOptions?: string[];
          /**
           * SyncStrategy describes how to perform the sync
           */
          syncStrategy?: {
            /**
             * Apply will perform a `kubectl apply` to perform the sync.
             */
            apply?: {
              /**
               * Force indicates whether or not to supply the --force flag to `kubectl apply`.
               * The --force flag deletes and re-create the resource, when PATCH encounters conflict and has
               * retried for 5 times.
               */
              force?: boolean;
            };
            /**
             * Hook will submit any referenced resources to perform the sync. This is the default strategy
             */
            hook?: {
              /**
               * Force indicates whether or not to supply the --force flag to `kubectl apply`.
               * The --force flag deletes and re-create the resource, when PATCH encounters conflict and has
               * retried for 5 times.
               */
              force?: boolean;
            };
          };
        };
      };
      /**
       * Phase is the current phase of the operation
       */
      phase: string;
      /**
       * RetryCount contains time of operation retries
       */
      retryCount?: number;
      /**
       * StartedAt contains time of operation start
       */
      startedAt: string;
      /**
       * SyncResult is the result of a Sync operation
       */
      syncResult?: {
        /**
         * ManagedNamespaceMetadata contains the current sync state of managed namespace metadata
         */
        managedNamespaceMetadata?: {
          annotations?: {
            [k: string]: string;
          };
          labels?: {
            [k: string]: string;
          };
        };
        /**
         * Resources contains a list of sync result items for each individual resource in a sync operation
         */
        resources?: {
          /**
           * Group specifies the API group of the resource
           */
          group: string;
          /**
           * HookPhase contains the state of any operation associated with this resource OR hook
           * This can also contain values for non-hook resources.
           */
          hookPhase?: string;
          /**
           * HookType specifies the type of the hook. Empty for non-hook resources
           */
          hookType?: string;
          /**
           * Kind specifies the API kind of the resource
           */
          kind: string;
          /**
           * Message contains an informational or error message for the last sync OR operation
           */
          message?: string;
          /**
           * Name specifies the name of the resource
           */
          name: string;
          /**
           * Namespace specifies the target namespace of the resource
           */
          namespace: string;
          /**
           * Status holds the final result of the sync. Will be empty if the resources is yet to be applied/pruned and is always zero-value for hooks
           */
          status?: string;
          /**
           * SyncPhase indicates the particular phase of the sync that this result was acquired in
           */
          syncPhase?: string;
          /**
           * Version specifies the API version of the resource
           */
          version: string;
        }[];
        /**
         * Revision holds the revision this sync operation was performed to
         */
        revision: string;
        /**
         * Revisions holds the revision this sync operation was performed for respective indexed source in sources field
         */
        revisions?: string[];
        /**
         * Source records the application source information of the sync, used for comparing auto-sync
         */
        source?: {
          /**
           * Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
           */
          chart?: string;
          /**
           * Directory holds path/directory specific options
           */
          directory?: {
            /**
             * Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
             */
            exclude?: string;
            /**
             * Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
             */
            include?: string;
            /**
             * Jsonnet holds options specific to Jsonnet
             */
            jsonnet?: {
              /**
               * ExtVars is a list of Jsonnet External Variables
               */
              extVars?: {
                code?: boolean;
                name: string;
                value: string;
              }[];
              /**
               * Additional library search dirs
               */
              libs?: string[];
              /**
               * TLAS is a list of Jsonnet Top-level Arguments
               */
              tlas?: {
                code?: boolean;
                name: string;
                value: string;
              }[];
            };
            /**
             * Recurse specifies whether to scan a directory recursively for manifests
             */
            recurse?: boolean;
          };
          /**
           * Helm holds helm specific options
           */
          helm?: {
            /**
             * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
             * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
             */
            apiVersions?: string[];
            /**
             * FileParameters are file parameters to the helm template
             */
            fileParameters?: {
              /**
               * Name is the name of the Helm parameter
               */
              name?: string;
              /**
               * Path is the path to the file containing the values for the Helm parameter
               */
              path?: string;
            }[];
            /**
             * IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values
             */
            ignoreMissingValueFiles?: boolean;
            /**
             * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
             * uses the Kubernetes version of the target cluster.
             */
            kubeVersion?: string;
            /**
             * Namespace is an optional namespace to template with. If left empty, defaults to the app's destination namespace.
             */
            namespace?: string;
            /**
             * Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
             */
            parameters?: {
              /**
               * ForceString determines whether to tell Helm to interpret booleans and numbers as strings
               */
              forceString?: boolean;
              /**
               * Name is the name of the Helm parameter
               */
              name?: string;
              /**
               * Value is the value for the Helm parameter
               */
              value?: string;
            }[];
            /**
             * PassCredentials pass credentials to all domains (Helm's --pass-credentials)
             */
            passCredentials?: boolean;
            /**
             * ReleaseName is the Helm release name to use. If omitted it will use the application name
             */
            releaseName?: string;
            /**
             * SkipCrds skips custom resource definition installation step (Helm's --skip-crds)
             */
            skipCrds?: boolean;
            /**
             * SkipSchemaValidation skips JSON schema validation (Helm's --skip-schema-validation)
             */
            skipSchemaValidation?: boolean;
            /**
             * SkipTests skips test manifest installation step (Helm's --skip-tests).
             */
            skipTests?: boolean;
            /**
             * ValuesFiles is a list of Helm value files to use when generating a template
             */
            valueFiles?: string[];
            /**
             * Values specifies Helm values to be passed to helm template, typically defined as a block. ValuesObject takes precedence over Values, so use one or the other.
             */
            values?: string;
            /**
             * ValuesObject specifies Helm values to be passed to helm template, defined as a map. This takes precedence over Values.
             */
            valuesObject?: {};
            /**
             * Version is the Helm version to use for templating ("3")
             */
            version?: string;
          };
          /**
           * Kustomize holds kustomize specific options
           */
          kustomize?: {
            /**
             * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
             * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
             */
            apiVersions?: string[];
            /**
             * CommonAnnotations is a list of additional annotations to add to rendered manifests
             */
            commonAnnotations?: {
              [k: string]: string;
            };
            /**
             * CommonAnnotationsEnvsubst specifies whether to apply env variables substitution for annotation values
             */
            commonAnnotationsEnvsubst?: boolean;
            /**
             * CommonLabels is a list of additional labels to add to rendered manifests
             */
            commonLabels?: {
              [k: string]: string;
            };
            /**
             * Components specifies a list of kustomize components to add to the kustomization before building
             */
            components?: string[];
            /**
             * ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps
             */
            forceCommonAnnotations?: boolean;
            /**
             * ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps
             */
            forceCommonLabels?: boolean;
            /**
             * IgnoreMissingComponents prevents kustomize from failing when components do not exist locally by not appending them to kustomization file
             */
            ignoreMissingComponents?: boolean;
            /**
             * Images is a list of Kustomize image override specifications
             */
            images?: string[];
            /**
             * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
             * uses the Kubernetes version of the target cluster.
             */
            kubeVersion?: string;
            /**
             * LabelIncludeTemplates specifies whether to apply common labels to resource templates or not
             */
            labelIncludeTemplates?: boolean;
            /**
             * LabelWithoutSelector specifies whether to apply common labels to resource selectors or not
             */
            labelWithoutSelector?: boolean;
            /**
             * NamePrefix is a prefix appended to resources for Kustomize apps
             */
            namePrefix?: string;
            /**
             * NameSuffix is a suffix appended to resources for Kustomize apps
             */
            nameSuffix?: string;
            /**
             * Namespace sets the namespace that Kustomize adds to all resources
             */
            namespace?: string;
            /**
             * Patches is a list of Kustomize patches
             */
            patches?: {
              options?: {
                [k: string]: boolean;
              };
              patch?: string;
              path?: string;
              target?: {
                annotationSelector?: string;
                group?: string;
                kind?: string;
                labelSelector?: string;
                name?: string;
                namespace?: string;
                version?: string;
              };
            }[];
            /**
             * Replicas is a list of Kustomize Replicas override specifications
             */
            replicas?: {
              /**
               * Number of replicas
               */
              count: number | string;
              /**
               * Name of Deployment or StatefulSet
               */
              name: string;
            }[];
            /**
             * Version controls which version of Kustomize to use for rendering manifests
             */
            version?: string;
          };
          /**
           * Name is used to refer to a source and is displayed in the UI. It is used in multi-source Applications.
           */
          name?: string;
          /**
           * Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
           */
          path?: string;
          /**
           * Plugin holds config management plugin specific options
           */
          plugin?: {
            /**
             * Env is a list of environment variable entries
             */
            env?: {
              /**
               * Name is the name of the variable, usually expressed in uppercase
               */
              name: string;
              /**
               * Value is the value of the variable
               */
              value: string;
            }[];
            name?: string;
            parameters?: {
              /**
               * Array is the value of an array type parameter.
               */
              array?: string[];
              /**
               * Map is the value of a map type parameter.
               */
              map?: {
                [k: string]: string;
              };
              /**
               * Name is the name identifying a parameter.
               */
              name?: string;
              /**
               * String_ is the value of a string type parameter.
               */
              string?: string;
            }[];
          };
          /**
           * Ref is reference to another source within sources field. This field will not be used if used with a `source` tag.
           */
          ref?: string;
          /**
           * RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
           */
          repoURL: string;
          /**
           * TargetRevision defines the revision of the source to sync the application to.
           * In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.
           * In case of Helm, this is a semver tag for the Chart's version.
           */
          targetRevision?: string;
        };
        /**
         * Source records the application source information of the sync, used for comparing auto-sync
         */
        sources?: {
          /**
           * Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
           */
          chart?: string;
          /**
           * Directory holds path/directory specific options
           */
          directory?: {
            /**
             * Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
             */
            exclude?: string;
            /**
             * Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
             */
            include?: string;
            /**
             * Jsonnet holds options specific to Jsonnet
             */
            jsonnet?: {
              /**
               * ExtVars is a list of Jsonnet External Variables
               */
              extVars?: {
                code?: boolean;
                name: string;
                value: string;
              }[];
              /**
               * Additional library search dirs
               */
              libs?: string[];
              /**
               * TLAS is a list of Jsonnet Top-level Arguments
               */
              tlas?: {
                code?: boolean;
                name: string;
                value: string;
              }[];
            };
            /**
             * Recurse specifies whether to scan a directory recursively for manifests
             */
            recurse?: boolean;
          };
          /**
           * Helm holds helm specific options
           */
          helm?: {
            /**
             * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
             * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
             */
            apiVersions?: string[];
            /**
             * FileParameters are file parameters to the helm template
             */
            fileParameters?: {
              /**
               * Name is the name of the Helm parameter
               */
              name?: string;
              /**
               * Path is the path to the file containing the values for the Helm parameter
               */
              path?: string;
            }[];
            /**
             * IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values
             */
            ignoreMissingValueFiles?: boolean;
            /**
             * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
             * uses the Kubernetes version of the target cluster.
             */
            kubeVersion?: string;
            /**
             * Namespace is an optional namespace to template with. If left empty, defaults to the app's destination namespace.
             */
            namespace?: string;
            /**
             * Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
             */
            parameters?: {
              /**
               * ForceString determines whether to tell Helm to interpret booleans and numbers as strings
               */
              forceString?: boolean;
              /**
               * Name is the name of the Helm parameter
               */
              name?: string;
              /**
               * Value is the value for the Helm parameter
               */
              value?: string;
            }[];
            /**
             * PassCredentials pass credentials to all domains (Helm's --pass-credentials)
             */
            passCredentials?: boolean;
            /**
             * ReleaseName is the Helm release name to use. If omitted it will use the application name
             */
            releaseName?: string;
            /**
             * SkipCrds skips custom resource definition installation step (Helm's --skip-crds)
             */
            skipCrds?: boolean;
            /**
             * SkipSchemaValidation skips JSON schema validation (Helm's --skip-schema-validation)
             */
            skipSchemaValidation?: boolean;
            /**
             * SkipTests skips test manifest installation step (Helm's --skip-tests).
             */
            skipTests?: boolean;
            /**
             * ValuesFiles is a list of Helm value files to use when generating a template
             */
            valueFiles?: string[];
            /**
             * Values specifies Helm values to be passed to helm template, typically defined as a block. ValuesObject takes precedence over Values, so use one or the other.
             */
            values?: string;
            /**
             * ValuesObject specifies Helm values to be passed to helm template, defined as a map. This takes precedence over Values.
             */
            valuesObject?: {};
            /**
             * Version is the Helm version to use for templating ("3")
             */
            version?: string;
          };
          /**
           * Kustomize holds kustomize specific options
           */
          kustomize?: {
            /**
             * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
             * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
             */
            apiVersions?: string[];
            /**
             * CommonAnnotations is a list of additional annotations to add to rendered manifests
             */
            commonAnnotations?: {
              [k: string]: string;
            };
            /**
             * CommonAnnotationsEnvsubst specifies whether to apply env variables substitution for annotation values
             */
            commonAnnotationsEnvsubst?: boolean;
            /**
             * CommonLabels is a list of additional labels to add to rendered manifests
             */
            commonLabels?: {
              [k: string]: string;
            };
            /**
             * Components specifies a list of kustomize components to add to the kustomization before building
             */
            components?: string[];
            /**
             * ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps
             */
            forceCommonAnnotations?: boolean;
            /**
             * ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps
             */
            forceCommonLabels?: boolean;
            /**
             * IgnoreMissingComponents prevents kustomize from failing when components do not exist locally by not appending them to kustomization file
             */
            ignoreMissingComponents?: boolean;
            /**
             * Images is a list of Kustomize image override specifications
             */
            images?: string[];
            /**
             * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
             * uses the Kubernetes version of the target cluster.
             */
            kubeVersion?: string;
            /**
             * LabelIncludeTemplates specifies whether to apply common labels to resource templates or not
             */
            labelIncludeTemplates?: boolean;
            /**
             * LabelWithoutSelector specifies whether to apply common labels to resource selectors or not
             */
            labelWithoutSelector?: boolean;
            /**
             * NamePrefix is a prefix appended to resources for Kustomize apps
             */
            namePrefix?: string;
            /**
             * NameSuffix is a suffix appended to resources for Kustomize apps
             */
            nameSuffix?: string;
            /**
             * Namespace sets the namespace that Kustomize adds to all resources
             */
            namespace?: string;
            /**
             * Patches is a list of Kustomize patches
             */
            patches?: {
              options?: {
                [k: string]: boolean;
              };
              patch?: string;
              path?: string;
              target?: {
                annotationSelector?: string;
                group?: string;
                kind?: string;
                labelSelector?: string;
                name?: string;
                namespace?: string;
                version?: string;
              };
            }[];
            /**
             * Replicas is a list of Kustomize Replicas override specifications
             */
            replicas?: {
              /**
               * Number of replicas
               */
              count: number | string;
              /**
               * Name of Deployment or StatefulSet
               */
              name: string;
            }[];
            /**
             * Version controls which version of Kustomize to use for rendering manifests
             */
            version?: string;
          };
          /**
           * Name is used to refer to a source and is displayed in the UI. It is used in multi-source Applications.
           */
          name?: string;
          /**
           * Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
           */
          path?: string;
          /**
           * Plugin holds config management plugin specific options
           */
          plugin?: {
            /**
             * Env is a list of environment variable entries
             */
            env?: {
              /**
               * Name is the name of the variable, usually expressed in uppercase
               */
              name: string;
              /**
               * Value is the value of the variable
               */
              value: string;
            }[];
            name?: string;
            parameters?: {
              /**
               * Array is the value of an array type parameter.
               */
              array?: string[];
              /**
               * Map is the value of a map type parameter.
               */
              map?: {
                [k: string]: string;
              };
              /**
               * Name is the name identifying a parameter.
               */
              name?: string;
              /**
               * String_ is the value of a string type parameter.
               */
              string?: string;
            }[];
          };
          /**
           * Ref is reference to another source within sources field. This field will not be used if used with a `source` tag.
           */
          ref?: string;
          /**
           * RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
           */
          repoURL: string;
          /**
           * TargetRevision defines the revision of the source to sync the application to.
           * In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.
           * In case of Helm, this is a semver tag for the Chart's version.
           */
          targetRevision?: string;
        }[];
      };
    };
    /**
     * ReconciledAt indicates when the application state was reconciled using the latest git version
     */
    reconciledAt?: string;
    /**
     * ResourceHealthSource indicates where the resource health status is stored: inline if not set or appTree
     */
    resourceHealthSource?: string;
    /**
     * Resources is a list of Kubernetes resources managed by this application
     */
    resources?: {
      /**
       * Group represents the API group of the resource (e.g., "apps" for Deployments).
       */
      group?: string;
      /**
       * Health indicates the health status of the resource (e.g., Healthy, Degraded, Progressing).
       */
      health?: {
        /**
         * LastTransitionTime is the time the HealthStatus was set or updated
         */
        lastTransitionTime?: string;
        /**
         * Message is a human-readable informational message describing the health status
         */
        message?: string;
        /**
         * Status holds the status code of the application or resource
         */
        status?: string;
      };
      /**
       * Hook is true if the resource is used as a lifecycle hook in an Argo CD application.
       */
      hook?: boolean;
      /**
       * Kind specifies the type of the resource (e.g., "Deployment", "Service").
       */
      kind?: string;
      /**
       * Name is the unique name of the resource within the namespace.
       */
      name?: string;
      /**
       * Namespace defines the Kubernetes namespace where the resource is located.
       */
      namespace?: string;
      /**
       * RequiresDeletionConfirmation is true if the resource requires explicit user confirmation before deletion.
       */
      requiresDeletionConfirmation?: boolean;
      /**
       * RequiresPruning is true if the resource needs to be pruned (deleted) as part of synchronization.
       */
      requiresPruning?: boolean;
      /**
       * Status represents the synchronization state of the resource (e.g., Synced, OutOfSync).
       */
      status?: string;
      /**
       * SyncWave determines the order in which resources are applied during a sync operation.
       * Lower values are applied first.
       */
      syncWave?: number;
      /**
       * Version indicates the API version of the resource (e.g., "v1", "v1beta1").
       */
      version?: string;
    }[];
    /**
     * SourceHydrator stores information about the current state of source hydration
     */
    sourceHydrator?: {
      /**
       * CurrentOperation holds the status of the hydrate operation
       */
      currentOperation?: {
        /**
         * DrySHA holds the resolved revision (sha) of the dry source as of the most recent reconciliation
         */
        drySHA?: string;
        /**
         * FinishedAt indicates when the hydrate operation finished
         */
        finishedAt?: string;
        /**
         * HydratedSHA holds the resolved revision (sha) of the hydrated source as of the most recent reconciliation
         */
        hydratedSHA?: string;
        /**
         * Message contains a message describing the current status of the hydrate operation
         */
        message: string;
        /**
         * Phase indicates the status of the hydrate operation
         */
        phase: string;
        /**
         * SourceHydrator holds the hydrator config used for the hydrate operation
         */
        sourceHydrator?: {
          /**
           * DrySource specifies where the dry "don't repeat yourself" manifest source lives.
           */
          drySource: {
            /**
             * Path is a directory path within the Git repository where the manifests are located
             */
            path: string;
            /**
             * RepoURL is the URL to the git repository that contains the application manifests
             */
            repoURL: string;
            /**
             * TargetRevision defines the revision of the source to hydrate
             */
            targetRevision: string;
          };
          /**
           * HydrateTo specifies an optional "staging" location to push hydrated manifests to. An external system would then
           * have to move manifests to the SyncSource, e.g. by pull request.
           */
          hydrateTo?: {
            /**
             * TargetBranch is the branch to which hydrated manifests should be committed
             */
            targetBranch: string;
          };
          /**
           * SyncSource specifies where to sync hydrated manifests from.
           */
          syncSource: {
            /**
             * Path is a directory path within the git repository where hydrated manifests should be committed to and synced
             * from. If hydrateTo is set, this is just the path from which hydrated manifests will be synced.
             */
            path: string;
            /**
             * TargetBranch is the branch to which hydrated manifests should be committed
             */
            targetBranch: string;
          };
        };
        /**
         * StartedAt indicates when the hydrate operation started
         */
        startedAt?: string;
      };
      /**
       * LastSuccessfulOperation holds info about the most recent successful hydration
       */
      lastSuccessfulOperation?: {
        /**
         * DrySHA holds the resolved revision (sha) of the dry source as of the most recent reconciliation
         */
        drySHA?: string;
        /**
         * HydratedSHA holds the resolved revision (sha) of the hydrated source as of the most recent reconciliation
         */
        hydratedSHA?: string;
        /**
         * SourceHydrator holds the hydrator config used for the hydrate operation
         */
        sourceHydrator?: {
          /**
           * DrySource specifies where the dry "don't repeat yourself" manifest source lives.
           */
          drySource: {
            /**
             * Path is a directory path within the Git repository where the manifests are located
             */
            path: string;
            /**
             * RepoURL is the URL to the git repository that contains the application manifests
             */
            repoURL: string;
            /**
             * TargetRevision defines the revision of the source to hydrate
             */
            targetRevision: string;
          };
          /**
           * HydrateTo specifies an optional "staging" location to push hydrated manifests to. An external system would then
           * have to move manifests to the SyncSource, e.g. by pull request.
           */
          hydrateTo?: {
            /**
             * TargetBranch is the branch to which hydrated manifests should be committed
             */
            targetBranch: string;
          };
          /**
           * SyncSource specifies where to sync hydrated manifests from.
           */
          syncSource: {
            /**
             * Path is a directory path within the git repository where hydrated manifests should be committed to and synced
             * from. If hydrateTo is set, this is just the path from which hydrated manifests will be synced.
             */
            path: string;
            /**
             * TargetBranch is the branch to which hydrated manifests should be committed
             */
            targetBranch: string;
          };
        };
      };
    };
    /**
     * SourceType specifies the type of this application
     */
    sourceType?: string;
    /**
     * SourceTypes specifies the type of the sources included in the application
     */
    sourceTypes?: string[];
    /**
     * Summary contains a list of URLs and container images used by this application
     */
    summary?: {
      /**
       * ExternalURLs holds all external URLs of application child resources.
       */
      externalURLs?: string[];
      /**
       * Images holds all images of application child resources.
       */
      images?: string[];
    };
    /**
     * Sync contains information about the application's current sync status
     */
    sync?: {
      /**
       * ComparedTo contains information about what has been compared
       */
      comparedTo?: {
        /**
         * Destination is a reference to the application's destination used for comparison
         */
        destination: {
          /**
           * Name is an alternate way of specifying the target cluster by its symbolic name. This must be set if Server is not set.
           */
          name?: string;
          /**
           * Namespace specifies the target namespace for the application's resources.
           * The namespace will only be set for namespace-scoped resources that have not set a value for .metadata.namespace
           */
          namespace?: string;
          /**
           * Server specifies the URL of the target cluster's Kubernetes control plane API. This must be set if Name is not set.
           */
          server?: string;
        };
        /**
         * IgnoreDifferences is a reference to the application's ignored differences used for comparison
         */
        ignoreDifferences?: {
          group?: string;
          jqPathExpressions?: string[];
          jsonPointers?: string[];
          kind: string;
          /**
           * ManagedFieldsManagers is a list of trusted managers. Fields mutated by those managers will take precedence over the
           * desired state defined in the SCM and won't be displayed in diffs
           */
          managedFieldsManagers?: string[];
          name?: string;
          namespace?: string;
        }[];
        /**
         * Source is a reference to the application's source used for comparison
         */
        source?: {
          /**
           * Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
           */
          chart?: string;
          /**
           * Directory holds path/directory specific options
           */
          directory?: {
            /**
             * Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
             */
            exclude?: string;
            /**
             * Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
             */
            include?: string;
            /**
             * Jsonnet holds options specific to Jsonnet
             */
            jsonnet?: {
              /**
               * ExtVars is a list of Jsonnet External Variables
               */
              extVars?: {
                code?: boolean;
                name: string;
                value: string;
              }[];
              /**
               * Additional library search dirs
               */
              libs?: string[];
              /**
               * TLAS is a list of Jsonnet Top-level Arguments
               */
              tlas?: {
                code?: boolean;
                name: string;
                value: string;
              }[];
            };
            /**
             * Recurse specifies whether to scan a directory recursively for manifests
             */
            recurse?: boolean;
          };
          /**
           * Helm holds helm specific options
           */
          helm?: {
            /**
             * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
             * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
             */
            apiVersions?: string[];
            /**
             * FileParameters are file parameters to the helm template
             */
            fileParameters?: {
              /**
               * Name is the name of the Helm parameter
               */
              name?: string;
              /**
               * Path is the path to the file containing the values for the Helm parameter
               */
              path?: string;
            }[];
            /**
             * IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values
             */
            ignoreMissingValueFiles?: boolean;
            /**
             * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
             * uses the Kubernetes version of the target cluster.
             */
            kubeVersion?: string;
            /**
             * Namespace is an optional namespace to template with. If left empty, defaults to the app's destination namespace.
             */
            namespace?: string;
            /**
             * Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
             */
            parameters?: {
              /**
               * ForceString determines whether to tell Helm to interpret booleans and numbers as strings
               */
              forceString?: boolean;
              /**
               * Name is the name of the Helm parameter
               */
              name?: string;
              /**
               * Value is the value for the Helm parameter
               */
              value?: string;
            }[];
            /**
             * PassCredentials pass credentials to all domains (Helm's --pass-credentials)
             */
            passCredentials?: boolean;
            /**
             * ReleaseName is the Helm release name to use. If omitted it will use the application name
             */
            releaseName?: string;
            /**
             * SkipCrds skips custom resource definition installation step (Helm's --skip-crds)
             */
            skipCrds?: boolean;
            /**
             * SkipSchemaValidation skips JSON schema validation (Helm's --skip-schema-validation)
             */
            skipSchemaValidation?: boolean;
            /**
             * SkipTests skips test manifest installation step (Helm's --skip-tests).
             */
            skipTests?: boolean;
            /**
             * ValuesFiles is a list of Helm value files to use when generating a template
             */
            valueFiles?: string[];
            /**
             * Values specifies Helm values to be passed to helm template, typically defined as a block. ValuesObject takes precedence over Values, so use one or the other.
             */
            values?: string;
            /**
             * ValuesObject specifies Helm values to be passed to helm template, defined as a map. This takes precedence over Values.
             */
            valuesObject?: {};
            /**
             * Version is the Helm version to use for templating ("3")
             */
            version?: string;
          };
          /**
           * Kustomize holds kustomize specific options
           */
          kustomize?: {
            /**
             * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
             * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
             */
            apiVersions?: string[];
            /**
             * CommonAnnotations is a list of additional annotations to add to rendered manifests
             */
            commonAnnotations?: {
              [k: string]: string;
            };
            /**
             * CommonAnnotationsEnvsubst specifies whether to apply env variables substitution for annotation values
             */
            commonAnnotationsEnvsubst?: boolean;
            /**
             * CommonLabels is a list of additional labels to add to rendered manifests
             */
            commonLabels?: {
              [k: string]: string;
            };
            /**
             * Components specifies a list of kustomize components to add to the kustomization before building
             */
            components?: string[];
            /**
             * ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps
             */
            forceCommonAnnotations?: boolean;
            /**
             * ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps
             */
            forceCommonLabels?: boolean;
            /**
             * IgnoreMissingComponents prevents kustomize from failing when components do not exist locally by not appending them to kustomization file
             */
            ignoreMissingComponents?: boolean;
            /**
             * Images is a list of Kustomize image override specifications
             */
            images?: string[];
            /**
             * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
             * uses the Kubernetes version of the target cluster.
             */
            kubeVersion?: string;
            /**
             * LabelIncludeTemplates specifies whether to apply common labels to resource templates or not
             */
            labelIncludeTemplates?: boolean;
            /**
             * LabelWithoutSelector specifies whether to apply common labels to resource selectors or not
             */
            labelWithoutSelector?: boolean;
            /**
             * NamePrefix is a prefix appended to resources for Kustomize apps
             */
            namePrefix?: string;
            /**
             * NameSuffix is a suffix appended to resources for Kustomize apps
             */
            nameSuffix?: string;
            /**
             * Namespace sets the namespace that Kustomize adds to all resources
             */
            namespace?: string;
            /**
             * Patches is a list of Kustomize patches
             */
            patches?: {
              options?: {
                [k: string]: boolean;
              };
              patch?: string;
              path?: string;
              target?: {
                annotationSelector?: string;
                group?: string;
                kind?: string;
                labelSelector?: string;
                name?: string;
                namespace?: string;
                version?: string;
              };
            }[];
            /**
             * Replicas is a list of Kustomize Replicas override specifications
             */
            replicas?: {
              /**
               * Number of replicas
               */
              count: number | string;
              /**
               * Name of Deployment or StatefulSet
               */
              name: string;
            }[];
            /**
             * Version controls which version of Kustomize to use for rendering manifests
             */
            version?: string;
          };
          /**
           * Name is used to refer to a source and is displayed in the UI. It is used in multi-source Applications.
           */
          name?: string;
          /**
           * Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
           */
          path?: string;
          /**
           * Plugin holds config management plugin specific options
           */
          plugin?: {
            /**
             * Env is a list of environment variable entries
             */
            env?: {
              /**
               * Name is the name of the variable, usually expressed in uppercase
               */
              name: string;
              /**
               * Value is the value of the variable
               */
              value: string;
            }[];
            name?: string;
            parameters?: {
              /**
               * Array is the value of an array type parameter.
               */
              array?: string[];
              /**
               * Map is the value of a map type parameter.
               */
              map?: {
                [k: string]: string;
              };
              /**
               * Name is the name identifying a parameter.
               */
              name?: string;
              /**
               * String_ is the value of a string type parameter.
               */
              string?: string;
            }[];
          };
          /**
           * Ref is reference to another source within sources field. This field will not be used if used with a `source` tag.
           */
          ref?: string;
          /**
           * RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
           */
          repoURL: string;
          /**
           * TargetRevision defines the revision of the source to sync the application to.
           * In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.
           * In case of Helm, this is a semver tag for the Chart's version.
           */
          targetRevision?: string;
        };
        /**
         * Sources is a reference to the application's multiple sources used for comparison
         */
        sources?: {
          /**
           * Chart is a Helm chart name, and must be specified for applications sourced from a Helm repo.
           */
          chart?: string;
          /**
           * Directory holds path/directory specific options
           */
          directory?: {
            /**
             * Exclude contains a glob pattern to match paths against that should be explicitly excluded from being used during manifest generation
             */
            exclude?: string;
            /**
             * Include contains a glob pattern to match paths against that should be explicitly included during manifest generation
             */
            include?: string;
            /**
             * Jsonnet holds options specific to Jsonnet
             */
            jsonnet?: {
              /**
               * ExtVars is a list of Jsonnet External Variables
               */
              extVars?: {
                code?: boolean;
                name: string;
                value: string;
              }[];
              /**
               * Additional library search dirs
               */
              libs?: string[];
              /**
               * TLAS is a list of Jsonnet Top-level Arguments
               */
              tlas?: {
                code?: boolean;
                name: string;
                value: string;
              }[];
            };
            /**
             * Recurse specifies whether to scan a directory recursively for manifests
             */
            recurse?: boolean;
          };
          /**
           * Helm holds helm specific options
           */
          helm?: {
            /**
             * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
             * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
             */
            apiVersions?: string[];
            /**
             * FileParameters are file parameters to the helm template
             */
            fileParameters?: {
              /**
               * Name is the name of the Helm parameter
               */
              name?: string;
              /**
               * Path is the path to the file containing the values for the Helm parameter
               */
              path?: string;
            }[];
            /**
             * IgnoreMissingValueFiles prevents helm template from failing when valueFiles do not exist locally by not appending them to helm template --values
             */
            ignoreMissingValueFiles?: boolean;
            /**
             * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
             * uses the Kubernetes version of the target cluster.
             */
            kubeVersion?: string;
            /**
             * Namespace is an optional namespace to template with. If left empty, defaults to the app's destination namespace.
             */
            namespace?: string;
            /**
             * Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
             */
            parameters?: {
              /**
               * ForceString determines whether to tell Helm to interpret booleans and numbers as strings
               */
              forceString?: boolean;
              /**
               * Name is the name of the Helm parameter
               */
              name?: string;
              /**
               * Value is the value for the Helm parameter
               */
              value?: string;
            }[];
            /**
             * PassCredentials pass credentials to all domains (Helm's --pass-credentials)
             */
            passCredentials?: boolean;
            /**
             * ReleaseName is the Helm release name to use. If omitted it will use the application name
             */
            releaseName?: string;
            /**
             * SkipCrds skips custom resource definition installation step (Helm's --skip-crds)
             */
            skipCrds?: boolean;
            /**
             * SkipSchemaValidation skips JSON schema validation (Helm's --skip-schema-validation)
             */
            skipSchemaValidation?: boolean;
            /**
             * SkipTests skips test manifest installation step (Helm's --skip-tests).
             */
            skipTests?: boolean;
            /**
             * ValuesFiles is a list of Helm value files to use when generating a template
             */
            valueFiles?: string[];
            /**
             * Values specifies Helm values to be passed to helm template, typically defined as a block. ValuesObject takes precedence over Values, so use one or the other.
             */
            values?: string;
            /**
             * ValuesObject specifies Helm values to be passed to helm template, defined as a map. This takes precedence over Values.
             */
            valuesObject?: {};
            /**
             * Version is the Helm version to use for templating ("3")
             */
            version?: string;
          };
          /**
           * Kustomize holds kustomize specific options
           */
          kustomize?: {
            /**
             * APIVersions specifies the Kubernetes resource API versions to pass to Helm when templating manifests. By default,
             * Argo CD uses the API versions of the target cluster. The format is [group/]version/kind.
             */
            apiVersions?: string[];
            /**
             * CommonAnnotations is a list of additional annotations to add to rendered manifests
             */
            commonAnnotations?: {
              [k: string]: string;
            };
            /**
             * CommonAnnotationsEnvsubst specifies whether to apply env variables substitution for annotation values
             */
            commonAnnotationsEnvsubst?: boolean;
            /**
             * CommonLabels is a list of additional labels to add to rendered manifests
             */
            commonLabels?: {
              [k: string]: string;
            };
            /**
             * Components specifies a list of kustomize components to add to the kustomization before building
             */
            components?: string[];
            /**
             * ForceCommonAnnotations specifies whether to force applying common annotations to resources for Kustomize apps
             */
            forceCommonAnnotations?: boolean;
            /**
             * ForceCommonLabels specifies whether to force applying common labels to resources for Kustomize apps
             */
            forceCommonLabels?: boolean;
            /**
             * IgnoreMissingComponents prevents kustomize from failing when components do not exist locally by not appending them to kustomization file
             */
            ignoreMissingComponents?: boolean;
            /**
             * Images is a list of Kustomize image override specifications
             */
            images?: string[];
            /**
             * KubeVersion specifies the Kubernetes API version to pass to Helm when templating manifests. By default, Argo CD
             * uses the Kubernetes version of the target cluster.
             */
            kubeVersion?: string;
            /**
             * LabelIncludeTemplates specifies whether to apply common labels to resource templates or not
             */
            labelIncludeTemplates?: boolean;
            /**
             * LabelWithoutSelector specifies whether to apply common labels to resource selectors or not
             */
            labelWithoutSelector?: boolean;
            /**
             * NamePrefix is a prefix appended to resources for Kustomize apps
             */
            namePrefix?: string;
            /**
             * NameSuffix is a suffix appended to resources for Kustomize apps
             */
            nameSuffix?: string;
            /**
             * Namespace sets the namespace that Kustomize adds to all resources
             */
            namespace?: string;
            /**
             * Patches is a list of Kustomize patches
             */
            patches?: {
              options?: {
                [k: string]: boolean;
              };
              patch?: string;
              path?: string;
              target?: {
                annotationSelector?: string;
                group?: string;
                kind?: string;
                labelSelector?: string;
                name?: string;
                namespace?: string;
                version?: string;
              };
            }[];
            /**
             * Replicas is a list of Kustomize Replicas override specifications
             */
            replicas?: {
              /**
               * Number of replicas
               */
              count: number | string;
              /**
               * Name of Deployment or StatefulSet
               */
              name: string;
            }[];
            /**
             * Version controls which version of Kustomize to use for rendering manifests
             */
            version?: string;
          };
          /**
           * Name is used to refer to a source and is displayed in the UI. It is used in multi-source Applications.
           */
          name?: string;
          /**
           * Path is a directory path within the Git repository, and is only valid for applications sourced from Git.
           */
          path?: string;
          /**
           * Plugin holds config management plugin specific options
           */
          plugin?: {
            /**
             * Env is a list of environment variable entries
             */
            env?: {
              /**
               * Name is the name of the variable, usually expressed in uppercase
               */
              name: string;
              /**
               * Value is the value of the variable
               */
              value: string;
            }[];
            name?: string;
            parameters?: {
              /**
               * Array is the value of an array type parameter.
               */
              array?: string[];
              /**
               * Map is the value of a map type parameter.
               */
              map?: {
                [k: string]: string;
              };
              /**
               * Name is the name identifying a parameter.
               */
              name?: string;
              /**
               * String_ is the value of a string type parameter.
               */
              string?: string;
            }[];
          };
          /**
           * Ref is reference to another source within sources field. This field will not be used if used with a `source` tag.
           */
          ref?: string;
          /**
           * RepoURL is the URL to the repository (Git or Helm) that contains the application manifests
           */
          repoURL: string;
          /**
           * TargetRevision defines the revision of the source to sync the application to.
           * In case of Git, this can be commit, tag, or branch. If omitted, will equal to HEAD.
           * In case of Helm, this is a semver tag for the Chart's version.
           */
          targetRevision?: string;
        }[];
      };
      /**
       * Revision contains information about the revision the comparison has been performed to
       */
      revision?: string;
      /**
       * Revisions contains information about the revisions of multiple sources the comparison has been performed to
       */
      revisions?: string[];
      /**
       * Status is the sync state of the comparison
       */
      status: string;
    };
  };
}
