// *** 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;

namespace Pulumi.Tctest.Monitor
{
    public static class ProductEvent
    {
        public static Task<ProductEventResult> InvokeAsync(ProductEventArgs? args = null, InvokeOptions? options = null)
            => Pulumi.Deployment.Instance.InvokeAsync<ProductEventResult>("tctest:Monitor/productEvent:ProductEvent", args ?? new ProductEventArgs(), options.WithDefaults());

        public static Output<ProductEventResult> Invoke(ProductEventInvokeArgs? args = null, InvokeOptions? options = null)
            => Pulumi.Deployment.Instance.Invoke<ProductEventResult>("tctest:Monitor/productEvent:ProductEvent", args ?? new ProductEventInvokeArgs(), options.WithDefaults());
    }


    public sealed class ProductEventArgs : Pulumi.InvokeArgs
    {
        [Input("dimensions")]
        private List<Inputs.ProductEventDimensionArgs>? _dimensions;
        public List<Inputs.ProductEventDimensionArgs> Dimensions
        {
            get => _dimensions ?? (_dimensions = new List<Inputs.ProductEventDimensionArgs>());
            set => _dimensions = value;
        }

        [Input("endTime")]
        public int? EndTime { get; set; }

        [Input("eventNames")]
        private List<string>? _eventNames;
        public List<string> EventNames
        {
            get => _eventNames ?? (_eventNames = new List<string>());
            set => _eventNames = value;
        }

        [Input("instanceIds")]
        private List<string>? _instanceIds;
        public List<string> InstanceIds
        {
            get => _instanceIds ?? (_instanceIds = new List<string>());
            set => _instanceIds = value;
        }

        [Input("isAlarmConfig")]
        public int? IsAlarmConfig { get; set; }

        [Input("productNames")]
        private List<string>? _productNames;
        public List<string> ProductNames
        {
            get => _productNames ?? (_productNames = new List<string>());
            set => _productNames = value;
        }

        [Input("projectIds")]
        private List<string>? _projectIds;
        public List<string> ProjectIds
        {
            get => _projectIds ?? (_projectIds = new List<string>());
            set => _projectIds = value;
        }

        [Input("regionLists")]
        private List<string>? _regionLists;
        public List<string> RegionLists
        {
            get => _regionLists ?? (_regionLists = new List<string>());
            set => _regionLists = value;
        }

        [Input("resultOutputFile")]
        public string? ResultOutputFile { get; set; }

        [Input("startTime")]
        public int? StartTime { get; set; }

        [Input("statuses")]
        private List<string>? _statuses;
        public List<string> Statuses
        {
            get => _statuses ?? (_statuses = new List<string>());
            set => _statuses = value;
        }

        [Input("types")]
        private List<string>? _types;
        public List<string> Types
        {
            get => _types ?? (_types = new List<string>());
            set => _types = value;
        }

        public ProductEventArgs()
        {
        }
    }

    public sealed class ProductEventInvokeArgs : Pulumi.InvokeArgs
    {
        [Input("dimensions")]
        private InputList<Inputs.ProductEventDimensionInputArgs>? _dimensions;
        public InputList<Inputs.ProductEventDimensionInputArgs> Dimensions
        {
            get => _dimensions ?? (_dimensions = new InputList<Inputs.ProductEventDimensionInputArgs>());
            set => _dimensions = value;
        }

        [Input("endTime")]
        public Input<int>? EndTime { get; set; }

        [Input("eventNames")]
        private InputList<string>? _eventNames;
        public InputList<string> EventNames
        {
            get => _eventNames ?? (_eventNames = new InputList<string>());
            set => _eventNames = value;
        }

        [Input("instanceIds")]
        private InputList<string>? _instanceIds;
        public InputList<string> InstanceIds
        {
            get => _instanceIds ?? (_instanceIds = new InputList<string>());
            set => _instanceIds = value;
        }

        [Input("isAlarmConfig")]
        public Input<int>? IsAlarmConfig { get; set; }

        [Input("productNames")]
        private InputList<string>? _productNames;
        public InputList<string> ProductNames
        {
            get => _productNames ?? (_productNames = new InputList<string>());
            set => _productNames = value;
        }

        [Input("projectIds")]
        private InputList<string>? _projectIds;
        public InputList<string> ProjectIds
        {
            get => _projectIds ?? (_projectIds = new InputList<string>());
            set => _projectIds = value;
        }

        [Input("regionLists")]
        private InputList<string>? _regionLists;
        public InputList<string> RegionLists
        {
            get => _regionLists ?? (_regionLists = new InputList<string>());
            set => _regionLists = value;
        }

        [Input("resultOutputFile")]
        public Input<string>? ResultOutputFile { get; set; }

        [Input("startTime")]
        public Input<int>? StartTime { get; set; }

        [Input("statuses")]
        private InputList<string>? _statuses;
        public InputList<string> Statuses
        {
            get => _statuses ?? (_statuses = new InputList<string>());
            set => _statuses = value;
        }

        [Input("types")]
        private InputList<string>? _types;
        public InputList<string> Types
        {
            get => _types ?? (_types = new InputList<string>());
            set => _types = value;
        }

        public ProductEventInvokeArgs()
        {
        }
    }


    [OutputType]
    public sealed class ProductEventResult
    {
        public readonly ImmutableArray<Outputs.ProductEventDimensionResult> Dimensions;
        public readonly int? EndTime;
        public readonly ImmutableArray<string> EventNames;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        public readonly ImmutableArray<string> InstanceIds;
        public readonly int? IsAlarmConfig;
        public readonly ImmutableArray<Outputs.ProductEventListResult> Lists;
        public readonly ImmutableArray<string> ProductNames;
        public readonly ImmutableArray<string> ProjectIds;
        public readonly ImmutableArray<string> RegionLists;
        public readonly string? ResultOutputFile;
        public readonly int? StartTime;
        public readonly ImmutableArray<string> Statuses;
        public readonly ImmutableArray<string> Types;

        [OutputConstructor]
        private ProductEventResult(
            ImmutableArray<Outputs.ProductEventDimensionResult> dimensions,

            int? endTime,

            ImmutableArray<string> eventNames,

            string id,

            ImmutableArray<string> instanceIds,

            int? isAlarmConfig,

            ImmutableArray<Outputs.ProductEventListResult> lists,

            ImmutableArray<string> productNames,

            ImmutableArray<string> projectIds,

            ImmutableArray<string> regionLists,

            string? resultOutputFile,

            int? startTime,

            ImmutableArray<string> statuses,

            ImmutableArray<string> types)
        {
            Dimensions = dimensions;
            EndTime = endTime;
            EventNames = eventNames;
            Id = id;
            InstanceIds = instanceIds;
            IsAlarmConfig = isAlarmConfig;
            Lists = lists;
            ProductNames = productNames;
            ProjectIds = projectIds;
            RegionLists = regionLists;
            ResultOutputFile = resultOutputFile;
            StartTime = startTime;
            Statuses = statuses;
            Types = types;
        }
    }
}
