import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface ServiceIncidentRuleConfig extends cdktf.TerraformMetaArguments {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule#id ServiceIncidentRule#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/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule#service_id ServiceIncidentRule#service_id}
    */
    readonly serviceId: string;
    /**
    * incident_rule block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule#incident_rule ServiceIncidentRule#incident_rule}
    */
    readonly incidentRule: ServiceIncidentRuleIncidentRule[] | cdktf.IResolvable;
}
export interface ServiceIncidentRuleIncidentRuleConditions {
    /**
    * User defined value that will be compared with alert field according to the operation. Default value is empty string
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule#expected_value ServiceIncidentRule#expected_value}
    */
    readonly expectedValue?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule#field ServiceIncidentRule#field}
    */
    readonly field: string;
    /**
    * If 'field' is set as 'extra-properties', key could be used for key-value pair
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule#key ServiceIncidentRule#key}
    */
    readonly key?: string;
    /**
    * Indicates behaviour of the given operation. Default value is false
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule#not ServiceIncidentRule#not}
    */
    readonly not?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule#operation ServiceIncidentRule#operation}
    */
    readonly operation: string;
}
export declare function serviceIncidentRuleIncidentRuleConditionsToTerraform(struct?: ServiceIncidentRuleIncidentRuleConditions | cdktf.IResolvable): any;
export declare class ServiceIncidentRuleIncidentRuleConditionsOutputReference 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(): ServiceIncidentRuleIncidentRuleConditions | cdktf.IResolvable | undefined;
    set internalValue(value: ServiceIncidentRuleIncidentRuleConditions | cdktf.IResolvable | undefined);
    private _expectedValue?;
    get expectedValue(): string;
    set expectedValue(value: string);
    resetExpectedValue(): void;
    get expectedValueInput(): string | undefined;
    private _field?;
    get field(): string;
    set field(value: string);
    get fieldInput(): string | undefined;
    private _key?;
    get key(): string;
    set key(value: string);
    resetKey(): void;
    get keyInput(): string | undefined;
    private _not?;
    get not(): boolean | cdktf.IResolvable;
    set not(value: boolean | cdktf.IResolvable);
    resetNot(): void;
    get notInput(): boolean | cdktf.IResolvable | undefined;
    private _operation?;
    get operation(): string;
    set operation(value: string);
    get operationInput(): string | undefined;
}
export declare class ServiceIncidentRuleIncidentRuleConditionsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: ServiceIncidentRuleIncidentRuleConditions[] | 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): ServiceIncidentRuleIncidentRuleConditionsOutputReference;
}
export interface ServiceIncidentRuleIncidentRuleIncidentPropertiesStakeholderProperties {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule#description ServiceIncidentRule#description}
    */
    readonly description?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule#enable ServiceIncidentRule#enable}
    */
    readonly enable?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule#message ServiceIncidentRule#message}
    */
    readonly message: string;
}
export declare function serviceIncidentRuleIncidentRuleIncidentPropertiesStakeholderPropertiesToTerraform(struct?: ServiceIncidentRuleIncidentRuleIncidentPropertiesStakeholderProperties | cdktf.IResolvable): any;
export declare class ServiceIncidentRuleIncidentRuleIncidentPropertiesStakeholderPropertiesOutputReference 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(): ServiceIncidentRuleIncidentRuleIncidentPropertiesStakeholderProperties | cdktf.IResolvable | undefined;
    set internalValue(value: ServiceIncidentRuleIncidentRuleIncidentPropertiesStakeholderProperties | cdktf.IResolvable | undefined);
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _enable?;
    get enable(): boolean | cdktf.IResolvable;
    set enable(value: boolean | cdktf.IResolvable);
    resetEnable(): void;
    get enableInput(): boolean | cdktf.IResolvable | undefined;
    private _message?;
    get message(): string;
    set message(value: string);
    get messageInput(): string | undefined;
}
export declare class ServiceIncidentRuleIncidentRuleIncidentPropertiesStakeholderPropertiesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: ServiceIncidentRuleIncidentRuleIncidentPropertiesStakeholderProperties[] | 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): ServiceIncidentRuleIncidentRuleIncidentPropertiesStakeholderPropertiesOutputReference;
}
export interface ServiceIncidentRuleIncidentRuleIncidentProperties {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule#description ServiceIncidentRule#description}
    */
    readonly description?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule#details ServiceIncidentRule#details}
    */
    readonly details?: {
        [key: string]: string;
    };
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule#message ServiceIncidentRule#message}
    */
    readonly message: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule#priority ServiceIncidentRule#priority}
    */
    readonly priority: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule#tags ServiceIncidentRule#tags}
    */
    readonly tags?: string[];
    /**
    * stakeholder_properties block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule#stakeholder_properties ServiceIncidentRule#stakeholder_properties}
    */
    readonly stakeholderProperties: ServiceIncidentRuleIncidentRuleIncidentPropertiesStakeholderProperties[] | cdktf.IResolvable;
}
export declare function serviceIncidentRuleIncidentRuleIncidentPropertiesToTerraform(struct?: ServiceIncidentRuleIncidentRuleIncidentProperties | cdktf.IResolvable): any;
export declare class ServiceIncidentRuleIncidentRuleIncidentPropertiesOutputReference 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(): ServiceIncidentRuleIncidentRuleIncidentProperties | cdktf.IResolvable | undefined;
    set internalValue(value: ServiceIncidentRuleIncidentRuleIncidentProperties | cdktf.IResolvable | undefined);
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _details?;
    get details(): {
        [key: string]: string;
    };
    set details(value: {
        [key: string]: string;
    });
    resetDetails(): void;
    get detailsInput(): {
        [key: string]: string;
    } | undefined;
    private _message?;
    get message(): string;
    set message(value: string);
    get messageInput(): string | undefined;
    private _priority?;
    get priority(): string;
    set priority(value: string);
    get priorityInput(): string | undefined;
    private _tags?;
    get tags(): string[];
    set tags(value: string[]);
    resetTags(): void;
    get tagsInput(): string[] | undefined;
    private _stakeholderProperties;
    get stakeholderProperties(): ServiceIncidentRuleIncidentRuleIncidentPropertiesStakeholderPropertiesList;
    putStakeholderProperties(value: ServiceIncidentRuleIncidentRuleIncidentPropertiesStakeholderProperties[] | cdktf.IResolvable): void;
    get stakeholderPropertiesInput(): cdktf.IResolvable | ServiceIncidentRuleIncidentRuleIncidentPropertiesStakeholderProperties[] | undefined;
}
export declare class ServiceIncidentRuleIncidentRuleIncidentPropertiesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: ServiceIncidentRuleIncidentRuleIncidentProperties[] | 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): ServiceIncidentRuleIncidentRuleIncidentPropertiesOutputReference;
}
export interface ServiceIncidentRuleIncidentRule {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule#condition_match_type ServiceIncidentRule#condition_match_type}
    */
    readonly conditionMatchType?: string;
    /**
    * conditions block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule#conditions ServiceIncidentRule#conditions}
    */
    readonly conditions?: ServiceIncidentRuleIncidentRuleConditions[] | cdktf.IResolvable;
    /**
    * incident_properties block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule#incident_properties ServiceIncidentRule#incident_properties}
    */
    readonly incidentProperties: ServiceIncidentRuleIncidentRuleIncidentProperties[] | cdktf.IResolvable;
}
export declare function serviceIncidentRuleIncidentRuleToTerraform(struct?: ServiceIncidentRuleIncidentRule | cdktf.IResolvable): any;
export declare class ServiceIncidentRuleIncidentRuleOutputReference 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(): ServiceIncidentRuleIncidentRule | cdktf.IResolvable | undefined;
    set internalValue(value: ServiceIncidentRuleIncidentRule | cdktf.IResolvable | undefined);
    private _conditionMatchType?;
    get conditionMatchType(): string;
    set conditionMatchType(value: string);
    resetConditionMatchType(): void;
    get conditionMatchTypeInput(): string | undefined;
    private _conditions;
    get conditions(): ServiceIncidentRuleIncidentRuleConditionsList;
    putConditions(value: ServiceIncidentRuleIncidentRuleConditions[] | cdktf.IResolvable): void;
    resetConditions(): void;
    get conditionsInput(): cdktf.IResolvable | ServiceIncidentRuleIncidentRuleConditions[] | undefined;
    private _incidentProperties;
    get incidentProperties(): ServiceIncidentRuleIncidentRuleIncidentPropertiesList;
    putIncidentProperties(value: ServiceIncidentRuleIncidentRuleIncidentProperties[] | cdktf.IResolvable): void;
    get incidentPropertiesInput(): cdktf.IResolvable | ServiceIncidentRuleIncidentRuleIncidentProperties[] | undefined;
}
export declare class ServiceIncidentRuleIncidentRuleList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: ServiceIncidentRuleIncidentRule[] | 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): ServiceIncidentRuleIncidentRuleOutputReference;
}
/**
* Represents a {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule opsgenie_service_incident_rule}
*/
export declare class ServiceIncidentRule extends cdktf.TerraformResource {
    static readonly tfResourceType = "opsgenie_service_incident_rule";
    /**
    * Create a new {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/service_incident_rule opsgenie_service_incident_rule} 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 ServiceIncidentRuleConfig
    */
    constructor(scope: Construct, id: string, config: ServiceIncidentRuleConfig);
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _serviceId?;
    get serviceId(): string;
    set serviceId(value: string);
    get serviceIdInput(): string | undefined;
    private _incidentRule;
    get incidentRule(): ServiceIncidentRuleIncidentRuleList;
    putIncidentRule(value: ServiceIncidentRuleIncidentRule[] | cdktf.IResolvable): void;
    get incidentRuleInput(): cdktf.IResolvable | ServiceIncidentRuleIncidentRule[] | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
}
