import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Manages a Private Link Service.
 *
 * > **Note:** Private Link is now in [GA](https://docs.microsoft.com/en-gb/azure/private-link/).
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as azure from "@pulumi/azure";
 *
 * const example = new azure.core.ResourceGroup("example", {
 *     name: "example-resources",
 *     location: "West Europe",
 * });
 * const exampleVirtualNetwork = new azure.network.VirtualNetwork("example", {
 *     name: "example-network",
 *     resourceGroupName: example.name,
 *     location: example.location,
 *     addressSpaces: ["10.5.0.0/16"],
 * });
 * const exampleSubnet = new azure.network.Subnet("example", {
 *     name: "example-subnet",
 *     resourceGroupName: example.name,
 *     virtualNetworkName: exampleVirtualNetwork.name,
 *     addressPrefixes: ["10.5.1.0/24"],
 *     enforcePrivateLinkServiceNetworkPolicies: true,
 * });
 * const examplePublicIp = new azure.network.PublicIp("example", {
 *     name: "example-api",
 *     sku: "Standard",
 *     location: example.location,
 *     resourceGroupName: example.name,
 *     allocationMethod: "Static",
 * });
 * const exampleLoadBalancer = new azure.lb.LoadBalancer("example", {
 *     name: "example-lb",
 *     sku: "Standard",
 *     location: example.location,
 *     resourceGroupName: example.name,
 *     frontendIpConfigurations: [{
 *         name: examplePublicIp.name,
 *         publicIpAddressId: examplePublicIp.id,
 *     }],
 * });
 * const exampleLinkService = new azure.privatedns.LinkService("example", {
 *     name: "example-privatelink",
 *     resourceGroupName: example.name,
 *     location: example.location,
 *     autoApprovalSubscriptionIds: ["00000000-0000-0000-0000-000000000000"],
 *     visibilitySubscriptionIds: ["00000000-0000-0000-0000-000000000000"],
 *     loadBalancerFrontendIpConfigurationIds: [exampleLoadBalancer.frontendIpConfigurations.apply(frontendIpConfigurations => frontendIpConfigurations?.[0]?.id)],
 *     natIpConfigurations: [
 *         {
 *             name: "primary",
 *             privateIpAddress: "10.5.1.17",
 *             privateIpAddressVersion: "IPv4",
 *             subnetId: exampleSubnet.id,
 *             primary: true,
 *         },
 *         {
 *             name: "secondary",
 *             privateIpAddress: "10.5.1.18",
 *             privateIpAddressVersion: "IPv4",
 *             subnetId: exampleSubnet.id,
 *             primary: false,
 *         },
 *     ],
 * });
 * ```
 *
 * ## API Providers
 *
 * <!-- This section is generated, changes will be overwritten -->
 * This resource uses the following Azure API Providers:
 *
 * * `Microsoft.Network` - 2025-01-01
 *
 * ## Import
 *
 * Private Link Services can be imported using the `resource id`, e.g.
 *
 * ```sh
 * $ pulumi import azure:privatedns/linkService:LinkService example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.Network/privateLinkServices/service1
 * ```
 */
export declare class LinkService extends pulumi.CustomResource {
    /**
     * Get an existing LinkService 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?: LinkServiceState, opts?: pulumi.CustomResourceOptions): LinkService;
    /**
     * Returns true if the given object is an instance of LinkService.  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 LinkService;
    /**
     * A globally unique DNS Name for your Private Link Service. You can use this alias to request a connection to your Private Link Service.
     */
    readonly alias: pulumi.Output<string>;
    /**
     * A list of Subscription UUID/GUID's that will be automatically be able to use this Private Link Service.
     */
    readonly autoApprovalSubscriptionIds: pulumi.Output<string[] | undefined>;
    /**
     * The destination IP address of the Private Link Service.
     */
    readonly destinationIpAddress: pulumi.Output<string | undefined>;
    /**
     * @deprecated the `enableProxyProtocol` property has been deprecated in favour of the `proxyProtocolEnabled` property and will be removed in v5.0 of the AzureRM Provider
     */
    readonly enableProxyProtocol: pulumi.Output<boolean>;
    /**
     * List of FQDNs allowed for the Private Link Service.
     */
    readonly fqdns: pulumi.Output<string[] | undefined>;
    /**
     * A list of Frontend IP Configuration IDs from a Standard Load Balancer, where traffic from the Private Link Service should be routed. You can use Load Balancer Rules to direct this traffic to appropriate backend pools where your applications are running. Changing this forces a new resource to be created.
     */
    readonly loadBalancerFrontendIpConfigurationIds: pulumi.Output<string[] | undefined>;
    /**
     * Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
     */
    readonly location: pulumi.Output<string>;
    /**
     * Specifies the name of this Private Link Service. Changing this forces a new resource to be created.
     */
    readonly name: pulumi.Output<string>;
    /**
     * One or more (up to 8) `natIpConfiguration` block as defined below.
     */
    readonly natIpConfigurations: pulumi.Output<outputs.privatedns.LinkServiceNatIpConfiguration[]>;
    /**
     * Should the Private Link Service support the Proxy Protocol? Defaults to `false`.
     */
    readonly proxyProtocolEnabled: pulumi.Output<boolean>;
    /**
     * The name of the Resource Group where the Private Link Service should exist. Changing this forces a new resource to be created.
     */
    readonly resourceGroupName: pulumi.Output<string>;
    /**
     * A mapping of tags to assign to the resource.
     */
    readonly tags: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * A list of Subscription UUID/GUID's that will be able to see this Private Link Service.
     *
     * > **Note:** If no Subscription IDs are specified then Azure allows every Subscription to see this Private Link Service.
     */
    readonly visibilitySubscriptionIds: pulumi.Output<string[] | undefined>;
    /**
     * Create a LinkService 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: LinkServiceArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering LinkService resources.
 */
export interface LinkServiceState {
    /**
     * A globally unique DNS Name for your Private Link Service. You can use this alias to request a connection to your Private Link Service.
     */
    alias?: pulumi.Input<string | undefined>;
    /**
     * A list of Subscription UUID/GUID's that will be automatically be able to use this Private Link Service.
     */
    autoApprovalSubscriptionIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The destination IP address of the Private Link Service.
     */
    destinationIpAddress?: pulumi.Input<string | undefined>;
    /**
     * @deprecated the `enableProxyProtocol` property has been deprecated in favour of the `proxyProtocolEnabled` property and will be removed in v5.0 of the AzureRM Provider
     */
    enableProxyProtocol?: pulumi.Input<boolean | undefined>;
    /**
     * List of FQDNs allowed for the Private Link Service.
     */
    fqdns?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * A list of Frontend IP Configuration IDs from a Standard Load Balancer, where traffic from the Private Link Service should be routed. You can use Load Balancer Rules to direct this traffic to appropriate backend pools where your applications are running. Changing this forces a new resource to be created.
     */
    loadBalancerFrontendIpConfigurationIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
     */
    location?: pulumi.Input<string | undefined>;
    /**
     * Specifies the name of this Private Link Service. Changing this forces a new resource to be created.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * One or more (up to 8) `natIpConfiguration` block as defined below.
     */
    natIpConfigurations?: pulumi.Input<pulumi.Input<inputs.privatedns.LinkServiceNatIpConfiguration>[] | undefined>;
    /**
     * Should the Private Link Service support the Proxy Protocol? Defaults to `false`.
     */
    proxyProtocolEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * The name of the Resource Group where the Private Link Service should exist. Changing this forces a new resource to be created.
     */
    resourceGroupName?: pulumi.Input<string | undefined>;
    /**
     * A mapping of tags to assign to the resource.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * A list of Subscription UUID/GUID's that will be able to see this Private Link Service.
     *
     * > **Note:** If no Subscription IDs are specified then Azure allows every Subscription to see this Private Link Service.
     */
    visibilitySubscriptionIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
}
/**
 * The set of arguments for constructing a LinkService resource.
 */
export interface LinkServiceArgs {
    /**
     * A list of Subscription UUID/GUID's that will be automatically be able to use this Private Link Service.
     */
    autoApprovalSubscriptionIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The destination IP address of the Private Link Service.
     */
    destinationIpAddress?: pulumi.Input<string | undefined>;
    /**
     * @deprecated the `enableProxyProtocol` property has been deprecated in favour of the `proxyProtocolEnabled` property and will be removed in v5.0 of the AzureRM Provider
     */
    enableProxyProtocol?: pulumi.Input<boolean | undefined>;
    /**
     * List of FQDNs allowed for the Private Link Service.
     */
    fqdns?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * A list of Frontend IP Configuration IDs from a Standard Load Balancer, where traffic from the Private Link Service should be routed. You can use Load Balancer Rules to direct this traffic to appropriate backend pools where your applications are running. Changing this forces a new resource to be created.
     */
    loadBalancerFrontendIpConfigurationIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created.
     */
    location?: pulumi.Input<string | undefined>;
    /**
     * Specifies the name of this Private Link Service. Changing this forces a new resource to be created.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * One or more (up to 8) `natIpConfiguration` block as defined below.
     */
    natIpConfigurations: pulumi.Input<pulumi.Input<inputs.privatedns.LinkServiceNatIpConfiguration>[]>;
    /**
     * Should the Private Link Service support the Proxy Protocol? Defaults to `false`.
     */
    proxyProtocolEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * The name of the Resource Group where the Private Link Service should exist. Changing this forces a new resource to be created.
     */
    resourceGroupName: pulumi.Input<string>;
    /**
     * A mapping of tags to assign to the resource.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * A list of Subscription UUID/GUID's that will be able to see this Private Link Service.
     *
     * > **Note:** If no Subscription IDs are specified then Azure allows every Subscription to see this Private Link Service.
     */
    visibilitySubscriptionIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
}
//# sourceMappingURL=linkService.d.ts.map