import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Manages a Kusto (also known as Azure Data Explorer) Cluster
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as azure from "@pulumi/azure";
 *
 * const example = new azure.core.ResourceGroup("example", {
 *     name: "example",
 *     location: "West Europe",
 * });
 * const exampleCluster = new azure.kusto.Cluster("example", {
 *     name: "example",
 *     location: example.location,
 *     resourceGroupName: example.name,
 *     sku: {
 *         name: "Standard_D13_v2",
 *         capacity: 2,
 *     },
 *     tags: {
 *         Environment: "Production",
 *     },
 * });
 * ```
 *
 * ## API Providers
 *
 * <!-- This section is generated, changes will be overwritten -->
 * This resource uses the following Azure API Providers:
 *
 * * `Microsoft.Kusto` - 2024-04-13
 *
 * ## Import
 *
 * Kusto Clusters can be imported using the `resource id`, e.g.
 *
 * ```sh
 * $ pulumi import azure:kusto/cluster:Cluster example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.Kusto/clusters/cluster1
 * ```
 */
export declare class Cluster extends pulumi.CustomResource {
    /**
     * Get an existing Cluster 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 state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: ClusterState, opts?: pulumi.CustomResourceOptions): Cluster;
    /**
     * Returns true if the given object is an instance of Cluster.  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 Cluster;
    /**
     * List of allowed FQDNs (Fully Qualified Domain Name) for egress from Cluster.
     */
    readonly allowedFqdns: pulumi.Output<string[] | undefined>;
    /**
     * The list of ips in the format of CIDR allowed to connect to the cluster.
     */
    readonly allowedIpRanges: pulumi.Output<string[] | undefined>;
    /**
     * Specifies if the cluster could be automatically stopped (due to lack of data or no activity for many days). Defaults to `true`.
     */
    readonly autoStopEnabled: pulumi.Output<boolean | undefined>;
    /**
     * The Kusto Cluster URI to be used for data ingestion.
     */
    readonly dataIngestionUri: pulumi.Output<string>;
    /**
     * Specifies if the cluster's disks are encrypted. Defaults to `false`.
     */
    readonly diskEncryptionEnabled: pulumi.Output<boolean | undefined>;
    /**
     * Is the cluster's double encryption enabled? Changing this forces a new resource to be created.
     */
    readonly doubleEncryptionEnabled: pulumi.Output<boolean | undefined>;
    /**
     * An `identity` block as defined below.
     */
    readonly identity: pulumi.Output<outputs.kusto.ClusterIdentity | undefined>;
    /**
     * A `languageExtension` block as defined below.
     */
    readonly languageExtension: pulumi.Output<outputs.kusto.ClusterLanguageExtension[]>;
    /**
     * @deprecated `languageExtensions` has been deprecated in favour of `languageExtension` and will be removed in v5.0 of the AzureRM provider
     */
    readonly languageExtensions: pulumi.Output<outputs.kusto.ClusterLanguageExtension[]>;
    /**
     * The location where the Kusto Cluster should be created. Changing this forces a new resource to be created.
     */
    readonly location: pulumi.Output<string>;
    /**
     * The name of the Kusto Cluster to create. Only lowercase Alphanumeric characters allowed, starting with a letter. Changing this forces a new resource to be created.
     */
    readonly name: pulumi.Output<string>;
    /**
     * An `optimizedAutoScale` block as defined below.
     */
    readonly optimizedAutoScale: pulumi.Output<outputs.kusto.ClusterOptimizedAutoScale | undefined>;
    /**
     * Whether to restrict outbound network access. Defaults to `false`.
     */
    readonly outboundNetworkAccessRestricted: pulumi.Output<boolean | undefined>;
    /**
     * Indicates what public IP type to create - IPv4 (default), or DualStack (both IPv4 and IPv6). Defaults to `IPv4`.
     */
    readonly publicIpType: pulumi.Output<string | undefined>;
    /**
     * Is the public network access enabled? Defaults to `true`.
     */
    readonly publicNetworkAccessEnabled: pulumi.Output<boolean | undefined>;
    /**
     * Specifies if the purge operations are enabled. Defaults to `false`.
     */
    readonly purgeEnabled: pulumi.Output<boolean | undefined>;
    /**
     * Specifies the Resource Group where the Kusto Cluster should exist. Changing this forces a new resource to be created.
     */
    readonly resourceGroupName: pulumi.Output<string>;
    /**
     * A `sku` block as defined below.
     */
    readonly sku: pulumi.Output<outputs.kusto.ClusterSku>;
    /**
     * Specifies if the streaming ingest is enabled. Defaults to `false`.
     */
    readonly streamingIngestionEnabled: pulumi.Output<boolean | undefined>;
    /**
     * A mapping of tags to assign to the resource.
     */
    readonly tags: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * Specifies a list of tenant IDs that are trusted by the cluster. Default setting trusts all other tenants. Use `trustedExternalTenants = ["*"]` to explicitly allow all other tenants, `trustedExternalTenants = ["MyTenantOnly"]` for only your tenant or `trustedExternalTenants = ["<tenantId1>", "<tenantIdx>"]` to allow specific other tenants.
     *
     * > **Note:** In v3.0 of `azurerm` a new or updated Kusto Cluster will only allow your own tenant by default. Explicit configuration of this setting will change from `trustedExternalTenants = ["MyTenantOnly"]` to `trustedExternalTenants = []`.
     */
    readonly trustedExternalTenants: pulumi.Output<string[]>;
    /**
     * The FQDN of the Azure Kusto Cluster.
     */
    readonly uri: pulumi.Output<string>;
    /**
     * @deprecated The `virtualNetworkConfiguration` block has been deprecated as it is no longer supported by Azure and will be removed in v5.0 of the AzureRM Provider - for more information see https://techcommunity.microsoft.com/blog/azuredataexplorer/deprecation-of-virtual-network-injection-for-azure-data-explorer/4198192
     */
    readonly virtualNetworkConfiguration: pulumi.Output<outputs.kusto.ClusterVirtualNetworkConfiguration | undefined>;
    /**
     * Specifies a list of Availability Zones in which this Kusto Cluster should be located. Changing this forces a new Kusto Cluster to be created.
     */
    readonly zones: pulumi.Output<string[] | undefined>;
    /**
     * Create a Cluster 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: ClusterArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Cluster resources.
 */
export interface ClusterState {
    /**
     * List of allowed FQDNs (Fully Qualified Domain Name) for egress from Cluster.
     */
    allowedFqdns?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The list of ips in the format of CIDR allowed to connect to the cluster.
     */
    allowedIpRanges?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Specifies if the cluster could be automatically stopped (due to lack of data or no activity for many days). Defaults to `true`.
     */
    autoStopEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * The Kusto Cluster URI to be used for data ingestion.
     */
    dataIngestionUri?: pulumi.Input<string | undefined>;
    /**
     * Specifies if the cluster's disks are encrypted. Defaults to `false`.
     */
    diskEncryptionEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Is the cluster's double encryption enabled? Changing this forces a new resource to be created.
     */
    doubleEncryptionEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * An `identity` block as defined below.
     */
    identity?: pulumi.Input<inputs.kusto.ClusterIdentity | undefined>;
    /**
     * A `languageExtension` block as defined below.
     */
    languageExtension?: pulumi.Input<pulumi.Input<inputs.kusto.ClusterLanguageExtension>[] | undefined>;
    /**
     * @deprecated `languageExtensions` has been deprecated in favour of `languageExtension` and will be removed in v5.0 of the AzureRM provider
     */
    languageExtensions?: pulumi.Input<pulumi.Input<inputs.kusto.ClusterLanguageExtension>[] | undefined>;
    /**
     * The location where the Kusto Cluster should be created. Changing this forces a new resource to be created.
     */
    location?: pulumi.Input<string | undefined>;
    /**
     * The name of the Kusto Cluster to create. Only lowercase Alphanumeric characters allowed, starting with a letter. Changing this forces a new resource to be created.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * An `optimizedAutoScale` block as defined below.
     */
    optimizedAutoScale?: pulumi.Input<inputs.kusto.ClusterOptimizedAutoScale | undefined>;
    /**
     * Whether to restrict outbound network access. Defaults to `false`.
     */
    outboundNetworkAccessRestricted?: pulumi.Input<boolean | undefined>;
    /**
     * Indicates what public IP type to create - IPv4 (default), or DualStack (both IPv4 and IPv6). Defaults to `IPv4`.
     */
    publicIpType?: pulumi.Input<string | undefined>;
    /**
     * Is the public network access enabled? Defaults to `true`.
     */
    publicNetworkAccessEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Specifies if the purge operations are enabled. Defaults to `false`.
     */
    purgeEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Specifies the Resource Group where the Kusto Cluster should exist. Changing this forces a new resource to be created.
     */
    resourceGroupName?: pulumi.Input<string | undefined>;
    /**
     * A `sku` block as defined below.
     */
    sku?: pulumi.Input<inputs.kusto.ClusterSku | undefined>;
    /**
     * Specifies if the streaming ingest is enabled. Defaults to `false`.
     */
    streamingIngestionEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * A mapping of tags to assign to the resource.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * Specifies a list of tenant IDs that are trusted by the cluster. Default setting trusts all other tenants. Use `trustedExternalTenants = ["*"]` to explicitly allow all other tenants, `trustedExternalTenants = ["MyTenantOnly"]` for only your tenant or `trustedExternalTenants = ["<tenantId1>", "<tenantIdx>"]` to allow specific other tenants.
     *
     * > **Note:** In v3.0 of `azurerm` a new or updated Kusto Cluster will only allow your own tenant by default. Explicit configuration of this setting will change from `trustedExternalTenants = ["MyTenantOnly"]` to `trustedExternalTenants = []`.
     */
    trustedExternalTenants?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The FQDN of the Azure Kusto Cluster.
     */
    uri?: pulumi.Input<string | undefined>;
    /**
     * @deprecated The `virtualNetworkConfiguration` block has been deprecated as it is no longer supported by Azure and will be removed in v5.0 of the AzureRM Provider - for more information see https://techcommunity.microsoft.com/blog/azuredataexplorer/deprecation-of-virtual-network-injection-for-azure-data-explorer/4198192
     */
    virtualNetworkConfiguration?: pulumi.Input<inputs.kusto.ClusterVirtualNetworkConfiguration | undefined>;
    /**
     * Specifies a list of Availability Zones in which this Kusto Cluster should be located. Changing this forces a new Kusto Cluster to be created.
     */
    zones?: pulumi.Input<pulumi.Input<string>[] | undefined>;
}
/**
 * The set of arguments for constructing a Cluster resource.
 */
export interface ClusterArgs {
    /**
     * List of allowed FQDNs (Fully Qualified Domain Name) for egress from Cluster.
     */
    allowedFqdns?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The list of ips in the format of CIDR allowed to connect to the cluster.
     */
    allowedIpRanges?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Specifies if the cluster could be automatically stopped (due to lack of data or no activity for many days). Defaults to `true`.
     */
    autoStopEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Specifies if the cluster's disks are encrypted. Defaults to `false`.
     */
    diskEncryptionEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Is the cluster's double encryption enabled? Changing this forces a new resource to be created.
     */
    doubleEncryptionEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * An `identity` block as defined below.
     */
    identity?: pulumi.Input<inputs.kusto.ClusterIdentity | undefined>;
    /**
     * A `languageExtension` block as defined below.
     */
    languageExtension?: pulumi.Input<pulumi.Input<inputs.kusto.ClusterLanguageExtension>[] | undefined>;
    /**
     * @deprecated `languageExtensions` has been deprecated in favour of `languageExtension` and will be removed in v5.0 of the AzureRM provider
     */
    languageExtensions?: pulumi.Input<pulumi.Input<inputs.kusto.ClusterLanguageExtension>[] | undefined>;
    /**
     * The location where the Kusto Cluster should be created. Changing this forces a new resource to be created.
     */
    location?: pulumi.Input<string | undefined>;
    /**
     * The name of the Kusto Cluster to create. Only lowercase Alphanumeric characters allowed, starting with a letter. Changing this forces a new resource to be created.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * An `optimizedAutoScale` block as defined below.
     */
    optimizedAutoScale?: pulumi.Input<inputs.kusto.ClusterOptimizedAutoScale | undefined>;
    /**
     * Whether to restrict outbound network access. Defaults to `false`.
     */
    outboundNetworkAccessRestricted?: pulumi.Input<boolean | undefined>;
    /**
     * Indicates what public IP type to create - IPv4 (default), or DualStack (both IPv4 and IPv6). Defaults to `IPv4`.
     */
    publicIpType?: pulumi.Input<string | undefined>;
    /**
     * Is the public network access enabled? Defaults to `true`.
     */
    publicNetworkAccessEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Specifies if the purge operations are enabled. Defaults to `false`.
     */
    purgeEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Specifies the Resource Group where the Kusto Cluster should exist. Changing this forces a new resource to be created.
     */
    resourceGroupName: pulumi.Input<string>;
    /**
     * A `sku` block as defined below.
     */
    sku: pulumi.Input<inputs.kusto.ClusterSku>;
    /**
     * Specifies if the streaming ingest is enabled. Defaults to `false`.
     */
    streamingIngestionEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * A mapping of tags to assign to the resource.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * Specifies a list of tenant IDs that are trusted by the cluster. Default setting trusts all other tenants. Use `trustedExternalTenants = ["*"]` to explicitly allow all other tenants, `trustedExternalTenants = ["MyTenantOnly"]` for only your tenant or `trustedExternalTenants = ["<tenantId1>", "<tenantIdx>"]` to allow specific other tenants.
     *
     * > **Note:** In v3.0 of `azurerm` a new or updated Kusto Cluster will only allow your own tenant by default. Explicit configuration of this setting will change from `trustedExternalTenants = ["MyTenantOnly"]` to `trustedExternalTenants = []`.
     */
    trustedExternalTenants?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * @deprecated The `virtualNetworkConfiguration` block has been deprecated as it is no longer supported by Azure and will be removed in v5.0 of the AzureRM Provider - for more information see https://techcommunity.microsoft.com/blog/azuredataexplorer/deprecation-of-virtual-network-injection-for-azure-data-explorer/4198192
     */
    virtualNetworkConfiguration?: pulumi.Input<inputs.kusto.ClusterVirtualNetworkConfiguration | undefined>;
    /**
     * Specifies a list of Availability Zones in which this Kusto Cluster should be located. Changing this forces a new Kusto Cluster to be created.
     */
    zones?: pulumi.Input<pulumi.Input<string>[] | undefined>;
}
//# sourceMappingURL=cluster.d.ts.map