// <auto-generated/>

#nullable disable

using System;
using System.Collections.Generic;
using System.Linq;
using OpenAI;

namespace OpenAI.Moderations
{
    internal partial class InternalCreateModerationResponseResultCategoryAppliedInputTypes
    {
        private protected IDictionary<string, BinaryData> _additionalBinaryDataProperties;

        internal InternalCreateModerationResponseResultCategoryAppliedInputTypes(IEnumerable<string> hate, IEnumerable<string> hateThreatening, IEnumerable<string> harassment, IEnumerable<string> harassmentThreatening, IEnumerable<string> illicit, IEnumerable<string> illicitViolent, IEnumerable<string> selfHarm, IEnumerable<string> selfHarmIntent, IEnumerable<string> selfHarmInstructions, IEnumerable<string> sexual, IEnumerable<string> sexualMinors, IEnumerable<string> violence, IEnumerable<string> violenceGraphic)
        {
            Hate = hate.ToList();
            HateThreatening = hateThreatening.ToList();
            Harassment = harassment.ToList();
            HarassmentThreatening = harassmentThreatening.ToList();
            Illicit = illicit.ToList();
            IllicitViolent = illicitViolent.ToList();
            SelfHarm = selfHarm.ToList();
            SelfHarmIntent = selfHarmIntent.ToList();
            SelfHarmInstructions = selfHarmInstructions.ToList();
            Sexual = sexual.ToList();
            SexualMinors = sexualMinors.ToList();
            Violence = violence.ToList();
            ViolenceGraphic = violenceGraphic.ToList();
        }

        internal InternalCreateModerationResponseResultCategoryAppliedInputTypes(IReadOnlyList<string> hate, IReadOnlyList<string> hateThreatening, IReadOnlyList<string> harassment, IReadOnlyList<string> harassmentThreatening, IReadOnlyList<string> illicit, IReadOnlyList<string> illicitViolent, IReadOnlyList<string> selfHarm, IReadOnlyList<string> selfHarmIntent, IReadOnlyList<string> selfHarmInstructions, IReadOnlyList<string> sexual, IReadOnlyList<string> sexualMinors, IReadOnlyList<string> violence, IReadOnlyList<string> violenceGraphic, IDictionary<string, BinaryData> additionalBinaryDataProperties)
        {
            // Plugin customization: ensure initialization of collections
            Hate = hate ?? new ChangeTrackingList<string>();
            HateThreatening = hateThreatening ?? new ChangeTrackingList<string>();
            Harassment = harassment ?? new ChangeTrackingList<string>();
            HarassmentThreatening = harassmentThreatening ?? new ChangeTrackingList<string>();
            Illicit = illicit ?? new ChangeTrackingList<string>();
            IllicitViolent = illicitViolent ?? new ChangeTrackingList<string>();
            SelfHarm = selfHarm ?? new ChangeTrackingList<string>();
            SelfHarmIntent = selfHarmIntent ?? new ChangeTrackingList<string>();
            SelfHarmInstructions = selfHarmInstructions ?? new ChangeTrackingList<string>();
            Sexual = sexual ?? new ChangeTrackingList<string>();
            SexualMinors = sexualMinors ?? new ChangeTrackingList<string>();
            Violence = violence ?? new ChangeTrackingList<string>();
            ViolenceGraphic = violenceGraphic ?? new ChangeTrackingList<string>();
            _additionalBinaryDataProperties = additionalBinaryDataProperties;
        }

        internal IDictionary<string, BinaryData> SerializedAdditionalRawData
        {
            get => _additionalBinaryDataProperties;
            set => _additionalBinaryDataProperties = value;
        }
    }
}
