/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface KmsEkmConnectionConfig extends cdktf.TerraformMetaArguments {
    /**
    * Optional. Identifies the EKM Crypto Space that this EkmConnection maps to. Note: This field is required if KeyManagementMode is CLOUD_KMS.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/kms_ekm_connection#crypto_space_path KmsEkmConnection#crypto_space_path}
    */
    readonly cryptoSpacePath?: string;
    /**
    * Optional. Etag of the currently stored EkmConnection.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/kms_ekm_connection#etag KmsEkmConnection#etag}
    */
    readonly etag?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/kms_ekm_connection#id KmsEkmConnection#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;
    /**
    * Optional. Describes who can perform control plane operations on the EKM. If unset, this defaults to MANUAL Default value: "MANUAL" Possible values: ["MANUAL", "CLOUD_KMS"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/kms_ekm_connection#key_management_mode KmsEkmConnection#key_management_mode}
    */
    readonly keyManagementMode?: string;
    /**
    * The location for the EkmConnection.
    * A full list of valid locations can be found by running 'gcloud kms locations list'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/kms_ekm_connection#location KmsEkmConnection#location}
    */
    readonly location: string;
    /**
    * The resource name for the EkmConnection.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/kms_ekm_connection#name KmsEkmConnection#name}
    */
    readonly name: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/kms_ekm_connection#project KmsEkmConnection#project}
    */
    readonly project?: string;
    /**
    * service_resolvers block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/kms_ekm_connection#service_resolvers KmsEkmConnection#service_resolvers}
    */
    readonly serviceResolvers: KmsEkmConnectionServiceResolvers[] | cdktf.IResolvable;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/kms_ekm_connection#timeouts KmsEkmConnection#timeouts}
    */
    readonly timeouts?: KmsEkmConnectionTimeouts;
}
export interface KmsEkmConnectionServiceResolversServerCertificates {
    /**
    * Required. The raw certificate bytes in DER format. A base64-encoded string.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/kms_ekm_connection#raw_der KmsEkmConnection#raw_der}
    */
    readonly rawDer: string;
    /**
    * Output only. The subject Alternative DNS names. Only present if parsed is true.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/kms_ekm_connection#subject_alternative_dns_names KmsEkmConnection#subject_alternative_dns_names}
    */
    readonly subjectAlternativeDnsNames?: string[];
}
export declare function kmsEkmConnectionServiceResolversServerCertificatesToTerraform(struct?: KmsEkmConnectionServiceResolversServerCertificates | cdktf.IResolvable): any;
export declare function kmsEkmConnectionServiceResolversServerCertificatesToHclTerraform(struct?: KmsEkmConnectionServiceResolversServerCertificates | cdktf.IResolvable): any;
export declare class KmsEkmConnectionServiceResolversServerCertificatesOutputReference 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(): KmsEkmConnectionServiceResolversServerCertificates | cdktf.IResolvable | undefined;
    set internalValue(value: KmsEkmConnectionServiceResolversServerCertificates | cdktf.IResolvable | undefined);
    get issuer(): string;
    get notAfterTime(): string;
    get notBeforeTime(): string;
    get parsed(): cdktf.IResolvable;
    private _rawDer?;
    get rawDer(): string;
    set rawDer(value: string);
    get rawDerInput(): string | undefined;
    get serialNumber(): string;
    get sha256Fingerprint(): string;
    get subject(): string;
    private _subjectAlternativeDnsNames?;
    get subjectAlternativeDnsNames(): string[];
    set subjectAlternativeDnsNames(value: string[]);
    resetSubjectAlternativeDnsNames(): void;
    get subjectAlternativeDnsNamesInput(): string[] | undefined;
}
export declare class KmsEkmConnectionServiceResolversServerCertificatesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: KmsEkmConnectionServiceResolversServerCertificates[] | 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): KmsEkmConnectionServiceResolversServerCertificatesOutputReference;
}
export interface KmsEkmConnectionServiceResolvers {
    /**
    * Optional. The filter applied to the endpoints of the resolved service. If no filter is specified, all endpoints will be considered. An endpoint will be chosen arbitrarily from the filtered list for each request. For endpoint filter syntax and examples, see https://cloud.google.com/service-directory/docs/reference/rpc/google.cloud.servicedirectory.v1#resolveservicerequest.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/kms_ekm_connection#endpoint_filter KmsEkmConnection#endpoint_filter}
    */
    readonly endpointFilter?: string;
    /**
    * Required. The hostname of the EKM replica used at TLS and HTTP layers.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/kms_ekm_connection#hostname KmsEkmConnection#hostname}
    */
    readonly hostname: string;
    /**
    * Required. The resource name of the Service Directory service pointing to an EKM replica, in the format projects/* /locations/* /namespaces/* /services/*
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/kms_ekm_connection#service_directory_service KmsEkmConnection#service_directory_service}
     *
    * Note: The above comment contained a comment block ending sequence (* followed by /). We have introduced a space between to prevent syntax errors. Please ignore the space.
    */
    readonly serviceDirectoryService: string;
    /**
    * server_certificates block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/kms_ekm_connection#server_certificates KmsEkmConnection#server_certificates}
    */
    readonly serverCertificates: KmsEkmConnectionServiceResolversServerCertificates[] | cdktf.IResolvable;
}
export declare function kmsEkmConnectionServiceResolversToTerraform(struct?: KmsEkmConnectionServiceResolvers | cdktf.IResolvable): any;
export declare function kmsEkmConnectionServiceResolversToHclTerraform(struct?: KmsEkmConnectionServiceResolvers | cdktf.IResolvable): any;
export declare class KmsEkmConnectionServiceResolversOutputReference 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(): KmsEkmConnectionServiceResolvers | cdktf.IResolvable | undefined;
    set internalValue(value: KmsEkmConnectionServiceResolvers | cdktf.IResolvable | undefined);
    private _endpointFilter?;
    get endpointFilter(): string;
    set endpointFilter(value: string);
    resetEndpointFilter(): void;
    get endpointFilterInput(): string | undefined;
    private _hostname?;
    get hostname(): string;
    set hostname(value: string);
    get hostnameInput(): string | undefined;
    private _serviceDirectoryService?;
    get serviceDirectoryService(): string;
    set serviceDirectoryService(value: string);
    get serviceDirectoryServiceInput(): string | undefined;
    private _serverCertificates;
    get serverCertificates(): KmsEkmConnectionServiceResolversServerCertificatesList;
    putServerCertificates(value: KmsEkmConnectionServiceResolversServerCertificates[] | cdktf.IResolvable): void;
    get serverCertificatesInput(): cdktf.IResolvable | KmsEkmConnectionServiceResolversServerCertificates[] | undefined;
}
export declare class KmsEkmConnectionServiceResolversList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: KmsEkmConnectionServiceResolvers[] | 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): KmsEkmConnectionServiceResolversOutputReference;
}
export interface KmsEkmConnectionTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/kms_ekm_connection#create KmsEkmConnection#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/kms_ekm_connection#delete KmsEkmConnection#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/kms_ekm_connection#update KmsEkmConnection#update}
    */
    readonly update?: string;
}
export declare function kmsEkmConnectionTimeoutsToTerraform(struct?: KmsEkmConnectionTimeouts | cdktf.IResolvable): any;
export declare function kmsEkmConnectionTimeoutsToHclTerraform(struct?: KmsEkmConnectionTimeouts | cdktf.IResolvable): any;
export declare class KmsEkmConnectionTimeoutsOutputReference 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(): KmsEkmConnectionTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: KmsEkmConnectionTimeouts | 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/hashicorp/google/5.43.0/docs/resources/kms_ekm_connection google_kms_ekm_connection}
*/
export declare class KmsEkmConnection extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_kms_ekm_connection";
    /**
    * Generates CDKTF code for importing a KmsEkmConnection 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 KmsEkmConnection to import
    * @param importFromId The id of the existing KmsEkmConnection that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/5.43.0/docs/resources/kms_ekm_connection#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the KmsEkmConnection 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/hashicorp/google/5.43.0/docs/resources/kms_ekm_connection google_kms_ekm_connection} 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 KmsEkmConnectionConfig
    */
    constructor(scope: Construct, id: string, config: KmsEkmConnectionConfig);
    get createTime(): string;
    private _cryptoSpacePath?;
    get cryptoSpacePath(): string;
    set cryptoSpacePath(value: string);
    resetCryptoSpacePath(): void;
    get cryptoSpacePathInput(): string | undefined;
    private _etag?;
    get etag(): string;
    set etag(value: string);
    resetEtag(): void;
    get etagInput(): string | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _keyManagementMode?;
    get keyManagementMode(): string;
    set keyManagementMode(value: string);
    resetKeyManagementMode(): void;
    get keyManagementModeInput(): string | undefined;
    private _location?;
    get location(): string;
    set location(value: string);
    get locationInput(): string | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    private _serviceResolvers;
    get serviceResolvers(): KmsEkmConnectionServiceResolversList;
    putServiceResolvers(value: KmsEkmConnectionServiceResolvers[] | cdktf.IResolvable): void;
    get serviceResolversInput(): cdktf.IResolvable | KmsEkmConnectionServiceResolvers[] | undefined;
    private _timeouts;
    get timeouts(): KmsEkmConnectionTimeoutsOutputReference;
    putTimeouts(value: KmsEkmConnectionTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | KmsEkmConnectionTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
