import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface DatabaseDbSystemsUpgradeConfig extends cdktf.TerraformMetaArguments {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/database_db_systems_upgrade#action DatabaseDbSystemsUpgrade#action}
    */
    readonly action: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/database_db_systems_upgrade#db_system_id DatabaseDbSystemsUpgrade#db_system_id}
    */
    readonly dbSystemId: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/database_db_systems_upgrade#id DatabaseDbSystemsUpgrade#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/database_db_systems_upgrade#is_snapshot_retention_days_force_updated DatabaseDbSystemsUpgrade#is_snapshot_retention_days_force_updated}
    */
    readonly isSnapshotRetentionDaysForceUpdated?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/database_db_systems_upgrade#new_gi_version DatabaseDbSystemsUpgrade#new_gi_version}
    */
    readonly newGiVersion?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/database_db_systems_upgrade#new_os_version DatabaseDbSystemsUpgrade#new_os_version}
    */
    readonly newOsVersion?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/database_db_systems_upgrade#snapshot_retention_period_in_days DatabaseDbSystemsUpgrade#snapshot_retention_period_in_days}
    */
    readonly snapshotRetentionPeriodInDays?: number;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/database_db_systems_upgrade#timeouts DatabaseDbSystemsUpgrade#timeouts}
    */
    readonly timeouts?: DatabaseDbSystemsUpgradeTimeouts;
}
export interface DatabaseDbSystemsUpgradeDbSystemOptions {
}
export declare function databaseDbSystemsUpgradeDbSystemOptionsToTerraform(struct?: DatabaseDbSystemsUpgradeDbSystemOptions): any;
export declare function databaseDbSystemsUpgradeDbSystemOptionsToHclTerraform(struct?: DatabaseDbSystemsUpgradeDbSystemOptions): any;
export declare class DatabaseDbSystemsUpgradeDbSystemOptionsOutputReference 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(): DatabaseDbSystemsUpgradeDbSystemOptions | undefined;
    set internalValue(value: DatabaseDbSystemsUpgradeDbSystemOptions | undefined);
    get storageManagement(): string;
}
export declare class DatabaseDbSystemsUpgradeDbSystemOptionsList 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): DatabaseDbSystemsUpgradeDbSystemOptionsOutputReference;
}
export interface DatabaseDbSystemsUpgradeIormConfigCacheDbPlans {
}
export declare function databaseDbSystemsUpgradeIormConfigCacheDbPlansToTerraform(struct?: DatabaseDbSystemsUpgradeIormConfigCacheDbPlans): any;
export declare function databaseDbSystemsUpgradeIormConfigCacheDbPlansToHclTerraform(struct?: DatabaseDbSystemsUpgradeIormConfigCacheDbPlans): any;
export declare class DatabaseDbSystemsUpgradeIormConfigCacheDbPlansOutputReference 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(): DatabaseDbSystemsUpgradeIormConfigCacheDbPlans | undefined;
    set internalValue(value: DatabaseDbSystemsUpgradeIormConfigCacheDbPlans | undefined);
    get dbName(): string;
    get flashCacheLimit(): string;
    get share(): number;
}
export declare class DatabaseDbSystemsUpgradeIormConfigCacheDbPlansList 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): DatabaseDbSystemsUpgradeIormConfigCacheDbPlansOutputReference;
}
export interface DatabaseDbSystemsUpgradeIormConfigCache {
}
export declare function databaseDbSystemsUpgradeIormConfigCacheToTerraform(struct?: DatabaseDbSystemsUpgradeIormConfigCache): any;
export declare function databaseDbSystemsUpgradeIormConfigCacheToHclTerraform(struct?: DatabaseDbSystemsUpgradeIormConfigCache): any;
export declare class DatabaseDbSystemsUpgradeIormConfigCacheOutputReference 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(): DatabaseDbSystemsUpgradeIormConfigCache | undefined;
    set internalValue(value: DatabaseDbSystemsUpgradeIormConfigCache | undefined);
    private _dbPlans;
    get dbPlans(): DatabaseDbSystemsUpgradeIormConfigCacheDbPlansList;
    get lifecycleDetails(): string;
    get objective(): string;
    get state(): string;
}
export declare class DatabaseDbSystemsUpgradeIormConfigCacheList 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): DatabaseDbSystemsUpgradeIormConfigCacheOutputReference;
}
export interface DatabaseDbSystemsUpgradeMaintenanceWindowDaysOfWeek {
}
export declare function databaseDbSystemsUpgradeMaintenanceWindowDaysOfWeekToTerraform(struct?: DatabaseDbSystemsUpgradeMaintenanceWindowDaysOfWeek): any;
export declare function databaseDbSystemsUpgradeMaintenanceWindowDaysOfWeekToHclTerraform(struct?: DatabaseDbSystemsUpgradeMaintenanceWindowDaysOfWeek): any;
export declare class DatabaseDbSystemsUpgradeMaintenanceWindowDaysOfWeekOutputReference 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(): DatabaseDbSystemsUpgradeMaintenanceWindowDaysOfWeek | undefined;
    set internalValue(value: DatabaseDbSystemsUpgradeMaintenanceWindowDaysOfWeek | undefined);
    get name(): string;
}
export declare class DatabaseDbSystemsUpgradeMaintenanceWindowDaysOfWeekList 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): DatabaseDbSystemsUpgradeMaintenanceWindowDaysOfWeekOutputReference;
}
export interface DatabaseDbSystemsUpgradeMaintenanceWindowMonths {
}
export declare function databaseDbSystemsUpgradeMaintenanceWindowMonthsToTerraform(struct?: DatabaseDbSystemsUpgradeMaintenanceWindowMonths): any;
export declare function databaseDbSystemsUpgradeMaintenanceWindowMonthsToHclTerraform(struct?: DatabaseDbSystemsUpgradeMaintenanceWindowMonths): any;
export declare class DatabaseDbSystemsUpgradeMaintenanceWindowMonthsOutputReference 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(): DatabaseDbSystemsUpgradeMaintenanceWindowMonths | undefined;
    set internalValue(value: DatabaseDbSystemsUpgradeMaintenanceWindowMonths | undefined);
    get name(): string;
}
export declare class DatabaseDbSystemsUpgradeMaintenanceWindowMonthsList 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): DatabaseDbSystemsUpgradeMaintenanceWindowMonthsOutputReference;
}
export interface DatabaseDbSystemsUpgradeMaintenanceWindow {
}
export declare function databaseDbSystemsUpgradeMaintenanceWindowToTerraform(struct?: DatabaseDbSystemsUpgradeMaintenanceWindow): any;
export declare function databaseDbSystemsUpgradeMaintenanceWindowToHclTerraform(struct?: DatabaseDbSystemsUpgradeMaintenanceWindow): any;
export declare class DatabaseDbSystemsUpgradeMaintenanceWindowOutputReference 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(): DatabaseDbSystemsUpgradeMaintenanceWindow | undefined;
    set internalValue(value: DatabaseDbSystemsUpgradeMaintenanceWindow | undefined);
    private _daysOfWeek;
    get daysOfWeek(): DatabaseDbSystemsUpgradeMaintenanceWindowDaysOfWeekList;
    get hoursOfDay(): number[];
    get leadTimeInWeeks(): number;
    private _months;
    get months(): DatabaseDbSystemsUpgradeMaintenanceWindowMonthsList;
    get preference(): string;
    get weeksOfMonth(): number[];
}
export declare class DatabaseDbSystemsUpgradeMaintenanceWindowList 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): DatabaseDbSystemsUpgradeMaintenanceWindowOutputReference;
}
export interface DatabaseDbSystemsUpgradeTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/database_db_systems_upgrade#create DatabaseDbSystemsUpgrade#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/database_db_systems_upgrade#delete DatabaseDbSystemsUpgrade#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/database_db_systems_upgrade#update DatabaseDbSystemsUpgrade#update}
    */
    readonly update?: string;
}
export declare function databaseDbSystemsUpgradeTimeoutsToTerraform(struct?: DatabaseDbSystemsUpgradeTimeouts | cdktf.IResolvable): any;
export declare function databaseDbSystemsUpgradeTimeoutsToHclTerraform(struct?: DatabaseDbSystemsUpgradeTimeouts | cdktf.IResolvable): any;
export declare class DatabaseDbSystemsUpgradeTimeoutsOutputReference 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(): DatabaseDbSystemsUpgradeTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: DatabaseDbSystemsUpgradeTimeouts | 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/database_db_systems_upgrade oci_database_db_systems_upgrade}
*/
export declare class DatabaseDbSystemsUpgrade extends cdktf.TerraformResource {
    static readonly tfResourceType = "oci_database_db_systems_upgrade";
    /**
    * Generates CDKTF code for importing a DatabaseDbSystemsUpgrade 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 DatabaseDbSystemsUpgrade to import
    * @param importFromId The id of the existing DatabaseDbSystemsUpgrade that should be imported. Refer to the {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/database_db_systems_upgrade#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the DatabaseDbSystemsUpgrade 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/database_db_systems_upgrade oci_database_db_systems_upgrade} 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 DatabaseDbSystemsUpgradeConfig
    */
    constructor(scope: Construct, id: string, config: DatabaseDbSystemsUpgradeConfig);
    private _action?;
    get action(): string;
    set action(value: string);
    get actionInput(): string | undefined;
    get availabilityDomain(): string;
    get backupNetworkNsgIds(): string[];
    get backupSubnetId(): string;
    get clusterName(): string;
    get compartmentId(): string;
    get cpuCoreCount(): number;
    get dataStoragePercentage(): number;
    get dataStorageSizeInGb(): number;
    get databaseEdition(): string;
    private _dbSystemId?;
    get dbSystemId(): string;
    set dbSystemId(value: string);
    get dbSystemIdInput(): string | undefined;
    private _dbSystemOptions;
    get dbSystemOptions(): DatabaseDbSystemsUpgradeDbSystemOptionsList;
    private _definedTags;
    get definedTags(): cdktf.StringMap;
    get diskRedundancy(): string;
    get displayName(): string;
    get domain(): string;
    get faultDomains(): string[];
    private _freeformTags;
    get freeformTags(): cdktf.StringMap;
    get hostname(): string;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _iormConfigCache;
    get iormConfigCache(): DatabaseDbSystemsUpgradeIormConfigCacheList;
    private _isSnapshotRetentionDaysForceUpdated?;
    get isSnapshotRetentionDaysForceUpdated(): boolean | cdktf.IResolvable;
    set isSnapshotRetentionDaysForceUpdated(value: boolean | cdktf.IResolvable);
    resetIsSnapshotRetentionDaysForceUpdated(): void;
    get isSnapshotRetentionDaysForceUpdatedInput(): boolean | cdktf.IResolvable | undefined;
    get kmsKeyId(): string;
    get lastMaintenanceRunId(): string;
    get lastPatchHistoryEntryId(): string;
    get licenseModel(): string;
    get lifecycleDetails(): string;
    get listenerPort(): number;
    private _maintenanceWindow;
    get maintenanceWindow(): DatabaseDbSystemsUpgradeMaintenanceWindowList;
    private _newGiVersion?;
    get newGiVersion(): string;
    set newGiVersion(value: string);
    resetNewGiVersion(): void;
    get newGiVersionInput(): string | undefined;
    private _newOsVersion?;
    get newOsVersion(): string;
    set newOsVersion(value: string);
    resetNewOsVersion(): void;
    get newOsVersionInput(): string | undefined;
    get nextMaintenanceRunId(): string;
    get nodeCount(): number;
    get nsgIds(): string[];
    get pointInTimeDataDiskCloneTimestamp(): string;
    get recoStorageSizeInGb(): number;
    get scanDnsName(): string;
    get scanDnsRecordId(): string;
    get scanIpIds(): string[];
    get shape(): string;
    private _snapshotRetentionPeriodInDays?;
    get snapshotRetentionPeriodInDays(): number;
    set snapshotRetentionPeriodInDays(value: number);
    resetSnapshotRetentionPeriodInDays(): void;
    get snapshotRetentionPeriodInDaysInput(): number | undefined;
    get sourceDbSystemId(): string;
    get sparseDiskgroup(): cdktf.IResolvable;
    get sshPublicKeys(): string[];
    get state(): string;
    get subnetId(): string;
    get timeCreated(): string;
    get timeZone(): string;
    get version(): string;
    get vipIds(): string[];
    get zoneId(): string;
    private _timeouts;
    get timeouts(): DatabaseDbSystemsUpgradeTimeoutsOutputReference;
    putTimeouts(value: DatabaseDbSystemsUpgradeTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | DatabaseDbSystemsUpgradeTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
