import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface NotificationRuleConfig extends cdktf.TerraformMetaArguments {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#action_type NotificationRule#action_type}
    */
    readonly actionType: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#enabled NotificationRule#enabled}
    */
    readonly enabled?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#id NotificationRule#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/notification_rule#name NotificationRule#name}
    */
    readonly name: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#notification_time NotificationRule#notification_time}
    */
    readonly notificationTime?: string[];
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#order NotificationRule#order}
    */
    readonly order?: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#username NotificationRule#username}
    */
    readonly username: string;
    /**
    * criteria block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#criteria NotificationRule#criteria}
    */
    readonly criteria?: NotificationRuleCriteria[] | cdktf.IResolvable;
    /**
    * repeat block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#repeat NotificationRule#repeat}
    */
    readonly repeat?: NotificationRuleRepeat[] | cdktf.IResolvable;
    /**
    * schedules block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#schedules NotificationRule#schedules}
    */
    readonly schedules?: NotificationRuleSchedules[] | cdktf.IResolvable;
    /**
    * steps block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#steps NotificationRule#steps}
    */
    readonly steps?: NotificationRuleSteps[] | cdktf.IResolvable;
    /**
    * time_restriction block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#time_restriction NotificationRule#time_restriction}
    */
    readonly timeRestriction?: NotificationRuleTimeRestriction[] | cdktf.IResolvable;
}
export interface NotificationRuleCriteriaConditions {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#expected_value NotificationRule#expected_value}
    */
    readonly expectedValue?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#field NotificationRule#field}
    */
    readonly field: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#key NotificationRule#key}
    */
    readonly key?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#not NotificationRule#not}
    */
    readonly not?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#operation NotificationRule#operation}
    */
    readonly operation: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#order NotificationRule#order}
    */
    readonly order?: number;
}
export declare function notificationRuleCriteriaConditionsToTerraform(struct?: NotificationRuleCriteriaConditions | cdktf.IResolvable): any;
export declare class NotificationRuleCriteriaConditionsOutputReference 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(): NotificationRuleCriteriaConditions | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationRuleCriteriaConditions | 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;
    private _order?;
    get order(): number;
    set order(value: number);
    resetOrder(): void;
    get orderInput(): number | undefined;
}
export declare class NotificationRuleCriteriaConditionsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationRuleCriteriaConditions[] | 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): NotificationRuleCriteriaConditionsOutputReference;
}
export interface NotificationRuleCriteria {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#type NotificationRule#type}
    */
    readonly type: string;
    /**
    * conditions block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#conditions NotificationRule#conditions}
    */
    readonly conditions?: NotificationRuleCriteriaConditions[] | cdktf.IResolvable;
}
export declare function notificationRuleCriteriaToTerraform(struct?: NotificationRuleCriteria | cdktf.IResolvable): any;
export declare class NotificationRuleCriteriaOutputReference 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(): NotificationRuleCriteria | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationRuleCriteria | cdktf.IResolvable | undefined);
    private _type?;
    get type(): string;
    set type(value: string);
    get typeInput(): string | undefined;
    private _conditions;
    get conditions(): NotificationRuleCriteriaConditionsList;
    putConditions(value: NotificationRuleCriteriaConditions[] | cdktf.IResolvable): void;
    resetConditions(): void;
    get conditionsInput(): cdktf.IResolvable | NotificationRuleCriteriaConditions[] | undefined;
}
export declare class NotificationRuleCriteriaList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationRuleCriteria[] | 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): NotificationRuleCriteriaOutputReference;
}
export interface NotificationRuleRepeat {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#enabled NotificationRule#enabled}
    */
    readonly enabled?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#loop_after NotificationRule#loop_after}
    */
    readonly loopAfter: number;
}
export declare function notificationRuleRepeatToTerraform(struct?: NotificationRuleRepeat | cdktf.IResolvable): any;
export declare class NotificationRuleRepeatOutputReference 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(): NotificationRuleRepeat | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationRuleRepeat | cdktf.IResolvable | undefined);
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    resetEnabled(): void;
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
    private _loopAfter?;
    get loopAfter(): number;
    set loopAfter(value: number);
    get loopAfterInput(): number | undefined;
}
export declare class NotificationRuleRepeatList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationRuleRepeat[] | 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): NotificationRuleRepeatOutputReference;
}
export interface NotificationRuleSchedules {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#name NotificationRule#name}
    */
    readonly name: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#type NotificationRule#type}
    */
    readonly type: string;
}
export declare function notificationRuleSchedulesToTerraform(struct?: NotificationRuleSchedules | cdktf.IResolvable): any;
export declare class NotificationRuleSchedulesOutputReference 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(): NotificationRuleSchedules | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationRuleSchedules | cdktf.IResolvable | undefined);
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _type?;
    get type(): string;
    set type(value: string);
    get typeInput(): string | undefined;
}
export declare class NotificationRuleSchedulesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationRuleSchedules[] | 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): NotificationRuleSchedulesOutputReference;
}
export interface NotificationRuleStepsContact {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#method NotificationRule#method}
    */
    readonly method: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#to NotificationRule#to}
    */
    readonly to: string;
}
export declare function notificationRuleStepsContactToTerraform(struct?: NotificationRuleStepsContact | cdktf.IResolvable): any;
export declare class NotificationRuleStepsContactOutputReference 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(): NotificationRuleStepsContact | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationRuleStepsContact | cdktf.IResolvable | undefined);
    private _method?;
    get method(): string;
    set method(value: string);
    get methodInput(): string | undefined;
    private _to?;
    get to(): string;
    set to(value: string);
    get toInput(): string | undefined;
}
export declare class NotificationRuleStepsContactList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationRuleStepsContact[] | 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): NotificationRuleStepsContactOutputReference;
}
export interface NotificationRuleSteps {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#enabled NotificationRule#enabled}
    */
    readonly enabled?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#send_after NotificationRule#send_after}
    */
    readonly sendAfter?: number;
    /**
    * contact block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#contact NotificationRule#contact}
    */
    readonly contact: NotificationRuleStepsContact[] | cdktf.IResolvable;
}
export declare function notificationRuleStepsToTerraform(struct?: NotificationRuleSteps | cdktf.IResolvable): any;
export declare class NotificationRuleStepsOutputReference 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(): NotificationRuleSteps | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationRuleSteps | cdktf.IResolvable | undefined);
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    resetEnabled(): void;
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
    private _sendAfter?;
    get sendAfter(): number;
    set sendAfter(value: number);
    resetSendAfter(): void;
    get sendAfterInput(): number | undefined;
    private _contact;
    get contact(): NotificationRuleStepsContactList;
    putContact(value: NotificationRuleStepsContact[] | cdktf.IResolvable): void;
    get contactInput(): cdktf.IResolvable | NotificationRuleStepsContact[] | undefined;
}
export declare class NotificationRuleStepsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationRuleSteps[] | 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): NotificationRuleStepsOutputReference;
}
export interface NotificationRuleTimeRestrictionRestriction {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#end_hour NotificationRule#end_hour}
    */
    readonly endHour: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#end_min NotificationRule#end_min}
    */
    readonly endMin: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#start_hour NotificationRule#start_hour}
    */
    readonly startHour: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#start_min NotificationRule#start_min}
    */
    readonly startMin: number;
}
export declare function notificationRuleTimeRestrictionRestrictionToTerraform(struct?: NotificationRuleTimeRestrictionRestriction | cdktf.IResolvable): any;
export declare class NotificationRuleTimeRestrictionRestrictionOutputReference 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(): NotificationRuleTimeRestrictionRestriction | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationRuleTimeRestrictionRestriction | cdktf.IResolvable | undefined);
    private _endHour?;
    get endHour(): number;
    set endHour(value: number);
    get endHourInput(): number | undefined;
    private _endMin?;
    get endMin(): number;
    set endMin(value: number);
    get endMinInput(): number | undefined;
    private _startHour?;
    get startHour(): number;
    set startHour(value: number);
    get startHourInput(): number | undefined;
    private _startMin?;
    get startMin(): number;
    set startMin(value: number);
    get startMinInput(): number | undefined;
}
export declare class NotificationRuleTimeRestrictionRestrictionList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationRuleTimeRestrictionRestriction[] | 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): NotificationRuleTimeRestrictionRestrictionOutputReference;
}
export interface NotificationRuleTimeRestrictionRestrictions {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#end_day NotificationRule#end_day}
    */
    readonly endDay: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#end_hour NotificationRule#end_hour}
    */
    readonly endHour: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#end_min NotificationRule#end_min}
    */
    readonly endMin: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#start_day NotificationRule#start_day}
    */
    readonly startDay: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#start_hour NotificationRule#start_hour}
    */
    readonly startHour: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#start_min NotificationRule#start_min}
    */
    readonly startMin: number;
}
export declare function notificationRuleTimeRestrictionRestrictionsToTerraform(struct?: NotificationRuleTimeRestrictionRestrictions | cdktf.IResolvable): any;
export declare class NotificationRuleTimeRestrictionRestrictionsOutputReference 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(): NotificationRuleTimeRestrictionRestrictions | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationRuleTimeRestrictionRestrictions | cdktf.IResolvable | undefined);
    private _endDay?;
    get endDay(): string;
    set endDay(value: string);
    get endDayInput(): string | undefined;
    private _endHour?;
    get endHour(): number;
    set endHour(value: number);
    get endHourInput(): number | undefined;
    private _endMin?;
    get endMin(): number;
    set endMin(value: number);
    get endMinInput(): number | undefined;
    private _startDay?;
    get startDay(): string;
    set startDay(value: string);
    get startDayInput(): string | undefined;
    private _startHour?;
    get startHour(): number;
    set startHour(value: number);
    get startHourInput(): number | undefined;
    private _startMin?;
    get startMin(): number;
    set startMin(value: number);
    get startMinInput(): number | undefined;
}
export declare class NotificationRuleTimeRestrictionRestrictionsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationRuleTimeRestrictionRestrictions[] | 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): NotificationRuleTimeRestrictionRestrictionsOutputReference;
}
export interface NotificationRuleTimeRestriction {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#type NotificationRule#type}
    */
    readonly type: string;
    /**
    * restriction block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#restriction NotificationRule#restriction}
    */
    readonly restriction?: NotificationRuleTimeRestrictionRestriction[] | cdktf.IResolvable;
    /**
    * restrictions block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule#restrictions NotificationRule#restrictions}
    */
    readonly restrictions?: NotificationRuleTimeRestrictionRestrictions[] | cdktf.IResolvable;
}
export declare function notificationRuleTimeRestrictionToTerraform(struct?: NotificationRuleTimeRestriction | cdktf.IResolvable): any;
export declare class NotificationRuleTimeRestrictionOutputReference 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(): NotificationRuleTimeRestriction | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationRuleTimeRestriction | cdktf.IResolvable | undefined);
    private _type?;
    get type(): string;
    set type(value: string);
    get typeInput(): string | undefined;
    private _restriction;
    get restriction(): NotificationRuleTimeRestrictionRestrictionList;
    putRestriction(value: NotificationRuleTimeRestrictionRestriction[] | cdktf.IResolvable): void;
    resetRestriction(): void;
    get restrictionInput(): cdktf.IResolvable | NotificationRuleTimeRestrictionRestriction[] | undefined;
    private _restrictions;
    get restrictions(): NotificationRuleTimeRestrictionRestrictionsList;
    putRestrictions(value: NotificationRuleTimeRestrictionRestrictions[] | cdktf.IResolvable): void;
    resetRestrictions(): void;
    get restrictionsInput(): cdktf.IResolvable | NotificationRuleTimeRestrictionRestrictions[] | undefined;
}
export declare class NotificationRuleTimeRestrictionList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationRuleTimeRestriction[] | 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): NotificationRuleTimeRestrictionOutputReference;
}
/**
* Represents a {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule opsgenie_notification_rule}
*/
export declare class NotificationRule extends cdktf.TerraformResource {
    static readonly tfResourceType = "opsgenie_notification_rule";
    /**
    * Create a new {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_rule opsgenie_notification_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 NotificationRuleConfig
    */
    constructor(scope: Construct, id: string, config: NotificationRuleConfig);
    private _actionType?;
    get actionType(): string;
    set actionType(value: string);
    get actionTypeInput(): string | undefined;
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    resetEnabled(): void;
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
    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 _notificationTime?;
    get notificationTime(): string[];
    set notificationTime(value: string[]);
    resetNotificationTime(): void;
    get notificationTimeInput(): string[] | undefined;
    private _order?;
    get order(): number;
    set order(value: number);
    resetOrder(): void;
    get orderInput(): number | undefined;
    private _username?;
    get username(): string;
    set username(value: string);
    get usernameInput(): string | undefined;
    private _criteria;
    get criteria(): NotificationRuleCriteriaList;
    putCriteria(value: NotificationRuleCriteria[] | cdktf.IResolvable): void;
    resetCriteria(): void;
    get criteriaInput(): cdktf.IResolvable | NotificationRuleCriteria[] | undefined;
    private _repeat;
    get repeat(): NotificationRuleRepeatList;
    putRepeat(value: NotificationRuleRepeat[] | cdktf.IResolvable): void;
    resetRepeat(): void;
    get repeatInput(): cdktf.IResolvable | NotificationRuleRepeat[] | undefined;
    private _schedules;
    get schedules(): NotificationRuleSchedulesList;
    putSchedules(value: NotificationRuleSchedules[] | cdktf.IResolvable): void;
    resetSchedules(): void;
    get schedulesInput(): cdktf.IResolvable | NotificationRuleSchedules[] | undefined;
    private _steps;
    get steps(): NotificationRuleStepsList;
    putSteps(value: NotificationRuleSteps[] | cdktf.IResolvable): void;
    resetSteps(): void;
    get stepsInput(): cdktf.IResolvable | NotificationRuleSteps[] | undefined;
    private _timeRestriction;
    get timeRestriction(): NotificationRuleTimeRestrictionList;
    putTimeRestriction(value: NotificationRuleTimeRestriction[] | cdktf.IResolvable): void;
    resetTimeRestriction(): void;
    get timeRestrictionInput(): cdktf.IResolvable | NotificationRuleTimeRestriction[] | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
}
