import type { Application, IJob, IMetricAlarmDimension, IServerGroup, ITask } from '@spinnaker/core'; import type { AlarmComparisonOperator, AlarmStatisticType, IScalingPolicy, IStepAdjustment, ITargetTrackingConfiguration, MetricAggregationType, ScalingPolicyAdjustmentType, StandardUnitType } from '../../../domain'; export interface IUpsertScalingPolicyCommand extends IJob { type?: string; cloudProvider: string; credentials: string; region: string; serverGroupName: string; adjustmentType: ScalingPolicyAdjustmentType; name?: string; minAdjustmentMagnitude?: number; alarm?: IUpsertAlarmDescription; simple?: ISimplePolicyDescription; step?: IStepPolicyDescription; } export interface ITargetTrackingPolicyCommand extends IUpsertScalingPolicyCommand { estimatedInstanceWarmup: number; targetTrackingConfiguration: ITargetTrackingConfiguration; } export interface ISimplePolicyDescription { cooldown: number; scalingAdjustment: number; } export interface IStepPolicyDescription { cooldown?: number; stepAdjustments: IStepAdjustment[]; estimatedInstanceWarmup: number; metricAggregationType: MetricAggregationType; } export interface IConfigurableMetric { namespace: string; metricName: string; dimensions: IMetricAlarmDimension[]; } export interface IUpsertAlarmDescription extends IConfigurableMetric { name: string; asgName: string; region: string; alarmDescription: string; comparisonOperator: AlarmComparisonOperator; evaluationPeriods: number; period: number; threshold: number; statistic: AlarmStatisticType; unit: StandardUnitType; disableEditingDimensions?: boolean; actionsEnabled?: boolean; alarmActionArns: string[]; insufficientDataActionArns: string[]; okActionArns: string[]; } export declare class ScalingPolicyWriter { static upsertScalingPolicy(application: Application, command: IUpsertScalingPolicyCommand): PromiseLike; static deleteScalingPolicy(application: Application, serverGroup: IServerGroup, scalingPolicy: IScalingPolicy): PromiseLike; }