import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../../types/input";
import * as outputs from "../../types/output";
/**
 * A `Release` is an instance of a chart running in a Kubernetes cluster. A `Chart` is a Helm package. It contains all the
 * resource definitions necessary to run an application, tool, or service inside a Kubernetes cluster.
 *
 * This resource models a Helm Release as if it were created by the Helm CLI. The underlying implementation embeds Helm as
 * a library to perform the orchestration of the resources. As a result, the full spectrum of Helm features are supported
 * natively.
 *
 * You may also want to consider the `Chart` resource as an alternative method for managing helm charts. For more information about the trade-offs between these options see: [Choosing the right Helm resource for your use case](https://www.pulumi.com/registry/packages/kubernetes/how-to-guides/choosing-the-right-helm-resource-for-your-use-case)
 *
 * ## Example Usage
 * ### Local Chart Directory
 *
 * ```typescript
 * import * as k8s from "@pulumi/kubernetes";
 *
 * const nginxIngress = new k8s.helm.v3.Release("nginx-ingress", {
 *     chart: "./nginx-ingress",
 * });
 * ```
 * ### Remote Chart
 *
 * ```typescript
 * import * as k8s from "@pulumi/kubernetes";
 *
 * const nginxIngress = new k8s.helm.v3.Release("nginx-ingress", {
 *     chart: "nginx-ingress",
 *     version: "1.24.4",
 *     repositoryOpts: {
 *         repo: "https://charts.helm.sh/stable",
 *     },
 * });
 * ```
 * ### Set Chart Values
 *
 * ```typescript
 * import * as k8s from "@pulumi/kubernetes";
 *
 * const nginxIngress = new k8s.helm.v3.Release("nginx-ingress", {
 *     chart: "nginx-ingress",
 *     version: "1.24.4",
 *     repositoryOpts: {
 *         repo: "https://charts.helm.sh/stable",
 *     },
 *     values: {
 *         controller: {
 *             metrics: {
 *                 enabled: true,
 *             }
 *         }
 *     },
 * });
 * ```
 * ### Deploy Chart into Namespace
 *
 * ```typescript
 * import * as k8s from "@pulumi/kubernetes";
 *
 * const nginxIngress = new k8s.helm.v3.Release("nginx-ingress", {
 *     chart: "nginx-ingress",
 *     version: "1.24.4",
 *     namespace: "test-namespace",
 *     repositoryOpts: {
 *         repo: "https://charts.helm.sh/stable",
 *     },
 * });
 * ```
 *
 * ### Depend on a Chart resource
 *
 * ```typescript
 * import * as k8s from "@pulumi/kubernetes";
 *
 * const nginxIngress = new k8s.helm.v3.Release("nginx-ingress", {
 *     chart: "nginx-ingress",
 *     version: "1.24.4",
 *     namespace: "test-namespace",
 *     repositoryOpts: {
 *         repo: "https://charts.helm.sh/stable",
 *     },
 *     skipAwait: false,
 * });
 *
 * // Create a ConfigMap depending on the Chart. The ConfigMap will not be created until after all of the Chart
 * // resources are ready. Notice skipAwait is set to false above. This is the default and will cause Helm
 * // to await the underlying resources to be available. Setting it to true will make the ConfigMap available right away.
 * new k8s.core.v1.ConfigMap("foo", {
 *     metadata: {namespace: namespaceName},
 *     data: {foo: "bar"}
 * }, {dependsOn: nginxIngress})
 * ```
 * ### Specify Helm Chart Values in File and Code
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as k8s from "@pulumi/kubernetes";
 * import {FileAsset} from "@pulumi/pulumi/asset";
 *
 * const release = new k8s.helm.v3.Release("redis", {
 *     chart: "redis",
 *     repositoryOpts: {
 *         repo: "https://raw.githubusercontent.com/bitnami/charts/eb5f9a9513d987b519f0ecd732e7031241c50328/bitnami",
 *     },
 *     valueYamlFiles: [new FileAsset("./metrics.yml")],
 *     values: {
 *         cluster: {
 *             enabled: true,
 *         },
 *         rbac: {
 *             create: true,
 *         }
 *     },
 * });
 *
 * // -- Contents of metrics.yml --
 * // metrics:
 * //     enabled: true
 * ```
 * ### Query Kubernetes Resource Installed By Helm Chart
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as k8s from "@pulumi/kubernetes";
 * import {FileAsset} from "@pulumi/pulumi/asset";
 *
 * const redis = new k8s.helm.v3.Release("redis", {
 *     chart: "redis",
 *     repositoryOpts: {
 *         repo: "https://raw.githubusercontent.com/bitnami/charts/eb5f9a9513d987b519f0ecd732e7031241c50328/bitnami",
 *     },
 *     values: {
 *         cluster: {
 *             enabled: true,
 *         },
 *         rbac: {
 *             create: true,
 *         }
 *     },
 * });
 *
 * // srv will only resolve after the redis chart is installed.
 * const srv = k8s.core.v1.Service.get("redis-master-svc", pulumi.interpolate`${redis.status.namespace}/${redis.status.name}-master`);
 * export const redisMasterClusterIP = srv.spec.clusterIP;
 * ```
 *
 * ## Import
 *
 * An existing Helm Release resource can be imported using its `type token`, `name` and identifier, e.g.
 *
 * ```sh
 * $ pulumi import kubernetes:helm.sh/v3:Release myRelease <namespace>/<releaseName>
 * ```
 */
export declare class Release extends pulumi.CustomResource {
    /**
     * Get an existing Release resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, opts?: pulumi.CustomResourceOptions): Release;
    /**
     * Returns true if the given object is an instance of Release.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is Release;
    /**
     * Whether to allow Null values in helm chart configs.
     */
    readonly allowNullValues: pulumi.Output<boolean>;
    /**
     * If set, installation process purges chart on fail. `skipAwait` will be disabled automatically if atomic is used.
     */
    readonly atomic: pulumi.Output<boolean>;
    /**
     * Chart name to be installed. A path may be used.
     */
    readonly chart: pulumi.Output<string>;
    /**
     * Allow deletion of new resources created in this upgrade when upgrade fails.
     */
    readonly cleanupOnFail: pulumi.Output<boolean>;
    /**
     * Create the namespace if it does not exist.
     */
    readonly createNamespace: pulumi.Output<boolean>;
    /**
     * Run helm dependency update before installing the chart.
     */
    readonly dependencyUpdate: pulumi.Output<boolean>;
    /**
     * Add a custom description
     */
    readonly description: pulumi.Output<string>;
    /**
     * Use chart development versions, too. Equivalent to version '>0.0.0-0'. If `version` is set, this is ignored.
     */
    readonly devel: pulumi.Output<boolean>;
    /**
     * Prevent CRD hooks from running, but run other hooks.  See helm install --no-crd-hook
     */
    readonly disableCRDHooks: pulumi.Output<boolean>;
    /**
     * If set, the installation process will not validate rendered templates against the Kubernetes OpenAPI Schema
     */
    readonly disableOpenapiValidation: pulumi.Output<boolean>;
    /**
     * Prevent hooks from running.
     */
    readonly disableWebhooks: pulumi.Output<boolean>;
    /**
     * Force resource update through delete/recreate if needed.
     */
    readonly forceUpdate: pulumi.Output<boolean>;
    /**
     * Location of public keys used for verification. Used only if `verify` is true
     */
    readonly keyring: pulumi.Output<string>;
    /**
     * Run helm lint when planning.
     */
    readonly lint: pulumi.Output<boolean>;
    /**
     * The rendered manifests as JSON. Not yet supported.
     */
    readonly manifest: pulumi.Output<{
        [key: string]: any;
    }>;
    /**
     * Limit the maximum number of revisions saved per release. Use 0 for no limit.
     */
    readonly maxHistory: pulumi.Output<number>;
    /**
     * Release name.
     */
    readonly name: pulumi.Output<string>;
    /**
     * Namespace to install the release into.
     */
    readonly namespace: pulumi.Output<string>;
    /**
     * Postrender command to run.
     */
    readonly postrender: pulumi.Output<string>;
    /**
     * Perform pods restart during upgrade/rollback.
     */
    readonly recreatePods: pulumi.Output<boolean>;
    /**
     * If set, render subchart notes along with the parent.
     */
    readonly renderSubchartNotes: pulumi.Output<boolean>;
    /**
     * Re-use the given name, even if that name is already used. This is unsafe in production
     */
    readonly replace: pulumi.Output<boolean>;
    /**
     * Specification defining the Helm chart repository to use.
     */
    readonly repositoryOpts: pulumi.Output<outputs.helm.v3.RepositoryOpts>;
    /**
     * When upgrading, reset the values to the ones built into the chart.
     */
    readonly resetValues: pulumi.Output<boolean>;
    /**
     * Names of resources created by the release grouped by "kind/version".
     */
    readonly resourceNames: pulumi.Output<{
        [key: string]: string[];
    }>;
    /**
     * When upgrading, reuse the last release's values and merge in any overrides. If 'resetValues' is specified, this is ignored
     */
    readonly reuseValues: pulumi.Output<boolean>;
    /**
     * By default, the provider waits until all resources are in a ready state before marking the release as successful. Setting this to true will skip such await logic.
     */
    readonly skipAwait: pulumi.Output<boolean>;
    /**
     * If set, no CRDs will be installed. By default, CRDs are installed if not already present.
     */
    readonly skipCrds: pulumi.Output<boolean>;
    /**
     * Status of the deployed release.
     */
    readonly status: pulumi.Output<outputs.helm.v3.ReleaseStatus>;
    /**
     * Time in seconds to wait for any individual kubernetes operation.
     */
    readonly timeout: pulumi.Output<number>;
    /**
     * List of assets (raw yaml files). Content is read and merged with values (with values taking precedence).
     */
    readonly valueYamlFiles: pulumi.Output<(pulumi.asset.Asset | pulumi.asset.Archive)[]>;
    /**
     * Custom values set for the release.
     */
    readonly values: pulumi.Output<{
        [key: string]: any;
    }>;
    /**
     * Verify the package before installing it.
     */
    readonly verify: pulumi.Output<boolean>;
    /**
     * Specify the exact chart version to install. If this is not specified, the latest version is installed.
     */
    readonly version: pulumi.Output<string>;
    /**
     * Will wait until all Jobs have been completed before marking the release as successful. This is ignored if `skipAwait` is enabled.
     */
    readonly waitForJobs: pulumi.Output<boolean>;
    /**
     * Create a Release resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args?: ReleaseArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * The set of arguments for constructing a Release resource.
 */
export interface ReleaseArgs {
    /**
     * Whether to allow Null values in helm chart configs.
     */
    allowNullValues?: pulumi.Input<boolean>;
    /**
     * If set, installation process purges chart on fail. `skipAwait` will be disabled automatically if atomic is used.
     */
    atomic?: pulumi.Input<boolean>;
    /**
     * Chart name to be installed. A path may be used.
     */
    chart: pulumi.Input<string>;
    /**
     * Allow deletion of new resources created in this upgrade when upgrade fails.
     */
    cleanupOnFail?: pulumi.Input<boolean>;
    compat?: pulumi.Input<"true">;
    /**
     * Create the namespace if it does not exist.
     */
    createNamespace?: pulumi.Input<boolean>;
    /**
     * Run helm dependency update before installing the chart.
     */
    dependencyUpdate?: pulumi.Input<boolean>;
    /**
     * Add a custom description
     */
    description?: pulumi.Input<string>;
    /**
     * Use chart development versions, too. Equivalent to version '>0.0.0-0'. If `version` is set, this is ignored.
     */
    devel?: pulumi.Input<boolean>;
    /**
     * Prevent CRD hooks from running, but run other hooks.  See helm install --no-crd-hook
     */
    disableCRDHooks?: pulumi.Input<boolean>;
    /**
     * If set, the installation process will not validate rendered templates against the Kubernetes OpenAPI Schema
     */
    disableOpenapiValidation?: pulumi.Input<boolean>;
    /**
     * Prevent hooks from running.
     */
    disableWebhooks?: pulumi.Input<boolean>;
    /**
     * Force resource update through delete/recreate if needed.
     */
    forceUpdate?: pulumi.Input<boolean>;
    /**
     * Location of public keys used for verification. Used only if `verify` is true
     */
    keyring?: pulumi.Input<string>;
    /**
     * Run helm lint when planning.
     */
    lint?: pulumi.Input<boolean>;
    /**
     * The rendered manifests as JSON. Not yet supported.
     */
    manifest?: pulumi.Input<{
        [key: string]: any;
    }>;
    /**
     * Limit the maximum number of revisions saved per release. Use 0 for no limit.
     */
    maxHistory?: pulumi.Input<number>;
    /**
     * Release name.
     */
    name?: pulumi.Input<string>;
    /**
     * Namespace to install the release into.
     */
    namespace?: pulumi.Input<string>;
    /**
     * Postrender command to run.
     */
    postrender?: pulumi.Input<string>;
    /**
     * Perform pods restart during upgrade/rollback.
     */
    recreatePods?: pulumi.Input<boolean>;
    /**
     * If set, render subchart notes along with the parent.
     */
    renderSubchartNotes?: pulumi.Input<boolean>;
    /**
     * Re-use the given name, even if that name is already used. This is unsafe in production
     */
    replace?: pulumi.Input<boolean>;
    /**
     * Specification defining the Helm chart repository to use.
     */
    repositoryOpts?: pulumi.Input<inputs.helm.v3.RepositoryOpts>;
    /**
     * When upgrading, reset the values to the ones built into the chart.
     */
    resetValues?: pulumi.Input<boolean>;
    /**
     * Names of resources created by the release grouped by "kind/version".
     */
    resourceNames?: pulumi.Input<{
        [key: string]: pulumi.Input<pulumi.Input<string>[]>;
    }>;
    /**
     * When upgrading, reuse the last release's values and merge in any overrides. If 'resetValues' is specified, this is ignored
     */
    reuseValues?: pulumi.Input<boolean>;
    /**
     * By default, the provider waits until all resources are in a ready state before marking the release as successful. Setting this to true will skip such await logic.
     */
    skipAwait?: pulumi.Input<boolean>;
    /**
     * If set, no CRDs will be installed. By default, CRDs are installed if not already present.
     */
    skipCrds?: pulumi.Input<boolean>;
    /**
     * Time in seconds to wait for any individual kubernetes operation.
     */
    timeout?: pulumi.Input<number>;
    /**
     * List of assets (raw yaml files). Content is read and merged with values.
     */
    valueYamlFiles?: pulumi.Input<pulumi.Input<pulumi.asset.Asset | pulumi.asset.Archive>[]>;
    /**
     * Custom values set for the release.
     */
    values?: pulumi.Input<{
        [key: string]: any;
    }>;
    /**
     * Verify the package before installing it.
     */
    verify?: pulumi.Input<boolean>;
    /**
     * Specify the exact chart version to install. If this is not specified, the latest version is installed.
     */
    version?: pulumi.Input<string>;
    /**
     * Will wait until all Jobs have been completed before marking the release as successful. This is ignored if `skipAwait` is enabled.
     */
    waitForJobs?: pulumi.Input<boolean>;
}
