import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface IdentityDomainsPolicyConfig extends cdktf.TerraformMetaArguments {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#active IdentityDomainsPolicy#active}
    */
    readonly active?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#attribute_sets IdentityDomainsPolicy#attribute_sets}
    */
    readonly attributeSets?: string[];
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#attributes IdentityDomainsPolicy#attributes}
    */
    readonly attributes?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#authorization IdentityDomainsPolicy#authorization}
    */
    readonly authorization?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#description IdentityDomainsPolicy#description}
    */
    readonly description?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#external_id IdentityDomainsPolicy#external_id}
    */
    readonly externalId?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#idcs_endpoint IdentityDomainsPolicy#idcs_endpoint}
    */
    readonly idcsEndpoint: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#name IdentityDomainsPolicy#name}
    */
    readonly name: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#ocid IdentityDomainsPolicy#ocid}
    */
    readonly ocid?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#policy_groovy IdentityDomainsPolicy#policy_groovy}
    */
    readonly policyGroovy?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#resource_type_schema_version IdentityDomainsPolicy#resource_type_schema_version}
    */
    readonly resourceTypeSchemaVersion?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#schemas IdentityDomainsPolicy#schemas}
    */
    readonly schemas: string[];
    /**
    * policy_type block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#policy_type IdentityDomainsPolicy#policy_type}
    */
    readonly policyType: IdentityDomainsPolicyPolicyType;
    /**
    * rules block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#rules IdentityDomainsPolicy#rules}
    */
    readonly rules?: IdentityDomainsPolicyRules[] | cdktf.IResolvable;
    /**
    * tags block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#tags IdentityDomainsPolicy#tags}
    */
    readonly tags?: IdentityDomainsPolicyTags[] | cdktf.IResolvable;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#timeouts IdentityDomainsPolicy#timeouts}
    */
    readonly timeouts?: IdentityDomainsPolicyTimeouts;
}
export interface IdentityDomainsPolicyIdcsCreatedBy {
}
export declare function identityDomainsPolicyIdcsCreatedByToTerraform(struct?: IdentityDomainsPolicyIdcsCreatedBy): any;
export declare function identityDomainsPolicyIdcsCreatedByToHclTerraform(struct?: IdentityDomainsPolicyIdcsCreatedBy): any;
export declare class IdentityDomainsPolicyIdcsCreatedByOutputReference 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(): IdentityDomainsPolicyIdcsCreatedBy | undefined;
    set internalValue(value: IdentityDomainsPolicyIdcsCreatedBy | undefined);
    get display(): string;
    get ocid(): string;
    get ref(): string;
    get type(): string;
    get value(): string;
}
export declare class IdentityDomainsPolicyIdcsCreatedByList 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): IdentityDomainsPolicyIdcsCreatedByOutputReference;
}
export interface IdentityDomainsPolicyIdcsLastModifiedBy {
}
export declare function identityDomainsPolicyIdcsLastModifiedByToTerraform(struct?: IdentityDomainsPolicyIdcsLastModifiedBy): any;
export declare function identityDomainsPolicyIdcsLastModifiedByToHclTerraform(struct?: IdentityDomainsPolicyIdcsLastModifiedBy): any;
export declare class IdentityDomainsPolicyIdcsLastModifiedByOutputReference 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(): IdentityDomainsPolicyIdcsLastModifiedBy | undefined;
    set internalValue(value: IdentityDomainsPolicyIdcsLastModifiedBy | undefined);
    get display(): string;
    get ocid(): string;
    get ref(): string;
    get type(): string;
    get value(): string;
}
export declare class IdentityDomainsPolicyIdcsLastModifiedByList 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): IdentityDomainsPolicyIdcsLastModifiedByOutputReference;
}
export interface IdentityDomainsPolicyMeta {
}
export declare function identityDomainsPolicyMetaToTerraform(struct?: IdentityDomainsPolicyMeta): any;
export declare function identityDomainsPolicyMetaToHclTerraform(struct?: IdentityDomainsPolicyMeta): any;
export declare class IdentityDomainsPolicyMetaOutputReference 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(): IdentityDomainsPolicyMeta | undefined;
    set internalValue(value: IdentityDomainsPolicyMeta | undefined);
    get created(): string;
    get lastModified(): string;
    get location(): string;
    get resourceType(): string;
    get version(): string;
}
export declare class IdentityDomainsPolicyMetaList 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): IdentityDomainsPolicyMetaOutputReference;
}
export interface IdentityDomainsPolicyPolicyType {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#value IdentityDomainsPolicy#value}
    */
    readonly value: string;
}
export declare function identityDomainsPolicyPolicyTypeToTerraform(struct?: IdentityDomainsPolicyPolicyTypeOutputReference | IdentityDomainsPolicyPolicyType): any;
export declare function identityDomainsPolicyPolicyTypeToHclTerraform(struct?: IdentityDomainsPolicyPolicyTypeOutputReference | IdentityDomainsPolicyPolicyType): any;
export declare class IdentityDomainsPolicyPolicyTypeOutputReference 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(): IdentityDomainsPolicyPolicyType | undefined;
    set internalValue(value: IdentityDomainsPolicyPolicyType | undefined);
    get ref(): string;
    private _value?;
    get value(): string;
    set value(value: string);
    get valueInput(): string | undefined;
}
export interface IdentityDomainsPolicyRules {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#sequence IdentityDomainsPolicy#sequence}
    */
    readonly sequence: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#value IdentityDomainsPolicy#value}
    */
    readonly value: string;
}
export declare function identityDomainsPolicyRulesToTerraform(struct?: IdentityDomainsPolicyRules | cdktf.IResolvable): any;
export declare function identityDomainsPolicyRulesToHclTerraform(struct?: IdentityDomainsPolicyRules | cdktf.IResolvable): any;
export declare class IdentityDomainsPolicyRulesOutputReference 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(): IdentityDomainsPolicyRules | cdktf.IResolvable | undefined;
    set internalValue(value: IdentityDomainsPolicyRules | cdktf.IResolvable | undefined);
    get name(): string;
    get ref(): string;
    private _sequence?;
    get sequence(): number;
    set sequence(value: number);
    get sequenceInput(): number | undefined;
    private _value?;
    get value(): string;
    set value(value: string);
    get valueInput(): string | undefined;
}
export declare class IdentityDomainsPolicyRulesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: IdentityDomainsPolicyRules[] | 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): IdentityDomainsPolicyRulesOutputReference;
}
export interface IdentityDomainsPolicyTags {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#key IdentityDomainsPolicy#key}
    */
    readonly key: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#value IdentityDomainsPolicy#value}
    */
    readonly value: string;
}
export declare function identityDomainsPolicyTagsToTerraform(struct?: IdentityDomainsPolicyTags | cdktf.IResolvable): any;
export declare function identityDomainsPolicyTagsToHclTerraform(struct?: IdentityDomainsPolicyTags | cdktf.IResolvable): any;
export declare class IdentityDomainsPolicyTagsOutputReference 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(): IdentityDomainsPolicyTags | cdktf.IResolvable | undefined;
    set internalValue(value: IdentityDomainsPolicyTags | cdktf.IResolvable | undefined);
    private _key?;
    get key(): string;
    set key(value: string);
    get keyInput(): string | undefined;
    private _value?;
    get value(): string;
    set value(value: string);
    get valueInput(): string | undefined;
}
export declare class IdentityDomainsPolicyTagsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: IdentityDomainsPolicyTags[] | 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): IdentityDomainsPolicyTagsOutputReference;
}
export interface IdentityDomainsPolicyTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#create IdentityDomainsPolicy#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#delete IdentityDomainsPolicy#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#update IdentityDomainsPolicy#update}
    */
    readonly update?: string;
}
export declare function identityDomainsPolicyTimeoutsToTerraform(struct?: IdentityDomainsPolicyTimeouts | cdktf.IResolvable): any;
export declare function identityDomainsPolicyTimeoutsToHclTerraform(struct?: IdentityDomainsPolicyTimeouts | cdktf.IResolvable): any;
export declare class IdentityDomainsPolicyTimeoutsOutputReference 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(): IdentityDomainsPolicyTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: IdentityDomainsPolicyTimeouts | 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/identity_domains_policy oci_identity_domains_policy}
*/
export declare class IdentityDomainsPolicy extends cdktf.TerraformResource {
    static readonly tfResourceType = "oci_identity_domains_policy";
    /**
    * Generates CDKTF code for importing a IdentityDomainsPolicy 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 IdentityDomainsPolicy to import
    * @param importFromId The id of the existing IdentityDomainsPolicy that should be imported. Refer to the {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/identity_domains_policy#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the IdentityDomainsPolicy 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/identity_domains_policy oci_identity_domains_policy} 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 IdentityDomainsPolicyConfig
    */
    constructor(scope: Construct, id: string, config: IdentityDomainsPolicyConfig);
    private _active?;
    get active(): boolean | cdktf.IResolvable;
    set active(value: boolean | cdktf.IResolvable);
    resetActive(): void;
    get activeInput(): boolean | cdktf.IResolvable | undefined;
    private _attributeSets?;
    get attributeSets(): string[];
    set attributeSets(value: string[]);
    resetAttributeSets(): void;
    get attributeSetsInput(): string[] | undefined;
    private _attributes?;
    get attributes(): string;
    set attributes(value: string);
    resetAttributes(): void;
    get attributesInput(): string | undefined;
    private _authorization?;
    get authorization(): string;
    set authorization(value: string);
    resetAuthorization(): void;
    get authorizationInput(): string | undefined;
    get compartmentOcid(): string;
    get deleteInProgress(): cdktf.IResolvable;
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    get domainOcid(): string;
    private _externalId?;
    get externalId(): string;
    set externalId(value: string);
    resetExternalId(): void;
    get externalIdInput(): string | undefined;
    get id(): string;
    private _idcsCreatedBy;
    get idcsCreatedBy(): IdentityDomainsPolicyIdcsCreatedByList;
    private _idcsEndpoint?;
    get idcsEndpoint(): string;
    set idcsEndpoint(value: string);
    get idcsEndpointInput(): string | undefined;
    private _idcsLastModifiedBy;
    get idcsLastModifiedBy(): IdentityDomainsPolicyIdcsLastModifiedByList;
    get idcsLastUpgradedInRelease(): string;
    get idcsPreventedOperations(): string[];
    private _meta;
    get meta(): IdentityDomainsPolicyMetaList;
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _ocid?;
    get ocid(): string;
    set ocid(value: string);
    resetOcid(): void;
    get ocidInput(): string | undefined;
    private _policyGroovy?;
    get policyGroovy(): string;
    set policyGroovy(value: string);
    resetPolicyGroovy(): void;
    get policyGroovyInput(): string | undefined;
    private _resourceTypeSchemaVersion?;
    get resourceTypeSchemaVersion(): string;
    set resourceTypeSchemaVersion(value: string);
    resetResourceTypeSchemaVersion(): void;
    get resourceTypeSchemaVersionInput(): string | undefined;
    private _schemas?;
    get schemas(): string[];
    set schemas(value: string[]);
    get schemasInput(): string[] | undefined;
    get tenancyOcid(): string;
    private _policyType;
    get policyType(): IdentityDomainsPolicyPolicyTypeOutputReference;
    putPolicyType(value: IdentityDomainsPolicyPolicyType): void;
    get policyTypeInput(): IdentityDomainsPolicyPolicyType | undefined;
    private _rules;
    get rules(): IdentityDomainsPolicyRulesList;
    putRules(value: IdentityDomainsPolicyRules[] | cdktf.IResolvable): void;
    resetRules(): void;
    get rulesInput(): cdktf.IResolvable | IdentityDomainsPolicyRules[] | undefined;
    private _tags;
    get tags(): IdentityDomainsPolicyTagsList;
    putTags(value: IdentityDomainsPolicyTags[] | cdktf.IResolvable): void;
    resetTags(): void;
    get tagsInput(): cdktf.IResolvable | IdentityDomainsPolicyTags[] | undefined;
    private _timeouts;
    get timeouts(): IdentityDomainsPolicyTimeoutsOutputReference;
    putTimeouts(value: IdentityDomainsPolicyTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | IdentityDomainsPolicyTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
