import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource provides the Auto Scaling Configuration resource in Oracle Cloud Infrastructure Auto Scaling service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/autoscaling/latest/AutoScalingConfiguration
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/autoscaling
 *
 * Creates an autoscaling configuration.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testAutoScalingConfiguration = new oci.autoscaling.AutoScalingConfiguration("test_auto_scaling_configuration", {
 *     autoScalingResources: {
 *         id: autoScalingConfigurationAutoScalingResourcesId,
 *         type: autoScalingConfigurationAutoScalingResourcesType,
 *     },
 *     compartmentId: compartmentId,
 *     policies: [{
 *         policyType: autoScalingConfigurationPoliciesPolicyType,
 *         capacity: {
 *             initial: Number(autoScalingConfigurationPoliciesCapacityInitial),
 *             max: Number(autoScalingConfigurationPoliciesCapacityMax),
 *             min: Number(autoScalingConfigurationPoliciesCapacityMin),
 *         },
 *         displayName: autoScalingConfigurationPoliciesDisplayName,
 *         executionSchedule: {
 *             expression: autoScalingConfigurationPoliciesExecutionScheduleExpression,
 *             timezone: autoScalingConfigurationPoliciesExecutionScheduleTimezone,
 *             type: autoScalingConfigurationPoliciesExecutionScheduleType,
 *         },
 *         isEnabled: autoScalingConfigurationPoliciesIsEnabled === "true",
 *         resourceAction: {
 *             action: autoScalingConfigurationPoliciesResourceActionAction,
 *             actionType: autoScalingConfigurationPoliciesResourceActionActionType,
 *         },
 *         rules: [{
 *             action: {
 *                 type: autoScalingConfigurationPoliciesRulesActionType,
 *                 value: Number(autoScalingConfigurationPoliciesRulesActionValue),
 *             },
 *             displayName: autoScalingConfigurationPoliciesRulesDisplayName,
 *             metric: {
 *                 metricCompartmentId: testCompartment.id,
 *                 metricSource: autoScalingConfigurationPoliciesRulesMetricMetricSource,
 *                 metricType: autoScalingConfigurationPoliciesRulesMetricMetricType,
 *                 namespace: autoScalingConfigurationPoliciesRulesMetricNamespace,
 *                 pendingDuration: autoScalingConfigurationPoliciesRulesMetricPendingDuration,
 *                 query: autoScalingConfigurationPoliciesRulesMetricQuery,
 *                 resourceGroup: autoScalingConfigurationPoliciesRulesMetricResourceGroup,
 *                 threshold: {
 *                     operator: autoScalingConfigurationPoliciesRulesMetricThresholdOperator,
 *                     value: Number(autoScalingConfigurationPoliciesRulesMetricThresholdValue),
 *                 },
 *             },
 *         }],
 *     }],
 *     coolDownInSeconds: Number(autoScalingConfigurationCoolDownInSeconds),
 *     definedTags: {
 *         "Operations.CostCenter": "42",
 *     },
 *     displayName: autoScalingConfigurationDisplayName,
 *     freeformTags: {
 *         Department: "Finance",
 *     },
 *     isEnabled: autoScalingConfigurationIsEnabled === "true",
 * });
 * ```
 *
 * ## Import
 *
 * AutoScalingConfigurations can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:Autoscaling/autoScalingConfiguration:AutoScalingConfiguration test_auto_scaling_configuration "id"
 * ```
 */
export declare class AutoScalingConfiguration extends pulumi.CustomResource {
    /**
     * Get an existing AutoScalingConfiguration 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 state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: AutoScalingConfigurationState, opts?: pulumi.CustomResourceOptions): AutoScalingConfiguration;
    /**
     * Returns true if the given object is an instance of AutoScalingConfiguration.  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 AutoScalingConfiguration;
    /**
     * A resource that is managed by an autoscaling configuration. The only supported type is `instancePool`.
     *
     * Each instance pool can have one autoscaling configuration.
     */
    readonly autoScalingResources: pulumi.Output<outputs.Autoscaling.AutoScalingConfigurationAutoScalingResources>;
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment containing the autoscaling configuration.
     */
    readonly compartmentId: pulumi.Output<string>;
    /**
     * (Updatable) For threshold-based autoscaling policies, this value is the minimum period of time to wait between scaling actions. The cooldown period gives the system time to stabilize before rescaling. The minimum value is 300 seconds, which is also the default. The cooldown period starts when the instance pool reaches the running state.
     *
     * For schedule-based autoscaling policies, this value is not used.
     */
    readonly coolDownInSeconds: pulumi.Output<number>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
     */
    readonly definedTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
     */
    readonly displayName: pulumi.Output<string>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
     */
    readonly freeformTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * (Updatable) Whether the autoscaling configuration is enabled.
     */
    readonly isEnabled: pulumi.Output<boolean>;
    /**
     * The maximum number of resources to scale out to.
     */
    readonly maxResourceCount: pulumi.Output<number>;
    /**
     * The minimum number of resources to scale in to.
     */
    readonly minResourceCount: pulumi.Output<number>;
    /**
     * Autoscaling policy definitions for the autoscaling configuration. An autoscaling policy defines the criteria that trigger autoscaling actions and the actions to take.
     */
    readonly policies: pulumi.Output<outputs.Autoscaling.AutoScalingConfigurationPolicy[]>;
    /**
     * The date and time the autoscaling configuration was created, in the format defined by RFC3339.  Example: `2016-08-25T21:10:29.600Z`
     */
    readonly timeCreated: pulumi.Output<string>;
    /**
     * Create a AutoScalingConfiguration 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: AutoScalingConfigurationArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering AutoScalingConfiguration resources.
 */
export interface AutoScalingConfigurationState {
    /**
     * A resource that is managed by an autoscaling configuration. The only supported type is `instancePool`.
     *
     * Each instance pool can have one autoscaling configuration.
     */
    autoScalingResources?: pulumi.Input<inputs.Autoscaling.AutoScalingConfigurationAutoScalingResources | undefined>;
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment containing the autoscaling configuration.
     */
    compartmentId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) For threshold-based autoscaling policies, this value is the minimum period of time to wait between scaling actions. The cooldown period gives the system time to stabilize before rescaling. The minimum value is 300 seconds, which is also the default. The cooldown period starts when the instance pool reaches the running state.
     *
     * For schedule-based autoscaling policies, this value is not used.
     */
    coolDownInSeconds?: pulumi.Input<number | undefined>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
     */
    definedTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
     */
    freeformTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) Whether the autoscaling configuration is enabled.
     */
    isEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * The maximum number of resources to scale out to.
     */
    maxResourceCount?: pulumi.Input<number | undefined>;
    /**
     * The minimum number of resources to scale in to.
     */
    minResourceCount?: pulumi.Input<number | undefined>;
    /**
     * Autoscaling policy definitions for the autoscaling configuration. An autoscaling policy defines the criteria that trigger autoscaling actions and the actions to take.
     */
    policies?: pulumi.Input<pulumi.Input<inputs.Autoscaling.AutoScalingConfigurationPolicy>[] | undefined>;
    /**
     * The date and time the autoscaling configuration was created, in the format defined by RFC3339.  Example: `2016-08-25T21:10:29.600Z`
     */
    timeCreated?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a AutoScalingConfiguration resource.
 */
export interface AutoScalingConfigurationArgs {
    /**
     * A resource that is managed by an autoscaling configuration. The only supported type is `instancePool`.
     *
     * Each instance pool can have one autoscaling configuration.
     */
    autoScalingResources: pulumi.Input<inputs.Autoscaling.AutoScalingConfigurationAutoScalingResources>;
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment containing the autoscaling configuration.
     */
    compartmentId: pulumi.Input<string>;
    /**
     * (Updatable) For threshold-based autoscaling policies, this value is the minimum period of time to wait between scaling actions. The cooldown period gives the system time to stabilize before rescaling. The minimum value is 300 seconds, which is also the default. The cooldown period starts when the instance pool reaches the running state.
     *
     * For schedule-based autoscaling policies, this value is not used.
     */
    coolDownInSeconds?: pulumi.Input<number | undefined>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
     */
    definedTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
     */
    freeformTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) Whether the autoscaling configuration is enabled.
     */
    isEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Autoscaling policy definitions for the autoscaling configuration. An autoscaling policy defines the criteria that trigger autoscaling actions and the actions to take.
     */
    policies: pulumi.Input<pulumi.Input<inputs.Autoscaling.AutoScalingConfigurationPolicy>[]>;
}
//# sourceMappingURL=autoScalingConfiguration.d.ts.map