/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface HelmProviderConfig {
    /**
    * Helm burst limit. Increase this if you have a cluster with many CRDs
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#burst_limit HelmProvider#burst_limit}
    */
    readonly burstLimit?: number;
    /**
    * Debug indicates whether or not Helm is running in Debug mode.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#debug HelmProvider#debug}
    */
    readonly debug?: boolean | cdktf.IResolvable;
    /**
    * Enable and disable experimental features.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#experiments HelmProvider#experiments}
    */
    readonly experiments?: HelmProviderExperiments;
    /**
    * The backend storage driver. Values are: configmap, secret, memory, sql
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#helm_driver HelmProvider#helm_driver}
    */
    readonly helmDriver?: string;
    /**
    * Kubernetes Configuration
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#kubernetes HelmProvider#kubernetes}
    */
    readonly kubernetes?: HelmProviderKubernetes;
    /**
    * The path to the helm plugins directory
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#plugins_path HelmProvider#plugins_path}
    */
    readonly pluginsPath?: string;
    /**
    * RegistryClient configuration.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#registries HelmProvider#registries}
    */
    readonly registries?: HelmProviderRegistries[] | cdktf.IResolvable;
    /**
    * The path to the registry config file
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#registry_config_path HelmProvider#registry_config_path}
    */
    readonly registryConfigPath?: string;
    /**
    * The path to the file containing cached repository indexes
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#repository_cache HelmProvider#repository_cache}
    */
    readonly repositoryCache?: string;
    /**
    * The path to the file containing repository names and URLs
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#repository_config_path HelmProvider#repository_config_path}
    */
    readonly repositoryConfigPath?: string;
    /**
    * Alias name
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#alias HelmProvider#alias}
    */
    readonly alias?: string;
}
export interface HelmProviderExperiments {
    /**
    * Enable full diff by storing the rendered manifest in the state.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#manifest HelmProvider#manifest}
    */
    readonly manifest?: boolean | cdktf.IResolvable;
}
export declare function helmProviderExperimentsToTerraform(struct?: HelmProviderExperiments | cdktf.IResolvable): any;
export declare function helmProviderExperimentsToHclTerraform(struct?: HelmProviderExperiments | cdktf.IResolvable): any;
export interface HelmProviderKubernetesExec {
    /**
    * API version for the exec plugin.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#api_version HelmProvider#api_version}
    */
    readonly apiVersion: string;
    /**
    * Arguments for the exec plugin
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#args HelmProvider#args}
    */
    readonly args?: string[];
    /**
    * Command to run for Kubernetes exec plugin
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#command HelmProvider#command}
    */
    readonly command: string;
    /**
    * Environment variables for the exec plugin
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#env HelmProvider#env}
    */
    readonly env?: {
        [key: string]: string;
    };
}
export declare function helmProviderKubernetesExecToTerraform(struct?: HelmProviderKubernetesExec | cdktf.IResolvable): any;
export declare function helmProviderKubernetesExecToHclTerraform(struct?: HelmProviderKubernetesExec | cdktf.IResolvable): any;
export interface HelmProviderKubernetes {
    /**
    * PEM-encoded client certificate for TLS authentication.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#client_certificate HelmProvider#client_certificate}
    */
    readonly clientCertificate?: string;
    /**
    * PEM-encoded client certificate key for TLS authentication.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#client_key HelmProvider#client_key}
    */
    readonly clientKey?: string;
    /**
    * PEM-encoded root certificates bundle for TLS authentication.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#cluster_ca_certificate HelmProvider#cluster_ca_certificate}
    */
    readonly clusterCaCertificate?: string;
    /**
    * Context to choose from the config file. Can be sourced from KUBE_CTX.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#config_context HelmProvider#config_context}
    */
    readonly configContext?: string;
    /**
    * Authentication info context of the kube config (name of the kubeconfig user, --user flag in kubectl). Can be sourced from KUBE_CTX_AUTH_INFO.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#config_context_auth_info HelmProvider#config_context_auth_info}
    */
    readonly configContextAuthInfo?: string;
    /**
    * Cluster context of the kube config (name of the kubeconfig cluster, --cluster flag in kubectl). Can be sourced from KUBE_CTX_CLUSTER.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#config_context_cluster HelmProvider#config_context_cluster}
    */
    readonly configContextCluster?: string;
    /**
    * Path to the kube config file. Can be set with KUBE_CONFIG_PATH.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#config_path HelmProvider#config_path}
    */
    readonly configPath?: string;
    /**
    * A list of paths to kube config files. Can be set with KUBE_CONFIG_PATHS environment variable.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#config_paths HelmProvider#config_paths}
    */
    readonly configPaths?: string[];
    /**
    * Exec configuration for Kubernetes authentication
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#exec HelmProvider#exec}
    */
    readonly exec?: HelmProviderKubernetesExec;
    /**
    * The hostname (in form of URI) of kubernetes master
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#host HelmProvider#host}
    */
    readonly host?: string;
    /**
    * Whether server should be accessed without verifying the TLS certificate.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#insecure HelmProvider#insecure}
    */
    readonly insecure?: boolean | cdktf.IResolvable;
    /**
    * The password to use for HTTP basic authentication when accessing the Kubernetes master endpoint.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#password HelmProvider#password}
    */
    readonly password?: string;
    /**
    * URL to the proxy to be used for all API requests.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#proxy_url HelmProvider#proxy_url}
    */
    readonly proxyUrl?: string;
    /**
    * Server name passed to the server for SNI and is used in the client to check server certificates against.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#tls_server_name HelmProvider#tls_server_name}
    */
    readonly tlsServerName?: string;
    /**
    * Token to authenticate a service account.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#token HelmProvider#token}
    */
    readonly token?: string;
    /**
    * The username to use for HTTP basic authentication when accessing the Kubernetes master endpoint
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#username HelmProvider#username}
    */
    readonly username?: string;
}
export declare function helmProviderKubernetesToTerraform(struct?: HelmProviderKubernetes | cdktf.IResolvable): any;
export declare function helmProviderKubernetesToHclTerraform(struct?: HelmProviderKubernetes | cdktf.IResolvable): any;
export interface HelmProviderRegistries {
    /**
    * The password to use for the OCI HTTP basic authentication when accessing the Kubernetes master endpoint.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#password HelmProvider#password}
    */
    readonly password: string;
    /**
    * OCI URL in form of oci://host:port or oci://host
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#url HelmProvider#url}
    */
    readonly url: string;
    /**
    * The username to use for the OCI HTTP basic authentication when accessing the Kubernetes master endpoint.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#username HelmProvider#username}
    */
    readonly username: string;
}
export declare function helmProviderRegistriesToTerraform(struct?: HelmProviderRegistries | cdktf.IResolvable): any;
export declare function helmProviderRegistriesToHclTerraform(struct?: HelmProviderRegistries | cdktf.IResolvable): any;
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs helm}
*/
export declare class HelmProvider extends cdktf.TerraformProvider {
    static readonly tfResourceType = "helm";
    /**
    * Generates CDKTF code for importing a HelmProvider resource upon running "cdktf plan <stack-name>"
    * @param scope The scope in which to define this construct
    * @param importToId The construct id used in the generated config for the HelmProvider to import
    * @param importFromId The id of the existing HelmProvider that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the HelmProvider to import is found
    */
    static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktf.TerraformProvider): cdktf.ImportableResource;
    /**
    * Create a new {@link https://registry.terraform.io/providers/hashicorp/helm/3.0.2/docs helm} Resource
    *
    * @param scope The scope in which to define this construct
    * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
    * @param options HelmProviderConfig = {}
    */
    constructor(scope: Construct, id: string, config?: HelmProviderConfig);
    private _burstLimit?;
    get burstLimit(): number | undefined;
    set burstLimit(value: number | undefined);
    resetBurstLimit(): void;
    get burstLimitInput(): number | undefined;
    private _debug?;
    get debug(): boolean | cdktf.IResolvable | undefined;
    set debug(value: boolean | cdktf.IResolvable | undefined);
    resetDebug(): void;
    get debugInput(): boolean | cdktf.IResolvable | undefined;
    private _experiments?;
    get experiments(): HelmProviderExperiments | undefined;
    set experiments(value: HelmProviderExperiments | undefined);
    resetExperiments(): void;
    get experimentsInput(): HelmProviderExperiments | undefined;
    private _helmDriver?;
    get helmDriver(): string | undefined;
    set helmDriver(value: string | undefined);
    resetHelmDriver(): void;
    get helmDriverInput(): string | undefined;
    private _kubernetes?;
    get kubernetes(): HelmProviderKubernetes | undefined;
    set kubernetes(value: HelmProviderKubernetes | undefined);
    resetKubernetes(): void;
    get kubernetesInput(): HelmProviderKubernetes | undefined;
    private _pluginsPath?;
    get pluginsPath(): string | undefined;
    set pluginsPath(value: string | undefined);
    resetPluginsPath(): void;
    get pluginsPathInput(): string | undefined;
    private _registries?;
    get registries(): HelmProviderRegistries[] | cdktf.IResolvable | undefined;
    set registries(value: HelmProviderRegistries[] | cdktf.IResolvable | undefined);
    resetRegistries(): void;
    get registriesInput(): cdktf.IResolvable | HelmProviderRegistries[] | undefined;
    private _registryConfigPath?;
    get registryConfigPath(): string | undefined;
    set registryConfigPath(value: string | undefined);
    resetRegistryConfigPath(): void;
    get registryConfigPathInput(): string | undefined;
    private _repositoryCache?;
    get repositoryCache(): string | undefined;
    set repositoryCache(value: string | undefined);
    resetRepositoryCache(): void;
    get repositoryCacheInput(): string | undefined;
    private _repositoryConfigPath?;
    get repositoryConfigPath(): string | undefined;
    set repositoryConfigPath(value: string | undefined);
    resetRepositoryConfigPath(): void;
    get repositoryConfigPathInput(): string | undefined;
    private _alias?;
    get alias(): string | undefined;
    set alias(value: string | undefined);
    resetAlias(): void;
    get aliasInput(): string | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
