/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface LoadbalancerBackendConfig extends cdktf.TerraformMetaArguments {
    /**
    * UUID of the load balancer to which the backend is connected.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend#loadbalancer LoadbalancerBackend#loadbalancer}
    */
    readonly loadbalancer: string;
    /**
    * The name of the backend. Must be unique within the load balancer service.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend#name LoadbalancerBackend#name}
    */
    readonly name: string;
    /**
    * Domain name resolver used with dynamic type members.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend#resolver_name LoadbalancerBackend#resolver_name}
    */
    readonly resolverName?: string;
    /**
    * properties block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend#properties LoadbalancerBackend#properties}
    */
    readonly properties?: LoadbalancerBackendProperties[] | cdktf.IResolvable;
}
export interface LoadbalancerBackendProperties {
    /**
    * Expected HTTP status code returned by the customer application to mark server as healthy. Ignored for `tcp` `health_check_type`.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend#health_check_expected_status LoadbalancerBackend#health_check_expected_status}
    */
    readonly healthCheckExpectedStatus?: number;
    /**
    * Sets how many failed health checks are allowed until the backend member is taken off from the rotation.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend#health_check_fall LoadbalancerBackend#health_check_fall}
    */
    readonly healthCheckFall?: number;
    /**
    * Interval between health checks in seconds.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend#health_check_interval LoadbalancerBackend#health_check_interval}
    */
    readonly healthCheckInterval?: number;
    /**
    * Sets how many successful health checks are required to put the backend member back into rotation.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend#health_check_rise LoadbalancerBackend#health_check_rise}
    */
    readonly healthCheckRise?: number;
    /**
    * Enables certificate verification with the system CA certificate bundle. Works with https scheme in health_check_url, otherwise ignored.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend#health_check_tls_verify LoadbalancerBackend#health_check_tls_verify}
    */
    readonly healthCheckTlsVerify?: boolean | cdktf.IResolvable;
    /**
    * Health check type.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend#health_check_type LoadbalancerBackend#health_check_type}
    */
    readonly healthCheckType?: string;
    /**
    * Target path for health check HTTP GET requests. Ignored for `tcp` `health_check_type`.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend#health_check_url LoadbalancerBackend#health_check_url}
    */
    readonly healthCheckUrl?: string;
    /**
    * Allow HTTP/2 connections to backend members by utilizing ALPN extension of TLS protocol, therefore it can only be enabled when tls_enabled is set to true. Note: members should support HTTP/2 for this setting to work.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend#http2_enabled LoadbalancerBackend#http2_enabled}
    */
    readonly http2Enabled?: boolean | cdktf.IResolvable;
    /**
    * Enable outbound proxy protocol by setting the desired version. Defaults to empty string. Empty string disables proxy protocol.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend#outbound_proxy_protocol LoadbalancerBackend#outbound_proxy_protocol}
    */
    readonly outboundProxyProtocol?: string;
    /**
    * Sets sticky session cookie name. Empty string disables sticky session.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend#sticky_session_cookie_name LoadbalancerBackend#sticky_session_cookie_name}
    */
    readonly stickySessionCookieName?: string;
    /**
    * Backend server timeout in seconds.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend#timeout_server LoadbalancerBackend#timeout_server}
    */
    readonly timeoutServer?: number;
    /**
    * Maximum inactivity time on the client and server side for tunnels in seconds.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend#timeout_tunnel LoadbalancerBackend#timeout_tunnel}
    */
    readonly timeoutTunnel?: number;
    /**
    * Enables TLS connection from the load balancer to backend servers.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend#tls_enabled LoadbalancerBackend#tls_enabled}
    */
    readonly tlsEnabled?: boolean | cdktf.IResolvable;
    /**
    * If enabled, then the system CA certificate bundle will be used for the certificate verification.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend#tls_use_system_ca LoadbalancerBackend#tls_use_system_ca}
    */
    readonly tlsUseSystemCa?: boolean | cdktf.IResolvable;
    /**
    * Enables backend servers certificate verification. Please make sure that TLS config with the certificate bundle of type authority attached to the backend or `tls_use_system_ca` enabled. Note: `tls_verify` has preference over `health_check_tls_verify` when `tls_enabled` in true.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend#tls_verify LoadbalancerBackend#tls_verify}
    */
    readonly tlsVerify?: boolean | cdktf.IResolvable;
}
export declare function loadbalancerBackendPropertiesToTerraform(struct?: LoadbalancerBackendProperties | cdktf.IResolvable): any;
export declare function loadbalancerBackendPropertiesToHclTerraform(struct?: LoadbalancerBackendProperties | cdktf.IResolvable): any;
export declare class LoadbalancerBackendPropertiesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): LoadbalancerBackendProperties | cdktf.IResolvable | undefined;
    set internalValue(value: LoadbalancerBackendProperties | cdktf.IResolvable | undefined);
    private _healthCheckExpectedStatus?;
    get healthCheckExpectedStatus(): number;
    set healthCheckExpectedStatus(value: number);
    resetHealthCheckExpectedStatus(): void;
    get healthCheckExpectedStatusInput(): number | undefined;
    private _healthCheckFall?;
    get healthCheckFall(): number;
    set healthCheckFall(value: number);
    resetHealthCheckFall(): void;
    get healthCheckFallInput(): number | undefined;
    private _healthCheckInterval?;
    get healthCheckInterval(): number;
    set healthCheckInterval(value: number);
    resetHealthCheckInterval(): void;
    get healthCheckIntervalInput(): number | undefined;
    private _healthCheckRise?;
    get healthCheckRise(): number;
    set healthCheckRise(value: number);
    resetHealthCheckRise(): void;
    get healthCheckRiseInput(): number | undefined;
    private _healthCheckTlsVerify?;
    get healthCheckTlsVerify(): boolean | cdktf.IResolvable;
    set healthCheckTlsVerify(value: boolean | cdktf.IResolvable);
    resetHealthCheckTlsVerify(): void;
    get healthCheckTlsVerifyInput(): boolean | cdktf.IResolvable | undefined;
    private _healthCheckType?;
    get healthCheckType(): string;
    set healthCheckType(value: string);
    resetHealthCheckType(): void;
    get healthCheckTypeInput(): string | undefined;
    private _healthCheckUrl?;
    get healthCheckUrl(): string;
    set healthCheckUrl(value: string);
    resetHealthCheckUrl(): void;
    get healthCheckUrlInput(): string | undefined;
    private _http2Enabled?;
    get http2Enabled(): boolean | cdktf.IResolvable;
    set http2Enabled(value: boolean | cdktf.IResolvable);
    resetHttp2Enabled(): void;
    get http2EnabledInput(): boolean | cdktf.IResolvable | undefined;
    private _outboundProxyProtocol?;
    get outboundProxyProtocol(): string;
    set outboundProxyProtocol(value: string);
    resetOutboundProxyProtocol(): void;
    get outboundProxyProtocolInput(): string | undefined;
    private _stickySessionCookieName?;
    get stickySessionCookieName(): string;
    set stickySessionCookieName(value: string);
    resetStickySessionCookieName(): void;
    get stickySessionCookieNameInput(): string | undefined;
    private _timeoutServer?;
    get timeoutServer(): number;
    set timeoutServer(value: number);
    resetTimeoutServer(): void;
    get timeoutServerInput(): number | undefined;
    private _timeoutTunnel?;
    get timeoutTunnel(): number;
    set timeoutTunnel(value: number);
    resetTimeoutTunnel(): void;
    get timeoutTunnelInput(): number | undefined;
    private _tlsEnabled?;
    get tlsEnabled(): boolean | cdktf.IResolvable;
    set tlsEnabled(value: boolean | cdktf.IResolvable);
    resetTlsEnabled(): void;
    get tlsEnabledInput(): boolean | cdktf.IResolvable | undefined;
    private _tlsUseSystemCa?;
    get tlsUseSystemCa(): boolean | cdktf.IResolvable;
    set tlsUseSystemCa(value: boolean | cdktf.IResolvable);
    resetTlsUseSystemCa(): void;
    get tlsUseSystemCaInput(): boolean | cdktf.IResolvable | undefined;
    private _tlsVerify?;
    get tlsVerify(): boolean | cdktf.IResolvable;
    set tlsVerify(value: boolean | cdktf.IResolvable);
    resetTlsVerify(): void;
    get tlsVerifyInput(): boolean | cdktf.IResolvable | undefined;
}
export declare class LoadbalancerBackendPropertiesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: LoadbalancerBackendProperties[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): LoadbalancerBackendPropertiesOutputReference;
}
/**
* Represents a {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend upcloud_loadbalancer_backend}
*/
export declare class LoadbalancerBackend extends cdktf.TerraformResource {
    static readonly tfResourceType = "upcloud_loadbalancer_backend";
    /**
    * Generates CDKTF code for importing a LoadbalancerBackend resource upon running "cdktf plan <stack-name>"
    * @param scope The scope in which to define this construct
    * @param importToId The construct id used in the generated config for the LoadbalancerBackend to import
    * @param importFromId The id of the existing LoadbalancerBackend that should be imported. Refer to the {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the LoadbalancerBackend to import is found
    */
    static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktf.TerraformProvider): cdktf.ImportableResource;
    /**
    * Create a new {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_backend upcloud_loadbalancer_backend} Resource
    *
    * @param scope The scope in which to define this construct
    * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
    * @param options LoadbalancerBackendConfig
    */
    constructor(scope: Construct, id: string, config: LoadbalancerBackendConfig);
    get id(): string;
    private _loadbalancer?;
    get loadbalancer(): string;
    set loadbalancer(value: string);
    get loadbalancerInput(): string | undefined;
    get members(): string[];
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _resolverName?;
    get resolverName(): string;
    set resolverName(value: string);
    resetResolverName(): void;
    get resolverNameInput(): string | undefined;
    get tlsConfigs(): string[];
    private _properties;
    get properties(): LoadbalancerBackendPropertiesList;
    putProperties(value: LoadbalancerBackendProperties[] | cdktf.IResolvable): void;
    resetProperties(): void;
    get propertiesInput(): cdktf.IResolvable | LoadbalancerBackendProperties[] | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
