import * as pulumi from "@pulumi/pulumi";
/**
 * Manages the association between a Front Door (standard/premium) Custom Domain and one or more Front Door (standard/premium) Routes.
 *
 * > **Note:** Domain ownership validation for Azure Front Door custom domains is performed asynchronously by the service (typically transitioning through states like `Submitting` and `Pending` before becoming `Approved`). For details on the required `_dnsauth` TXT record and the possible validation states, see the Azure Front Door documentation on [domain validation](https://learn.microsoft.com/azure/frontdoor/domain#domain-validation).
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as azure from "@pulumi/azure";
 * import * as std from "@pulumi/std";
 *
 * const example = new azure.core.ResourceGroup("example", {
 *     name: "example-cdn-frontdoor",
 *     location: "West Europe",
 * });
 * const exampleZone = new azure.dns.Zone("example", {
 *     name: "domain.com",
 *     resourceGroupName: example.name,
 * });
 * const exampleFrontdoorProfile = new azure.cdn.FrontdoorProfile("example", {
 *     name: "example-profile",
 *     resourceGroupName: example.name,
 *     skuName: "Standard_AzureFrontDoor",
 * });
 * const exampleFrontdoorOriginGroup = new azure.cdn.FrontdoorOriginGroup("example", {
 *     name: "example-origin-group",
 *     cdnFrontdoorProfileId: exampleFrontdoorProfile.id,
 *     sessionAffinityEnabled: true,
 *     restoreTrafficTimeToHealedOrNewEndpointInMinutes: 10,
 *     healthProbe: {
 *         intervalInSeconds: 240,
 *         path: "/healthProbe",
 *         protocol: "Https",
 *         requestType: "HEAD",
 *     },
 *     loadBalancing: {
 *         additionalLatencyInMilliseconds: 0,
 *         sampleSize: 16,
 *         successfulSamplesRequired: 3,
 *     },
 * });
 * const exampleFrontdoorOrigin = new azure.cdn.FrontdoorOrigin("example", {
 *     name: "example-origin",
 *     cdnFrontdoorOriginGroupId: exampleFrontdoorOriginGroup.id,
 *     enabled: true,
 *     certificateNameCheckEnabled: false,
 *     hostName: "contoso.com",
 *     httpPort: 80,
 *     httpsPort: 443,
 *     originHostHeader: "www.contoso.com",
 *     priority: 1,
 *     weight: 1,
 * });
 * const exampleFrontdoorEndpoint = new azure.cdn.FrontdoorEndpoint("example", {
 *     name: "example-endpoint",
 *     cdnFrontdoorProfileId: exampleFrontdoorProfile.id,
 * });
 * const exampleFrontdoorRuleSet = new azure.cdn.FrontdoorRuleSet("example", {
 *     name: "ExampleRuleSet",
 *     cdnFrontdoorProfileId: exampleFrontdoorProfile.id,
 * });
 * const exampleFrontdoorCustomDomain = new azure.cdn.FrontdoorCustomDomain("example", {
 *     name: "example-customDomain",
 *     cdnFrontdoorProfileId: exampleFrontdoorProfile.id,
 *     dnsZoneId: exampleZone.id,
 *     hostName: std.joinOutput({
 *         separator: ".",
 *         input: [
 *             "contoso",
 *             exampleZone.name,
 *         ],
 *     }).apply(invoke => invoke.result),
 *     tls: {
 *         certificateType: "ManagedCertificate",
 *         minimumTlsVersion: "TLS12",
 *     },
 * });
 * const exampleFrontdoorRoute = new azure.cdn.FrontdoorRoute("example", {
 *     name: "example-route",
 *     cdnFrontdoorEndpointId: exampleFrontdoorEndpoint.id,
 *     cdnFrontdoorOriginGroupId: exampleFrontdoorOriginGroup.id,
 *     cdnFrontdoorOriginIds: [exampleFrontdoorOrigin.id],
 *     cdnFrontdoorRuleSetIds: [exampleFrontdoorRuleSet.id],
 *     enabled: true,
 *     forwardingProtocol: "HttpsOnly",
 *     httpsRedirectEnabled: true,
 *     patternsToMatches: ["/*"],
 *     supportedProtocols: [
 *         "Http",
 *         "Https",
 *     ],
 *     cdnFrontdoorCustomDomainIds: [exampleFrontdoorCustomDomain.id],
 *     linkToDefaultDomain: false,
 * });
 * const exampleFrontdoorCustomDomainAssociation = new azure.cdn.FrontdoorCustomDomainAssociation("example", {
 *     cdnFrontdoorCustomDomainId: exampleFrontdoorCustomDomain.id,
 *     cdnFrontdoorRouteIds: [exampleFrontdoorRoute.id],
 * });
 * ```
 *
 * ## API Providers
 *
 * <!-- This section is generated, changes will be overwritten -->
 * This resource uses the following Azure API Providers:
 *
 * * `Microsoft.Cdn` - 2025-04-15
 *
 * ## Import
 *
 * Front Door Custom Domain Associations can be imported using the `resource id`, e.g.
 *
 * ```sh
 * $ pulumi import azure:cdn/frontdoorCustomDomainAssociation:FrontdoorCustomDomainAssociation example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resourceGroup1/providers/Microsoft.Cdn/profiles/profile1/associations/assoc1
 * ```
 */
export declare class FrontdoorCustomDomainAssociation extends pulumi.CustomResource {
    /**
     * Get an existing FrontdoorCustomDomainAssociation 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?: FrontdoorCustomDomainAssociationState, opts?: pulumi.CustomResourceOptions): FrontdoorCustomDomainAssociation;
    /**
     * Returns true if the given object is an instance of FrontdoorCustomDomainAssociation.  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 FrontdoorCustomDomainAssociation;
    /**
     * The ID of the Front Door Custom Domain that should be managed by the association resource. Changing this forces a new association resource to be created.
     */
    readonly cdnFrontdoorCustomDomainId: pulumi.Output<string>;
    /**
     * One or more IDs of the Front Door Route to which the Front Door Custom Domain is associated with.
     *
     * > **Note:** This should include all of the Front Door Route resources that the Front Door Custom Domain is associated with. If the list of Front Door Routes is not complete you will receive the service side error `This resource is still associated with a route. Please delete the association with the route first before deleting this resource` when you attempt to `destroy`/`delete` your Front Door Custom Domain.
     */
    readonly cdnFrontdoorRouteIds: pulumi.Output<string[]>;
    /**
     * Create a FrontdoorCustomDomainAssociation 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: FrontdoorCustomDomainAssociationArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering FrontdoorCustomDomainAssociation resources.
 */
export interface FrontdoorCustomDomainAssociationState {
    /**
     * The ID of the Front Door Custom Domain that should be managed by the association resource. Changing this forces a new association resource to be created.
     */
    cdnFrontdoorCustomDomainId?: pulumi.Input<string | undefined>;
    /**
     * One or more IDs of the Front Door Route to which the Front Door Custom Domain is associated with.
     *
     * > **Note:** This should include all of the Front Door Route resources that the Front Door Custom Domain is associated with. If the list of Front Door Routes is not complete you will receive the service side error `This resource is still associated with a route. Please delete the association with the route first before deleting this resource` when you attempt to `destroy`/`delete` your Front Door Custom Domain.
     */
    cdnFrontdoorRouteIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
}
/**
 * The set of arguments for constructing a FrontdoorCustomDomainAssociation resource.
 */
export interface FrontdoorCustomDomainAssociationArgs {
    /**
     * The ID of the Front Door Custom Domain that should be managed by the association resource. Changing this forces a new association resource to be created.
     */
    cdnFrontdoorCustomDomainId: pulumi.Input<string>;
    /**
     * One or more IDs of the Front Door Route to which the Front Door Custom Domain is associated with.
     *
     * > **Note:** This should include all of the Front Door Route resources that the Front Door Custom Domain is associated with. If the list of Front Door Routes is not complete you will receive the service side error `This resource is still associated with a route. Please delete the association with the route first before deleting this resource` when you attempt to `destroy`/`delete` your Front Door Custom Domain.
     */
    cdnFrontdoorRouteIds: pulumi.Input<pulumi.Input<string>[]>;
}
//# sourceMappingURL=frontdoorCustomDomainAssociation.d.ts.map