/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface AccessContextManagerGcpUserAccessBindingConfig extends cdktf.TerraformMetaArguments {
    /**
    * Optional. Access level that a user must have to be granted access. Only one access level is supported, not multiple. This repeated field must have exactly one element. Example: "accessPolicies/9522/accessLevels/device_trusted"
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.30.0/docs/resources/access_context_manager_gcp_user_access_binding#access_levels AccessContextManagerGcpUserAccessBinding#access_levels}
    */
    readonly accessLevels?: string[];
    /**
    * Required. Immutable. Google Group id whose members are subject to this binding's restrictions. See "id" in the G Suite Directory API's Groups resource. If a group's email address/alias is changed, this resource will continue to point at the changed group. This field does not accept group email addresses or aliases. Example: "01d520gv4vjcrht"
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.30.0/docs/resources/access_context_manager_gcp_user_access_binding#group_key AccessContextManagerGcpUserAccessBinding#group_key}
    */
    readonly groupKey: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.30.0/docs/resources/access_context_manager_gcp_user_access_binding#id AccessContextManagerGcpUserAccessBinding#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;
    /**
    * Required. ID of the parent organization.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.30.0/docs/resources/access_context_manager_gcp_user_access_binding#organization_id AccessContextManagerGcpUserAccessBinding#organization_id}
    */
    readonly organizationId: string;
    /**
    * session_settings block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.30.0/docs/resources/access_context_manager_gcp_user_access_binding#session_settings AccessContextManagerGcpUserAccessBinding#session_settings}
    */
    readonly sessionSettings?: AccessContextManagerGcpUserAccessBindingSessionSettings;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.30.0/docs/resources/access_context_manager_gcp_user_access_binding#timeouts AccessContextManagerGcpUserAccessBinding#timeouts}
    */
    readonly timeouts?: AccessContextManagerGcpUserAccessBindingTimeouts;
}
export interface AccessContextManagerGcpUserAccessBindingSessionSettings {
    /**
    * Optional. How long a user is allowed to take between actions before a new access token must be issued. Only set for Google Cloud apps.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.30.0/docs/resources/access_context_manager_gcp_user_access_binding#max_inactivity AccessContextManagerGcpUserAccessBinding#max_inactivity}
    */
    readonly maxInactivity?: string;
    /**
    * Optional. The session length. Setting this field to zero is equal to disabling session. Also can set infinite session by flipping the enabled bit to false below. If useOidcMaxAge is true, for OIDC apps, the session length will be the minimum of this field and OIDC max_age param.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.30.0/docs/resources/access_context_manager_gcp_user_access_binding#session_length AccessContextManagerGcpUserAccessBinding#session_length}
    */
    readonly sessionLength?: string;
    /**
    * Optional. This field enables or disables Google Cloud session length. When false, all fields set above will be disregarded and the session length is basically infinite.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.30.0/docs/resources/access_context_manager_gcp_user_access_binding#session_length_enabled AccessContextManagerGcpUserAccessBinding#session_length_enabled}
    */
    readonly sessionLengthEnabled?: boolean | cdktf.IResolvable;
    /**
    * Optional. The session challenges proposed to users when the Google Cloud session length is up. Possible values: ["LOGIN", "SECURITY_KEY", "PASSWORD"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.30.0/docs/resources/access_context_manager_gcp_user_access_binding#session_reauth_method AccessContextManagerGcpUserAccessBinding#session_reauth_method}
    */
    readonly sessionReauthMethod?: string;
    /**
    * Optional. Only useful for OIDC apps. When false, the OIDC max_age param, if passed in the authentication request will be ignored. When true, the re-auth period will be the minimum of the sessionLength field and the max_age OIDC param.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.30.0/docs/resources/access_context_manager_gcp_user_access_binding#use_oidc_max_age AccessContextManagerGcpUserAccessBinding#use_oidc_max_age}
    */
    readonly useOidcMaxAge?: boolean | cdktf.IResolvable;
}
export declare function accessContextManagerGcpUserAccessBindingSessionSettingsToTerraform(struct?: AccessContextManagerGcpUserAccessBindingSessionSettingsOutputReference | AccessContextManagerGcpUserAccessBindingSessionSettings): any;
export declare function accessContextManagerGcpUserAccessBindingSessionSettingsToHclTerraform(struct?: AccessContextManagerGcpUserAccessBindingSessionSettingsOutputReference | AccessContextManagerGcpUserAccessBindingSessionSettings): any;
export declare class AccessContextManagerGcpUserAccessBindingSessionSettingsOutputReference 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(): AccessContextManagerGcpUserAccessBindingSessionSettings | undefined;
    set internalValue(value: AccessContextManagerGcpUserAccessBindingSessionSettings | undefined);
    private _maxInactivity?;
    get maxInactivity(): string;
    set maxInactivity(value: string);
    resetMaxInactivity(): void;
    get maxInactivityInput(): string | undefined;
    private _sessionLength?;
    get sessionLength(): string;
    set sessionLength(value: string);
    resetSessionLength(): void;
    get sessionLengthInput(): string | undefined;
    private _sessionLengthEnabled?;
    get sessionLengthEnabled(): boolean | cdktf.IResolvable;
    set sessionLengthEnabled(value: boolean | cdktf.IResolvable);
    resetSessionLengthEnabled(): void;
    get sessionLengthEnabledInput(): boolean | cdktf.IResolvable | undefined;
    private _sessionReauthMethod?;
    get sessionReauthMethod(): string;
    set sessionReauthMethod(value: string);
    resetSessionReauthMethod(): void;
    get sessionReauthMethodInput(): string | undefined;
    private _useOidcMaxAge?;
    get useOidcMaxAge(): boolean | cdktf.IResolvable;
    set useOidcMaxAge(value: boolean | cdktf.IResolvable);
    resetUseOidcMaxAge(): void;
    get useOidcMaxAgeInput(): boolean | cdktf.IResolvable | undefined;
}
export interface AccessContextManagerGcpUserAccessBindingTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.30.0/docs/resources/access_context_manager_gcp_user_access_binding#create AccessContextManagerGcpUserAccessBinding#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.30.0/docs/resources/access_context_manager_gcp_user_access_binding#delete AccessContextManagerGcpUserAccessBinding#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.30.0/docs/resources/access_context_manager_gcp_user_access_binding#update AccessContextManagerGcpUserAccessBinding#update}
    */
    readonly update?: string;
}
export declare function accessContextManagerGcpUserAccessBindingTimeoutsToTerraform(struct?: AccessContextManagerGcpUserAccessBindingTimeouts | cdktf.IResolvable): any;
export declare function accessContextManagerGcpUserAccessBindingTimeoutsToHclTerraform(struct?: AccessContextManagerGcpUserAccessBindingTimeouts | cdktf.IResolvable): any;
export declare class AccessContextManagerGcpUserAccessBindingTimeoutsOutputReference 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(): AccessContextManagerGcpUserAccessBindingTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: AccessContextManagerGcpUserAccessBindingTimeouts | 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/6.30.0/docs/resources/access_context_manager_gcp_user_access_binding google_access_context_manager_gcp_user_access_binding}
*/
export declare class AccessContextManagerGcpUserAccessBinding extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_access_context_manager_gcp_user_access_binding";
    /**
    * Generates CDKTF code for importing a AccessContextManagerGcpUserAccessBinding 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 AccessContextManagerGcpUserAccessBinding to import
    * @param importFromId The id of the existing AccessContextManagerGcpUserAccessBinding that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.30.0/docs/resources/access_context_manager_gcp_user_access_binding#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the AccessContextManagerGcpUserAccessBinding 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.30.0/docs/resources/access_context_manager_gcp_user_access_binding google_access_context_manager_gcp_user_access_binding} 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 AccessContextManagerGcpUserAccessBindingConfig
    */
    constructor(scope: Construct, id: string, config: AccessContextManagerGcpUserAccessBindingConfig);
    private _accessLevels?;
    get accessLevels(): string[];
    set accessLevels(value: string[]);
    resetAccessLevels(): void;
    get accessLevelsInput(): string[] | undefined;
    private _groupKey?;
    get groupKey(): string;
    set groupKey(value: string);
    get groupKeyInput(): string | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    get name(): string;
    private _organizationId?;
    get organizationId(): string;
    set organizationId(value: string);
    get organizationIdInput(): string | undefined;
    private _sessionSettings;
    get sessionSettings(): AccessContextManagerGcpUserAccessBindingSessionSettingsOutputReference;
    putSessionSettings(value: AccessContextManagerGcpUserAccessBindingSessionSettings): void;
    resetSessionSettings(): void;
    get sessionSettingsInput(): AccessContextManagerGcpUserAccessBindingSessionSettings | undefined;
    private _timeouts;
    get timeouts(): AccessContextManagerGcpUserAccessBindingTimeoutsOutputReference;
    putTimeouts(value: AccessContextManagerGcpUserAccessBindingTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | AccessContextManagerGcpUserAccessBindingTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
