import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface LoadBalancerListenerConfig extends cdktf.TerraformMetaArguments {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#default_backend_set_name LoadBalancerListener#default_backend_set_name}
    */
    readonly defaultBackendSetName: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#hostname_names LoadBalancerListener#hostname_names}
    */
    readonly hostnameNames?: string[];
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#id LoadBalancerListener#id}
    *
    * Please be aware that the id field is automatically added to all resources in Terraform providers using a Terraform provider SDK version below 2.
    * If you experience problems setting this value it might not be settable. Please take a look at the provider documentation to ensure it should be settable.
    */
    readonly id?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#load_balancer_id LoadBalancerListener#load_balancer_id}
    */
    readonly loadBalancerId: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#name LoadBalancerListener#name}
    */
    readonly name: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#path_route_set_name LoadBalancerListener#path_route_set_name}
    */
    readonly pathRouteSetName?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#port LoadBalancerListener#port}
    */
    readonly port: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#protocol LoadBalancerListener#protocol}
    */
    readonly protocol: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#routing_policy_name LoadBalancerListener#routing_policy_name}
    */
    readonly routingPolicyName?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#rule_set_names LoadBalancerListener#rule_set_names}
    */
    readonly ruleSetNames?: string[];
    /**
    * connection_configuration block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#connection_configuration LoadBalancerListener#connection_configuration}
    */
    readonly connectionConfiguration?: LoadBalancerListenerConnectionConfiguration;
    /**
    * ssl_configuration block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#ssl_configuration LoadBalancerListener#ssl_configuration}
    */
    readonly sslConfiguration?: LoadBalancerListenerSslConfiguration;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#timeouts LoadBalancerListener#timeouts}
    */
    readonly timeouts?: LoadBalancerListenerTimeouts;
}
export interface LoadBalancerListenerConnectionConfiguration {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#backend_tcp_proxy_protocol_options LoadBalancerListener#backend_tcp_proxy_protocol_options}
    */
    readonly backendTcpProxyProtocolOptions?: string[];
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#backend_tcp_proxy_protocol_version LoadBalancerListener#backend_tcp_proxy_protocol_version}
    */
    readonly backendTcpProxyProtocolVersion?: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#idle_timeout_in_seconds LoadBalancerListener#idle_timeout_in_seconds}
    */
    readonly idleTimeoutInSeconds: string;
}
export declare function loadBalancerListenerConnectionConfigurationToTerraform(struct?: LoadBalancerListenerConnectionConfigurationOutputReference | LoadBalancerListenerConnectionConfiguration): any;
export declare function loadBalancerListenerConnectionConfigurationToHclTerraform(struct?: LoadBalancerListenerConnectionConfigurationOutputReference | LoadBalancerListenerConnectionConfiguration): any;
export declare class LoadBalancerListenerConnectionConfigurationOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): LoadBalancerListenerConnectionConfiguration | undefined;
    set internalValue(value: LoadBalancerListenerConnectionConfiguration | undefined);
    private _backendTcpProxyProtocolOptions?;
    get backendTcpProxyProtocolOptions(): string[];
    set backendTcpProxyProtocolOptions(value: string[]);
    resetBackendTcpProxyProtocolOptions(): void;
    get backendTcpProxyProtocolOptionsInput(): string[] | undefined;
    private _backendTcpProxyProtocolVersion?;
    get backendTcpProxyProtocolVersion(): number;
    set backendTcpProxyProtocolVersion(value: number);
    resetBackendTcpProxyProtocolVersion(): void;
    get backendTcpProxyProtocolVersionInput(): number | undefined;
    private _idleTimeoutInSeconds?;
    get idleTimeoutInSeconds(): string;
    set idleTimeoutInSeconds(value: string);
    get idleTimeoutInSecondsInput(): string | undefined;
}
export interface LoadBalancerListenerSslConfiguration {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#certificate_ids LoadBalancerListener#certificate_ids}
    */
    readonly certificateIds?: string[];
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#certificate_name LoadBalancerListener#certificate_name}
    */
    readonly certificateName?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#cipher_suite_name LoadBalancerListener#cipher_suite_name}
    */
    readonly cipherSuiteName?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#has_session_resumption LoadBalancerListener#has_session_resumption}
    */
    readonly hasSessionResumption?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#protocols LoadBalancerListener#protocols}
    */
    readonly protocols?: string[];
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#server_order_preference LoadBalancerListener#server_order_preference}
    */
    readonly serverOrderPreference?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#trusted_certificate_authority_ids LoadBalancerListener#trusted_certificate_authority_ids}
    */
    readonly trustedCertificateAuthorityIds?: string[];
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#verify_depth LoadBalancerListener#verify_depth}
    */
    readonly verifyDepth?: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#verify_peer_certificate LoadBalancerListener#verify_peer_certificate}
    */
    readonly verifyPeerCertificate?: boolean | cdktf.IResolvable;
}
export declare function loadBalancerListenerSslConfigurationToTerraform(struct?: LoadBalancerListenerSslConfigurationOutputReference | LoadBalancerListenerSslConfiguration): any;
export declare function loadBalancerListenerSslConfigurationToHclTerraform(struct?: LoadBalancerListenerSslConfigurationOutputReference | LoadBalancerListenerSslConfiguration): any;
export declare class LoadBalancerListenerSslConfigurationOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): LoadBalancerListenerSslConfiguration | undefined;
    set internalValue(value: LoadBalancerListenerSslConfiguration | undefined);
    private _certificateIds?;
    get certificateIds(): string[];
    set certificateIds(value: string[]);
    resetCertificateIds(): void;
    get certificateIdsInput(): string[] | undefined;
    private _certificateName?;
    get certificateName(): string;
    set certificateName(value: string);
    resetCertificateName(): void;
    get certificateNameInput(): string | undefined;
    private _cipherSuiteName?;
    get cipherSuiteName(): string;
    set cipherSuiteName(value: string);
    resetCipherSuiteName(): void;
    get cipherSuiteNameInput(): string | undefined;
    private _hasSessionResumption?;
    get hasSessionResumption(): boolean | cdktf.IResolvable;
    set hasSessionResumption(value: boolean | cdktf.IResolvable);
    resetHasSessionResumption(): void;
    get hasSessionResumptionInput(): boolean | cdktf.IResolvable | undefined;
    private _protocols?;
    get protocols(): string[];
    set protocols(value: string[]);
    resetProtocols(): void;
    get protocolsInput(): string[] | undefined;
    private _serverOrderPreference?;
    get serverOrderPreference(): string;
    set serverOrderPreference(value: string);
    resetServerOrderPreference(): void;
    get serverOrderPreferenceInput(): string | undefined;
    private _trustedCertificateAuthorityIds?;
    get trustedCertificateAuthorityIds(): string[];
    set trustedCertificateAuthorityIds(value: string[]);
    resetTrustedCertificateAuthorityIds(): void;
    get trustedCertificateAuthorityIdsInput(): string[] | undefined;
    private _verifyDepth?;
    get verifyDepth(): number;
    set verifyDepth(value: number);
    resetVerifyDepth(): void;
    get verifyDepthInput(): number | undefined;
    private _verifyPeerCertificate?;
    get verifyPeerCertificate(): boolean | cdktf.IResolvable;
    set verifyPeerCertificate(value: boolean | cdktf.IResolvable);
    resetVerifyPeerCertificate(): void;
    get verifyPeerCertificateInput(): boolean | cdktf.IResolvable | undefined;
}
export interface LoadBalancerListenerTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#create LoadBalancerListener#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#delete LoadBalancerListener#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#update LoadBalancerListener#update}
    */
    readonly update?: string;
}
export declare function loadBalancerListenerTimeoutsToTerraform(struct?: LoadBalancerListenerTimeouts | cdktf.IResolvable): any;
export declare function loadBalancerListenerTimeoutsToHclTerraform(struct?: LoadBalancerListenerTimeouts | cdktf.IResolvable): any;
export declare class LoadBalancerListenerTimeoutsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): LoadBalancerListenerTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: LoadBalancerListenerTimeouts | cdktf.IResolvable | undefined);
    private _create?;
    get create(): string;
    set create(value: string);
    resetCreate(): void;
    get createInput(): string | undefined;
    private _delete?;
    get delete(): string;
    set delete(value: string);
    resetDelete(): void;
    get deleteInput(): string | undefined;
    private _update?;
    get update(): string;
    set update(value: string);
    resetUpdate(): void;
    get updateInput(): string | undefined;
}
/**
* Represents a {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener oci_load_balancer_listener}
*/
export declare class LoadBalancerListener extends cdktf.TerraformResource {
    static readonly tfResourceType = "oci_load_balancer_listener";
    /**
    * Generates CDKTF code for importing a LoadBalancerListener 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 LoadBalancerListener to import
    * @param importFromId The id of the existing LoadBalancerListener that should be imported. Refer to the {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/load_balancer_listener#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the LoadBalancerListener 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/oracle/oci/6.18.0/docs/resources/load_balancer_listener oci_load_balancer_listener} 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 LoadBalancerListenerConfig
    */
    constructor(scope: Construct, id: string, config: LoadBalancerListenerConfig);
    private _defaultBackendSetName?;
    get defaultBackendSetName(): string;
    set defaultBackendSetName(value: string);
    get defaultBackendSetNameInput(): string | undefined;
    private _hostnameNames?;
    get hostnameNames(): string[];
    set hostnameNames(value: string[]);
    resetHostnameNames(): void;
    get hostnameNamesInput(): string[] | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _loadBalancerId?;
    get loadBalancerId(): string;
    set loadBalancerId(value: string);
    get loadBalancerIdInput(): string | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _pathRouteSetName?;
    get pathRouteSetName(): string;
    set pathRouteSetName(value: string);
    resetPathRouteSetName(): void;
    get pathRouteSetNameInput(): string | undefined;
    private _port?;
    get port(): number;
    set port(value: number);
    get portInput(): number | undefined;
    private _protocol?;
    get protocol(): string;
    set protocol(value: string);
    get protocolInput(): string | undefined;
    private _routingPolicyName?;
    get routingPolicyName(): string;
    set routingPolicyName(value: string);
    resetRoutingPolicyName(): void;
    get routingPolicyNameInput(): string | undefined;
    private _ruleSetNames?;
    get ruleSetNames(): string[];
    set ruleSetNames(value: string[]);
    resetRuleSetNames(): void;
    get ruleSetNamesInput(): string[] | undefined;
    get state(): string;
    private _connectionConfiguration;
    get connectionConfiguration(): LoadBalancerListenerConnectionConfigurationOutputReference;
    putConnectionConfiguration(value: LoadBalancerListenerConnectionConfiguration): void;
    resetConnectionConfiguration(): void;
    get connectionConfigurationInput(): LoadBalancerListenerConnectionConfiguration | undefined;
    private _sslConfiguration;
    get sslConfiguration(): LoadBalancerListenerSslConfigurationOutputReference;
    putSslConfiguration(value: LoadBalancerListenerSslConfiguration): void;
    resetSslConfiguration(): void;
    get sslConfigurationInput(): LoadBalancerListenerSslConfiguration | undefined;
    private _timeouts;
    get timeouts(): LoadBalancerListenerTimeoutsOutputReference;
    putTimeouts(value: LoadBalancerListenerTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | LoadBalancerListenerTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
