// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.azure.frontdoor.inputs;

import com.pulumi.azure.frontdoor.inputs.FrontdoorBackendPoolArgs;
import com.pulumi.azure.frontdoor.inputs.FrontdoorBackendPoolHealthProbeArgs;
import com.pulumi.azure.frontdoor.inputs.FrontdoorBackendPoolLoadBalancingArgs;
import com.pulumi.azure.frontdoor.inputs.FrontdoorBackendPoolSettingArgs;
import com.pulumi.azure.frontdoor.inputs.FrontdoorExplicitResourceOrderArgs;
import com.pulumi.azure.frontdoor.inputs.FrontdoorFrontendEndpointArgs;
import com.pulumi.azure.frontdoor.inputs.FrontdoorRoutingRuleArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.Boolean;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class FrontdoorState extends com.pulumi.resources.ResourceArgs {

    public static final FrontdoorState Empty = new FrontdoorState();

    /**
     * A `backend_pool_health_probe` block as defined below.
     * 
     */
    @Import(name="backendPoolHealthProbes")
    private @Nullable Output<List<FrontdoorBackendPoolHealthProbeArgs>> backendPoolHealthProbes;

    /**
     * @return A `backend_pool_health_probe` block as defined below.
     * 
     */
    public Optional<Output<List<FrontdoorBackendPoolHealthProbeArgs>>> backendPoolHealthProbes() {
        return Optional.ofNullable(this.backendPoolHealthProbes);
    }

    /**
     * A map/dictionary of Backend Pool Health Probe Names (key) to the Backend Pool Health Probe ID (value)
     * 
     */
    @Import(name="backendPoolHealthProbesMap")
    private @Nullable Output<Map<String,String>> backendPoolHealthProbesMap;

    /**
     * @return A map/dictionary of Backend Pool Health Probe Names (key) to the Backend Pool Health Probe ID (value)
     * 
     */
    public Optional<Output<Map<String,String>>> backendPoolHealthProbesMap() {
        return Optional.ofNullable(this.backendPoolHealthProbesMap);
    }

    /**
     * A map/dictionary of Backend Pool Load Balancing Setting Names (key) to the Backend Pool Load Balancing Setting ID (value)
     * 
     */
    @Import(name="backendPoolLoadBalancingSettingsMap")
    private @Nullable Output<Map<String,String>> backendPoolLoadBalancingSettingsMap;

    /**
     * @return A map/dictionary of Backend Pool Load Balancing Setting Names (key) to the Backend Pool Load Balancing Setting ID (value)
     * 
     */
    public Optional<Output<Map<String,String>>> backendPoolLoadBalancingSettingsMap() {
        return Optional.ofNullable(this.backendPoolLoadBalancingSettingsMap);
    }

    /**
     * A `backend_pool_load_balancing` block as defined below.
     * 
     */
    @Import(name="backendPoolLoadBalancings")
    private @Nullable Output<List<FrontdoorBackendPoolLoadBalancingArgs>> backendPoolLoadBalancings;

    /**
     * @return A `backend_pool_load_balancing` block as defined below.
     * 
     */
    public Optional<Output<List<FrontdoorBackendPoolLoadBalancingArgs>>> backendPoolLoadBalancings() {
        return Optional.ofNullable(this.backendPoolLoadBalancings);
    }

    /**
     * A `backend_pool_settings` block as defined below.
     * 
     */
    @Import(name="backendPoolSettings")
    private @Nullable Output<List<FrontdoorBackendPoolSettingArgs>> backendPoolSettings;

    /**
     * @return A `backend_pool_settings` block as defined below.
     * 
     */
    public Optional<Output<List<FrontdoorBackendPoolSettingArgs>>> backendPoolSettings() {
        return Optional.ofNullable(this.backendPoolSettings);
    }

    /**
     * A `backend_pool` block as defined below.
     * 
     * &gt; Azure by default allows specifying up to 50 Backend Pools - but this quota can be increased via Microsoft Support.
     * 
     */
    @Import(name="backendPools")
    private @Nullable Output<List<FrontdoorBackendPoolArgs>> backendPools;

    /**
     * @return A `backend_pool` block as defined below.
     * 
     * &gt; Azure by default allows specifying up to 50 Backend Pools - but this quota can be increased via Microsoft Support.
     * 
     */
    public Optional<Output<List<FrontdoorBackendPoolArgs>>> backendPools() {
        return Optional.ofNullable(this.backendPools);
    }

    /**
     * A map/dictionary of Backend Pool Names (key) to the Backend Pool ID (value)
     * 
     */
    @Import(name="backendPoolsMap")
    private @Nullable Output<Map<String,String>> backendPoolsMap;

    /**
     * @return A map/dictionary of Backend Pool Names (key) to the Backend Pool ID (value)
     * 
     */
    public Optional<Output<Map<String,String>>> backendPoolsMap() {
        return Optional.ofNullable(this.backendPoolsMap);
    }

    /**
     * The host that each frontendEndpoint must CNAME to.
     * 
     */
    @Import(name="cname")
    private @Nullable Output<String> cname;

    /**
     * @return The host that each frontendEndpoint must CNAME to.
     * 
     */
    public Optional<Output<String>> cname() {
        return Optional.ofNullable(this.cname);
    }

    @Import(name="explicitResourceOrders")
    private @Nullable Output<List<FrontdoorExplicitResourceOrderArgs>> explicitResourceOrders;

    public Optional<Output<List<FrontdoorExplicitResourceOrderArgs>>> explicitResourceOrders() {
        return Optional.ofNullable(this.explicitResourceOrders);
    }

    /**
     * A friendly name for the Front Door service.
     * 
     */
    @Import(name="friendlyName")
    private @Nullable Output<String> friendlyName;

    /**
     * @return A friendly name for the Front Door service.
     * 
     */
    public Optional<Output<String>> friendlyName() {
        return Optional.ofNullable(this.friendlyName);
    }

    /**
     * A `frontend_endpoint` block as defined below.
     * 
     */
    @Import(name="frontendEndpoints")
    private @Nullable Output<List<FrontdoorFrontendEndpointArgs>> frontendEndpoints;

    /**
     * @return A `frontend_endpoint` block as defined below.
     * 
     */
    public Optional<Output<List<FrontdoorFrontendEndpointArgs>>> frontendEndpoints() {
        return Optional.ofNullable(this.frontendEndpoints);
    }

    /**
     * The names of the `frontend_endpoint` blocks within this resource to associate with this `routing_rule`.
     * 
     */
    @Import(name="frontendEndpointsMap")
    private @Nullable Output<Map<String,String>> frontendEndpointsMap;

    /**
     * @return The names of the `frontend_endpoint` blocks within this resource to associate with this `routing_rule`.
     * 
     */
    public Optional<Output<Map<String,String>>> frontendEndpointsMap() {
        return Optional.ofNullable(this.frontendEndpointsMap);
    }

    /**
     * The unique ID of the Front Door which is embedded into the incoming headers `X-Azure-FDID` attribute and maybe used to filter traffic sent by the Front Door to your backend.
     * 
     */
    @Import(name="headerFrontdoorId")
    private @Nullable Output<String> headerFrontdoorId;

    /**
     * @return The unique ID of the Front Door which is embedded into the incoming headers `X-Azure-FDID` attribute and maybe used to filter traffic sent by the Front Door to your backend.
     * 
     */
    public Optional<Output<String>> headerFrontdoorId() {
        return Optional.ofNullable(this.headerFrontdoorId);
    }

    /**
     * Should the Front Door Load Balancer be Enabled? Defaults to `true`.
     * 
     */
    @Import(name="loadBalancerEnabled")
    private @Nullable Output<Boolean> loadBalancerEnabled;

    /**
     * @return Should the Front Door Load Balancer be Enabled? Defaults to `true`.
     * 
     */
    public Optional<Output<Boolean>> loadBalancerEnabled() {
        return Optional.ofNullable(this.loadBalancerEnabled);
    }

    /**
     * Specifies the name of the Front Door service. Must be globally unique. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="name")
    private @Nullable Output<String> name;

    /**
     * @return Specifies the name of the Front Door service. Must be globally unique. Changing this forces a new resource to be created.
     * 
     */
    public Optional<Output<String>> name() {
        return Optional.ofNullable(this.name);
    }

    /**
     * Specifies the name of the Resource Group in which the Front Door service should exist. Changing this forces a new resource to be created.
     * 
     */
    @Import(name="resourceGroupName")
    private @Nullable Output<String> resourceGroupName;

    /**
     * @return Specifies the name of the Resource Group in which the Front Door service should exist. Changing this forces a new resource to be created.
     * 
     */
    public Optional<Output<String>> resourceGroupName() {
        return Optional.ofNullable(this.resourceGroupName);
    }

    /**
     * A `routing_rule` block as defined below.
     * 
     */
    @Import(name="routingRules")
    private @Nullable Output<List<FrontdoorRoutingRuleArgs>> routingRules;

    /**
     * @return A `routing_rule` block as defined below.
     * 
     */
    public Optional<Output<List<FrontdoorRoutingRuleArgs>>> routingRules() {
        return Optional.ofNullable(this.routingRules);
    }

    /**
     * A map/dictionary of Routing Rule Names (key) to the Routing Rule ID (value)
     * 
     */
    @Import(name="routingRulesMap")
    private @Nullable Output<Map<String,String>> routingRulesMap;

    /**
     * @return A map/dictionary of Routing Rule Names (key) to the Routing Rule ID (value)
     * 
     */
    public Optional<Output<Map<String,String>>> routingRulesMap() {
        return Optional.ofNullable(this.routingRulesMap);
    }

    /**
     * A mapping of tags to assign to the resource.
     * 
     */
    @Import(name="tags")
    private @Nullable Output<Map<String,String>> tags;

    /**
     * @return A mapping of tags to assign to the resource.
     * 
     */
    public Optional<Output<Map<String,String>>> tags() {
        return Optional.ofNullable(this.tags);
    }

    private FrontdoorState() {}

    private FrontdoorState(FrontdoorState $) {
        this.backendPoolHealthProbes = $.backendPoolHealthProbes;
        this.backendPoolHealthProbesMap = $.backendPoolHealthProbesMap;
        this.backendPoolLoadBalancingSettingsMap = $.backendPoolLoadBalancingSettingsMap;
        this.backendPoolLoadBalancings = $.backendPoolLoadBalancings;
        this.backendPoolSettings = $.backendPoolSettings;
        this.backendPools = $.backendPools;
        this.backendPoolsMap = $.backendPoolsMap;
        this.cname = $.cname;
        this.explicitResourceOrders = $.explicitResourceOrders;
        this.friendlyName = $.friendlyName;
        this.frontendEndpoints = $.frontendEndpoints;
        this.frontendEndpointsMap = $.frontendEndpointsMap;
        this.headerFrontdoorId = $.headerFrontdoorId;
        this.loadBalancerEnabled = $.loadBalancerEnabled;
        this.name = $.name;
        this.resourceGroupName = $.resourceGroupName;
        this.routingRules = $.routingRules;
        this.routingRulesMap = $.routingRulesMap;
        this.tags = $.tags;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(FrontdoorState defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private FrontdoorState $;

        public Builder() {
            $ = new FrontdoorState();
        }

        public Builder(FrontdoorState defaults) {
            $ = new FrontdoorState(Objects.requireNonNull(defaults));
        }

        /**
         * @param backendPoolHealthProbes A `backend_pool_health_probe` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder backendPoolHealthProbes(@Nullable Output<List<FrontdoorBackendPoolHealthProbeArgs>> backendPoolHealthProbes) {
            $.backendPoolHealthProbes = backendPoolHealthProbes;
            return this;
        }

        /**
         * @param backendPoolHealthProbes A `backend_pool_health_probe` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder backendPoolHealthProbes(List<FrontdoorBackendPoolHealthProbeArgs> backendPoolHealthProbes) {
            return backendPoolHealthProbes(Output.of(backendPoolHealthProbes));
        }

        /**
         * @param backendPoolHealthProbes A `backend_pool_health_probe` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder backendPoolHealthProbes(FrontdoorBackendPoolHealthProbeArgs... backendPoolHealthProbes) {
            return backendPoolHealthProbes(List.of(backendPoolHealthProbes));
        }

        /**
         * @param backendPoolHealthProbesMap A map/dictionary of Backend Pool Health Probe Names (key) to the Backend Pool Health Probe ID (value)
         * 
         * @return builder
         * 
         */
        public Builder backendPoolHealthProbesMap(@Nullable Output<Map<String,String>> backendPoolHealthProbesMap) {
            $.backendPoolHealthProbesMap = backendPoolHealthProbesMap;
            return this;
        }

        /**
         * @param backendPoolHealthProbesMap A map/dictionary of Backend Pool Health Probe Names (key) to the Backend Pool Health Probe ID (value)
         * 
         * @return builder
         * 
         */
        public Builder backendPoolHealthProbesMap(Map<String,String> backendPoolHealthProbesMap) {
            return backendPoolHealthProbesMap(Output.of(backendPoolHealthProbesMap));
        }

        /**
         * @param backendPoolLoadBalancingSettingsMap A map/dictionary of Backend Pool Load Balancing Setting Names (key) to the Backend Pool Load Balancing Setting ID (value)
         * 
         * @return builder
         * 
         */
        public Builder backendPoolLoadBalancingSettingsMap(@Nullable Output<Map<String,String>> backendPoolLoadBalancingSettingsMap) {
            $.backendPoolLoadBalancingSettingsMap = backendPoolLoadBalancingSettingsMap;
            return this;
        }

        /**
         * @param backendPoolLoadBalancingSettingsMap A map/dictionary of Backend Pool Load Balancing Setting Names (key) to the Backend Pool Load Balancing Setting ID (value)
         * 
         * @return builder
         * 
         */
        public Builder backendPoolLoadBalancingSettingsMap(Map<String,String> backendPoolLoadBalancingSettingsMap) {
            return backendPoolLoadBalancingSettingsMap(Output.of(backendPoolLoadBalancingSettingsMap));
        }

        /**
         * @param backendPoolLoadBalancings A `backend_pool_load_balancing` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder backendPoolLoadBalancings(@Nullable Output<List<FrontdoorBackendPoolLoadBalancingArgs>> backendPoolLoadBalancings) {
            $.backendPoolLoadBalancings = backendPoolLoadBalancings;
            return this;
        }

        /**
         * @param backendPoolLoadBalancings A `backend_pool_load_balancing` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder backendPoolLoadBalancings(List<FrontdoorBackendPoolLoadBalancingArgs> backendPoolLoadBalancings) {
            return backendPoolLoadBalancings(Output.of(backendPoolLoadBalancings));
        }

        /**
         * @param backendPoolLoadBalancings A `backend_pool_load_balancing` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder backendPoolLoadBalancings(FrontdoorBackendPoolLoadBalancingArgs... backendPoolLoadBalancings) {
            return backendPoolLoadBalancings(List.of(backendPoolLoadBalancings));
        }

        /**
         * @param backendPoolSettings A `backend_pool_settings` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder backendPoolSettings(@Nullable Output<List<FrontdoorBackendPoolSettingArgs>> backendPoolSettings) {
            $.backendPoolSettings = backendPoolSettings;
            return this;
        }

        /**
         * @param backendPoolSettings A `backend_pool_settings` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder backendPoolSettings(List<FrontdoorBackendPoolSettingArgs> backendPoolSettings) {
            return backendPoolSettings(Output.of(backendPoolSettings));
        }

        /**
         * @param backendPoolSettings A `backend_pool_settings` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder backendPoolSettings(FrontdoorBackendPoolSettingArgs... backendPoolSettings) {
            return backendPoolSettings(List.of(backendPoolSettings));
        }

        /**
         * @param backendPools A `backend_pool` block as defined below.
         * 
         * &gt; Azure by default allows specifying up to 50 Backend Pools - but this quota can be increased via Microsoft Support.
         * 
         * @return builder
         * 
         */
        public Builder backendPools(@Nullable Output<List<FrontdoorBackendPoolArgs>> backendPools) {
            $.backendPools = backendPools;
            return this;
        }

        /**
         * @param backendPools A `backend_pool` block as defined below.
         * 
         * &gt; Azure by default allows specifying up to 50 Backend Pools - but this quota can be increased via Microsoft Support.
         * 
         * @return builder
         * 
         */
        public Builder backendPools(List<FrontdoorBackendPoolArgs> backendPools) {
            return backendPools(Output.of(backendPools));
        }

        /**
         * @param backendPools A `backend_pool` block as defined below.
         * 
         * &gt; Azure by default allows specifying up to 50 Backend Pools - but this quota can be increased via Microsoft Support.
         * 
         * @return builder
         * 
         */
        public Builder backendPools(FrontdoorBackendPoolArgs... backendPools) {
            return backendPools(List.of(backendPools));
        }

        /**
         * @param backendPoolsMap A map/dictionary of Backend Pool Names (key) to the Backend Pool ID (value)
         * 
         * @return builder
         * 
         */
        public Builder backendPoolsMap(@Nullable Output<Map<String,String>> backendPoolsMap) {
            $.backendPoolsMap = backendPoolsMap;
            return this;
        }

        /**
         * @param backendPoolsMap A map/dictionary of Backend Pool Names (key) to the Backend Pool ID (value)
         * 
         * @return builder
         * 
         */
        public Builder backendPoolsMap(Map<String,String> backendPoolsMap) {
            return backendPoolsMap(Output.of(backendPoolsMap));
        }

        /**
         * @param cname The host that each frontendEndpoint must CNAME to.
         * 
         * @return builder
         * 
         */
        public Builder cname(@Nullable Output<String> cname) {
            $.cname = cname;
            return this;
        }

        /**
         * @param cname The host that each frontendEndpoint must CNAME to.
         * 
         * @return builder
         * 
         */
        public Builder cname(String cname) {
            return cname(Output.of(cname));
        }

        public Builder explicitResourceOrders(@Nullable Output<List<FrontdoorExplicitResourceOrderArgs>> explicitResourceOrders) {
            $.explicitResourceOrders = explicitResourceOrders;
            return this;
        }

        public Builder explicitResourceOrders(List<FrontdoorExplicitResourceOrderArgs> explicitResourceOrders) {
            return explicitResourceOrders(Output.of(explicitResourceOrders));
        }

        public Builder explicitResourceOrders(FrontdoorExplicitResourceOrderArgs... explicitResourceOrders) {
            return explicitResourceOrders(List.of(explicitResourceOrders));
        }

        /**
         * @param friendlyName A friendly name for the Front Door service.
         * 
         * @return builder
         * 
         */
        public Builder friendlyName(@Nullable Output<String> friendlyName) {
            $.friendlyName = friendlyName;
            return this;
        }

        /**
         * @param friendlyName A friendly name for the Front Door service.
         * 
         * @return builder
         * 
         */
        public Builder friendlyName(String friendlyName) {
            return friendlyName(Output.of(friendlyName));
        }

        /**
         * @param frontendEndpoints A `frontend_endpoint` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder frontendEndpoints(@Nullable Output<List<FrontdoorFrontendEndpointArgs>> frontendEndpoints) {
            $.frontendEndpoints = frontendEndpoints;
            return this;
        }

        /**
         * @param frontendEndpoints A `frontend_endpoint` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder frontendEndpoints(List<FrontdoorFrontendEndpointArgs> frontendEndpoints) {
            return frontendEndpoints(Output.of(frontendEndpoints));
        }

        /**
         * @param frontendEndpoints A `frontend_endpoint` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder frontendEndpoints(FrontdoorFrontendEndpointArgs... frontendEndpoints) {
            return frontendEndpoints(List.of(frontendEndpoints));
        }

        /**
         * @param frontendEndpointsMap The names of the `frontend_endpoint` blocks within this resource to associate with this `routing_rule`.
         * 
         * @return builder
         * 
         */
        public Builder frontendEndpointsMap(@Nullable Output<Map<String,String>> frontendEndpointsMap) {
            $.frontendEndpointsMap = frontendEndpointsMap;
            return this;
        }

        /**
         * @param frontendEndpointsMap The names of the `frontend_endpoint` blocks within this resource to associate with this `routing_rule`.
         * 
         * @return builder
         * 
         */
        public Builder frontendEndpointsMap(Map<String,String> frontendEndpointsMap) {
            return frontendEndpointsMap(Output.of(frontendEndpointsMap));
        }

        /**
         * @param headerFrontdoorId The unique ID of the Front Door which is embedded into the incoming headers `X-Azure-FDID` attribute and maybe used to filter traffic sent by the Front Door to your backend.
         * 
         * @return builder
         * 
         */
        public Builder headerFrontdoorId(@Nullable Output<String> headerFrontdoorId) {
            $.headerFrontdoorId = headerFrontdoorId;
            return this;
        }

        /**
         * @param headerFrontdoorId The unique ID of the Front Door which is embedded into the incoming headers `X-Azure-FDID` attribute and maybe used to filter traffic sent by the Front Door to your backend.
         * 
         * @return builder
         * 
         */
        public Builder headerFrontdoorId(String headerFrontdoorId) {
            return headerFrontdoorId(Output.of(headerFrontdoorId));
        }

        /**
         * @param loadBalancerEnabled Should the Front Door Load Balancer be Enabled? Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder loadBalancerEnabled(@Nullable Output<Boolean> loadBalancerEnabled) {
            $.loadBalancerEnabled = loadBalancerEnabled;
            return this;
        }

        /**
         * @param loadBalancerEnabled Should the Front Door Load Balancer be Enabled? Defaults to `true`.
         * 
         * @return builder
         * 
         */
        public Builder loadBalancerEnabled(Boolean loadBalancerEnabled) {
            return loadBalancerEnabled(Output.of(loadBalancerEnabled));
        }

        /**
         * @param name Specifies the name of the Front Door service. Must be globally unique. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder name(@Nullable Output<String> name) {
            $.name = name;
            return this;
        }

        /**
         * @param name Specifies the name of the Front Door service. Must be globally unique. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        /**
         * @param resourceGroupName Specifies the name of the Resource Group in which the Front Door service should exist. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(@Nullable Output<String> resourceGroupName) {
            $.resourceGroupName = resourceGroupName;
            return this;
        }

        /**
         * @param resourceGroupName Specifies the name of the Resource Group in which the Front Door service should exist. Changing this forces a new resource to be created.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(String resourceGroupName) {
            return resourceGroupName(Output.of(resourceGroupName));
        }

        /**
         * @param routingRules A `routing_rule` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder routingRules(@Nullable Output<List<FrontdoorRoutingRuleArgs>> routingRules) {
            $.routingRules = routingRules;
            return this;
        }

        /**
         * @param routingRules A `routing_rule` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder routingRules(List<FrontdoorRoutingRuleArgs> routingRules) {
            return routingRules(Output.of(routingRules));
        }

        /**
         * @param routingRules A `routing_rule` block as defined below.
         * 
         * @return builder
         * 
         */
        public Builder routingRules(FrontdoorRoutingRuleArgs... routingRules) {
            return routingRules(List.of(routingRules));
        }

        /**
         * @param routingRulesMap A map/dictionary of Routing Rule Names (key) to the Routing Rule ID (value)
         * 
         * @return builder
         * 
         */
        public Builder routingRulesMap(@Nullable Output<Map<String,String>> routingRulesMap) {
            $.routingRulesMap = routingRulesMap;
            return this;
        }

        /**
         * @param routingRulesMap A map/dictionary of Routing Rule Names (key) to the Routing Rule ID (value)
         * 
         * @return builder
         * 
         */
        public Builder routingRulesMap(Map<String,String> routingRulesMap) {
            return routingRulesMap(Output.of(routingRulesMap));
        }

        /**
         * @param tags A mapping of tags to assign to the resource.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output<Map<String,String>> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags A mapping of tags to assign to the resource.
         * 
         * @return builder
         * 
         */
        public Builder tags(Map<String,String> tags) {
            return tags(Output.of(tags));
        }

        public FrontdoorState build() {
            return $;
        }
    }

}
