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

namespace Pulumi.Elasticstack
{
    public static class Config
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "IDE1006", Justification = 
        "Double underscore prefix used to avoid conflicts with variable names.")]
        private sealed class __Value<T>
        {
            private readonly Func<T> _getter;
            private T _value = default!;
            private bool _set;

            public __Value(Func<T> getter)
            {
                _getter = getter;
            }

            public T Get() => _set ? _value : _getter();

            public void Set(T value)
            {
                _value = value;
                _set = true;
            }
        }

        private static readonly global::Pulumi.Config __config = new global::Pulumi.Config("elasticstack");

        private static readonly __Value<Pulumi.Elasticstack.Config.Types.Elasticsearch?> _elasticsearch = new __Value<Pulumi.Elasticstack.Config.Types.Elasticsearch?>(() => __config.GetObject<Pulumi.Elasticstack.Config.Types.Elasticsearch>("elasticsearch"));
        /// <summary>
        /// Elasticsearch connection configuration block.
        /// </summary>
        public static Pulumi.Elasticstack.Config.Types.Elasticsearch? Elasticsearch
        {
            get => _elasticsearch.Get();
            set => _elasticsearch.Set(value);
        }

        public static class Types
        {

             public class Elasticsearch
             {
                public string? ApiKey { get; set; } = null!;
                public string? CaData { get; set; } = null!;
                public string? CaFile { get; set; } = null!;
                public string? CertData { get; set; } = null!;
                public string? CertFile { get; set; } = null!;
                public ImmutableArray<string> Endpoints { get; set; }
                public bool? Insecure { get; set; }
                public string? KeyData { get; set; } = null!;
                public string? KeyFile { get; set; } = null!;
                public string? Password { get; set; } = null!;
                public string? Username { get; set; } = null!;
            }
        }
    }
}
