import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface BastionSessionConfig extends cdktf.TerraformMetaArguments {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/bastion_session#bastion_id BastionSession#bastion_id}
    */
    readonly bastionId: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/bastion_session#display_name BastionSession#display_name}
    */
    readonly displayName?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/bastion_session#id BastionSession#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/bastion_session#key_type BastionSession#key_type}
    */
    readonly keyType?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/bastion_session#session_ttl_in_seconds BastionSession#session_ttl_in_seconds}
    */
    readonly sessionTtlInSeconds?: number;
    /**
    * key_details block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/bastion_session#key_details BastionSession#key_details}
    */
    readonly keyDetails: BastionSessionKeyDetails;
    /**
    * target_resource_details block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/bastion_session#target_resource_details BastionSession#target_resource_details}
    */
    readonly targetResourceDetails: BastionSessionTargetResourceDetails;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/bastion_session#timeouts BastionSession#timeouts}
    */
    readonly timeouts?: BastionSessionTimeouts;
}
export interface BastionSessionKeyDetails {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/bastion_session#public_key_content BastionSession#public_key_content}
    */
    readonly publicKeyContent: string;
}
export declare function bastionSessionKeyDetailsToTerraform(struct?: BastionSessionKeyDetailsOutputReference | BastionSessionKeyDetails): any;
export declare function bastionSessionKeyDetailsToHclTerraform(struct?: BastionSessionKeyDetailsOutputReference | BastionSessionKeyDetails): any;
export declare class BastionSessionKeyDetailsOutputReference 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(): BastionSessionKeyDetails | undefined;
    set internalValue(value: BastionSessionKeyDetails | undefined);
    private _publicKeyContent?;
    get publicKeyContent(): string;
    set publicKeyContent(value: string);
    get publicKeyContentInput(): string | undefined;
}
export interface BastionSessionTargetResourceDetails {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/bastion_session#session_type BastionSession#session_type}
    */
    readonly sessionType: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/bastion_session#target_resource_fqdn BastionSession#target_resource_fqdn}
    */
    readonly targetResourceFqdn?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/bastion_session#target_resource_id BastionSession#target_resource_id}
    */
    readonly targetResourceId?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/bastion_session#target_resource_operating_system_user_name BastionSession#target_resource_operating_system_user_name}
    */
    readonly targetResourceOperatingSystemUserName?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/bastion_session#target_resource_port BastionSession#target_resource_port}
    */
    readonly targetResourcePort?: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/bastion_session#target_resource_private_ip_address BastionSession#target_resource_private_ip_address}
    */
    readonly targetResourcePrivateIpAddress?: string;
}
export declare function bastionSessionTargetResourceDetailsToTerraform(struct?: BastionSessionTargetResourceDetailsOutputReference | BastionSessionTargetResourceDetails): any;
export declare function bastionSessionTargetResourceDetailsToHclTerraform(struct?: BastionSessionTargetResourceDetailsOutputReference | BastionSessionTargetResourceDetails): any;
export declare class BastionSessionTargetResourceDetailsOutputReference 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(): BastionSessionTargetResourceDetails | undefined;
    set internalValue(value: BastionSessionTargetResourceDetails | undefined);
    private _sessionType?;
    get sessionType(): string;
    set sessionType(value: string);
    get sessionTypeInput(): string | undefined;
    get targetResourceDisplayName(): string;
    private _targetResourceFqdn?;
    get targetResourceFqdn(): string;
    set targetResourceFqdn(value: string);
    resetTargetResourceFqdn(): void;
    get targetResourceFqdnInput(): string | undefined;
    private _targetResourceId?;
    get targetResourceId(): string;
    set targetResourceId(value: string);
    resetTargetResourceId(): void;
    get targetResourceIdInput(): string | undefined;
    private _targetResourceOperatingSystemUserName?;
    get targetResourceOperatingSystemUserName(): string;
    set targetResourceOperatingSystemUserName(value: string);
    resetTargetResourceOperatingSystemUserName(): void;
    get targetResourceOperatingSystemUserNameInput(): string | undefined;
    private _targetResourcePort?;
    get targetResourcePort(): number;
    set targetResourcePort(value: number);
    resetTargetResourcePort(): void;
    get targetResourcePortInput(): number | undefined;
    private _targetResourcePrivateIpAddress?;
    get targetResourcePrivateIpAddress(): string;
    set targetResourcePrivateIpAddress(value: string);
    resetTargetResourcePrivateIpAddress(): void;
    get targetResourcePrivateIpAddressInput(): string | undefined;
}
export interface BastionSessionTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/bastion_session#create BastionSession#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/bastion_session#delete BastionSession#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/bastion_session#update BastionSession#update}
    */
    readonly update?: string;
}
export declare function bastionSessionTimeoutsToTerraform(struct?: BastionSessionTimeouts | cdktf.IResolvable): any;
export declare function bastionSessionTimeoutsToHclTerraform(struct?: BastionSessionTimeouts | cdktf.IResolvable): any;
export declare class BastionSessionTimeoutsOutputReference 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(): BastionSessionTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: BastionSessionTimeouts | 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/bastion_session oci_bastion_session}
*/
export declare class BastionSession extends cdktf.TerraformResource {
    static readonly tfResourceType = "oci_bastion_session";
    /**
    * Generates CDKTF code for importing a BastionSession 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 BastionSession to import
    * @param importFromId The id of the existing BastionSession that should be imported. Refer to the {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/bastion_session#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the BastionSession 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/bastion_session oci_bastion_session} 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 BastionSessionConfig
    */
    constructor(scope: Construct, id: string, config: BastionSessionConfig);
    private _bastionId?;
    get bastionId(): string;
    set bastionId(value: string);
    get bastionIdInput(): string | undefined;
    get bastionName(): string;
    get bastionPublicHostKeyInfo(): string;
    get bastionUserName(): string;
    private _displayName?;
    get displayName(): string;
    set displayName(value: string);
    resetDisplayName(): void;
    get displayNameInput(): string | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _keyType?;
    get keyType(): string;
    set keyType(value: string);
    resetKeyType(): void;
    get keyTypeInput(): string | undefined;
    get lifecycleDetails(): string;
    private _sessionTtlInSeconds?;
    get sessionTtlInSeconds(): number;
    set sessionTtlInSeconds(value: number);
    resetSessionTtlInSeconds(): void;
    get sessionTtlInSecondsInput(): number | undefined;
    private _sshMetadata;
    get sshMetadata(): cdktf.StringMap;
    get state(): string;
    get timeCreated(): string;
    get timeUpdated(): string;
    private _keyDetails;
    get keyDetails(): BastionSessionKeyDetailsOutputReference;
    putKeyDetails(value: BastionSessionKeyDetails): void;
    get keyDetailsInput(): BastionSessionKeyDetails | undefined;
    private _targetResourceDetails;
    get targetResourceDetails(): BastionSessionTargetResourceDetailsOutputReference;
    putTargetResourceDetails(value: BastionSessionTargetResourceDetails): void;
    get targetResourceDetailsInput(): BastionSessionTargetResourceDetails | undefined;
    private _timeouts;
    get timeouts(): BastionSessionTimeoutsOutputReference;
    putTimeouts(value: BastionSessionTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | BastionSessionTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
