// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

// <auto-generated/>

#nullable disable

using System.Collections.Generic;
using Azure.Core;

namespace Azure.ResourceManager.Network.Models
{
    /// <summary> All security rules associated with the network interface. </summary>
    public partial class SecurityRuleAssociations
    {
        /// <summary> Initializes a new instance of SecurityRuleAssociations. </summary>
        internal SecurityRuleAssociations()
        {
            DefaultSecurityRules = new ChangeTrackingList<SecurityRule>();
            EffectiveSecurityRules = new ChangeTrackingList<EffectiveNetworkSecurityRule>();
        }

        /// <summary> Initializes a new instance of SecurityRuleAssociations. </summary>
        /// <param name="networkInterfaceAssociation"> Network interface and it&apos;s custom security rules. </param>
        /// <param name="subnetAssociation"> Subnet and it&apos;s custom security rules. </param>
        /// <param name="defaultSecurityRules"> Collection of default security rules of the network security group. </param>
        /// <param name="effectiveSecurityRules"> Collection of effective security rules. </param>
        internal SecurityRuleAssociations(NetworkInterfaceAssociation networkInterfaceAssociation, SubnetAssociation subnetAssociation, IReadOnlyList<SecurityRule> defaultSecurityRules, IReadOnlyList<EffectiveNetworkSecurityRule> effectiveSecurityRules)
        {
            NetworkInterfaceAssociation = networkInterfaceAssociation;
            SubnetAssociation = subnetAssociation;
            DefaultSecurityRules = defaultSecurityRules;
            EffectiveSecurityRules = effectiveSecurityRules;
        }

        /// <summary> Network interface and it&apos;s custom security rules. </summary>
        public NetworkInterfaceAssociation NetworkInterfaceAssociation { get; }
        /// <summary> Subnet and it&apos;s custom security rules. </summary>
        public SubnetAssociation SubnetAssociation { get; }
        /// <summary> Collection of default security rules of the network security group. </summary>
        public IReadOnlyList<SecurityRule> DefaultSecurityRules { get; }
        /// <summary> Collection of effective security rules. </summary>
        public IReadOnlyList<EffectiveNetworkSecurityRule> EffectiveSecurityRules { get; }
    }
}
