import * as pulumi from "@pulumi/pulumi";
/**
 * This resource provides the Budget resource in Oracle Cloud Infrastructure Budget service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/budgets/latest/Budget
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/budget
 *
 * Creates a new budget.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testBudget = new oci.budget.Budget("test_budget", {
 *     amount: Number(budgetAmount),
 *     compartmentId: tenancyOcid,
 *     resetPeriod: budgetResetPeriod,
 *     budgetProcessingPeriodStartOffset: Number(budgetBudgetProcessingPeriodStartOffset),
 *     definedTags: {
 *         "Operations.CostCenter": "42",
 *     },
 *     description: budgetDescription,
 *     displayName: budgetDisplayName,
 *     endDate: budgetEndDate,
 *     freeformTags: {
 *         Department: "Finance",
 *     },
 *     processingPeriodType: budgetProcessingPeriodType,
 *     startDate: budgetStartDate,
 *     systemTags: budgetSystemTags,
 *     targetCompartmentId: testCompartment.id,
 *     targetType: budgetTargetType,
 *     targets: budgetTargets,
 * });
 * ```
 *
 * ## Import
 *
 * Budgets can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:Budget/budget:Budget test_budget "id"
 * ```
 */
export declare class Budget extends pulumi.CustomResource {
    /**
     * Get an existing Budget 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?: BudgetState, opts?: pulumi.CustomResourceOptions): Budget;
    /**
     * Returns true if the given object is an instance of Budget.  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 Budget;
    /**
     * The actual spend in currency for the current budget cycle.
     */
    readonly actualSpend: pulumi.Output<number>;
    /**
     * The total number of alert rules in the budget.
     */
    readonly alertRuleCount: pulumi.Output<number>;
    /**
     * (Updatable) The amount of the budget expressed as a whole number in the currency of the customer's rate card.
     */
    readonly amount: pulumi.Output<number>;
    /**
     * (Updatable) The number of days offset from the first day of the month, at which the budget processing period starts. In months that have fewer days than this value, processing will begin on the last day of that month. For example, for a value of 12, processing starts every month on the 12th at midnight.
     */
    readonly budgetProcessingPeriodStartOffset: pulumi.Output<number>;
    /**
     * The OCID of the compartment.
     */
    readonly compartmentId: pulumi.Output<string>;
    /**
     * (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) The description of the budget.
     */
    readonly description: pulumi.Output<string>;
    /**
     * (Updatable) The displayName of the budget. Avoid entering confidential information.
     */
    readonly displayName: pulumi.Output<string>;
    /**
     * (Updatable) The date when the one-time budget concludes. For example, `2023-08-12T16:01:19.847222+05:30`. The date-time format conforms to RFC 3339, and will be truncated to the starting point of the date provided after being converted to UTC time.
     */
    readonly endDate: pulumi.Output<string>;
    /**
     * The forecasted spend in currency by the end of the current budget cycle.
     */
    readonly forecastedSpend: pulumi.Output<number>;
    /**
     * (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) The type of the budget processing period. Valid values are INVOICE, MONTH, and SINGLE_USE.
     */
    readonly processingPeriodType: pulumi.Output<string>;
    /**
     * (Updatable) The reset period for the budget. Valid value is MONTHLY.
     */
    readonly resetPeriod: pulumi.Output<string>;
    /**
     * (Updatable) The date when the one-time budget begins. For example, `2023-07-12T16:01:19.847222+05:30`. The date-time format conforms to RFC 3339, and will be truncated to the starting point of the date provided after being converted to UTC time.
     */
    readonly startDate: pulumi.Output<string>;
    /**
     * The current state of the budget.
     */
    readonly state: pulumi.Output<string>;
    /**
     * (Updatable) Usage of system tag keys. These predefined keys are scoped to namespaces. Example: `{"orcl-cloud.free-tier-retained": "true"}`
     */
    readonly systemTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * This is DEPRECATED. Set the target compartment ID in targets instead.
     *
     * @deprecated The 'target_compartment_id' field has been deprecated. Please use 'targets' instead.
     */
    readonly targetCompartmentId: pulumi.Output<string>;
    /**
     * The type of target on which the budget is applied.
     */
    readonly targetType: pulumi.Output<string>;
    /**
     * The list of targets on which the budget is applied. If targetType is "COMPARTMENT", the targets contain the list of compartment OCIDs. If targetType is "TAG", the targets contain the list of cost tracking tag identifiers in the form of "{tagNamespace}.{tagKey}.{tagValue}". Curerntly, the array should contain exactly one item.
     *
     *
     * ** IMPORTANT **
     * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
     */
    readonly targets: pulumi.Output<string[]>;
    /**
     * The time that the budget was created.
     */
    readonly timeCreated: pulumi.Output<string>;
    /**
     * The time that the budget spend was last computed.
     */
    readonly timeSpendComputed: pulumi.Output<string>;
    /**
     * The time that the budget was updated.
     */
    readonly timeUpdated: pulumi.Output<string>;
    /**
     * The version of the budget. Starts from 1 and increments by 1.
     */
    readonly version: pulumi.Output<number>;
    /**
     * Create a Budget 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: BudgetArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Budget resources.
 */
export interface BudgetState {
    /**
     * The actual spend in currency for the current budget cycle.
     */
    actualSpend?: pulumi.Input<number | undefined>;
    /**
     * The total number of alert rules in the budget.
     */
    alertRuleCount?: pulumi.Input<number | undefined>;
    /**
     * (Updatable) The amount of the budget expressed as a whole number in the currency of the customer's rate card.
     */
    amount?: pulumi.Input<number | undefined>;
    /**
     * (Updatable) The number of days offset from the first day of the month, at which the budget processing period starts. In months that have fewer days than this value, processing will begin on the last day of that month. For example, for a value of 12, processing starts every month on the 12th at midnight.
     */
    budgetProcessingPeriodStartOffset?: pulumi.Input<number | undefined>;
    /**
     * The OCID of the compartment.
     */
    compartmentId?: pulumi.Input<string | 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) The description of the budget.
     */
    description?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The displayName of the budget. Avoid entering confidential information.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The date when the one-time budget concludes. For example, `2023-08-12T16:01:19.847222+05:30`. The date-time format conforms to RFC 3339, and will be truncated to the starting point of the date provided after being converted to UTC time.
     */
    endDate?: pulumi.Input<string | undefined>;
    /**
     * The forecasted spend in currency by the end of the current budget cycle.
     */
    forecastedSpend?: pulumi.Input<number | 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) The type of the budget processing period. Valid values are INVOICE, MONTH, and SINGLE_USE.
     */
    processingPeriodType?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The reset period for the budget. Valid value is MONTHLY.
     */
    resetPeriod?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The date when the one-time budget begins. For example, `2023-07-12T16:01:19.847222+05:30`. The date-time format conforms to RFC 3339, and will be truncated to the starting point of the date provided after being converted to UTC time.
     */
    startDate?: pulumi.Input<string | undefined>;
    /**
     * The current state of the budget.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Usage of system tag keys. These predefined keys are scoped to namespaces. Example: `{"orcl-cloud.free-tier-retained": "true"}`
     */
    systemTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * This is DEPRECATED. Set the target compartment ID in targets instead.
     *
     * @deprecated The 'target_compartment_id' field has been deprecated. Please use 'targets' instead.
     */
    targetCompartmentId?: pulumi.Input<string | undefined>;
    /**
     * The type of target on which the budget is applied.
     */
    targetType?: pulumi.Input<string | undefined>;
    /**
     * The list of targets on which the budget is applied. If targetType is "COMPARTMENT", the targets contain the list of compartment OCIDs. If targetType is "TAG", the targets contain the list of cost tracking tag identifiers in the form of "{tagNamespace}.{tagKey}.{tagValue}". Curerntly, the array should contain exactly one item.
     *
     *
     * ** IMPORTANT **
     * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
     */
    targets?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The time that the budget was created.
     */
    timeCreated?: pulumi.Input<string | undefined>;
    /**
     * The time that the budget spend was last computed.
     */
    timeSpendComputed?: pulumi.Input<string | undefined>;
    /**
     * The time that the budget was updated.
     */
    timeUpdated?: pulumi.Input<string | undefined>;
    /**
     * The version of the budget. Starts from 1 and increments by 1.
     */
    version?: pulumi.Input<number | undefined>;
}
/**
 * The set of arguments for constructing a Budget resource.
 */
export interface BudgetArgs {
    /**
     * (Updatable) The amount of the budget expressed as a whole number in the currency of the customer's rate card.
     */
    amount: pulumi.Input<number>;
    /**
     * (Updatable) The number of days offset from the first day of the month, at which the budget processing period starts. In months that have fewer days than this value, processing will begin on the last day of that month. For example, for a value of 12, processing starts every month on the 12th at midnight.
     */
    budgetProcessingPeriodStartOffset?: pulumi.Input<number | undefined>;
    /**
     * The OCID of the compartment.
     */
    compartmentId: pulumi.Input<string>;
    /**
     * (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) The description of the budget.
     */
    description?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The displayName of the budget. Avoid entering confidential information.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The date when the one-time budget concludes. For example, `2023-08-12T16:01:19.847222+05:30`. The date-time format conforms to RFC 3339, and will be truncated to the starting point of the date provided after being converted to UTC time.
     */
    endDate?: 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) The type of the budget processing period. Valid values are INVOICE, MONTH, and SINGLE_USE.
     */
    processingPeriodType?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The reset period for the budget. Valid value is MONTHLY.
     */
    resetPeriod: pulumi.Input<string>;
    /**
     * (Updatable) The date when the one-time budget begins. For example, `2023-07-12T16:01:19.847222+05:30`. The date-time format conforms to RFC 3339, and will be truncated to the starting point of the date provided after being converted to UTC time.
     */
    startDate?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Usage of system tag keys. These predefined keys are scoped to namespaces. Example: `{"orcl-cloud.free-tier-retained": "true"}`
     */
    systemTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * This is DEPRECATED. Set the target compartment ID in targets instead.
     *
     * @deprecated The 'target_compartment_id' field has been deprecated. Please use 'targets' instead.
     */
    targetCompartmentId?: pulumi.Input<string | undefined>;
    /**
     * The type of target on which the budget is applied.
     */
    targetType?: pulumi.Input<string | undefined>;
    /**
     * The list of targets on which the budget is applied. If targetType is "COMPARTMENT", the targets contain the list of compartment OCIDs. If targetType is "TAG", the targets contain the list of cost tracking tag identifiers in the form of "{tagNamespace}.{tagKey}.{tagValue}". Curerntly, the array should contain exactly one item.
     *
     *
     * ** IMPORTANT **
     * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
     */
    targets?: pulumi.Input<pulumi.Input<string>[] | undefined>;
}
//# sourceMappingURL=budget.d.ts.map