import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
import * as enums from "../types/enums";
/**
 * Resource Type definition for AWS::ApplicationSignals::ServiceLevelObjective
 */
export declare class ServiceLevelObjective extends pulumi.CustomResource {
    /**
     * Get an existing ServiceLevelObjective resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, opts?: pulumi.CustomResourceOptions): ServiceLevelObjective;
    /**
     * Returns true if the given object is an instance of ServiceLevelObjective.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is ServiceLevelObjective;
    /**
     * The ARN of this SLO.
     */
    readonly arn: pulumi.Output<string>;
    /**
     * Each object in this array defines the length of the look-back window used to calculate one burn rate metric for this SLO. The burn rate measures how fast the service is consuming the error budget, relative to the attainment goal of the SLO.
     */
    readonly burnRateConfigurations: pulumi.Output<outputs.applicationsignals.ServiceLevelObjectiveBurnRateConfiguration[] | undefined>;
    /**
     * Epoch time in seconds of the time that this SLO was created
     */
    readonly createdTime: pulumi.Output<number>;
    /**
     * An optional description for this SLO. Default is 'No description'
     */
    readonly description: pulumi.Output<string | undefined>;
    /**
     * Displays whether this is a period-based SLO or a request-based SLO.
     */
    readonly evaluationType: pulumi.Output<enums.applicationsignals.ServiceLevelObjectiveEvaluationType>;
    /**
     * The time window to be excluded from the SLO performance metrics.
     */
    readonly exclusionWindows: pulumi.Output<outputs.applicationsignals.ServiceLevelObjectiveExclusionWindow[] | undefined>;
    /**
     * This structure contains the attributes that determine the goal of an SLO. This includes the time period for evaluation and the attainment threshold.
     */
    readonly goal: pulumi.Output<outputs.applicationsignals.ServiceLevelObjectiveGoal | undefined>;
    /**
     * Epoch time in seconds of the time that this SLO was most recently updated
     */
    readonly lastUpdatedTime: pulumi.Output<number>;
    /**
     * The name of this SLO.
     */
    readonly name: pulumi.Output<string>;
    /**
     * A structure containing information about the performance metric that this SLO monitors, if this is a request-based SLO.
     */
    readonly requestBasedSli: pulumi.Output<outputs.applicationsignals.ServiceLevelObjectiveRequestBasedSli | undefined>;
    /**
     * A structure containing information about the performance metric that this SLO monitors, if this is a period-based SLO.
     */
    readonly sli: pulumi.Output<outputs.applicationsignals.ServiceLevelObjectiveSli | undefined>;
    /**
     * A list of key-value pairs to associate with the SLO. You can associate as many as 50 tags with an SLO. To be able to associate tags with the SLO when you create the SLO, you must have the cloudwatch:TagResource permission.
     *
     * Tags can help you organize and categorize your resources. You can also use them to scope user permissions by granting a user permission to access or change only resources with certain tag values.
     */
    readonly tags: pulumi.Output<outputs.Tag[] | undefined>;
    /**
     * Create a ServiceLevelObjective resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args?: ServiceLevelObjectiveArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * The set of arguments for constructing a ServiceLevelObjective resource.
 */
export interface ServiceLevelObjectiveArgs {
    /**
     * Each object in this array defines the length of the look-back window used to calculate one burn rate metric for this SLO. The burn rate measures how fast the service is consuming the error budget, relative to the attainment goal of the SLO.
     */
    burnRateConfigurations?: pulumi.Input<pulumi.Input<inputs.applicationsignals.ServiceLevelObjectiveBurnRateConfigurationArgs>[]>;
    /**
     * An optional description for this SLO. Default is 'No description'
     */
    description?: pulumi.Input<string>;
    /**
     * The time window to be excluded from the SLO performance metrics.
     */
    exclusionWindows?: pulumi.Input<pulumi.Input<inputs.applicationsignals.ServiceLevelObjectiveExclusionWindowArgs>[]>;
    /**
     * This structure contains the attributes that determine the goal of an SLO. This includes the time period for evaluation and the attainment threshold.
     */
    goal?: pulumi.Input<inputs.applicationsignals.ServiceLevelObjectiveGoalArgs>;
    /**
     * The name of this SLO.
     */
    name?: pulumi.Input<string>;
    /**
     * A structure containing information about the performance metric that this SLO monitors, if this is a request-based SLO.
     */
    requestBasedSli?: pulumi.Input<inputs.applicationsignals.ServiceLevelObjectiveRequestBasedSliArgs>;
    /**
     * A structure containing information about the performance metric that this SLO monitors, if this is a period-based SLO.
     */
    sli?: pulumi.Input<inputs.applicationsignals.ServiceLevelObjectiveSliArgs>;
    /**
     * A list of key-value pairs to associate with the SLO. You can associate as many as 50 tags with an SLO. To be able to associate tags with the SLO when you create the SLO, you must have the cloudwatch:TagResource permission.
     *
     * Tags can help you organize and categorize your resources. You can also use them to scope user permissions by granting a user permission to access or change only resources with certain tag values.
     */
    tags?: pulumi.Input<pulumi.Input<inputs.TagArgs>[]>;
}
