/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface LoadbalancerFrontendConfig extends cdktf.TerraformMetaArguments {
    /**
    * The name of the backend where traffic will be routed by default. The default backend can be overridden in frontend rules.
    *
    * 	Note that the frontend resource depends on the default backend resource. Use the `name` field of a backend resource as the value for this field (like in the example above) or the `depends_on` meta argument to ensure the resources are created and destroyed in the correct order.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_frontend#default_backend_name LoadbalancerFrontend#default_backend_name}
    */
    readonly defaultBackendName: string;
    /**
    * UUID of the load balancer to which the frontend is connected.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_frontend#loadbalancer LoadbalancerFrontend#loadbalancer}
    */
    readonly loadbalancer: string;
    /**
    * When load balancer operating in `tcp` mode it acts as a layer 4 proxy. In `http` mode it acts as a layer 7 proxy.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_frontend#mode LoadbalancerFrontend#mode}
    */
    readonly mode: string;
    /**
    * The name of the frontend. 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_frontend#name LoadbalancerFrontend#name}
    */
    readonly name: string;
    /**
    * Port to listen for incoming requests.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_frontend#port LoadbalancerFrontend#port}
    */
    readonly port: number;
    /**
    * networks block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_frontend#networks LoadbalancerFrontend#networks}
    */
    readonly networks?: LoadbalancerFrontendNetworks[] | cdktf.IResolvable;
    /**
    * properties block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_frontend#properties LoadbalancerFrontend#properties}
    */
    readonly properties?: LoadbalancerFrontendProperties[] | cdktf.IResolvable;
}
export interface LoadbalancerFrontendNetworks {
    /**
    * Name of the load balancer network.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_frontend#name LoadbalancerFrontend#name}
    */
    readonly name: string;
}
export declare function loadbalancerFrontendNetworksToTerraform(struct?: LoadbalancerFrontendNetworks | cdktf.IResolvable): any;
export declare function loadbalancerFrontendNetworksToHclTerraform(struct?: LoadbalancerFrontendNetworks | cdktf.IResolvable): any;
export declare class LoadbalancerFrontendNetworksOutputReference 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(): LoadbalancerFrontendNetworks | cdktf.IResolvable | undefined;
    set internalValue(value: LoadbalancerFrontendNetworks | cdktf.IResolvable | undefined);
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
}
export declare class LoadbalancerFrontendNetworksList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: LoadbalancerFrontendNetworks[] | 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): LoadbalancerFrontendNetworksOutputReference;
}
export interface LoadbalancerFrontendProperties {
    /**
    * Enable or disable HTTP/2 support.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_frontend#http2_enabled LoadbalancerFrontend#http2_enabled}
    */
    readonly http2Enabled?: boolean | cdktf.IResolvable;
    /**
    * Enable or disable inbound proxy protocol support.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_frontend#inbound_proxy_protocol LoadbalancerFrontend#inbound_proxy_protocol}
    */
    readonly inboundProxyProtocol?: boolean | cdktf.IResolvable;
    /**
    * Client request timeout in seconds.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_frontend#timeout_client LoadbalancerFrontend#timeout_client}
    */
    readonly timeoutClient?: number;
}
export declare function loadbalancerFrontendPropertiesToTerraform(struct?: LoadbalancerFrontendProperties | cdktf.IResolvable): any;
export declare function loadbalancerFrontendPropertiesToHclTerraform(struct?: LoadbalancerFrontendProperties | cdktf.IResolvable): any;
export declare class LoadbalancerFrontendPropertiesOutputReference 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(): LoadbalancerFrontendProperties | cdktf.IResolvable | undefined;
    set internalValue(value: LoadbalancerFrontendProperties | cdktf.IResolvable | undefined);
    private _http2Enabled?;
    get http2Enabled(): boolean | cdktf.IResolvable;
    set http2Enabled(value: boolean | cdktf.IResolvable);
    resetHttp2Enabled(): void;
    get http2EnabledInput(): boolean | cdktf.IResolvable | undefined;
    private _inboundProxyProtocol?;
    get inboundProxyProtocol(): boolean | cdktf.IResolvable;
    set inboundProxyProtocol(value: boolean | cdktf.IResolvable);
    resetInboundProxyProtocol(): void;
    get inboundProxyProtocolInput(): boolean | cdktf.IResolvable | undefined;
    private _timeoutClient?;
    get timeoutClient(): number;
    set timeoutClient(value: number);
    resetTimeoutClient(): void;
    get timeoutClientInput(): number | undefined;
}
export declare class LoadbalancerFrontendPropertiesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: LoadbalancerFrontendProperties[] | 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): LoadbalancerFrontendPropertiesOutputReference;
}
/**
* Represents a {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_frontend upcloud_loadbalancer_frontend}
*/
export declare class LoadbalancerFrontend extends cdktf.TerraformResource {
    static readonly tfResourceType = "upcloud_loadbalancer_frontend";
    /**
    * Generates CDKTF code for importing a LoadbalancerFrontend 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 LoadbalancerFrontend to import
    * @param importFromId The id of the existing LoadbalancerFrontend that should be imported. Refer to the {@link https://registry.terraform.io/providers/upcloudltd/upcloud/5.20.5/docs/resources/loadbalancer_frontend#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the LoadbalancerFrontend 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_frontend upcloud_loadbalancer_frontend} 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 LoadbalancerFrontendConfig
    */
    constructor(scope: Construct, id: string, config: LoadbalancerFrontendConfig);
    private _defaultBackendName?;
    get defaultBackendName(): string;
    set defaultBackendName(value: string);
    get defaultBackendNameInput(): string | undefined;
    get id(): string;
    private _loadbalancer?;
    get loadbalancer(): string;
    set loadbalancer(value: string);
    get loadbalancerInput(): string | undefined;
    private _mode?;
    get mode(): string;
    set mode(value: string);
    get modeInput(): string | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _port?;
    get port(): number;
    set port(value: number);
    get portInput(): number | undefined;
    get rules(): string[];
    get tlsConfigs(): string[];
    private _networks;
    get networks(): LoadbalancerFrontendNetworksList;
    putNetworks(value: LoadbalancerFrontendNetworks[] | cdktf.IResolvable): void;
    resetNetworks(): void;
    get networksInput(): cdktf.IResolvable | LoadbalancerFrontendNetworks[] | undefined;
    private _properties;
    get properties(): LoadbalancerFrontendPropertiesList;
    putProperties(value: LoadbalancerFrontendProperties[] | cdktf.IResolvable): void;
    resetProperties(): void;
    get propertiesInput(): cdktf.IResolvable | LoadbalancerFrontendProperties[] | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
