import { Construct } from 'constructs';
/**
 * SLO criticality levels used to select default threshold targets.
 */
export type CriticalityLevel = 'high' | 'medium' | 'low';
/**
 * The product streams.
 */
export type Stream = 'platform' | 'shipper' | 'transport';
/**
 * Properties of {@link DatadogSlo}
 */
export interface DatadogSloProps {
    /**
     * The name of the SLO in Datadog.
     */
    readonly name: string;
    /**
     * The Datadog monitor IDs used to calculate the SLO.
     *
     * Each entry must be a numeric string (for example "1234567").
     */
    readonly monitorIds: string[];
    /**
     * The product stream that this SLO belongs to. This is used for filtering SLOs in dashboards.
     */
    readonly stream: Stream;
    /**
     * The criticality level for the SLO as defined at [Capabilities - RIO Tech Platform Docs - MAN Confluence PRD](https://confluence.collaboration-man.com/x/nLUSEw).
     */
    readonly criticality: CriticalityLevel;
    /**
     * Threshold definitions applied to the SLO.
     *
     * Unless you have a specific use case it is recommended to use defaultThresholds(...).
     */
    readonly thresholds: DatadogSloThreshold[];
    /**
     * The SLO type. Only "monitor" is supported for now.
     * Still this property is required to make future extensions more seamless.
     */
    readonly sloType: 'monitor';
    /**
     * Additional tags to apply to the SLO.
     *
     * Each entry must follow the "key:value" format.
     */
    readonly extraTags?: string[];
}
export interface DatadogSloThreshold {
    /**
     * The target percentage for the SLO (for example 99.5).
     */
    readonly targetPercentage: number;
    /**
     * The timeframe for the target (for example "7d", "30d", "90d").
     */
    readonly timeframe: DatadogSloTimeframe;
}
export declare const DATADOG_SLO_TIMEFRAMES: readonly ["7d", "30d", "90d"];
export type DatadogSloTimeframe = (typeof DATADOG_SLO_TIMEFRAMES)[number];
/**
 * Generate default SLO thresholds for a given criticality level.
 */
export declare function defaultThresholds(level: CriticalityLevel): DatadogSloThreshold[];
/**
 * Wrapper around Datadog's CloudFormation `Datadog::SLOs::SLO` with some RIO defaults applied.
 *
 * Currently only SLOs of Type Monitor are implemented.
 */
export declare class DatadogSlo extends Construct {
    private readonly slo;
    constructor(scope: Construct, id: string, props: DatadogSloProps);
    get sloId(): string;
}
