import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface ClusterPlacementGroupsClusterPlacementGroupConfig extends cdktf.TerraformMetaArguments {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cluster_placement_groups_cluster_placement_group#availability_domain ClusterPlacementGroupsClusterPlacementGroup#availability_domain}
    */
    readonly availabilityDomain: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cluster_placement_groups_cluster_placement_group#cluster_placement_group_type ClusterPlacementGroupsClusterPlacementGroup#cluster_placement_group_type}
    */
    readonly clusterPlacementGroupType: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cluster_placement_groups_cluster_placement_group#compartment_id ClusterPlacementGroupsClusterPlacementGroup#compartment_id}
    */
    readonly compartmentId: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cluster_placement_groups_cluster_placement_group#defined_tags ClusterPlacementGroupsClusterPlacementGroup#defined_tags}
    */
    readonly definedTags?: {
        [key: string]: string;
    };
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cluster_placement_groups_cluster_placement_group#description ClusterPlacementGroupsClusterPlacementGroup#description}
    */
    readonly description: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cluster_placement_groups_cluster_placement_group#freeform_tags ClusterPlacementGroupsClusterPlacementGroup#freeform_tags}
    */
    readonly freeformTags?: {
        [key: string]: string;
    };
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cluster_placement_groups_cluster_placement_group#id ClusterPlacementGroupsClusterPlacementGroup#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/cluster_placement_groups_cluster_placement_group#name ClusterPlacementGroupsClusterPlacementGroup#name}
    */
    readonly name: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cluster_placement_groups_cluster_placement_group#opc_dry_run ClusterPlacementGroupsClusterPlacementGroup#opc_dry_run}
    */
    readonly opcDryRun?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cluster_placement_groups_cluster_placement_group#state ClusterPlacementGroupsClusterPlacementGroup#state}
    */
    readonly state?: string;
    /**
    * capabilities block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cluster_placement_groups_cluster_placement_group#capabilities ClusterPlacementGroupsClusterPlacementGroup#capabilities}
    */
    readonly capabilities?: ClusterPlacementGroupsClusterPlacementGroupCapabilities;
    /**
    * placement_instruction block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cluster_placement_groups_cluster_placement_group#placement_instruction ClusterPlacementGroupsClusterPlacementGroup#placement_instruction}
    */
    readonly placementInstruction?: ClusterPlacementGroupsClusterPlacementGroupPlacementInstruction;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cluster_placement_groups_cluster_placement_group#timeouts ClusterPlacementGroupsClusterPlacementGroup#timeouts}
    */
    readonly timeouts?: ClusterPlacementGroupsClusterPlacementGroupTimeouts;
}
export interface ClusterPlacementGroupsClusterPlacementGroupCapabilitiesItems {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cluster_placement_groups_cluster_placement_group#name ClusterPlacementGroupsClusterPlacementGroup#name}
    */
    readonly name: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cluster_placement_groups_cluster_placement_group#service ClusterPlacementGroupsClusterPlacementGroup#service}
    */
    readonly service: string;
}
export declare function clusterPlacementGroupsClusterPlacementGroupCapabilitiesItemsToTerraform(struct?: ClusterPlacementGroupsClusterPlacementGroupCapabilitiesItems | cdktf.IResolvable): any;
export declare function clusterPlacementGroupsClusterPlacementGroupCapabilitiesItemsToHclTerraform(struct?: ClusterPlacementGroupsClusterPlacementGroupCapabilitiesItems | cdktf.IResolvable): any;
export declare class ClusterPlacementGroupsClusterPlacementGroupCapabilitiesItemsOutputReference 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(): ClusterPlacementGroupsClusterPlacementGroupCapabilitiesItems | cdktf.IResolvable | undefined;
    set internalValue(value: ClusterPlacementGroupsClusterPlacementGroupCapabilitiesItems | cdktf.IResolvable | undefined);
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _service?;
    get service(): string;
    set service(value: string);
    get serviceInput(): string | undefined;
}
export declare class ClusterPlacementGroupsClusterPlacementGroupCapabilitiesItemsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: ClusterPlacementGroupsClusterPlacementGroupCapabilitiesItems[] | 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): ClusterPlacementGroupsClusterPlacementGroupCapabilitiesItemsOutputReference;
}
export interface ClusterPlacementGroupsClusterPlacementGroupCapabilities {
    /**
    * items block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cluster_placement_groups_cluster_placement_group#items ClusterPlacementGroupsClusterPlacementGroup#items}
    */
    readonly items: ClusterPlacementGroupsClusterPlacementGroupCapabilitiesItems[] | cdktf.IResolvable;
}
export declare function clusterPlacementGroupsClusterPlacementGroupCapabilitiesToTerraform(struct?: ClusterPlacementGroupsClusterPlacementGroupCapabilitiesOutputReference | ClusterPlacementGroupsClusterPlacementGroupCapabilities): any;
export declare function clusterPlacementGroupsClusterPlacementGroupCapabilitiesToHclTerraform(struct?: ClusterPlacementGroupsClusterPlacementGroupCapabilitiesOutputReference | ClusterPlacementGroupsClusterPlacementGroupCapabilities): any;
export declare class ClusterPlacementGroupsClusterPlacementGroupCapabilitiesOutputReference 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(): ClusterPlacementGroupsClusterPlacementGroupCapabilities | undefined;
    set internalValue(value: ClusterPlacementGroupsClusterPlacementGroupCapabilities | undefined);
    private _items;
    get items(): ClusterPlacementGroupsClusterPlacementGroupCapabilitiesItemsList;
    putItems(value: ClusterPlacementGroupsClusterPlacementGroupCapabilitiesItems[] | cdktf.IResolvable): void;
    get itemsInput(): cdktf.IResolvable | ClusterPlacementGroupsClusterPlacementGroupCapabilitiesItems[] | undefined;
}
export interface ClusterPlacementGroupsClusterPlacementGroupPlacementInstruction {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cluster_placement_groups_cluster_placement_group#type ClusterPlacementGroupsClusterPlacementGroup#type}
    */
    readonly type: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cluster_placement_groups_cluster_placement_group#value ClusterPlacementGroupsClusterPlacementGroup#value}
    */
    readonly value: string;
}
export declare function clusterPlacementGroupsClusterPlacementGroupPlacementInstructionToTerraform(struct?: ClusterPlacementGroupsClusterPlacementGroupPlacementInstructionOutputReference | ClusterPlacementGroupsClusterPlacementGroupPlacementInstruction): any;
export declare function clusterPlacementGroupsClusterPlacementGroupPlacementInstructionToHclTerraform(struct?: ClusterPlacementGroupsClusterPlacementGroupPlacementInstructionOutputReference | ClusterPlacementGroupsClusterPlacementGroupPlacementInstruction): any;
export declare class ClusterPlacementGroupsClusterPlacementGroupPlacementInstructionOutputReference 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(): ClusterPlacementGroupsClusterPlacementGroupPlacementInstruction | undefined;
    set internalValue(value: ClusterPlacementGroupsClusterPlacementGroupPlacementInstruction | undefined);
    private _type?;
    get type(): string;
    set type(value: string);
    get typeInput(): string | undefined;
    private _value?;
    get value(): string;
    set value(value: string);
    get valueInput(): string | undefined;
}
export interface ClusterPlacementGroupsClusterPlacementGroupTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cluster_placement_groups_cluster_placement_group#create ClusterPlacementGroupsClusterPlacementGroup#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cluster_placement_groups_cluster_placement_group#delete ClusterPlacementGroupsClusterPlacementGroup#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cluster_placement_groups_cluster_placement_group#update ClusterPlacementGroupsClusterPlacementGroup#update}
    */
    readonly update?: string;
}
export declare function clusterPlacementGroupsClusterPlacementGroupTimeoutsToTerraform(struct?: ClusterPlacementGroupsClusterPlacementGroupTimeouts | cdktf.IResolvable): any;
export declare function clusterPlacementGroupsClusterPlacementGroupTimeoutsToHclTerraform(struct?: ClusterPlacementGroupsClusterPlacementGroupTimeouts | cdktf.IResolvable): any;
export declare class ClusterPlacementGroupsClusterPlacementGroupTimeoutsOutputReference 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(): ClusterPlacementGroupsClusterPlacementGroupTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: ClusterPlacementGroupsClusterPlacementGroupTimeouts | 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/cluster_placement_groups_cluster_placement_group oci_cluster_placement_groups_cluster_placement_group}
*/
export declare class ClusterPlacementGroupsClusterPlacementGroup extends cdktf.TerraformResource {
    static readonly tfResourceType = "oci_cluster_placement_groups_cluster_placement_group";
    /**
    * Generates CDKTF code for importing a ClusterPlacementGroupsClusterPlacementGroup 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 ClusterPlacementGroupsClusterPlacementGroup to import
    * @param importFromId The id of the existing ClusterPlacementGroupsClusterPlacementGroup that should be imported. Refer to the {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/cluster_placement_groups_cluster_placement_group#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the ClusterPlacementGroupsClusterPlacementGroup 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/cluster_placement_groups_cluster_placement_group oci_cluster_placement_groups_cluster_placement_group} 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 ClusterPlacementGroupsClusterPlacementGroupConfig
    */
    constructor(scope: Construct, id: string, config: ClusterPlacementGroupsClusterPlacementGroupConfig);
    private _availabilityDomain?;
    get availabilityDomain(): string;
    set availabilityDomain(value: string);
    get availabilityDomainInput(): string | undefined;
    private _clusterPlacementGroupType?;
    get clusterPlacementGroupType(): string;
    set clusterPlacementGroupType(value: string);
    get clusterPlacementGroupTypeInput(): string | undefined;
    private _compartmentId?;
    get compartmentId(): string;
    set compartmentId(value: string);
    get compartmentIdInput(): 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);
    get descriptionInput(): 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;
    get lifecycleDetails(): string;
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _opcDryRun?;
    get opcDryRun(): boolean | cdktf.IResolvable;
    set opcDryRun(value: boolean | cdktf.IResolvable);
    resetOpcDryRun(): void;
    get opcDryRunInput(): boolean | cdktf.IResolvable | undefined;
    private _state?;
    get state(): string;
    set state(value: string);
    resetState(): void;
    get stateInput(): string | undefined;
    private _systemTags;
    get systemTags(): cdktf.StringMap;
    get timeCreated(): string;
    get timeUpdated(): string;
    private _capabilities;
    get capabilities(): ClusterPlacementGroupsClusterPlacementGroupCapabilitiesOutputReference;
    putCapabilities(value: ClusterPlacementGroupsClusterPlacementGroupCapabilities): void;
    resetCapabilities(): void;
    get capabilitiesInput(): ClusterPlacementGroupsClusterPlacementGroupCapabilities | undefined;
    private _placementInstruction;
    get placementInstruction(): ClusterPlacementGroupsClusterPlacementGroupPlacementInstructionOutputReference;
    putPlacementInstruction(value: ClusterPlacementGroupsClusterPlacementGroupPlacementInstruction): void;
    resetPlacementInstruction(): void;
    get placementInstructionInput(): ClusterPlacementGroupsClusterPlacementGroupPlacementInstruction | undefined;
    private _timeouts;
    get timeouts(): ClusterPlacementGroupsClusterPlacementGroupTimeoutsOutputReference;
    putTimeouts(value: ClusterPlacementGroupsClusterPlacementGroupTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | ClusterPlacementGroupsClusterPlacementGroupTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
