import { type IAlertAnomalyDetectionGranularity, type IAlertAnomalyDetectionSensitivity, type IAlertComparisonOperator, type IAlertRelativeArithmeticOperator, type IAlertRelativeOperator, type IAutomationAlertCondition, type IAutomationAlertExecutionDefinition, type IAutomationMetadataObject, type IAutomationRecipient, type WeekStart } from "@gooddata/sdk-model";
import { type AlertAttribute, type AlertMetric, type AlertMetricComparator, AlertMetricComparatorType } from "../../types.js";
import { type IMeasureFormatMap } from "./getters.js";
/**
 * This function transforms alert by metric. It changes title, condition and execution based on selected metric.
 * @param metrics - all available metrics
 * @param alert - alert to transform
 * @param measure - selected metric
 * @param measureFormatMap - all available measures from catalog
 * @param weekStart - week start for relative date filter
 * @param timezone - timezone for relative date filter
 */
export declare function transformAlertByMetric(metrics: AlertMetric[], alert: IAutomationMetadataObject, measure: AlertMetric, measureFormatMap?: IMeasureFormatMap, weekStart?: WeekStart, timezone?: string): IAutomationMetadataObject;
/**
 * This function get selected attributed and optionally value amd added this attribute to execution.
 * If value is provided, it creates positive attribute filter with this value, otherwise it creates negative attribute filter
 * that is empty for now.
 * @param attributes - all available attributes
 * @param alert - alert to transform
 * @param attr - optionally selected attribute
 * @param value - optionally selected value
 */
export declare function transformAlertByAttribute(attributes: AlertAttribute[], alert: IAutomationMetadataObject, attr: AlertAttribute | undefined, value: {
    title: string;
    value: string;
    name: string;
} | undefined): IAutomationMetadataObject;
/**
 * This function transforms alert by comparison operator. It changes operator in condition.
 * @param metrics - all available metrics
 * @param alert - alert to transform
 * @param measure - selected metric
 * @param comparisonOperator - selected comparison operator
 */
export declare function transformAlertByComparisonOperator(metrics: AlertMetric[], alert: IAutomationMetadataObject, measure: AlertMetric, comparisonOperator: IAlertComparisonOperator): IAutomationMetadataObject;
/**
 * This function transforms alert by relative operator. It changes operator in condition and measure in condition.
 * @param metrics - all available metrics
 * @param alert - alert to transform
 * @param measure - selected metric
 * @param relativeOperator - selected relative operator
 * @param arithmeticOperator - selected arithmetic operator
 * @param measureFormatMap - all available measures from catalog
 * @param comparatorType - selected comparator type
 */
export declare function transformAlertByRelativeOperator(metrics: AlertMetric[], alert: IAutomationMetadataObject, measure: AlertMetric, relativeOperator: IAlertRelativeOperator, arithmeticOperator: IAlertRelativeArithmeticOperator, measureFormatMap?: IMeasureFormatMap, comparatorType?: AlertMetricComparatorType): IAutomationMetadataObject;
export declare function transformAlertByAnomalyDetection(metrics: AlertMetric[], alert: IAutomationMetadataObject, measure: AlertMetric, weekStart?: WeekStart, timezone?: string, enableAlertOncePerInterval?: boolean): IAutomationMetadataObject;
/**
 * This function transforms alert by threshold value. It changes threshold in condition.
 * @param alert - alert to transform
 * @param value - selected threshold value
 */
export declare function transformAlertByValue(alert: IAutomationMetadataObject, value: number): IAutomationMetadataObject;
/**
 * This function transforms alert by title. It changes title of alert.
 * @param alert - alert to transform
 * @param title - title of alert
 */
export declare function transformAlertByTitle(alert: IAutomationMetadataObject, title: string | undefined): IAutomationMetadataObject;
/**
 * This function transforms alert by notification channel. It changes notification channel in alert.
 * @param alert - alert to transform
 * @param notificationChannel - selected notification channel
 * @param recipients - optionally selected recipients
 */
export declare function transformAlertByDestination(alert: IAutomationMetadataObject, notificationChannel: string, recipients?: IAutomationRecipient[]): IAutomationMetadataObject;
/**
 * This function transforms alert execution by metric. It changes measures and auxMeasures in execution based on selected metric.
 * @param metrics - all available metrics
 * @param alert - alert
 * @param condition - alert condition
 * @param measure - selected metric
 * @param periodMeasure - alert comparison
 */
export declare function transformAlertExecutionByMetric(metrics: AlertMetric[], alert: Partial<IAutomationMetadataObject>, condition: IAutomationAlertCondition, measure: AlertMetric, periodMeasure: AlertMetricComparator | undefined): {
    execution: IAutomationAlertExecutionDefinition;
    metadata: IAutomationMetadataObject["metadata"];
};
export declare function transformAlertBySensitivity(alert: IAutomationMetadataObject, sensitivity: IAlertAnomalyDetectionSensitivity): IAutomationMetadataObject;
export declare function transformAlertByGranularity(metrics: AlertMetric[], alert: IAutomationMetadataObject, measure: AlertMetric, granularity: IAlertAnomalyDetectionGranularity, weekStart?: WeekStart): IAutomationMetadataObject;
//# sourceMappingURL=transformation.d.ts.map