/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface OrgPolicyCustomConstraintConfig extends cdktf.TerraformMetaArguments {
    /**
    * The action to take if the condition is met. Possible values: ["ALLOW", "DENY"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/org_policy_custom_constraint#action_type OrgPolicyCustomConstraint#action_type}
    */
    readonly actionType: string;
    /**
    * A CEL condition that refers to a supported service resource, for example 'resource.management.autoUpgrade == false'. For details about CEL usage, see [Common Expression Language](https://cloud.google.com/resource-manager/docs/organization-policy/creating-managing-custom-constraints#common_expression_language).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/org_policy_custom_constraint#condition OrgPolicyCustomConstraint#condition}
    */
    readonly condition: string;
    /**
    * A human-friendly description of the constraint to display as an error message when the policy is violated.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/org_policy_custom_constraint#description OrgPolicyCustomConstraint#description}
    */
    readonly description?: string;
    /**
    * A human-friendly name for the constraint.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/org_policy_custom_constraint#display_name OrgPolicyCustomConstraint#display_name}
    */
    readonly displayName?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/org_policy_custom_constraint#id OrgPolicyCustomConstraint#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;
    /**
    * A list of RESTful methods for which to enforce the constraint. Can be 'CREATE', 'UPDATE', or both. Not all Google Cloud services support both methods. To see supported methods for each service, find the service in [Supported services](https://cloud.google.com/resource-manager/docs/organization-policy/custom-constraint-supported-services).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/org_policy_custom_constraint#method_types OrgPolicyCustomConstraint#method_types}
    */
    readonly methodTypes: string[];
    /**
    * Immutable. The name of the custom constraint. This is unique within the organization.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/org_policy_custom_constraint#name OrgPolicyCustomConstraint#name}
    */
    readonly name: string;
    /**
    * The parent of the resource, an organization. Format should be 'organizations/{organization_id}'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/org_policy_custom_constraint#parent OrgPolicyCustomConstraint#parent}
    */
    readonly parent: string;
    /**
    * Immutable. The fully qualified name of the Google Cloud REST resource containing the object and field you want to restrict. For example, 'container.googleapis.com/NodePool'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/org_policy_custom_constraint#resource_types OrgPolicyCustomConstraint#resource_types}
    */
    readonly resourceTypes: string[];
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/org_policy_custom_constraint#timeouts OrgPolicyCustomConstraint#timeouts}
    */
    readonly timeouts?: OrgPolicyCustomConstraintTimeouts;
}
export interface OrgPolicyCustomConstraintTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/org_policy_custom_constraint#create OrgPolicyCustomConstraint#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/org_policy_custom_constraint#delete OrgPolicyCustomConstraint#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/org_policy_custom_constraint#update OrgPolicyCustomConstraint#update}
    */
    readonly update?: string;
}
export declare function orgPolicyCustomConstraintTimeoutsToTerraform(struct?: OrgPolicyCustomConstraintTimeouts | cdktf.IResolvable): any;
export declare function orgPolicyCustomConstraintTimeoutsToHclTerraform(struct?: OrgPolicyCustomConstraintTimeouts | cdktf.IResolvable): any;
export declare class OrgPolicyCustomConstraintTimeoutsOutputReference 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(): OrgPolicyCustomConstraintTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: OrgPolicyCustomConstraintTimeouts | 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.10.0/docs/resources/org_policy_custom_constraint google_org_policy_custom_constraint}
*/
export declare class OrgPolicyCustomConstraint extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_org_policy_custom_constraint";
    /**
    * Generates CDKTF code for importing a OrgPolicyCustomConstraint 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 OrgPolicyCustomConstraint to import
    * @param importFromId The id of the existing OrgPolicyCustomConstraint that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.10.0/docs/resources/org_policy_custom_constraint#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the OrgPolicyCustomConstraint 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.10.0/docs/resources/org_policy_custom_constraint google_org_policy_custom_constraint} 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 OrgPolicyCustomConstraintConfig
    */
    constructor(scope: Construct, id: string, config: OrgPolicyCustomConstraintConfig);
    private _actionType?;
    get actionType(): string;
    set actionType(value: string);
    get actionTypeInput(): string | undefined;
    private _condition?;
    get condition(): string;
    set condition(value: string);
    get conditionInput(): string | undefined;
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _displayName?;
    get displayName(): string;
    set displayName(value: string);
    resetDisplayName(): void;
    get displayNameInput(): string | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _methodTypes?;
    get methodTypes(): string[];
    set methodTypes(value: string[]);
    get methodTypesInput(): 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 _resourceTypes?;
    get resourceTypes(): string[];
    set resourceTypes(value: string[]);
    get resourceTypesInput(): string[] | undefined;
    get updateTime(): string;
    private _timeouts;
    get timeouts(): OrgPolicyCustomConstraintTimeoutsOutputReference;
    putTimeouts(value: OrgPolicyCustomConstraintTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | OrgPolicyCustomConstraintTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
