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; }