/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface IntegrationsClientConfig extends cdktf.TerraformMetaArguments {
    /**
    * Indicates if sample integrations should be created along with provisioning.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/integrations_client#create_sample_integrations IntegrationsClient#create_sample_integrations}
    */
    readonly createSampleIntegrations?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/integrations_client#id IntegrationsClient#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;
    /**
    * Location in which client needs to be provisioned.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/integrations_client#location IntegrationsClient#location}
    */
    readonly location: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/integrations_client#project IntegrationsClient#project}
    */
    readonly project?: string;
    /**
    * User input run-as service account, if empty, will bring up a new default service account.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/integrations_client#run_as_service_account IntegrationsClient#run_as_service_account}
    */
    readonly runAsServiceAccount?: string;
    /**
    * cloud_kms_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/integrations_client#cloud_kms_config IntegrationsClient#cloud_kms_config}
    */
    readonly cloudKmsConfig?: IntegrationsClientCloudKmsConfig;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/integrations_client#timeouts IntegrationsClient#timeouts}
    */
    readonly timeouts?: IntegrationsClientTimeouts;
}
export interface IntegrationsClientCloudKmsConfig {
    /**
    * A Cloud KMS key is a named object containing one or more key versions, along
    * with metadata for the key. A key exists on exactly one key ring tied to a
    * specific location.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/integrations_client#key IntegrationsClient#key}
    */
    readonly key: string;
    /**
    * Each version of a key contains key material used for encryption or signing.
    * A key's version is represented by an integer, starting at 1. To decrypt data
    * or verify a signature, you must use the same key version that was used to
    * encrypt or sign the data.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/integrations_client#key_version IntegrationsClient#key_version}
    */
    readonly keyVersion?: string;
    /**
    * Location name of the key ring, e.g. "us-west1".
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/integrations_client#kms_location IntegrationsClient#kms_location}
    */
    readonly kmsLocation: string;
    /**
    * The Google Cloud project id of the project where the kms key stored. If empty,
    * the kms key is stored at the same project as customer's project and ecrypted
    * with CMEK, otherwise, the kms key is stored in the tenant project and
    * encrypted with GMEK.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/integrations_client#kms_project_id IntegrationsClient#kms_project_id}
    */
    readonly kmsProjectId?: string;
    /**
    * A key ring organizes keys in a specific Google Cloud location and allows you to
    * manage access control on groups of keys. A key ring's name does not need to be
    * unique across a Google Cloud project, but must be unique within a given location.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/integrations_client#kms_ring IntegrationsClient#kms_ring}
    */
    readonly kmsRing: string;
}
export declare function integrationsClientCloudKmsConfigToTerraform(struct?: IntegrationsClientCloudKmsConfigOutputReference | IntegrationsClientCloudKmsConfig): any;
export declare function integrationsClientCloudKmsConfigToHclTerraform(struct?: IntegrationsClientCloudKmsConfigOutputReference | IntegrationsClientCloudKmsConfig): any;
export declare class IntegrationsClientCloudKmsConfigOutputReference 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(): IntegrationsClientCloudKmsConfig | undefined;
    set internalValue(value: IntegrationsClientCloudKmsConfig | undefined);
    private _key?;
    get key(): string;
    set key(value: string);
    get keyInput(): string | undefined;
    private _keyVersion?;
    get keyVersion(): string;
    set keyVersion(value: string);
    resetKeyVersion(): void;
    get keyVersionInput(): string | undefined;
    private _kmsLocation?;
    get kmsLocation(): string;
    set kmsLocation(value: string);
    get kmsLocationInput(): string | undefined;
    private _kmsProjectId?;
    get kmsProjectId(): string;
    set kmsProjectId(value: string);
    resetKmsProjectId(): void;
    get kmsProjectIdInput(): string | undefined;
    private _kmsRing?;
    get kmsRing(): string;
    set kmsRing(value: string);
    get kmsRingInput(): string | undefined;
}
export interface IntegrationsClientTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/integrations_client#create IntegrationsClient#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/integrations_client#delete IntegrationsClient#delete}
    */
    readonly delete?: string;
}
export declare function integrationsClientTimeoutsToTerraform(struct?: IntegrationsClientTimeouts | cdktf.IResolvable): any;
export declare function integrationsClientTimeoutsToHclTerraform(struct?: IntegrationsClientTimeouts | cdktf.IResolvable): any;
export declare class IntegrationsClientTimeoutsOutputReference 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(): IntegrationsClientTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: IntegrationsClientTimeouts | 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;
}
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/integrations_client google_integrations_client}
*/
export declare class IntegrationsClient extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_integrations_client";
    /**
    * Generates CDKTF code for importing a IntegrationsClient 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 IntegrationsClient to import
    * @param importFromId The id of the existing IntegrationsClient that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.13.0/docs/resources/integrations_client#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the IntegrationsClient 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/6.13.0/docs/resources/integrations_client google_integrations_client} 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 IntegrationsClientConfig
    */
    constructor(scope: Construct, id: string, config: IntegrationsClientConfig);
    private _createSampleIntegrations?;
    get createSampleIntegrations(): boolean | cdktf.IResolvable;
    set createSampleIntegrations(value: boolean | cdktf.IResolvable);
    resetCreateSampleIntegrations(): void;
    get createSampleIntegrationsInput(): boolean | cdktf.IResolvable | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _location?;
    get location(): string;
    set location(value: string);
    get locationInput(): string | undefined;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    private _runAsServiceAccount?;
    get runAsServiceAccount(): string;
    set runAsServiceAccount(value: string);
    resetRunAsServiceAccount(): void;
    get runAsServiceAccountInput(): string | undefined;
    private _cloudKmsConfig;
    get cloudKmsConfig(): IntegrationsClientCloudKmsConfigOutputReference;
    putCloudKmsConfig(value: IntegrationsClientCloudKmsConfig): void;
    resetCloudKmsConfig(): void;
    get cloudKmsConfigInput(): IntegrationsClientCloudKmsConfig | undefined;
    private _timeouts;
    get timeouts(): IntegrationsClientTimeoutsOutputReference;
    putTimeouts(value: IntegrationsClientTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | IntegrationsClientTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
