// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;
using Pulumi;

namespace Pulumiverse.Fortios.Outputs
{

    [OutputType]
    public sealed class SystemIpamRule
    {
        /// <summary>
        /// Description.
        /// </summary>
        public readonly string? Description;
        /// <summary>
        /// Configure serial number or wildcard of Fortigate to match. The structure of `device` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemIpamRuleDevice> Devices;
        /// <summary>
        /// Enable/disable DHCP server for matching IPAM interfaces. Valid values: `enable`, `disable`.
        /// </summary>
        public readonly string? Dhcp;
        /// <summary>
        /// Configure name or wildcard of interface to match. The structure of `interface` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemIpamRuleInterface> Interfaces;
        /// <summary>
        /// IPAM rule name.
        /// </summary>
        public readonly string? Name;
        /// <summary>
        /// Configure name of IPAM pool to use. The structure of `pool` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.SystemIpamRulePool> Pools;
        /// <summary>
        /// Configure role of interface to match. Valid values: `any`, `lan`, `wan`, `dmz`, `undefined`.
        /// </summary>
        public readonly string? Role;

        [OutputConstructor]
        private SystemIpamRule(
            string? description,

            ImmutableArray<Outputs.SystemIpamRuleDevice> devices,

            string? dhcp,

            ImmutableArray<Outputs.SystemIpamRuleInterface> interfaces,

            string? name,

            ImmutableArray<Outputs.SystemIpamRulePool> pools,

            string? role)
        {
            Description = description;
            Devices = devices;
            Dhcp = dhcp;
            Interfaces = interfaces;
            Name = name;
            Pools = pools;
            Role = role;
        }
    }
}
