import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface PsqlDbSystemConfig extends cdktf.TerraformMetaArguments {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#apply_config PsqlDbSystem#apply_config}
    */
    readonly applyConfig?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#compartment_id PsqlDbSystem#compartment_id}
    */
    readonly compartmentId: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#config_id PsqlDbSystem#config_id}
    */
    readonly configId?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#db_version PsqlDbSystem#db_version}
    */
    readonly dbVersion: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#defined_tags PsqlDbSystem#defined_tags}
    */
    readonly definedTags?: {
        [key: string]: string;
    };
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#description PsqlDbSystem#description}
    */
    readonly description?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#display_name PsqlDbSystem#display_name}
    */
    readonly displayName: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#freeform_tags PsqlDbSystem#freeform_tags}
    */
    readonly freeformTags?: {
        [key: string]: string;
    };
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#id PsqlDbSystem#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/psql_db_system#instance_count PsqlDbSystem#instance_count}
    */
    readonly instanceCount?: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#instance_memory_size_in_gbs PsqlDbSystem#instance_memory_size_in_gbs}
    */
    readonly instanceMemorySizeInGbs?: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#instance_ocpu_count PsqlDbSystem#instance_ocpu_count}
    */
    readonly instanceOcpuCount?: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#shape PsqlDbSystem#shape}
    */
    readonly shape: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#system_type PsqlDbSystem#system_type}
    */
    readonly systemType?: string;
    /**
    * credentials block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#credentials PsqlDbSystem#credentials}
    */
    readonly credentials?: PsqlDbSystemCredentials;
    /**
    * instances_details block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#instances_details PsqlDbSystem#instances_details}
    */
    readonly instancesDetails?: PsqlDbSystemInstancesDetails[] | cdktf.IResolvable;
    /**
    * management_policy block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#management_policy PsqlDbSystem#management_policy}
    */
    readonly managementPolicy?: PsqlDbSystemManagementPolicy;
    /**
    * network_details block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#network_details PsqlDbSystem#network_details}
    */
    readonly networkDetails: PsqlDbSystemNetworkDetails;
    /**
    * patch_operations block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#patch_operations PsqlDbSystem#patch_operations}
    */
    readonly patchOperations?: PsqlDbSystemPatchOperations[] | cdktf.IResolvable;
    /**
    * source block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#source PsqlDbSystem#source}
    */
    readonly source?: PsqlDbSystemSource;
    /**
    * storage_details block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#storage_details PsqlDbSystem#storage_details}
    */
    readonly storageDetails: PsqlDbSystemStorageDetails;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#timeouts PsqlDbSystem#timeouts}
    */
    readonly timeouts?: PsqlDbSystemTimeouts;
}
export interface PsqlDbSystemInstances {
}
export declare function psqlDbSystemInstancesToTerraform(struct?: PsqlDbSystemInstances): any;
export declare function psqlDbSystemInstancesToHclTerraform(struct?: PsqlDbSystemInstances): any;
export declare class PsqlDbSystemInstancesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @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(): PsqlDbSystemInstances | undefined;
    set internalValue(value: PsqlDbSystemInstances | undefined);
    get availabilityDomain(): string;
    get description(): string;
    get displayName(): string;
    get id(): string;
    get lifecycleDetails(): string;
    get state(): string;
    get timeCreated(): string;
    get timeUpdated(): string;
}
export declare class PsqlDbSystemInstancesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @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): PsqlDbSystemInstancesOutputReference;
}
export interface PsqlDbSystemCredentialsPasswordDetails {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#password PsqlDbSystem#password}
    */
    readonly password?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#password_type PsqlDbSystem#password_type}
    */
    readonly passwordType: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#secret_id PsqlDbSystem#secret_id}
    */
    readonly secretId?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#secret_version PsqlDbSystem#secret_version}
    */
    readonly secretVersion?: string;
}
export declare function psqlDbSystemCredentialsPasswordDetailsToTerraform(struct?: PsqlDbSystemCredentialsPasswordDetailsOutputReference | PsqlDbSystemCredentialsPasswordDetails): any;
export declare function psqlDbSystemCredentialsPasswordDetailsToHclTerraform(struct?: PsqlDbSystemCredentialsPasswordDetailsOutputReference | PsqlDbSystemCredentialsPasswordDetails): any;
export declare class PsqlDbSystemCredentialsPasswordDetailsOutputReference 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(): PsqlDbSystemCredentialsPasswordDetails | undefined;
    set internalValue(value: PsqlDbSystemCredentialsPasswordDetails | undefined);
    private _password?;
    get password(): string;
    set password(value: string);
    resetPassword(): void;
    get passwordInput(): string | undefined;
    private _passwordType?;
    get passwordType(): string;
    set passwordType(value: string);
    get passwordTypeInput(): string | undefined;
    private _secretId?;
    get secretId(): string;
    set secretId(value: string);
    resetSecretId(): void;
    get secretIdInput(): string | undefined;
    private _secretVersion?;
    get secretVersion(): string;
    set secretVersion(value: string);
    resetSecretVersion(): void;
    get secretVersionInput(): string | undefined;
}
export interface PsqlDbSystemCredentials {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#username PsqlDbSystem#username}
    */
    readonly username: string;
    /**
    * password_details block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#password_details PsqlDbSystem#password_details}
    */
    readonly passwordDetails: PsqlDbSystemCredentialsPasswordDetails;
}
export declare function psqlDbSystemCredentialsToTerraform(struct?: PsqlDbSystemCredentialsOutputReference | PsqlDbSystemCredentials): any;
export declare function psqlDbSystemCredentialsToHclTerraform(struct?: PsqlDbSystemCredentialsOutputReference | PsqlDbSystemCredentials): any;
export declare class PsqlDbSystemCredentialsOutputReference 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(): PsqlDbSystemCredentials | undefined;
    set internalValue(value: PsqlDbSystemCredentials | undefined);
    private _username?;
    get username(): string;
    set username(value: string);
    get usernameInput(): string | undefined;
    private _passwordDetails;
    get passwordDetails(): PsqlDbSystemCredentialsPasswordDetailsOutputReference;
    putPasswordDetails(value: PsqlDbSystemCredentialsPasswordDetails): void;
    get passwordDetailsInput(): PsqlDbSystemCredentialsPasswordDetails | undefined;
}
export interface PsqlDbSystemInstancesDetails {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#description PsqlDbSystem#description}
    */
    readonly description?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#display_name PsqlDbSystem#display_name}
    */
    readonly displayName?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#private_ip PsqlDbSystem#private_ip}
    */
    readonly privateIp?: string;
}
export declare function psqlDbSystemInstancesDetailsToTerraform(struct?: PsqlDbSystemInstancesDetails | cdktf.IResolvable): any;
export declare function psqlDbSystemInstancesDetailsToHclTerraform(struct?: PsqlDbSystemInstancesDetails | cdktf.IResolvable): any;
export declare class PsqlDbSystemInstancesDetailsOutputReference 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(): PsqlDbSystemInstancesDetails | cdktf.IResolvable | undefined;
    set internalValue(value: PsqlDbSystemInstancesDetails | cdktf.IResolvable | undefined);
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _displayName?;
    get displayName(): string;
    set displayName(value: string);
    resetDisplayName(): void;
    get displayNameInput(): string | undefined;
    private _privateIp?;
    get privateIp(): string;
    set privateIp(value: string);
    resetPrivateIp(): void;
    get privateIpInput(): string | undefined;
}
export declare class PsqlDbSystemInstancesDetailsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: PsqlDbSystemInstancesDetails[] | 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): PsqlDbSystemInstancesDetailsOutputReference;
}
export interface PsqlDbSystemManagementPolicyBackupPolicy {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#backup_start PsqlDbSystem#backup_start}
    */
    readonly backupStart?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#days_of_the_month PsqlDbSystem#days_of_the_month}
    */
    readonly daysOfTheMonth?: number[];
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#days_of_the_week PsqlDbSystem#days_of_the_week}
    */
    readonly daysOfTheWeek?: string[];
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#kind PsqlDbSystem#kind}
    */
    readonly kind?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#retention_days PsqlDbSystem#retention_days}
    */
    readonly retentionDays?: number;
}
export declare function psqlDbSystemManagementPolicyBackupPolicyToTerraform(struct?: PsqlDbSystemManagementPolicyBackupPolicyOutputReference | PsqlDbSystemManagementPolicyBackupPolicy): any;
export declare function psqlDbSystemManagementPolicyBackupPolicyToHclTerraform(struct?: PsqlDbSystemManagementPolicyBackupPolicyOutputReference | PsqlDbSystemManagementPolicyBackupPolicy): any;
export declare class PsqlDbSystemManagementPolicyBackupPolicyOutputReference 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(): PsqlDbSystemManagementPolicyBackupPolicy | undefined;
    set internalValue(value: PsqlDbSystemManagementPolicyBackupPolicy | undefined);
    private _backupStart?;
    get backupStart(): string;
    set backupStart(value: string);
    resetBackupStart(): void;
    get backupStartInput(): string | undefined;
    private _daysOfTheMonth?;
    get daysOfTheMonth(): number[];
    set daysOfTheMonth(value: number[]);
    resetDaysOfTheMonth(): void;
    get daysOfTheMonthInput(): number[] | undefined;
    private _daysOfTheWeek?;
    get daysOfTheWeek(): string[];
    set daysOfTheWeek(value: string[]);
    resetDaysOfTheWeek(): void;
    get daysOfTheWeekInput(): string[] | undefined;
    private _kind?;
    get kind(): string;
    set kind(value: string);
    resetKind(): void;
    get kindInput(): string | undefined;
    private _retentionDays?;
    get retentionDays(): number;
    set retentionDays(value: number);
    resetRetentionDays(): void;
    get retentionDaysInput(): number | undefined;
}
export interface PsqlDbSystemManagementPolicy {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#maintenance_window_start PsqlDbSystem#maintenance_window_start}
    */
    readonly maintenanceWindowStart?: string;
    /**
    * backup_policy block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#backup_policy PsqlDbSystem#backup_policy}
    */
    readonly backupPolicy?: PsqlDbSystemManagementPolicyBackupPolicy;
}
export declare function psqlDbSystemManagementPolicyToTerraform(struct?: PsqlDbSystemManagementPolicyOutputReference | PsqlDbSystemManagementPolicy): any;
export declare function psqlDbSystemManagementPolicyToHclTerraform(struct?: PsqlDbSystemManagementPolicyOutputReference | PsqlDbSystemManagementPolicy): any;
export declare class PsqlDbSystemManagementPolicyOutputReference 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(): PsqlDbSystemManagementPolicy | undefined;
    set internalValue(value: PsqlDbSystemManagementPolicy | undefined);
    private _maintenanceWindowStart?;
    get maintenanceWindowStart(): string;
    set maintenanceWindowStart(value: string);
    resetMaintenanceWindowStart(): void;
    get maintenanceWindowStartInput(): string | undefined;
    private _backupPolicy;
    get backupPolicy(): PsqlDbSystemManagementPolicyBackupPolicyOutputReference;
    putBackupPolicy(value: PsqlDbSystemManagementPolicyBackupPolicy): void;
    resetBackupPolicy(): void;
    get backupPolicyInput(): PsqlDbSystemManagementPolicyBackupPolicy | undefined;
}
export interface PsqlDbSystemNetworkDetails {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#nsg_ids PsqlDbSystem#nsg_ids}
    */
    readonly nsgIds?: string[];
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#primary_db_endpoint_private_ip PsqlDbSystem#primary_db_endpoint_private_ip}
    */
    readonly primaryDbEndpointPrivateIp?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#subnet_id PsqlDbSystem#subnet_id}
    */
    readonly subnetId: string;
}
export declare function psqlDbSystemNetworkDetailsToTerraform(struct?: PsqlDbSystemNetworkDetailsOutputReference | PsqlDbSystemNetworkDetails): any;
export declare function psqlDbSystemNetworkDetailsToHclTerraform(struct?: PsqlDbSystemNetworkDetailsOutputReference | PsqlDbSystemNetworkDetails): any;
export declare class PsqlDbSystemNetworkDetailsOutputReference 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(): PsqlDbSystemNetworkDetails | undefined;
    set internalValue(value: PsqlDbSystemNetworkDetails | undefined);
    private _nsgIds?;
    get nsgIds(): string[];
    set nsgIds(value: string[]);
    resetNsgIds(): void;
    get nsgIdsInput(): string[] | undefined;
    private _primaryDbEndpointPrivateIp?;
    get primaryDbEndpointPrivateIp(): string;
    set primaryDbEndpointPrivateIp(value: string);
    resetPrimaryDbEndpointPrivateIp(): void;
    get primaryDbEndpointPrivateIpInput(): string | undefined;
    private _subnetId?;
    get subnetId(): string;
    set subnetId(value: string);
    get subnetIdInput(): string | undefined;
}
export interface PsqlDbSystemPatchOperations {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#from PsqlDbSystem#from}
    */
    readonly from?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#operation PsqlDbSystem#operation}
    */
    readonly operation: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#position PsqlDbSystem#position}
    */
    readonly position?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#selected_item PsqlDbSystem#selected_item}
    */
    readonly selectedItem?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#selection PsqlDbSystem#selection}
    */
    readonly selection: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#value PsqlDbSystem#value}
    */
    readonly value?: {
        [key: string]: string;
    };
}
export declare function psqlDbSystemPatchOperationsToTerraform(struct?: PsqlDbSystemPatchOperations | cdktf.IResolvable): any;
export declare function psqlDbSystemPatchOperationsToHclTerraform(struct?: PsqlDbSystemPatchOperations | cdktf.IResolvable): any;
export declare class PsqlDbSystemPatchOperationsOutputReference 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(): PsqlDbSystemPatchOperations | cdktf.IResolvable | undefined;
    set internalValue(value: PsqlDbSystemPatchOperations | cdktf.IResolvable | undefined);
    private _from?;
    get from(): string;
    set from(value: string);
    resetFrom(): void;
    get fromInput(): string | undefined;
    private _operation?;
    get operation(): string;
    set operation(value: string);
    get operationInput(): string | undefined;
    private _position?;
    get position(): string;
    set position(value: string);
    resetPosition(): void;
    get positionInput(): string | undefined;
    private _selectedItem?;
    get selectedItem(): string;
    set selectedItem(value: string);
    resetSelectedItem(): void;
    get selectedItemInput(): string | undefined;
    private _selection?;
    get selection(): string;
    set selection(value: string);
    get selectionInput(): string | undefined;
    private _value?;
    get value(): {
        [key: string]: string;
    };
    set value(value: {
        [key: string]: string;
    });
    resetValue(): void;
    get valueInput(): {
        [key: string]: string;
    } | undefined;
}
export declare class PsqlDbSystemPatchOperationsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: PsqlDbSystemPatchOperations[] | 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): PsqlDbSystemPatchOperationsOutputReference;
}
export interface PsqlDbSystemSource {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#backup_id PsqlDbSystem#backup_id}
    */
    readonly backupId?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#is_having_restore_config_overrides PsqlDbSystem#is_having_restore_config_overrides}
    */
    readonly isHavingRestoreConfigOverrides?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#source_type PsqlDbSystem#source_type}
    */
    readonly sourceType: string;
}
export declare function psqlDbSystemSourceToTerraform(struct?: PsqlDbSystemSourceOutputReference | PsqlDbSystemSource): any;
export declare function psqlDbSystemSourceToHclTerraform(struct?: PsqlDbSystemSourceOutputReference | PsqlDbSystemSource): any;
export declare class PsqlDbSystemSourceOutputReference 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(): PsqlDbSystemSource | undefined;
    set internalValue(value: PsqlDbSystemSource | undefined);
    private _backupId?;
    get backupId(): string;
    set backupId(value: string);
    resetBackupId(): void;
    get backupIdInput(): string | undefined;
    private _isHavingRestoreConfigOverrides?;
    get isHavingRestoreConfigOverrides(): boolean | cdktf.IResolvable;
    set isHavingRestoreConfigOverrides(value: boolean | cdktf.IResolvable);
    resetIsHavingRestoreConfigOverrides(): void;
    get isHavingRestoreConfigOverridesInput(): boolean | cdktf.IResolvable | undefined;
    private _sourceType?;
    get sourceType(): string;
    set sourceType(value: string);
    get sourceTypeInput(): string | undefined;
}
export interface PsqlDbSystemStorageDetails {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#availability_domain PsqlDbSystem#availability_domain}
    */
    readonly availabilityDomain?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#iops PsqlDbSystem#iops}
    */
    readonly iops?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#is_regionally_durable PsqlDbSystem#is_regionally_durable}
    */
    readonly isRegionallyDurable: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#system_type PsqlDbSystem#system_type}
    */
    readonly systemType: string;
}
export declare function psqlDbSystemStorageDetailsToTerraform(struct?: PsqlDbSystemStorageDetailsOutputReference | PsqlDbSystemStorageDetails): any;
export declare function psqlDbSystemStorageDetailsToHclTerraform(struct?: PsqlDbSystemStorageDetailsOutputReference | PsqlDbSystemStorageDetails): any;
export declare class PsqlDbSystemStorageDetailsOutputReference 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(): PsqlDbSystemStorageDetails | undefined;
    set internalValue(value: PsqlDbSystemStorageDetails | undefined);
    private _availabilityDomain?;
    get availabilityDomain(): string;
    set availabilityDomain(value: string);
    resetAvailabilityDomain(): void;
    get availabilityDomainInput(): string | undefined;
    private _iops?;
    get iops(): string;
    set iops(value: string);
    resetIops(): void;
    get iopsInput(): string | undefined;
    private _isRegionallyDurable?;
    get isRegionallyDurable(): boolean | cdktf.IResolvable;
    set isRegionallyDurable(value: boolean | cdktf.IResolvable);
    get isRegionallyDurableInput(): boolean | cdktf.IResolvable | undefined;
    private _systemType?;
    get systemType(): string;
    set systemType(value: string);
    get systemTypeInput(): string | undefined;
}
export interface PsqlDbSystemTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#create PsqlDbSystem#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#delete PsqlDbSystem#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#update PsqlDbSystem#update}
    */
    readonly update?: string;
}
export declare function psqlDbSystemTimeoutsToTerraform(struct?: PsqlDbSystemTimeouts | cdktf.IResolvable): any;
export declare function psqlDbSystemTimeoutsToHclTerraform(struct?: PsqlDbSystemTimeouts | cdktf.IResolvable): any;
export declare class PsqlDbSystemTimeoutsOutputReference 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(): PsqlDbSystemTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: PsqlDbSystemTimeouts | 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/psql_db_system oci_psql_db_system}
*/
export declare class PsqlDbSystem extends cdktf.TerraformResource {
    static readonly tfResourceType = "oci_psql_db_system";
    /**
    * Generates CDKTF code for importing a PsqlDbSystem 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 PsqlDbSystem to import
    * @param importFromId The id of the existing PsqlDbSystem that should be imported. Refer to the {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/psql_db_system#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the PsqlDbSystem 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/psql_db_system oci_psql_db_system} 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 PsqlDbSystemConfig
    */
    constructor(scope: Construct, id: string, config: PsqlDbSystemConfig);
    get adminUsername(): string;
    private _applyConfig?;
    get applyConfig(): string;
    set applyConfig(value: string);
    resetApplyConfig(): void;
    get applyConfigInput(): string | undefined;
    private _compartmentId?;
    get compartmentId(): string;
    set compartmentId(value: string);
    get compartmentIdInput(): string | undefined;
    private _configId?;
    get configId(): string;
    set configId(value: string);
    resetConfigId(): void;
    get configIdInput(): string | undefined;
    private _dbVersion?;
    get dbVersion(): string;
    set dbVersion(value: string);
    get dbVersionInput(): string | undefined;
    private _definedTags?;
    get definedTags(): {
        [key: string]: string;
    };
    set definedTags(value: {
        [key: string]: string;
    });
    resetDefinedTags(): void;
    get definedTagsInput(): {
        [key: string]: string;
    } | undefined;
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _displayName?;
    get displayName(): string;
    set displayName(value: string);
    get displayNameInput(): string | undefined;
    private _freeformTags?;
    get freeformTags(): {
        [key: string]: string;
    };
    set freeformTags(value: {
        [key: string]: string;
    });
    resetFreeformTags(): void;
    get freeformTagsInput(): {
        [key: string]: string;
    } | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _instanceCount?;
    get instanceCount(): number;
    set instanceCount(value: number);
    resetInstanceCount(): void;
    get instanceCountInput(): number | undefined;
    private _instanceMemorySizeInGbs?;
    get instanceMemorySizeInGbs(): number;
    set instanceMemorySizeInGbs(value: number);
    resetInstanceMemorySizeInGbs(): void;
    get instanceMemorySizeInGbsInput(): number | undefined;
    private _instanceOcpuCount?;
    get instanceOcpuCount(): number;
    set instanceOcpuCount(value: number);
    resetInstanceOcpuCount(): void;
    get instanceOcpuCountInput(): number | undefined;
    private _instances;
    get instances(): PsqlDbSystemInstancesList;
    get lifecycleDetails(): string;
    private _shape?;
    get shape(): string;
    set shape(value: string);
    get shapeInput(): string | undefined;
    get state(): string;
    private _systemTags;
    get systemTags(): cdktf.StringMap;
    private _systemType?;
    get systemType(): string;
    set systemType(value: string);
    resetSystemType(): void;
    get systemTypeInput(): string | undefined;
    get timeCreated(): string;
    get timeUpdated(): string;
    private _credentials;
    get credentials(): PsqlDbSystemCredentialsOutputReference;
    putCredentials(value: PsqlDbSystemCredentials): void;
    resetCredentials(): void;
    get credentialsInput(): PsqlDbSystemCredentials | undefined;
    private _instancesDetails;
    get instancesDetails(): PsqlDbSystemInstancesDetailsList;
    putInstancesDetails(value: PsqlDbSystemInstancesDetails[] | cdktf.IResolvable): void;
    resetInstancesDetails(): void;
    get instancesDetailsInput(): cdktf.IResolvable | PsqlDbSystemInstancesDetails[] | undefined;
    private _managementPolicy;
    get managementPolicy(): PsqlDbSystemManagementPolicyOutputReference;
    putManagementPolicy(value: PsqlDbSystemManagementPolicy): void;
    resetManagementPolicy(): void;
    get managementPolicyInput(): PsqlDbSystemManagementPolicy | undefined;
    private _networkDetails;
    get networkDetails(): PsqlDbSystemNetworkDetailsOutputReference;
    putNetworkDetails(value: PsqlDbSystemNetworkDetails): void;
    get networkDetailsInput(): PsqlDbSystemNetworkDetails | undefined;
    private _patchOperations;
    get patchOperations(): PsqlDbSystemPatchOperationsList;
    putPatchOperations(value: PsqlDbSystemPatchOperations[] | cdktf.IResolvable): void;
    resetPatchOperations(): void;
    get patchOperationsInput(): cdktf.IResolvable | PsqlDbSystemPatchOperations[] | undefined;
    private _source;
    get source(): PsqlDbSystemSourceOutputReference;
    putSource(value: PsqlDbSystemSource): void;
    resetSource(): void;
    get sourceInput(): PsqlDbSystemSource | undefined;
    private _storageDetails;
    get storageDetails(): PsqlDbSystemStorageDetailsOutputReference;
    putStorageDetails(value: PsqlDbSystemStorageDetails): void;
    get storageDetailsInput(): PsqlDbSystemStorageDetails | undefined;
    private _timeouts;
    get timeouts(): PsqlDbSystemTimeoutsOutputReference;
    putTimeouts(value: PsqlDbSystemTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | PsqlDbSystemTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
