/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface NrqlAlertConditionConfig extends cdktf.TerraformMetaArguments {
    /**
    * The New Relic account ID for managing your NRQL alert conditions.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#account_id NrqlAlertCondition#account_id}
    */
    readonly accountId?: number;
    /**
    * How long we wait for data that belongs in each aggregation window. Depending on your data, a longer delay may increase accuracy but delay notifications. Use aggregationDelay with the EVENT_FLOW and CADENCE aggregation methods.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#aggregation_delay NrqlAlertCondition#aggregation_delay}
    */
    readonly aggregationDelay?: string;
    /**
    * The method that determines when we consider an aggregation window to be complete so that we can evaluate the signal for incidents. Default is EVENT_FLOW.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#aggregation_method NrqlAlertCondition#aggregation_method}
    */
    readonly aggregationMethod?: string;
    /**
    * How long we wait after each data point arrives to make sure we've processed the whole batch. Use aggregationTimer with the EVENT_TIMER aggregation method.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#aggregation_timer NrqlAlertCondition#aggregation_timer}
    */
    readonly aggregationTimer?: string;
    /**
    * The duration of the time window used to evaluate the NRQL query, in seconds.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#aggregation_window NrqlAlertCondition#aggregation_window}
    */
    readonly aggregationWindow?: number;
    /**
    * The baseline direction of a baseline NRQL alert condition. Valid values are: 'LOWER_ONLY', 'UPPER_AND_LOWER', 'UPPER_ONLY' (case insensitive).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#baseline_direction NrqlAlertCondition#baseline_direction}
    */
    readonly baselineDirection?: string;
    /**
    * Whether to close all open incidents when the signal expires.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#close_violations_on_expiration NrqlAlertCondition#close_violations_on_expiration}
    */
    readonly closeViolationsOnExpiration?: boolean | cdktf.IResolvable;
    /**
    * The description of the NRQL alert condition.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#description NrqlAlertCondition#description}
    */
    readonly description?: string;
    /**
    * Whether or not to enable the alert condition.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#enabled NrqlAlertCondition#enabled}
    */
    readonly enabled?: boolean | cdktf.IResolvable;
    /**
    * How long we wait until the signal starts evaluating. The maximum delay is 7200 seconds (120 minutes)
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#evaluation_delay NrqlAlertCondition#evaluation_delay}
    */
    readonly evaluationDelay?: number;
    /**
    * The amount of time (in seconds) to wait before considering the signal expired.  Must be in the range of 30 to 172800 (inclusive)
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#expiration_duration NrqlAlertCondition#expiration_duration}
    */
    readonly expirationDuration?: number;
    /**
    * Which strategy to use when filling gaps in the signal. If static, the 'fill value' will be used for filling gaps in the signal. Valid values are: 'NONE', 'LAST_VALUE', or 'STATIC' (case insensitive).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#fill_option NrqlAlertCondition#fill_option}
    */
    readonly fillOption?: string;
    /**
    * If using the 'static' fill option, this value will be used for filling gaps in the signal.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#fill_value NrqlAlertCondition#fill_value}
    */
    readonly fillValue?: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#id NrqlAlertCondition#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;
    /**
    * Whether to ignore expected termination of a signal when considering whether to create a loss of signal incident
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#ignore_on_expected_termination NrqlAlertCondition#ignore_on_expected_termination}
    */
    readonly ignoreOnExpectedTermination?: boolean | cdktf.IResolvable;
    /**
    * The title of the condition.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#name NrqlAlertCondition#name}
    */
    readonly name: string;
    /**
    * Whether to create a new incident to capture that the signal expired.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#open_violation_on_expiration NrqlAlertCondition#open_violation_on_expiration}
    */
    readonly openViolationOnExpiration?: boolean | cdktf.IResolvable;
    /**
    * The ID of the policy where this condition should be used.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#policy_id NrqlAlertCondition#policy_id}
    */
    readonly policyId: number;
    /**
    * Runbook URL to display in notifications.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#runbook_url NrqlAlertCondition#runbook_url}
    */
    readonly runbookUrl?: string;
    /**
    * The duration of overlapping time windows used to smooth the chart line, in seconds. Must be a factor of `aggregation_window` and less than the aggregation window. If `aggregation_window` is less than or equal to 3600 seconds, it should be greater or equal to 30 seconds. If `aggregation_window` is greater than 3600 seconds but less than 7200 seconds, it should be greater or equal to `aggregation_window / 120`.  If `aggregation_window` is greater than 7200 seconds, it should be greater or equal to `aggregation_window / 24
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#slide_by NrqlAlertCondition#slide_by}
    */
    readonly slideBy?: number;
    /**
    * This field allows you to create a custom title to be used when incidents are opened by the condition. Setting this field will override the default title. Must be Handlebars format.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#title_template NrqlAlertCondition#title_template}
    */
    readonly titleTemplate?: string;
    /**
    * The type of NRQL alert condition to create. Valid values are: 'static', 'baseline'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#type NrqlAlertCondition#type}
    */
    readonly type?: string;
    /**
    * Sets a time limit, in hours, that will automatically force-close a long-lasting incident after the time limit you select. Possible values are 'ONE_HOUR', 'TWO_HOURS', 'FOUR_HOURS', 'EIGHT_HOURS', 'TWELVE_HOURS', 'TWENTY_FOUR_HOURS', 'THIRTY_DAYS' (case insensitive).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#violation_time_limit NrqlAlertCondition#violation_time_limit}
    */
    readonly violationTimeLimit?: string;
    /**
    * Sets a time limit, in seconds, that will automatically force-close a long-lasting incident after the time limit you select.  Must be in the range of 300 to 2592000 (inclusive)
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#violation_time_limit_seconds NrqlAlertCondition#violation_time_limit_seconds}
    */
    readonly violationTimeLimitSeconds?: number;
    /**
    * critical block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#critical NrqlAlertCondition#critical}
    */
    readonly critical?: NrqlAlertConditionCritical;
    /**
    * nrql block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#nrql NrqlAlertCondition#nrql}
    */
    readonly nrql: NrqlAlertConditionNrql;
    /**
    * term block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#term NrqlAlertCondition#term}
    */
    readonly term?: NrqlAlertConditionTerm[] | cdktf.IResolvable;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#timeouts NrqlAlertCondition#timeouts}
    */
    readonly timeouts?: NrqlAlertConditionTimeouts;
    /**
    * warning block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#warning NrqlAlertCondition#warning}
    */
    readonly warning?: NrqlAlertConditionWarning;
}
export interface NrqlAlertConditionCriticalPrediction {
    /**
    * BETA PREVIEW: the `predict_by` field is in limited release and only enabled for preview on a per-account basis. - The duration, in seconds, that the prediction should look into the future.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#predict_by NrqlAlertCondition#predict_by}
    */
    readonly predictBy?: number;
    /**
    * BETA PREVIEW: the `prefer_prediction_violation` field is in limited release and only enabled for preview on a per-account basis. - If a prediction incident is open when a term's static threshold is breached by the actual signal, default behavior is to close the prediction incident and open a static incident. Setting `prefer_prediction_violation` to `true` overrides this behavior leaving the prediction incident open and preventing a static incident from opening.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#prefer_prediction_violation NrqlAlertCondition#prefer_prediction_violation}
    */
    readonly preferPredictionViolation?: boolean | cdktf.IResolvable;
}
export declare function nrqlAlertConditionCriticalPredictionToTerraform(struct?: NrqlAlertConditionCriticalPredictionOutputReference | NrqlAlertConditionCriticalPrediction): any;
export declare function nrqlAlertConditionCriticalPredictionToHclTerraform(struct?: NrqlAlertConditionCriticalPredictionOutputReference | NrqlAlertConditionCriticalPrediction): any;
export declare class NrqlAlertConditionCriticalPredictionOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): NrqlAlertConditionCriticalPrediction | undefined;
    set internalValue(value: NrqlAlertConditionCriticalPrediction | undefined);
    private _predictBy?;
    get predictBy(): number;
    set predictBy(value: number);
    resetPredictBy(): void;
    get predictByInput(): number | undefined;
    private _preferPredictionViolation?;
    get preferPredictionViolation(): boolean | cdktf.IResolvable;
    set preferPredictionViolation(value: boolean | cdktf.IResolvable);
    resetPreferPredictionViolation(): void;
    get preferPredictionViolationInput(): boolean | cdktf.IResolvable | undefined;
}
export interface NrqlAlertConditionCritical {
    /**
    * In minutes, must be in the range of 1 to 120 (inclusive).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#duration NrqlAlertCondition#duration}
    */
    readonly duration?: number;
    /**
    * One of (above, above_or_equals, below, below_or_equals, equals, not_equals). Defaults to 'equals'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#operator NrqlAlertCondition#operator}
    */
    readonly operator?: string;
    /**
    * For baseline conditions must be in range [1, 1000].
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#threshold NrqlAlertCondition#threshold}
    */
    readonly threshold: number;
    /**
    * The duration, in seconds, that the threshold must violate in order to create an incident. Value must be a multiple of the 'aggregation_window' (which has a default of 60 seconds). Value must be within 120-86400 seconds for baseline conditions, and within 60-86400 seconds for static conditions
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#threshold_duration NrqlAlertCondition#threshold_duration}
    */
    readonly thresholdDuration?: number;
    /**
    * The criteria for how many data points must be in violation for the specified threshold duration. Valid values are: 'ALL' or 'AT_LEAST_ONCE' (case insensitive).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#threshold_occurrences NrqlAlertCondition#threshold_occurrences}
    */
    readonly thresholdOccurrences?: string;
    /**
    * Valid values are: 'all' or 'any'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#time_function NrqlAlertCondition#time_function}
    */
    readonly timeFunction?: string;
    /**
    * prediction block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#prediction NrqlAlertCondition#prediction}
    */
    readonly prediction?: NrqlAlertConditionCriticalPrediction;
}
export declare function nrqlAlertConditionCriticalToTerraform(struct?: NrqlAlertConditionCriticalOutputReference | NrqlAlertConditionCritical): any;
export declare function nrqlAlertConditionCriticalToHclTerraform(struct?: NrqlAlertConditionCriticalOutputReference | NrqlAlertConditionCritical): any;
export declare class NrqlAlertConditionCriticalOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): NrqlAlertConditionCritical | undefined;
    set internalValue(value: NrqlAlertConditionCritical | undefined);
    private _duration?;
    get duration(): number;
    set duration(value: number);
    resetDuration(): void;
    get durationInput(): number | undefined;
    private _operator?;
    get operator(): string;
    set operator(value: string);
    resetOperator(): void;
    get operatorInput(): string | undefined;
    private _threshold?;
    get threshold(): number;
    set threshold(value: number);
    get thresholdInput(): number | undefined;
    private _thresholdDuration?;
    get thresholdDuration(): number;
    set thresholdDuration(value: number);
    resetThresholdDuration(): void;
    get thresholdDurationInput(): number | undefined;
    private _thresholdOccurrences?;
    get thresholdOccurrences(): string;
    set thresholdOccurrences(value: string);
    resetThresholdOccurrences(): void;
    get thresholdOccurrencesInput(): string | undefined;
    private _timeFunction?;
    get timeFunction(): string;
    set timeFunction(value: string);
    resetTimeFunction(): void;
    get timeFunctionInput(): string | undefined;
    private _prediction;
    get prediction(): NrqlAlertConditionCriticalPredictionOutputReference;
    putPrediction(value: NrqlAlertConditionCriticalPrediction): void;
    resetPrediction(): void;
    get predictionInput(): NrqlAlertConditionCriticalPrediction | undefined;
}
export interface NrqlAlertConditionNrql {
    /**
    * The New Relic account ID to use as the basis for the NRQL alert condition's `query`; will default to `account_id` if unspecified.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#data_account_id NrqlAlertCondition#data_account_id}
    */
    readonly dataAccountId?: number;
    /**
    * NRQL queries are evaluated in one-minute time windows. The start time depends on the value you provide in the NRQL condition's `evaluation_offset`.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#evaluation_offset NrqlAlertCondition#evaluation_offset}
    */
    readonly evaluationOffset?: number;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#query NrqlAlertCondition#query}
    */
    readonly query: string;
    /**
    * NRQL queries are evaluated in one-minute time windows. The start time depends on the value you provide in the NRQL condition's `since_value`.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#since_value NrqlAlertCondition#since_value}
    */
    readonly sinceValue?: string;
}
export declare function nrqlAlertConditionNrqlToTerraform(struct?: NrqlAlertConditionNrqlOutputReference | NrqlAlertConditionNrql): any;
export declare function nrqlAlertConditionNrqlToHclTerraform(struct?: NrqlAlertConditionNrqlOutputReference | NrqlAlertConditionNrql): any;
export declare class NrqlAlertConditionNrqlOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): NrqlAlertConditionNrql | undefined;
    set internalValue(value: NrqlAlertConditionNrql | undefined);
    private _dataAccountId?;
    get dataAccountId(): number;
    set dataAccountId(value: number);
    resetDataAccountId(): void;
    get dataAccountIdInput(): number | undefined;
    private _evaluationOffset?;
    get evaluationOffset(): number;
    set evaluationOffset(value: number);
    resetEvaluationOffset(): void;
    get evaluationOffsetInput(): number | undefined;
    private _query?;
    get query(): string;
    set query(value: string);
    get queryInput(): string | undefined;
    private _sinceValue?;
    get sinceValue(): string;
    set sinceValue(value: string);
    resetSinceValue(): void;
    get sinceValueInput(): string | undefined;
}
export interface NrqlAlertConditionTermPrediction {
    /**
    * BETA PREVIEW: the `predict_by` field is in limited release and only enabled for preview on a per-account basis. - The duration, in seconds, that the prediction should look into the future.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#predict_by NrqlAlertCondition#predict_by}
    */
    readonly predictBy?: number;
    /**
    * BETA PREVIEW: the `prefer_prediction_violation` field is in limited release and only enabled for preview on a per-account basis. - If a prediction incident is open when a term's static threshold is breached by the actual signal, default behavior is to close the prediction incident and open a static incident. Setting `prefer_prediction_violation` to `true` overrides this behavior leaving the prediction incident open and preventing a static incident from opening.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#prefer_prediction_violation NrqlAlertCondition#prefer_prediction_violation}
    */
    readonly preferPredictionViolation?: boolean | cdktf.IResolvable;
}
export declare function nrqlAlertConditionTermPredictionToTerraform(struct?: NrqlAlertConditionTermPredictionOutputReference | NrqlAlertConditionTermPrediction): any;
export declare function nrqlAlertConditionTermPredictionToHclTerraform(struct?: NrqlAlertConditionTermPredictionOutputReference | NrqlAlertConditionTermPrediction): any;
export declare class NrqlAlertConditionTermPredictionOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): NrqlAlertConditionTermPrediction | undefined;
    set internalValue(value: NrqlAlertConditionTermPrediction | undefined);
    private _predictBy?;
    get predictBy(): number;
    set predictBy(value: number);
    resetPredictBy(): void;
    get predictByInput(): number | undefined;
    private _preferPredictionViolation?;
    get preferPredictionViolation(): boolean | cdktf.IResolvable;
    set preferPredictionViolation(value: boolean | cdktf.IResolvable);
    resetPreferPredictionViolation(): void;
    get preferPredictionViolationInput(): boolean | cdktf.IResolvable | undefined;
}
export interface NrqlAlertConditionTerm {
    /**
    * In minutes, must be in the range of 1 to 120 (inclusive).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#duration NrqlAlertCondition#duration}
    */
    readonly duration?: number;
    /**
    * One of (above, above_or_equals, below, below_or_equals, equals, not_equals). Defaults to 'equals'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#operator NrqlAlertCondition#operator}
    */
    readonly operator?: string;
    /**
    * One of (critical, warning). Defaults to 'critical'. At least one condition term must have priority set to 'critical'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#priority NrqlAlertCondition#priority}
    */
    readonly priority?: string;
    /**
    * For baseline conditions must be in range [1, 1000].
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#threshold NrqlAlertCondition#threshold}
    */
    readonly threshold: number;
    /**
    * The duration, in seconds, that the threshold must violate in order to create an incident. Value must be a multiple of the 'aggregation_window' (which has a default of 60 seconds). Value must be within 120-86400 seconds for baseline conditions, and within 60-86400 seconds for static conditions
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#threshold_duration NrqlAlertCondition#threshold_duration}
    */
    readonly thresholdDuration?: number;
    /**
    * The criteria for how many data points must be in violation for the specified threshold duration. Valid values are: 'ALL' or 'AT_LEAST_ONCE' (case insensitive).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#threshold_occurrences NrqlAlertCondition#threshold_occurrences}
    */
    readonly thresholdOccurrences?: string;
    /**
    * Valid values are: 'all' or 'any'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#time_function NrqlAlertCondition#time_function}
    */
    readonly timeFunction?: string;
    /**
    * prediction block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#prediction NrqlAlertCondition#prediction}
    */
    readonly prediction?: NrqlAlertConditionTermPrediction;
}
export declare function nrqlAlertConditionTermToTerraform(struct?: NrqlAlertConditionTerm | cdktf.IResolvable): any;
export declare function nrqlAlertConditionTermToHclTerraform(struct?: NrqlAlertConditionTerm | cdktf.IResolvable): any;
export declare class NrqlAlertConditionTermOutputReference 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(): NrqlAlertConditionTerm | cdktf.IResolvable | undefined;
    set internalValue(value: NrqlAlertConditionTerm | cdktf.IResolvable | undefined);
    private _duration?;
    get duration(): number;
    set duration(value: number);
    resetDuration(): void;
    get durationInput(): number | undefined;
    private _operator?;
    get operator(): string;
    set operator(value: string);
    resetOperator(): void;
    get operatorInput(): string | undefined;
    private _priority?;
    get priority(): string;
    set priority(value: string);
    resetPriority(): void;
    get priorityInput(): string | undefined;
    private _threshold?;
    get threshold(): number;
    set threshold(value: number);
    get thresholdInput(): number | undefined;
    private _thresholdDuration?;
    get thresholdDuration(): number;
    set thresholdDuration(value: number);
    resetThresholdDuration(): void;
    get thresholdDurationInput(): number | undefined;
    private _thresholdOccurrences?;
    get thresholdOccurrences(): string;
    set thresholdOccurrences(value: string);
    resetThresholdOccurrences(): void;
    get thresholdOccurrencesInput(): string | undefined;
    private _timeFunction?;
    get timeFunction(): string;
    set timeFunction(value: string);
    resetTimeFunction(): void;
    get timeFunctionInput(): string | undefined;
    private _prediction;
    get prediction(): NrqlAlertConditionTermPredictionOutputReference;
    putPrediction(value: NrqlAlertConditionTermPrediction): void;
    resetPrediction(): void;
    get predictionInput(): NrqlAlertConditionTermPrediction | undefined;
}
export declare class NrqlAlertConditionTermList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: NrqlAlertConditionTerm[] | 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): NrqlAlertConditionTermOutputReference;
}
export interface NrqlAlertConditionTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#create NrqlAlertCondition#create}
    */
    readonly create?: string;
}
export declare function nrqlAlertConditionTimeoutsToTerraform(struct?: NrqlAlertConditionTimeouts | cdktf.IResolvable): any;
export declare function nrqlAlertConditionTimeoutsToHclTerraform(struct?: NrqlAlertConditionTimeouts | cdktf.IResolvable): any;
export declare class NrqlAlertConditionTimeoutsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): NrqlAlertConditionTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: NrqlAlertConditionTimeouts | cdktf.IResolvable | undefined);
    private _create?;
    get create(): string;
    set create(value: string);
    resetCreate(): void;
    get createInput(): string | undefined;
}
export interface NrqlAlertConditionWarningPrediction {
    /**
    * BETA PREVIEW: the `predict_by` field is in limited release and only enabled for preview on a per-account basis. - The duration, in seconds, that the prediction should look into the future.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#predict_by NrqlAlertCondition#predict_by}
    */
    readonly predictBy?: number;
    /**
    * BETA PREVIEW: the `prefer_prediction_violation` field is in limited release and only enabled for preview on a per-account basis. - If a prediction incident is open when a term's static threshold is breached by the actual signal, default behavior is to close the prediction incident and open a static incident. Setting `prefer_prediction_violation` to `true` overrides this behavior leaving the prediction incident open and preventing a static incident from opening.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#prefer_prediction_violation NrqlAlertCondition#prefer_prediction_violation}
    */
    readonly preferPredictionViolation?: boolean | cdktf.IResolvable;
}
export declare function nrqlAlertConditionWarningPredictionToTerraform(struct?: NrqlAlertConditionWarningPredictionOutputReference | NrqlAlertConditionWarningPrediction): any;
export declare function nrqlAlertConditionWarningPredictionToHclTerraform(struct?: NrqlAlertConditionWarningPredictionOutputReference | NrqlAlertConditionWarningPrediction): any;
export declare class NrqlAlertConditionWarningPredictionOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): NrqlAlertConditionWarningPrediction | undefined;
    set internalValue(value: NrqlAlertConditionWarningPrediction | undefined);
    private _predictBy?;
    get predictBy(): number;
    set predictBy(value: number);
    resetPredictBy(): void;
    get predictByInput(): number | undefined;
    private _preferPredictionViolation?;
    get preferPredictionViolation(): boolean | cdktf.IResolvable;
    set preferPredictionViolation(value: boolean | cdktf.IResolvable);
    resetPreferPredictionViolation(): void;
    get preferPredictionViolationInput(): boolean | cdktf.IResolvable | undefined;
}
export interface NrqlAlertConditionWarning {
    /**
    * In minutes, must be in the range of 1 to 120 (inclusive).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#duration NrqlAlertCondition#duration}
    */
    readonly duration?: number;
    /**
    * One of (above, above_or_equals, below, below_or_equals, equals, not_equals). Defaults to 'equals'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#operator NrqlAlertCondition#operator}
    */
    readonly operator?: string;
    /**
    * For baseline conditions must be in range [1, 1000].
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#threshold NrqlAlertCondition#threshold}
    */
    readonly threshold: number;
    /**
    * The duration, in seconds, that the threshold must violate in order to create an incident. Value must be a multiple of the 'aggregation_window' (which has a default of 60 seconds). Value must be within 120-86400 seconds for baseline conditions, and within 60-86400 seconds for static conditions
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#threshold_duration NrqlAlertCondition#threshold_duration}
    */
    readonly thresholdDuration?: number;
    /**
    * The criteria for how many data points must be in violation for the specified threshold duration. Valid values are: 'ALL' or 'AT_LEAST_ONCE' (case insensitive).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#threshold_occurrences NrqlAlertCondition#threshold_occurrences}
    */
    readonly thresholdOccurrences?: string;
    /**
    * Valid values are: 'all' or 'any'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#time_function NrqlAlertCondition#time_function}
    */
    readonly timeFunction?: string;
    /**
    * prediction block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#prediction NrqlAlertCondition#prediction}
    */
    readonly prediction?: NrqlAlertConditionWarningPrediction;
}
export declare function nrqlAlertConditionWarningToTerraform(struct?: NrqlAlertConditionWarningOutputReference | NrqlAlertConditionWarning): any;
export declare function nrqlAlertConditionWarningToHclTerraform(struct?: NrqlAlertConditionWarningOutputReference | NrqlAlertConditionWarning): any;
export declare class NrqlAlertConditionWarningOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): NrqlAlertConditionWarning | undefined;
    set internalValue(value: NrqlAlertConditionWarning | undefined);
    private _duration?;
    get duration(): number;
    set duration(value: number);
    resetDuration(): void;
    get durationInput(): number | undefined;
    private _operator?;
    get operator(): string;
    set operator(value: string);
    resetOperator(): void;
    get operatorInput(): string | undefined;
    private _threshold?;
    get threshold(): number;
    set threshold(value: number);
    get thresholdInput(): number | undefined;
    private _thresholdDuration?;
    get thresholdDuration(): number;
    set thresholdDuration(value: number);
    resetThresholdDuration(): void;
    get thresholdDurationInput(): number | undefined;
    private _thresholdOccurrences?;
    get thresholdOccurrences(): string;
    set thresholdOccurrences(value: string);
    resetThresholdOccurrences(): void;
    get thresholdOccurrencesInput(): string | undefined;
    private _timeFunction?;
    get timeFunction(): string;
    set timeFunction(value: string);
    resetTimeFunction(): void;
    get timeFunctionInput(): string | undefined;
    private _prediction;
    get prediction(): NrqlAlertConditionWarningPredictionOutputReference;
    putPrediction(value: NrqlAlertConditionWarningPrediction): void;
    resetPrediction(): void;
    get predictionInput(): NrqlAlertConditionWarningPrediction | undefined;
}
/**
* Represents a {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition newrelic_nrql_alert_condition}
*/
export declare class NrqlAlertCondition extends cdktf.TerraformResource {
    static readonly tfResourceType = "newrelic_nrql_alert_condition";
    /**
    * Generates CDKTF code for importing a NrqlAlertCondition resource upon running "cdktf plan <stack-name>"
    * @param scope The scope in which to define this construct
    * @param importToId The construct id used in the generated config for the NrqlAlertCondition to import
    * @param importFromId The id of the existing NrqlAlertCondition that should be imported. Refer to the {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the NrqlAlertCondition to import is found
    */
    static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktf.TerraformProvider): cdktf.ImportableResource;
    /**
    * Create a new {@link https://registry.terraform.io/providers/newrelic/newrelic/3.60.2/docs/resources/nrql_alert_condition newrelic_nrql_alert_condition} 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 NrqlAlertConditionConfig
    */
    constructor(scope: Construct, id: string, config: NrqlAlertConditionConfig);
    private _accountId?;
    get accountId(): number;
    set accountId(value: number);
    resetAccountId(): void;
    get accountIdInput(): number | undefined;
    private _aggregationDelay?;
    get aggregationDelay(): string;
    set aggregationDelay(value: string);
    resetAggregationDelay(): void;
    get aggregationDelayInput(): string | undefined;
    private _aggregationMethod?;
    get aggregationMethod(): string;
    set aggregationMethod(value: string);
    resetAggregationMethod(): void;
    get aggregationMethodInput(): string | undefined;
    private _aggregationTimer?;
    get aggregationTimer(): string;
    set aggregationTimer(value: string);
    resetAggregationTimer(): void;
    get aggregationTimerInput(): string | undefined;
    private _aggregationWindow?;
    get aggregationWindow(): number;
    set aggregationWindow(value: number);
    resetAggregationWindow(): void;
    get aggregationWindowInput(): number | undefined;
    private _baselineDirection?;
    get baselineDirection(): string;
    set baselineDirection(value: string);
    resetBaselineDirection(): void;
    get baselineDirectionInput(): string | undefined;
    private _closeViolationsOnExpiration?;
    get closeViolationsOnExpiration(): boolean | cdktf.IResolvable;
    set closeViolationsOnExpiration(value: boolean | cdktf.IResolvable);
    resetCloseViolationsOnExpiration(): void;
    get closeViolationsOnExpirationInput(): boolean | cdktf.IResolvable | undefined;
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _enabled?;
    get enabled(): boolean | cdktf.IResolvable;
    set enabled(value: boolean | cdktf.IResolvable);
    resetEnabled(): void;
    get enabledInput(): boolean | cdktf.IResolvable | undefined;
    get entityGuid(): string;
    private _evaluationDelay?;
    get evaluationDelay(): number;
    set evaluationDelay(value: number);
    resetEvaluationDelay(): void;
    get evaluationDelayInput(): number | undefined;
    private _expirationDuration?;
    get expirationDuration(): number;
    set expirationDuration(value: number);
    resetExpirationDuration(): void;
    get expirationDurationInput(): number | undefined;
    private _fillOption?;
    get fillOption(): string;
    set fillOption(value: string);
    resetFillOption(): void;
    get fillOptionInput(): string | undefined;
    private _fillValue?;
    get fillValue(): number;
    set fillValue(value: number);
    resetFillValue(): void;
    get fillValueInput(): number | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _ignoreOnExpectedTermination?;
    get ignoreOnExpectedTermination(): boolean | cdktf.IResolvable;
    set ignoreOnExpectedTermination(value: boolean | cdktf.IResolvable);
    resetIgnoreOnExpectedTermination(): void;
    get ignoreOnExpectedTerminationInput(): boolean | cdktf.IResolvable | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _openViolationOnExpiration?;
    get openViolationOnExpiration(): boolean | cdktf.IResolvable;
    set openViolationOnExpiration(value: boolean | cdktf.IResolvable);
    resetOpenViolationOnExpiration(): void;
    get openViolationOnExpirationInput(): boolean | cdktf.IResolvable | undefined;
    private _policyId?;
    get policyId(): number;
    set policyId(value: number);
    get policyIdInput(): number | undefined;
    private _runbookUrl?;
    get runbookUrl(): string;
    set runbookUrl(value: string);
    resetRunbookUrl(): void;
    get runbookUrlInput(): string | undefined;
    private _slideBy?;
    get slideBy(): number;
    set slideBy(value: number);
    resetSlideBy(): void;
    get slideByInput(): number | undefined;
    private _titleTemplate?;
    get titleTemplate(): string;
    set titleTemplate(value: string);
    resetTitleTemplate(): void;
    get titleTemplateInput(): string | undefined;
    private _type?;
    get type(): string;
    set type(value: string);
    resetType(): void;
    get typeInput(): string | undefined;
    private _violationTimeLimit?;
    get violationTimeLimit(): string;
    set violationTimeLimit(value: string);
    resetViolationTimeLimit(): void;
    get violationTimeLimitInput(): string | undefined;
    private _violationTimeLimitSeconds?;
    get violationTimeLimitSeconds(): number;
    set violationTimeLimitSeconds(value: number);
    resetViolationTimeLimitSeconds(): void;
    get violationTimeLimitSecondsInput(): number | undefined;
    private _critical;
    get critical(): NrqlAlertConditionCriticalOutputReference;
    putCritical(value: NrqlAlertConditionCritical): void;
    resetCritical(): void;
    get criticalInput(): NrqlAlertConditionCritical | undefined;
    private _nrql;
    get nrql(): NrqlAlertConditionNrqlOutputReference;
    putNrql(value: NrqlAlertConditionNrql): void;
    get nrqlInput(): NrqlAlertConditionNrql | undefined;
    private _term;
    get term(): NrqlAlertConditionTermList;
    putTerm(value: NrqlAlertConditionTerm[] | cdktf.IResolvable): void;
    resetTerm(): void;
    get termInput(): cdktf.IResolvable | NrqlAlertConditionTerm[] | undefined;
    private _timeouts;
    get timeouts(): NrqlAlertConditionTimeoutsOutputReference;
    putTimeouts(value: NrqlAlertConditionTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | NrqlAlertConditionTimeouts | undefined;
    private _warning;
    get warning(): NrqlAlertConditionWarningOutputReference;
    putWarning(value: NrqlAlertConditionWarning): void;
    resetWarning(): void;
    get warningInput(): NrqlAlertConditionWarning | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
