import { IIoK8sApimachineryPkgUtilIntstrIntOrString } from "@kubernetes-models/apimachinery/util/intstr/IntOrString";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1DurationString } from "./DurationString.js";
import { IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1MetricProvider } from "./MetricProvider.js";
import { ModelData, Model } from "@kubernetes-models/base";
/**
 * Metric defines a metric in which to perform analysis
 */
export interface IMetric {
    /**
     * ConsecutiveErrorLimit is the maximum number of times the measurement is allowed to error in
     * succession, before the metric is considered error (default: 4)
     */
    "consecutiveErrorLimit"?: IIoK8sApimachineryPkgUtilIntstrIntOrString;
    /**
     * ConsecutiveSuccessLimit is the number of consecutive times the measurement must succeed for the
     * entire metric to be considered Successful (default: 0, which means it's disabled)
     */
    "consecutiveSuccessLimit"?: IIoK8sApimachineryPkgUtilIntstrIntOrString;
    /**
     * Count is the number of times to run the measurement. If both interval and count are omitted,
     * the effective count is 1. If only interval is specified, metric runs indefinitely.
     * If count > 1, interval must be specified.
     */
    "count"?: IIoK8sApimachineryPkgUtilIntstrIntOrString;
    /**
     * FailureCondition is an expression which determines if a measurement is considered failed
     * If both success and failure conditions are specified, and the measurement does not fall into
     * either condition, the measurement is considered Inconclusive
     */
    "failureCondition"?: string;
    /**
     * FailureLimit is the maximum number of times the measurement is allowed to fail, before the
     * entire metric is considered Failed (default: 0)
     * -1 for making it disabled (when opting to use ConsecutiveSuccessLimit solely)
     */
    "failureLimit"?: IIoK8sApimachineryPkgUtilIntstrIntOrString;
    /**
     * InconclusiveLimit is the maximum number of times the measurement is allowed to measure
     * Inconclusive, before the entire metric is considered Inconclusive (default: 0)
     */
    "inconclusiveLimit"?: IIoK8sApimachineryPkgUtilIntstrIntOrString;
    /**
     * InitialDelay how long the AnalysisRun should wait before starting this metric
     */
    "initialDelay"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1DurationString;
    /**
     * Interval defines an interval string (e.g. 30s, 5m, 1h) between each measurement.
     * If omitted, will perform a single measurement
     */
    "interval"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1DurationString;
    /**
     * Name is the name of the metric
     */
    "name": string;
    /**
     * Provider configuration to the external system to use to verify the analysis
     */
    "provider": IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1MetricProvider;
    /**
     * SuccessCondition is an expression which determines if a measurement is considered successful
     * Expression is a goevaluate expression. The keyword `result` is a variable reference to the
     * value of measurement. Results can be both structured data or primitive.
     * Examples:
     *   result > 10
     *   (result.requests_made \* result.requests_succeeded / 100) >= 90
     */
    "successCondition"?: string;
}
/**
 * Metric defines a metric in which to perform analysis
 */
export declare class Metric extends Model<IMetric> implements IMetric {
    "consecutiveErrorLimit"?: IIoK8sApimachineryPkgUtilIntstrIntOrString;
    "consecutiveSuccessLimit"?: IIoK8sApimachineryPkgUtilIntstrIntOrString;
    "count"?: IIoK8sApimachineryPkgUtilIntstrIntOrString;
    "failureCondition"?: string;
    "failureLimit"?: IIoK8sApimachineryPkgUtilIntstrIntOrString;
    "inconclusiveLimit"?: IIoK8sApimachineryPkgUtilIntstrIntOrString;
    "initialDelay"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1DurationString;
    "interval"?: IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1DurationString;
    "name": string;
    "provider": IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1MetricProvider;
    "successCondition"?: string;
    constructor(data?: ModelData<IMetric>);
}
export type { IMetric as IComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1Metric, Metric as ComGithubArgoprojArgoRolloutsPkgApisRolloutsV1alpha1Metric };
