// *** 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 Cuemby.Equinix
{
    public static class GetMetalPlans
    {
        public static Task<GetMetalPlansResult> InvokeAsync(GetMetalPlansArgs? args = null, InvokeOptions? options = null)
            => Pulumi.Deployment.Instance.InvokeAsync<GetMetalPlansResult>("equinix:index/getMetalPlans:GetMetalPlans", args ?? new GetMetalPlansArgs(), options.WithDefaults());

        public static Output<GetMetalPlansResult> Invoke(GetMetalPlansInvokeArgs? args = null, InvokeOptions? options = null)
            => Pulumi.Deployment.Instance.Invoke<GetMetalPlansResult>("equinix:index/getMetalPlans:GetMetalPlans", args ?? new GetMetalPlansInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetMetalPlansArgs : Pulumi.InvokeArgs
    {
        [Input("filters")]
        private List<Inputs.GetMetalPlansFilterArgs>? _filters;

        /// <summary>
        /// One or more attribute/values pairs to filter off of
        /// </summary>
        public List<Inputs.GetMetalPlansFilterArgs> Filters
        {
            get => _filters ?? (_filters = new List<Inputs.GetMetalPlansFilterArgs>());
            set => _filters = value;
        }

        [Input("sorts")]
        private List<Inputs.GetMetalPlansSortArgs>? _sorts;

        /// <summary>
        /// One or more attribute/direction pairs on which to sort results. If multiple
        /// sorts are provided, they will be applied in order
        /// </summary>
        public List<Inputs.GetMetalPlansSortArgs> Sorts
        {
            get => _sorts ?? (_sorts = new List<Inputs.GetMetalPlansSortArgs>());
            set => _sorts = value;
        }

        public GetMetalPlansArgs()
        {
        }
    }

    public sealed class GetMetalPlansInvokeArgs : Pulumi.InvokeArgs
    {
        [Input("filters")]
        private InputList<Inputs.GetMetalPlansFilterInputArgs>? _filters;

        /// <summary>
        /// One or more attribute/values pairs to filter off of
        /// </summary>
        public InputList<Inputs.GetMetalPlansFilterInputArgs> Filters
        {
            get => _filters ?? (_filters = new InputList<Inputs.GetMetalPlansFilterInputArgs>());
            set => _filters = value;
        }

        [Input("sorts")]
        private InputList<Inputs.GetMetalPlansSortInputArgs>? _sorts;

        /// <summary>
        /// One or more attribute/direction pairs on which to sort results. If multiple
        /// sorts are provided, they will be applied in order
        /// </summary>
        public InputList<Inputs.GetMetalPlansSortInputArgs> Sorts
        {
            get => _sorts ?? (_sorts = new InputList<Inputs.GetMetalPlansSortInputArgs>());
            set => _sorts = value;
        }

        public GetMetalPlansInvokeArgs()
        {
        }
    }


    [OutputType]
    public sealed class GetMetalPlansResult
    {
        public readonly ImmutableArray<Outputs.GetMetalPlansFilterResult> Filters;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// The ID of the facility
        /// </summary>
        public readonly ImmutableArray<Outputs.GetMetalPlansPlanResult> Plans;
        public readonly ImmutableArray<Outputs.GetMetalPlansSortResult> Sorts;

        [OutputConstructor]
        private GetMetalPlansResult(
            ImmutableArray<Outputs.GetMetalPlansFilterResult> filters,

            string id,

            ImmutableArray<Outputs.GetMetalPlansPlanResult> plans,

            ImmutableArray<Outputs.GetMetalPlansSortResult> sorts)
        {
            Filters = filters;
            Id = id;
            Plans = plans;
            Sorts = sorts;
        }
    }
}
