import * as pulumi from "@pulumi/pulumi";
import * as inputs from "./types/input";
import * as outputs from "./types/output";
/**
 * The `consul.ConfigEntryServiceDefaults` resource configures a [service defaults](https://developer.hashicorp.com/consul/docs/connect/config-entries/service-defaults) config entry that contains common configuration settings for service mesh services, such as upstreams and gateways.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as consul from "@pulumi/consul";
 *
 * const dashboard = new consul.ConfigEntryServiceDefaults("dashboard", {
 *     name: "dashboard",
 *     upstreamConfigs: [{
 *         defaults: {
 *             meshGateways: {
 *                 mode: "local",
 *             },
 *             limits: {
 *                 maxConnections: 512,
 *                 maxPendingRequests: 512,
 *                 maxConcurrentRequests: 512,
 *             },
 *         },
 *         overrides: [{
 *             name: "counting",
 *             meshGateways: [{
 *                 mode: "remote",
 *             }],
 *         }],
 *     }],
 * });
 * ```
 */
export declare class ConfigEntryServiceDefaults extends pulumi.CustomResource {
    /**
     * Get an existing ConfigEntryServiceDefaults resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: ConfigEntryServiceDefaultsState, opts?: pulumi.CustomResourceOptions): ConfigEntryServiceDefaults;
    /**
     * Returns true if the given object is an instance of ConfigEntryServiceDefaults.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is ConfigEntryServiceDefaults;
    /**
     * Specifies the strategy for allocating inbound connections to the service across Envoy proxy threads.
     */
    readonly balanceInboundConnections: pulumi.Output<string | undefined>;
    /**
     * Configures the destination for service traffic through terminating gateways.
     */
    readonly destinations: pulumi.Output<outputs.ConfigEntryServiceDefaultsDestination[] | undefined>;
    /**
     * List of extensions to modify Envoy proxy configuration.
     */
    readonly envoyExtensions: pulumi.Output<outputs.ConfigEntryServiceDefaultsEnvoyExtension[] | undefined>;
    /**
     * Specifies default configurations for exposing HTTP paths through Envoy.
     */
    readonly exposes: pulumi.Output<outputs.ConfigEntryServiceDefaultsExpose[]>;
    /**
     * Specifies the TLS server name indication (SNI) when federating with an external system.
     */
    readonly externalSni: pulumi.Output<string | undefined>;
    /**
     * Specifies the number of milliseconds allowed for establishing connections to the local application instance before timing out.
     */
    readonly localConnectTimeoutMs: pulumi.Output<number | undefined>;
    /**
     * Specifies the timeout for HTTP requests to the local application instance.
     */
    readonly localRequestTimeoutMs: pulumi.Output<number | undefined>;
    /**
     * Specifies the maximum number of concurrent inbound connections to each service instance.
     */
    readonly maxInboundConnections: pulumi.Output<number | undefined>;
    /**
     * Specifies the default mesh gateway mode field for the service.
     */
    readonly meshGateways: pulumi.Output<outputs.ConfigEntryServiceDefaultsMeshGateway[] | undefined>;
    /**
     * Specifies a set of custom key-value pairs to add to the Consul KV store.
     */
    readonly meta: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * Specifies a mode for how the service directs inbound and outbound traffic.
     */
    readonly mode: pulumi.Output<string | undefined>;
    /**
     * Controls whether mutual TLS is required for incoming connections to this service. This setting is only supported for services with transparent proxy enabled.
     */
    readonly mutualTlsMode: pulumi.Output<string | undefined>;
    /**
     * Specifies the name of the service you are setting the defaults for.
     */
    readonly name: pulumi.Output<string>;
    /**
     * Specifies the Consul namespace that the configuration entry applies to.
     */
    readonly namespace: pulumi.Output<string | undefined>;
    /**
     * Specifies the name of the name of the Consul admin partition that the configuration entry applies to. Refer to Admin Partitions for additional information.
     */
    readonly partition: pulumi.Output<string | undefined>;
    /**
     * Specifies the default protocol for the service.
     */
    readonly protocol: pulumi.Output<string>;
    /**
     * Controls configurations specific to proxies in transparent mode. Refer to Transparent Proxy Mode for additional information.
     */
    readonly transparentProxies: pulumi.Output<outputs.ConfigEntryServiceDefaultsTransparentProxy[] | undefined>;
    /**
     * Controls default upstream connection settings and custom overrides for individual upstream services.
     */
    readonly upstreamConfigs: pulumi.Output<outputs.ConfigEntryServiceDefaultsUpstreamConfig[] | undefined>;
    /**
     * Create a ConfigEntryServiceDefaults resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: ConfigEntryServiceDefaultsArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering ConfigEntryServiceDefaults resources.
 */
export interface ConfigEntryServiceDefaultsState {
    /**
     * Specifies the strategy for allocating inbound connections to the service across Envoy proxy threads.
     */
    balanceInboundConnections?: pulumi.Input<string>;
    /**
     * Configures the destination for service traffic through terminating gateways.
     */
    destinations?: pulumi.Input<pulumi.Input<inputs.ConfigEntryServiceDefaultsDestination>[]>;
    /**
     * List of extensions to modify Envoy proxy configuration.
     */
    envoyExtensions?: pulumi.Input<pulumi.Input<inputs.ConfigEntryServiceDefaultsEnvoyExtension>[]>;
    /**
     * Specifies default configurations for exposing HTTP paths through Envoy.
     */
    exposes?: pulumi.Input<pulumi.Input<inputs.ConfigEntryServiceDefaultsExpose>[]>;
    /**
     * Specifies the TLS server name indication (SNI) when federating with an external system.
     */
    externalSni?: pulumi.Input<string>;
    /**
     * Specifies the number of milliseconds allowed for establishing connections to the local application instance before timing out.
     */
    localConnectTimeoutMs?: pulumi.Input<number>;
    /**
     * Specifies the timeout for HTTP requests to the local application instance.
     */
    localRequestTimeoutMs?: pulumi.Input<number>;
    /**
     * Specifies the maximum number of concurrent inbound connections to each service instance.
     */
    maxInboundConnections?: pulumi.Input<number>;
    /**
     * Specifies the default mesh gateway mode field for the service.
     */
    meshGateways?: pulumi.Input<pulumi.Input<inputs.ConfigEntryServiceDefaultsMeshGateway>[]>;
    /**
     * Specifies a set of custom key-value pairs to add to the Consul KV store.
     */
    meta?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * Specifies a mode for how the service directs inbound and outbound traffic.
     */
    mode?: pulumi.Input<string>;
    /**
     * Controls whether mutual TLS is required for incoming connections to this service. This setting is only supported for services with transparent proxy enabled.
     */
    mutualTlsMode?: pulumi.Input<string>;
    /**
     * Specifies the name of the service you are setting the defaults for.
     */
    name?: pulumi.Input<string>;
    /**
     * Specifies the Consul namespace that the configuration entry applies to.
     */
    namespace?: pulumi.Input<string>;
    /**
     * Specifies the name of the name of the Consul admin partition that the configuration entry applies to. Refer to Admin Partitions for additional information.
     */
    partition?: pulumi.Input<string>;
    /**
     * Specifies the default protocol for the service.
     */
    protocol?: pulumi.Input<string>;
    /**
     * Controls configurations specific to proxies in transparent mode. Refer to Transparent Proxy Mode for additional information.
     */
    transparentProxies?: pulumi.Input<pulumi.Input<inputs.ConfigEntryServiceDefaultsTransparentProxy>[]>;
    /**
     * Controls default upstream connection settings and custom overrides for individual upstream services.
     */
    upstreamConfigs?: pulumi.Input<pulumi.Input<inputs.ConfigEntryServiceDefaultsUpstreamConfig>[]>;
}
/**
 * The set of arguments for constructing a ConfigEntryServiceDefaults resource.
 */
export interface ConfigEntryServiceDefaultsArgs {
    /**
     * Specifies the strategy for allocating inbound connections to the service across Envoy proxy threads.
     */
    balanceInboundConnections?: pulumi.Input<string>;
    /**
     * Configures the destination for service traffic through terminating gateways.
     */
    destinations?: pulumi.Input<pulumi.Input<inputs.ConfigEntryServiceDefaultsDestination>[]>;
    /**
     * List of extensions to modify Envoy proxy configuration.
     */
    envoyExtensions?: pulumi.Input<pulumi.Input<inputs.ConfigEntryServiceDefaultsEnvoyExtension>[]>;
    /**
     * Specifies default configurations for exposing HTTP paths through Envoy.
     */
    exposes: pulumi.Input<pulumi.Input<inputs.ConfigEntryServiceDefaultsExpose>[]>;
    /**
     * Specifies the TLS server name indication (SNI) when federating with an external system.
     */
    externalSni?: pulumi.Input<string>;
    /**
     * Specifies the number of milliseconds allowed for establishing connections to the local application instance before timing out.
     */
    localConnectTimeoutMs?: pulumi.Input<number>;
    /**
     * Specifies the timeout for HTTP requests to the local application instance.
     */
    localRequestTimeoutMs?: pulumi.Input<number>;
    /**
     * Specifies the maximum number of concurrent inbound connections to each service instance.
     */
    maxInboundConnections?: pulumi.Input<number>;
    /**
     * Specifies the default mesh gateway mode field for the service.
     */
    meshGateways?: pulumi.Input<pulumi.Input<inputs.ConfigEntryServiceDefaultsMeshGateway>[]>;
    /**
     * Specifies a set of custom key-value pairs to add to the Consul KV store.
     */
    meta?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * Specifies a mode for how the service directs inbound and outbound traffic.
     */
    mode?: pulumi.Input<string>;
    /**
     * Controls whether mutual TLS is required for incoming connections to this service. This setting is only supported for services with transparent proxy enabled.
     */
    mutualTlsMode?: pulumi.Input<string>;
    /**
     * Specifies the name of the service you are setting the defaults for.
     */
    name?: pulumi.Input<string>;
    /**
     * Specifies the Consul namespace that the configuration entry applies to.
     */
    namespace?: pulumi.Input<string>;
    /**
     * Specifies the name of the name of the Consul admin partition that the configuration entry applies to. Refer to Admin Partitions for additional information.
     */
    partition?: pulumi.Input<string>;
    /**
     * Specifies the default protocol for the service.
     */
    protocol: pulumi.Input<string>;
    /**
     * Controls configurations specific to proxies in transparent mode. Refer to Transparent Proxy Mode for additional information.
     */
    transparentProxies?: pulumi.Input<pulumi.Input<inputs.ConfigEntryServiceDefaultsTransparentProxy>[]>;
    /**
     * Controls default upstream connection settings and custom overrides for individual upstream services.
     */
    upstreamConfigs?: pulumi.Input<pulumi.Input<inputs.ConfigEntryServiceDefaultsUpstreamConfig>[]>;
}
