import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface NotificationPolicyConfig extends cdktf.TerraformMetaArguments {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#enabled NotificationPolicy#enabled}
    */
    readonly enabled?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#id NotificationPolicy#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_policy#name NotificationPolicy#name}
    */
    readonly name: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#policy_description NotificationPolicy#policy_description}
    */
    readonly policyDescription?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#suppress NotificationPolicy#suppress}
    */
    readonly suppress?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#team_id NotificationPolicy#team_id}
    */
    readonly teamId: string;
    /**
    * auto_close_action block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#auto_close_action NotificationPolicy#auto_close_action}
    */
    readonly autoCloseAction?: NotificationPolicyAutoCloseAction[] | cdktf.IResolvable;
    /**
    * auto_restart_action block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#auto_restart_action NotificationPolicy#auto_restart_action}
    */
    readonly autoRestartAction?: NotificationPolicyAutoRestartAction[] | cdktf.IResolvable;
    /**
    * de_duplication_action block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#de_duplication_action NotificationPolicy#de_duplication_action}
    */
    readonly deDuplicationAction?: NotificationPolicyDeDuplicationAction[] | cdktf.IResolvable;
    /**
    * delay_action block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#delay_action NotificationPolicy#delay_action}
    */
    readonly delayAction?: NotificationPolicyDelayAction[] | cdktf.IResolvable;
    /**
    * filter block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#filter NotificationPolicy#filter}
    */
    readonly filter: NotificationPolicyFilter[] | cdktf.IResolvable;
    /**
    * time_restriction block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#time_restriction NotificationPolicy#time_restriction}
    */
    readonly timeRestriction?: NotificationPolicyTimeRestriction[] | cdktf.IResolvable;
}
export interface NotificationPolicyAutoCloseActionDuration {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#time_amount NotificationPolicy#time_amount}
    */
    readonly timeAmount: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#time_unit NotificationPolicy#time_unit}
    */
    readonly timeUnit?: string;
}
export declare function notificationPolicyAutoCloseActionDurationToTerraform(struct?: NotificationPolicyAutoCloseActionDuration | cdktf.IResolvable): any;
export declare class NotificationPolicyAutoCloseActionDurationOutputReference 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(): NotificationPolicyAutoCloseActionDuration | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationPolicyAutoCloseActionDuration | cdktf.IResolvable | undefined);
    private _timeAmount?;
    get timeAmount(): number;
    set timeAmount(value: number);
    get timeAmountInput(): number | undefined;
    private _timeUnit?;
    get timeUnit(): string;
    set timeUnit(value: string);
    resetTimeUnit(): void;
    get timeUnitInput(): string | undefined;
}
export declare class NotificationPolicyAutoCloseActionDurationList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationPolicyAutoCloseActionDuration[] | 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): NotificationPolicyAutoCloseActionDurationOutputReference;
}
export interface NotificationPolicyAutoCloseAction {
    /**
    * duration block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#duration NotificationPolicy#duration}
    */
    readonly duration: NotificationPolicyAutoCloseActionDuration[] | cdktf.IResolvable;
}
export declare function notificationPolicyAutoCloseActionToTerraform(struct?: NotificationPolicyAutoCloseAction | cdktf.IResolvable): any;
export declare class NotificationPolicyAutoCloseActionOutputReference 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(): NotificationPolicyAutoCloseAction | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationPolicyAutoCloseAction | cdktf.IResolvable | undefined);
    private _duration;
    get duration(): NotificationPolicyAutoCloseActionDurationList;
    putDuration(value: NotificationPolicyAutoCloseActionDuration[] | cdktf.IResolvable): void;
    get durationInput(): cdktf.IResolvable | NotificationPolicyAutoCloseActionDuration[] | undefined;
}
export declare class NotificationPolicyAutoCloseActionList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationPolicyAutoCloseAction[] | 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): NotificationPolicyAutoCloseActionOutputReference;
}
export interface NotificationPolicyAutoRestartActionDuration {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#time_amount NotificationPolicy#time_amount}
    */
    readonly timeAmount: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#time_unit NotificationPolicy#time_unit}
    */
    readonly timeUnit?: string;
}
export declare function notificationPolicyAutoRestartActionDurationToTerraform(struct?: NotificationPolicyAutoRestartActionDuration | cdktf.IResolvable): any;
export declare class NotificationPolicyAutoRestartActionDurationOutputReference 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(): NotificationPolicyAutoRestartActionDuration | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationPolicyAutoRestartActionDuration | cdktf.IResolvable | undefined);
    private _timeAmount?;
    get timeAmount(): number;
    set timeAmount(value: number);
    get timeAmountInput(): number | undefined;
    private _timeUnit?;
    get timeUnit(): string;
    set timeUnit(value: string);
    resetTimeUnit(): void;
    get timeUnitInput(): string | undefined;
}
export declare class NotificationPolicyAutoRestartActionDurationList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationPolicyAutoRestartActionDuration[] | 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): NotificationPolicyAutoRestartActionDurationOutputReference;
}
export interface NotificationPolicyAutoRestartAction {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#max_repeat_count NotificationPolicy#max_repeat_count}
    */
    readonly maxRepeatCount: number;
    /**
    * duration block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#duration NotificationPolicy#duration}
    */
    readonly duration: NotificationPolicyAutoRestartActionDuration[] | cdktf.IResolvable;
}
export declare function notificationPolicyAutoRestartActionToTerraform(struct?: NotificationPolicyAutoRestartAction | cdktf.IResolvable): any;
export declare class NotificationPolicyAutoRestartActionOutputReference 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(): NotificationPolicyAutoRestartAction | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationPolicyAutoRestartAction | cdktf.IResolvable | undefined);
    private _maxRepeatCount?;
    get maxRepeatCount(): number;
    set maxRepeatCount(value: number);
    get maxRepeatCountInput(): number | undefined;
    private _duration;
    get duration(): NotificationPolicyAutoRestartActionDurationList;
    putDuration(value: NotificationPolicyAutoRestartActionDuration[] | cdktf.IResolvable): void;
    get durationInput(): cdktf.IResolvable | NotificationPolicyAutoRestartActionDuration[] | undefined;
}
export declare class NotificationPolicyAutoRestartActionList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationPolicyAutoRestartAction[] | 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): NotificationPolicyAutoRestartActionOutputReference;
}
export interface NotificationPolicyDeDuplicationActionDuration {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#time_amount NotificationPolicy#time_amount}
    */
    readonly timeAmount: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#time_unit NotificationPolicy#time_unit}
    */
    readonly timeUnit?: string;
}
export declare function notificationPolicyDeDuplicationActionDurationToTerraform(struct?: NotificationPolicyDeDuplicationActionDuration | cdktf.IResolvable): any;
export declare class NotificationPolicyDeDuplicationActionDurationOutputReference 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(): NotificationPolicyDeDuplicationActionDuration | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationPolicyDeDuplicationActionDuration | cdktf.IResolvable | undefined);
    private _timeAmount?;
    get timeAmount(): number;
    set timeAmount(value: number);
    get timeAmountInput(): number | undefined;
    private _timeUnit?;
    get timeUnit(): string;
    set timeUnit(value: string);
    resetTimeUnit(): void;
    get timeUnitInput(): string | undefined;
}
export declare class NotificationPolicyDeDuplicationActionDurationList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationPolicyDeDuplicationActionDuration[] | 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): NotificationPolicyDeDuplicationActionDurationOutputReference;
}
export interface NotificationPolicyDeDuplicationAction {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#count NotificationPolicy#count}
    */
    readonly count: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#de_duplication_action_type NotificationPolicy#de_duplication_action_type}
    */
    readonly deDuplicationActionType: string;
    /**
    * duration block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#duration NotificationPolicy#duration}
    */
    readonly duration?: NotificationPolicyDeDuplicationActionDuration[] | cdktf.IResolvable;
}
export declare function notificationPolicyDeDuplicationActionToTerraform(struct?: NotificationPolicyDeDuplicationAction | cdktf.IResolvable): any;
export declare class NotificationPolicyDeDuplicationActionOutputReference 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(): NotificationPolicyDeDuplicationAction | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationPolicyDeDuplicationAction | cdktf.IResolvable | undefined);
    private _count?;
    get count(): number;
    set count(value: number);
    get countInput(): number | undefined;
    private _deDuplicationActionType?;
    get deDuplicationActionType(): string;
    set deDuplicationActionType(value: string);
    get deDuplicationActionTypeInput(): string | undefined;
    private _duration;
    get duration(): NotificationPolicyDeDuplicationActionDurationList;
    putDuration(value: NotificationPolicyDeDuplicationActionDuration[] | cdktf.IResolvable): void;
    resetDuration(): void;
    get durationInput(): cdktf.IResolvable | NotificationPolicyDeDuplicationActionDuration[] | undefined;
}
export declare class NotificationPolicyDeDuplicationActionList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationPolicyDeDuplicationAction[] | 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): NotificationPolicyDeDuplicationActionOutputReference;
}
export interface NotificationPolicyDelayActionDuration {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#time_amount NotificationPolicy#time_amount}
    */
    readonly timeAmount: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#time_unit NotificationPolicy#time_unit}
    */
    readonly timeUnit?: string;
}
export declare function notificationPolicyDelayActionDurationToTerraform(struct?: NotificationPolicyDelayActionDuration | cdktf.IResolvable): any;
export declare class NotificationPolicyDelayActionDurationOutputReference 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(): NotificationPolicyDelayActionDuration | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationPolicyDelayActionDuration | cdktf.IResolvable | undefined);
    private _timeAmount?;
    get timeAmount(): number;
    set timeAmount(value: number);
    get timeAmountInput(): number | undefined;
    private _timeUnit?;
    get timeUnit(): string;
    set timeUnit(value: string);
    resetTimeUnit(): void;
    get timeUnitInput(): string | undefined;
}
export declare class NotificationPolicyDelayActionDurationList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationPolicyDelayActionDuration[] | 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): NotificationPolicyDelayActionDurationOutputReference;
}
export interface NotificationPolicyDelayAction {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#delay_option NotificationPolicy#delay_option}
    */
    readonly delayOption: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#until_hour NotificationPolicy#until_hour}
    */
    readonly untilHour?: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#until_minute NotificationPolicy#until_minute}
    */
    readonly untilMinute?: number;
    /**
    * duration block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#duration NotificationPolicy#duration}
    */
    readonly duration?: NotificationPolicyDelayActionDuration[] | cdktf.IResolvable;
}
export declare function notificationPolicyDelayActionToTerraform(struct?: NotificationPolicyDelayAction | cdktf.IResolvable): any;
export declare class NotificationPolicyDelayActionOutputReference 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(): NotificationPolicyDelayAction | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationPolicyDelayAction | cdktf.IResolvable | undefined);
    private _delayOption?;
    get delayOption(): string;
    set delayOption(value: string);
    get delayOptionInput(): string | undefined;
    private _untilHour?;
    get untilHour(): number;
    set untilHour(value: number);
    resetUntilHour(): void;
    get untilHourInput(): number | undefined;
    private _untilMinute?;
    get untilMinute(): number;
    set untilMinute(value: number);
    resetUntilMinute(): void;
    get untilMinuteInput(): number | undefined;
    private _duration;
    get duration(): NotificationPolicyDelayActionDurationList;
    putDuration(value: NotificationPolicyDelayActionDuration[] | cdktf.IResolvable): void;
    resetDuration(): void;
    get durationInput(): cdktf.IResolvable | NotificationPolicyDelayActionDuration[] | undefined;
}
export declare class NotificationPolicyDelayActionList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationPolicyDelayAction[] | 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): NotificationPolicyDelayActionOutputReference;
}
export interface NotificationPolicyFilterConditions {
    /**
    * 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/notification_policy#expected_value NotificationPolicy#expected_value}
    */
    readonly expectedValue?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#field NotificationPolicy#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/notification_policy#key NotificationPolicy#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/notification_policy#not NotificationPolicy#not}
    */
    readonly not?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#operation NotificationPolicy#operation}
    */
    readonly operation: string;
    /**
    * Order of the condition in conditions list
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#order NotificationPolicy#order}
    */
    readonly order?: number;
}
export declare function notificationPolicyFilterConditionsToTerraform(struct?: NotificationPolicyFilterConditions | cdktf.IResolvable): any;
export declare class NotificationPolicyFilterConditionsOutputReference 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(): NotificationPolicyFilterConditions | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationPolicyFilterConditions | 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 NotificationPolicyFilterConditionsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationPolicyFilterConditions[] | 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): NotificationPolicyFilterConditionsOutputReference;
}
export interface NotificationPolicyFilter {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#type NotificationPolicy#type}
    */
    readonly type?: string;
    /**
    * conditions block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#conditions NotificationPolicy#conditions}
    */
    readonly conditions?: NotificationPolicyFilterConditions[] | cdktf.IResolvable;
}
export declare function notificationPolicyFilterToTerraform(struct?: NotificationPolicyFilter | cdktf.IResolvable): any;
export declare class NotificationPolicyFilterOutputReference 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(): NotificationPolicyFilter | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationPolicyFilter | cdktf.IResolvable | undefined);
    private _type?;
    get type(): string;
    set type(value: string);
    resetType(): void;
    get typeInput(): string | undefined;
    private _conditions;
    get conditions(): NotificationPolicyFilterConditionsList;
    putConditions(value: NotificationPolicyFilterConditions[] | cdktf.IResolvable): void;
    resetConditions(): void;
    get conditionsInput(): cdktf.IResolvable | NotificationPolicyFilterConditions[] | undefined;
}
export declare class NotificationPolicyFilterList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationPolicyFilter[] | 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): NotificationPolicyFilterOutputReference;
}
export interface NotificationPolicyTimeRestrictionRestriction {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#end_hour NotificationPolicy#end_hour}
    */
    readonly endHour: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#end_min NotificationPolicy#end_min}
    */
    readonly endMin: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#start_hour NotificationPolicy#start_hour}
    */
    readonly startHour: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#start_min NotificationPolicy#start_min}
    */
    readonly startMin: number;
}
export declare function notificationPolicyTimeRestrictionRestrictionToTerraform(struct?: NotificationPolicyTimeRestrictionRestriction | cdktf.IResolvable): any;
export declare class NotificationPolicyTimeRestrictionRestrictionOutputReference 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(): NotificationPolicyTimeRestrictionRestriction | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationPolicyTimeRestrictionRestriction | 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 NotificationPolicyTimeRestrictionRestrictionList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationPolicyTimeRestrictionRestriction[] | 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): NotificationPolicyTimeRestrictionRestrictionOutputReference;
}
export interface NotificationPolicyTimeRestrictionRestrictions {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#end_day NotificationPolicy#end_day}
    */
    readonly endDay: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#end_hour NotificationPolicy#end_hour}
    */
    readonly endHour: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#end_min NotificationPolicy#end_min}
    */
    readonly endMin: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#start_day NotificationPolicy#start_day}
    */
    readonly startDay: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#start_hour NotificationPolicy#start_hour}
    */
    readonly startHour: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#start_min NotificationPolicy#start_min}
    */
    readonly startMin: number;
}
export declare function notificationPolicyTimeRestrictionRestrictionsToTerraform(struct?: NotificationPolicyTimeRestrictionRestrictions | cdktf.IResolvable): any;
export declare class NotificationPolicyTimeRestrictionRestrictionsOutputReference 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(): NotificationPolicyTimeRestrictionRestrictions | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationPolicyTimeRestrictionRestrictions | 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 NotificationPolicyTimeRestrictionRestrictionsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationPolicyTimeRestrictionRestrictions[] | 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): NotificationPolicyTimeRestrictionRestrictionsOutputReference;
}
export interface NotificationPolicyTimeRestriction {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#type NotificationPolicy#type}
    */
    readonly type: string;
    /**
    * restriction block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#restriction NotificationPolicy#restriction}
    */
    readonly restriction?: NotificationPolicyTimeRestrictionRestriction[] | cdktf.IResolvable;
    /**
    * restrictions block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy#restrictions NotificationPolicy#restrictions}
    */
    readonly restrictions?: NotificationPolicyTimeRestrictionRestrictions[] | cdktf.IResolvable;
}
export declare function notificationPolicyTimeRestrictionToTerraform(struct?: NotificationPolicyTimeRestriction | cdktf.IResolvable): any;
export declare class NotificationPolicyTimeRestrictionOutputReference 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(): NotificationPolicyTimeRestriction | cdktf.IResolvable | undefined;
    set internalValue(value: NotificationPolicyTimeRestriction | cdktf.IResolvable | undefined);
    private _type?;
    get type(): string;
    set type(value: string);
    get typeInput(): string | undefined;
    private _restriction;
    get restriction(): NotificationPolicyTimeRestrictionRestrictionList;
    putRestriction(value: NotificationPolicyTimeRestrictionRestriction[] | cdktf.IResolvable): void;
    resetRestriction(): void;
    get restrictionInput(): cdktf.IResolvable | NotificationPolicyTimeRestrictionRestriction[] | undefined;
    private _restrictions;
    get restrictions(): NotificationPolicyTimeRestrictionRestrictionsList;
    putRestrictions(value: NotificationPolicyTimeRestrictionRestrictions[] | cdktf.IResolvable): void;
    resetRestrictions(): void;
    get restrictionsInput(): cdktf.IResolvable | NotificationPolicyTimeRestrictionRestrictions[] | undefined;
}
export declare class NotificationPolicyTimeRestrictionList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NotificationPolicyTimeRestriction[] | 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): NotificationPolicyTimeRestrictionOutputReference;
}
/**
* Represents a {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy opsgenie_notification_policy}
*/
export declare class NotificationPolicy extends cdktf.TerraformResource {
    static readonly tfResourceType = "opsgenie_notification_policy";
    /**
    * Create a new {@link https://registry.terraform.io/providers/opsgenie/opsgenie/0.6.33/docs/resources/notification_policy opsgenie_notification_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 NotificationPolicyConfig
    */
    constructor(scope: Construct, id: string, config: NotificationPolicyConfig);
    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 _policyDescription?;
    get policyDescription(): string;
    set policyDescription(value: string);
    resetPolicyDescription(): void;
    get policyDescriptionInput(): string | undefined;
    private _suppress?;
    get suppress(): boolean | cdktf.IResolvable;
    set suppress(value: boolean | cdktf.IResolvable);
    resetSuppress(): void;
    get suppressInput(): boolean | cdktf.IResolvable | undefined;
    private _teamId?;
    get teamId(): string;
    set teamId(value: string);
    get teamIdInput(): string | undefined;
    private _autoCloseAction;
    get autoCloseAction(): NotificationPolicyAutoCloseActionList;
    putAutoCloseAction(value: NotificationPolicyAutoCloseAction[] | cdktf.IResolvable): void;
    resetAutoCloseAction(): void;
    get autoCloseActionInput(): cdktf.IResolvable | NotificationPolicyAutoCloseAction[] | undefined;
    private _autoRestartAction;
    get autoRestartAction(): NotificationPolicyAutoRestartActionList;
    putAutoRestartAction(value: NotificationPolicyAutoRestartAction[] | cdktf.IResolvable): void;
    resetAutoRestartAction(): void;
    get autoRestartActionInput(): cdktf.IResolvable | NotificationPolicyAutoRestartAction[] | undefined;
    private _deDuplicationAction;
    get deDuplicationAction(): NotificationPolicyDeDuplicationActionList;
    putDeDuplicationAction(value: NotificationPolicyDeDuplicationAction[] | cdktf.IResolvable): void;
    resetDeDuplicationAction(): void;
    get deDuplicationActionInput(): cdktf.IResolvable | NotificationPolicyDeDuplicationAction[] | undefined;
    private _delayAction;
    get delayAction(): NotificationPolicyDelayActionList;
    putDelayAction(value: NotificationPolicyDelayAction[] | cdktf.IResolvable): void;
    resetDelayAction(): void;
    get delayActionInput(): cdktf.IResolvable | NotificationPolicyDelayAction[] | undefined;
    private _filter;
    get filter(): NotificationPolicyFilterList;
    putFilter(value: NotificationPolicyFilter[] | cdktf.IResolvable): void;
    get filterInput(): cdktf.IResolvable | NotificationPolicyFilter[] | undefined;
    private _timeRestriction;
    get timeRestriction(): NotificationPolicyTimeRestrictionList;
    putTimeRestriction(value: NotificationPolicyTimeRestriction[] | cdktf.IResolvable): void;
    resetTimeRestriction(): void;
    get timeRestrictionInput(): cdktf.IResolvable | NotificationPolicyTimeRestriction[] | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
}
