/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface OrgPolicyPolicyConfig extends cdktf.TerraformMetaArguments {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#id OrgPolicyPolicy#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;
    /**
    * Immutable. The resource name of the Policy. Must be one of the following forms, where constraint_name is the name of the constraint which this Policy configures: * 'projects/{project_number}/policies/{constraint_name}' * 'folders/{folder_id}/policies/{constraint_name}' * 'organizations/{organization_id}/policies/{constraint_name}' For example, "projects/123/policies/compute.disableSerialPortAccess". Note: 'projects/{project_id}/policies/{constraint_name}' is also an acceptable name for API requests, but responses will return the name using the equivalent project number.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#name OrgPolicyPolicy#name}
    */
    readonly name: string;
    /**
    * The parent of the resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#parent OrgPolicyPolicy#parent}
    */
    readonly parent: string;
    /**
    * dry_run_spec block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#dry_run_spec OrgPolicyPolicy#dry_run_spec}
    */
    readonly dryRunSpec?: OrgPolicyPolicyDryRunSpec;
    /**
    * spec block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#spec OrgPolicyPolicy#spec}
    */
    readonly spec?: OrgPolicyPolicySpec;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#timeouts OrgPolicyPolicy#timeouts}
    */
    readonly timeouts?: OrgPolicyPolicyTimeouts;
}
export interface OrgPolicyPolicyDryRunSpecRulesCondition {
    /**
    * Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#description OrgPolicyPolicy#description}
    */
    readonly description?: string;
    /**
    * Textual representation of an expression in Common Expression Language syntax.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#expression OrgPolicyPolicy#expression}
    */
    readonly expression?: string;
    /**
    * Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#location OrgPolicyPolicy#location}
    */
    readonly location?: string;
    /**
    * Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#title OrgPolicyPolicy#title}
    */
    readonly title?: string;
}
export declare function orgPolicyPolicyDryRunSpecRulesConditionToTerraform(struct?: OrgPolicyPolicyDryRunSpecRulesConditionOutputReference | OrgPolicyPolicyDryRunSpecRulesCondition): any;
export declare function orgPolicyPolicyDryRunSpecRulesConditionToHclTerraform(struct?: OrgPolicyPolicyDryRunSpecRulesConditionOutputReference | OrgPolicyPolicyDryRunSpecRulesCondition): any;
export declare class OrgPolicyPolicyDryRunSpecRulesConditionOutputReference 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(): OrgPolicyPolicyDryRunSpecRulesCondition | undefined;
    set internalValue(value: OrgPolicyPolicyDryRunSpecRulesCondition | undefined);
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _expression?;
    get expression(): string;
    set expression(value: string);
    resetExpression(): void;
    get expressionInput(): string | undefined;
    private _location?;
    get location(): string;
    set location(value: string);
    resetLocation(): void;
    get locationInput(): string | undefined;
    private _title?;
    get title(): string;
    set title(value: string);
    resetTitle(): void;
    get titleInput(): string | undefined;
}
export interface OrgPolicyPolicyDryRunSpecRulesValues {
    /**
    * List of values allowed at this resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#allowed_values OrgPolicyPolicy#allowed_values}
    */
    readonly allowedValues?: string[];
    /**
    * List of values denied at this resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#denied_values OrgPolicyPolicy#denied_values}
    */
    readonly deniedValues?: string[];
}
export declare function orgPolicyPolicyDryRunSpecRulesValuesToTerraform(struct?: OrgPolicyPolicyDryRunSpecRulesValuesOutputReference | OrgPolicyPolicyDryRunSpecRulesValues): any;
export declare function orgPolicyPolicyDryRunSpecRulesValuesToHclTerraform(struct?: OrgPolicyPolicyDryRunSpecRulesValuesOutputReference | OrgPolicyPolicyDryRunSpecRulesValues): any;
export declare class OrgPolicyPolicyDryRunSpecRulesValuesOutputReference 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(): OrgPolicyPolicyDryRunSpecRulesValues | undefined;
    set internalValue(value: OrgPolicyPolicyDryRunSpecRulesValues | undefined);
    private _allowedValues?;
    get allowedValues(): string[];
    set allowedValues(value: string[]);
    resetAllowedValues(): void;
    get allowedValuesInput(): string[] | undefined;
    private _deniedValues?;
    get deniedValues(): string[];
    set deniedValues(value: string[]);
    resetDeniedValues(): void;
    get deniedValuesInput(): string[] | undefined;
}
export interface OrgPolicyPolicyDryRunSpecRules {
    /**
    * Setting this to '"TRUE"' means that all values are allowed. This field can be set only in Policies for list constraints.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#allow_all OrgPolicyPolicy#allow_all}
    */
    readonly allowAll?: string;
    /**
    * Setting this to '"TRUE"' means that all values are denied. This field can be set only in Policies for list constraints.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#deny_all OrgPolicyPolicy#deny_all}
    */
    readonly denyAll?: string;
    /**
    * If '"TRUE"', then the 'Policy' is enforced. If '"FALSE"', then any configuration is acceptable. This field can be set only in Policies for boolean constraints.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#enforce OrgPolicyPolicy#enforce}
    */
    readonly enforce?: string;
    /**
    * Optional. Required for Managed Constraints if parameters defined in constraints. Pass parameter values when policy enforcement is enabled. Ensure that parameter value types match those defined in the constraint definition. For example: { \"allowedLocations\" : [\"us-east1\", \"us-west1\"], \"allowAll\" : true }
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#parameters OrgPolicyPolicy#parameters}
    */
    readonly parameters?: string;
    /**
    * condition block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#condition OrgPolicyPolicy#condition}
    */
    readonly condition?: OrgPolicyPolicyDryRunSpecRulesCondition;
    /**
    * values block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#values OrgPolicyPolicy#values}
    */
    readonly values?: OrgPolicyPolicyDryRunSpecRulesValues;
}
export declare function orgPolicyPolicyDryRunSpecRulesToTerraform(struct?: OrgPolicyPolicyDryRunSpecRules | cdktf.IResolvable): any;
export declare function orgPolicyPolicyDryRunSpecRulesToHclTerraform(struct?: OrgPolicyPolicyDryRunSpecRules | cdktf.IResolvable): any;
export declare class OrgPolicyPolicyDryRunSpecRulesOutputReference 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(): OrgPolicyPolicyDryRunSpecRules | cdktf.IResolvable | undefined;
    set internalValue(value: OrgPolicyPolicyDryRunSpecRules | cdktf.IResolvable | undefined);
    private _allowAll?;
    get allowAll(): string;
    set allowAll(value: string);
    resetAllowAll(): void;
    get allowAllInput(): string | undefined;
    private _denyAll?;
    get denyAll(): string;
    set denyAll(value: string);
    resetDenyAll(): void;
    get denyAllInput(): string | undefined;
    private _enforce?;
    get enforce(): string;
    set enforce(value: string);
    resetEnforce(): void;
    get enforceInput(): string | undefined;
    private _parameters?;
    get parameters(): string;
    set parameters(value: string);
    resetParameters(): void;
    get parametersInput(): string | undefined;
    private _condition;
    get condition(): OrgPolicyPolicyDryRunSpecRulesConditionOutputReference;
    putCondition(value: OrgPolicyPolicyDryRunSpecRulesCondition): void;
    resetCondition(): void;
    get conditionInput(): OrgPolicyPolicyDryRunSpecRulesCondition | undefined;
    private _values;
    get values(): OrgPolicyPolicyDryRunSpecRulesValuesOutputReference;
    putValues(value: OrgPolicyPolicyDryRunSpecRulesValues): void;
    resetValues(): void;
    get valuesInput(): OrgPolicyPolicyDryRunSpecRulesValues | undefined;
}
export declare class OrgPolicyPolicyDryRunSpecRulesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: OrgPolicyPolicyDryRunSpecRules[] | 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): OrgPolicyPolicyDryRunSpecRulesOutputReference;
}
export interface OrgPolicyPolicyDryRunSpec {
    /**
    * Determines the inheritance behavior for this policy. If 'inherit_from_parent' is true, policy rules set higher up in the hierarchy (up to the closest root) are inherited and present in the effective policy. If it is false, then no rules are inherited, and this policy becomes the new root for evaluation. This field can be set only for policies which configure list constraints.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#inherit_from_parent OrgPolicyPolicy#inherit_from_parent}
    */
    readonly inheritFromParent?: boolean | cdktf.IResolvable;
    /**
    * Ignores policies set above this resource and restores the 'constraint_default' enforcement behavior of the specific constraint at this resource. This field can be set in policies for either list or boolean constraints. If set, 'rules' must be empty and 'inherit_from_parent' must be set to false.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#reset OrgPolicyPolicy#reset}
    */
    readonly reset?: boolean | cdktf.IResolvable;
    /**
    * rules block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#rules OrgPolicyPolicy#rules}
    */
    readonly rules?: OrgPolicyPolicyDryRunSpecRules[] | cdktf.IResolvable;
}
export declare function orgPolicyPolicyDryRunSpecToTerraform(struct?: OrgPolicyPolicyDryRunSpecOutputReference | OrgPolicyPolicyDryRunSpec): any;
export declare function orgPolicyPolicyDryRunSpecToHclTerraform(struct?: OrgPolicyPolicyDryRunSpecOutputReference | OrgPolicyPolicyDryRunSpec): any;
export declare class OrgPolicyPolicyDryRunSpecOutputReference 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(): OrgPolicyPolicyDryRunSpec | undefined;
    set internalValue(value: OrgPolicyPolicyDryRunSpec | undefined);
    get etag(): string;
    private _inheritFromParent?;
    get inheritFromParent(): boolean | cdktf.IResolvable;
    set inheritFromParent(value: boolean | cdktf.IResolvable);
    resetInheritFromParent(): void;
    get inheritFromParentInput(): boolean | cdktf.IResolvable | undefined;
    private _reset?;
    get reset(): boolean | cdktf.IResolvable;
    set reset(value: boolean | cdktf.IResolvable);
    resetReset(): void;
    get resetInput(): boolean | cdktf.IResolvable | undefined;
    get updateTime(): string;
    private _rules;
    get rules(): OrgPolicyPolicyDryRunSpecRulesList;
    putRules(value: OrgPolicyPolicyDryRunSpecRules[] | cdktf.IResolvable): void;
    resetRules(): void;
    get rulesInput(): cdktf.IResolvable | OrgPolicyPolicyDryRunSpecRules[] | undefined;
}
export interface OrgPolicyPolicySpecRulesCondition {
    /**
    * Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#description OrgPolicyPolicy#description}
    */
    readonly description?: string;
    /**
    * Textual representation of an expression in Common Expression Language syntax.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#expression OrgPolicyPolicy#expression}
    */
    readonly expression?: string;
    /**
    * Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#location OrgPolicyPolicy#location}
    */
    readonly location?: string;
    /**
    * Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#title OrgPolicyPolicy#title}
    */
    readonly title?: string;
}
export declare function orgPolicyPolicySpecRulesConditionToTerraform(struct?: OrgPolicyPolicySpecRulesConditionOutputReference | OrgPolicyPolicySpecRulesCondition): any;
export declare function orgPolicyPolicySpecRulesConditionToHclTerraform(struct?: OrgPolicyPolicySpecRulesConditionOutputReference | OrgPolicyPolicySpecRulesCondition): any;
export declare class OrgPolicyPolicySpecRulesConditionOutputReference 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(): OrgPolicyPolicySpecRulesCondition | undefined;
    set internalValue(value: OrgPolicyPolicySpecRulesCondition | undefined);
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _expression?;
    get expression(): string;
    set expression(value: string);
    resetExpression(): void;
    get expressionInput(): string | undefined;
    private _location?;
    get location(): string;
    set location(value: string);
    resetLocation(): void;
    get locationInput(): string | undefined;
    private _title?;
    get title(): string;
    set title(value: string);
    resetTitle(): void;
    get titleInput(): string | undefined;
}
export interface OrgPolicyPolicySpecRulesValues {
    /**
    * List of values allowed at this resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#allowed_values OrgPolicyPolicy#allowed_values}
    */
    readonly allowedValues?: string[];
    /**
    * List of values denied at this resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#denied_values OrgPolicyPolicy#denied_values}
    */
    readonly deniedValues?: string[];
}
export declare function orgPolicyPolicySpecRulesValuesToTerraform(struct?: OrgPolicyPolicySpecRulesValuesOutputReference | OrgPolicyPolicySpecRulesValues): any;
export declare function orgPolicyPolicySpecRulesValuesToHclTerraform(struct?: OrgPolicyPolicySpecRulesValuesOutputReference | OrgPolicyPolicySpecRulesValues): any;
export declare class OrgPolicyPolicySpecRulesValuesOutputReference 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(): OrgPolicyPolicySpecRulesValues | undefined;
    set internalValue(value: OrgPolicyPolicySpecRulesValues | undefined);
    private _allowedValues?;
    get allowedValues(): string[];
    set allowedValues(value: string[]);
    resetAllowedValues(): void;
    get allowedValuesInput(): string[] | undefined;
    private _deniedValues?;
    get deniedValues(): string[];
    set deniedValues(value: string[]);
    resetDeniedValues(): void;
    get deniedValuesInput(): string[] | undefined;
}
export interface OrgPolicyPolicySpecRules {
    /**
    * Setting this to '"TRUE"' means that all values are allowed. This field can be set only in Policies for list constraints.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#allow_all OrgPolicyPolicy#allow_all}
    */
    readonly allowAll?: string;
    /**
    * Setting this to '"TRUE"' means that all values are denied. This field can be set only in Policies for list constraints.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#deny_all OrgPolicyPolicy#deny_all}
    */
    readonly denyAll?: string;
    /**
    * If '"TRUE"', then the 'Policy' is enforced. If '"FALSE"', then any configuration is acceptable. This field can be set only in Policies for boolean constraints.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#enforce OrgPolicyPolicy#enforce}
    */
    readonly enforce?: string;
    /**
    * Optional. Required for Managed Constraints if parameters defined in constraints. Pass parameter values when policy enforcement is enabled. Ensure that parameter value types match those defined in the constraint definition. For example: { \"allowedLocations\" : [\"us-east1\", \"us-west1\"], \"allowAll\" : true }
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#parameters OrgPolicyPolicy#parameters}
    */
    readonly parameters?: string;
    /**
    * condition block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#condition OrgPolicyPolicy#condition}
    */
    readonly condition?: OrgPolicyPolicySpecRulesCondition;
    /**
    * values block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#values OrgPolicyPolicy#values}
    */
    readonly values?: OrgPolicyPolicySpecRulesValues;
}
export declare function orgPolicyPolicySpecRulesToTerraform(struct?: OrgPolicyPolicySpecRules | cdktf.IResolvable): any;
export declare function orgPolicyPolicySpecRulesToHclTerraform(struct?: OrgPolicyPolicySpecRules | cdktf.IResolvable): any;
export declare class OrgPolicyPolicySpecRulesOutputReference 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(): OrgPolicyPolicySpecRules | cdktf.IResolvable | undefined;
    set internalValue(value: OrgPolicyPolicySpecRules | cdktf.IResolvable | undefined);
    private _allowAll?;
    get allowAll(): string;
    set allowAll(value: string);
    resetAllowAll(): void;
    get allowAllInput(): string | undefined;
    private _denyAll?;
    get denyAll(): string;
    set denyAll(value: string);
    resetDenyAll(): void;
    get denyAllInput(): string | undefined;
    private _enforce?;
    get enforce(): string;
    set enforce(value: string);
    resetEnforce(): void;
    get enforceInput(): string | undefined;
    private _parameters?;
    get parameters(): string;
    set parameters(value: string);
    resetParameters(): void;
    get parametersInput(): string | undefined;
    private _condition;
    get condition(): OrgPolicyPolicySpecRulesConditionOutputReference;
    putCondition(value: OrgPolicyPolicySpecRulesCondition): void;
    resetCondition(): void;
    get conditionInput(): OrgPolicyPolicySpecRulesCondition | undefined;
    private _values;
    get values(): OrgPolicyPolicySpecRulesValuesOutputReference;
    putValues(value: OrgPolicyPolicySpecRulesValues): void;
    resetValues(): void;
    get valuesInput(): OrgPolicyPolicySpecRulesValues | undefined;
}
export declare class OrgPolicyPolicySpecRulesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: OrgPolicyPolicySpecRules[] | 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): OrgPolicyPolicySpecRulesOutputReference;
}
export interface OrgPolicyPolicySpec {
    /**
    * Determines the inheritance behavior for this 'Policy'. If 'inherit_from_parent' is true, PolicyRules set higher up in the hierarchy (up to the closest root) are inherited and present in the effective policy. If it is false, then no rules are inherited, and this Policy becomes the new root for evaluation. This field can be set only for Policies which configure list constraints.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#inherit_from_parent OrgPolicyPolicy#inherit_from_parent}
    */
    readonly inheritFromParent?: boolean | cdktf.IResolvable;
    /**
    * Ignores policies set above this resource and restores the 'constraint_default' enforcement behavior of the specific 'Constraint' at this resource. This field can be set in policies for either list or boolean constraints. If set, 'rules' must be empty and 'inherit_from_parent' must be set to false.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#reset OrgPolicyPolicy#reset}
    */
    readonly reset?: boolean | cdktf.IResolvable;
    /**
    * rules block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#rules OrgPolicyPolicy#rules}
    */
    readonly rules?: OrgPolicyPolicySpecRules[] | cdktf.IResolvable;
}
export declare function orgPolicyPolicySpecToTerraform(struct?: OrgPolicyPolicySpecOutputReference | OrgPolicyPolicySpec): any;
export declare function orgPolicyPolicySpecToHclTerraform(struct?: OrgPolicyPolicySpecOutputReference | OrgPolicyPolicySpec): any;
export declare class OrgPolicyPolicySpecOutputReference 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(): OrgPolicyPolicySpec | undefined;
    set internalValue(value: OrgPolicyPolicySpec | undefined);
    get etag(): string;
    private _inheritFromParent?;
    get inheritFromParent(): boolean | cdktf.IResolvable;
    set inheritFromParent(value: boolean | cdktf.IResolvable);
    resetInheritFromParent(): void;
    get inheritFromParentInput(): boolean | cdktf.IResolvable | undefined;
    private _reset?;
    get reset(): boolean | cdktf.IResolvable;
    set reset(value: boolean | cdktf.IResolvable);
    resetReset(): void;
    get resetInput(): boolean | cdktf.IResolvable | undefined;
    get updateTime(): string;
    private _rules;
    get rules(): OrgPolicyPolicySpecRulesList;
    putRules(value: OrgPolicyPolicySpecRules[] | cdktf.IResolvable): void;
    resetRules(): void;
    get rulesInput(): cdktf.IResolvable | OrgPolicyPolicySpecRules[] | undefined;
}
export interface OrgPolicyPolicyTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#create OrgPolicyPolicy#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#delete OrgPolicyPolicy#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#update OrgPolicyPolicy#update}
    */
    readonly update?: string;
}
export declare function orgPolicyPolicyTimeoutsToTerraform(struct?: OrgPolicyPolicyTimeouts | cdktf.IResolvable): any;
export declare function orgPolicyPolicyTimeoutsToHclTerraform(struct?: OrgPolicyPolicyTimeouts | cdktf.IResolvable): any;
export declare class OrgPolicyPolicyTimeoutsOutputReference 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(): OrgPolicyPolicyTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: OrgPolicyPolicyTimeouts | 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/hashicorp/google/6.27.0/docs/resources/org_policy_policy google_org_policy_policy}
*/
export declare class OrgPolicyPolicy extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_org_policy_policy";
    /**
    * Generates CDKTF code for importing a OrgPolicyPolicy 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 OrgPolicyPolicy to import
    * @param importFromId The id of the existing OrgPolicyPolicy that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.27.0/docs/resources/org_policy_policy#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the OrgPolicyPolicy 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/hashicorp/google/6.27.0/docs/resources/org_policy_policy google_org_policy_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 OrgPolicyPolicyConfig
    */
    constructor(scope: Construct, id: string, config: OrgPolicyPolicyConfig);
    get etag(): string;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _parent?;
    get parent(): string;
    set parent(value: string);
    get parentInput(): string | undefined;
    private _dryRunSpec;
    get dryRunSpec(): OrgPolicyPolicyDryRunSpecOutputReference;
    putDryRunSpec(value: OrgPolicyPolicyDryRunSpec): void;
    resetDryRunSpec(): void;
    get dryRunSpecInput(): OrgPolicyPolicyDryRunSpec | undefined;
    private _spec;
    get spec(): OrgPolicyPolicySpecOutputReference;
    putSpec(value: OrgPolicyPolicySpec): void;
    resetSpec(): void;
    get specInput(): OrgPolicyPolicySpec | undefined;
    private _timeouts;
    get timeouts(): OrgPolicyPolicyTimeoutsOutputReference;
    putTimeouts(value: OrgPolicyPolicyTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | OrgPolicyPolicyTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
