export interface Spend {
    /** The cost or usage amount that's associated with a budget forecast, actual spend, or budget threshold. */
    Amount: string;
    /** The unit of measurement that's used for the budget forecast, actual spend, or budget threshold. */
    Unit: string;
}
export interface CostTypes {
    /** Specifies whether a budget includes taxes. The default value is true. */
    IncludeTax?: boolean;
    /** Specifies whether a budget includes subscriptions. The default value is true. */
    IncludeSubscription?: boolean;
    /** Specifies whether a budget uses a blended rate. The default value is false. */
    UseBlended?: boolean;
    /** Specifies whether a budget includes refunds. The default value is true. */
    IncludeRefund?: boolean;
    /** Specifies whether a budget includes credits. The default value is true. */
    IncludeCredit?: boolean;
    /** Specifies whether a budget includes upfront RI costs. The default value is true. */
    IncludeUpfront?: boolean;
    /** Specifies whether a budget includes recurring fees such as monthly RI fees. The default value is true. */
    IncludeRecurring?: boolean;
    /** Specifies whether a budget includes non-RI subscription costs. The default value is true. */
    IncludeOtherSubscription?: boolean;
    /** Specifies whether a budget includes support subscription fees. The default value is true. */
    IncludeSupport?: boolean;
    /** Specifies whether a budget includes discounts. The default value is true. */
    IncludeDiscount?: boolean;
    /** Specifies whether a budget uses the amortized rate. The default value is false. */
    UseAmortized?: boolean;
}
export interface TimePeriod {
    /** The start date for a budget. If you created your budget and didn't specify a start date, Amazon Web Services defaults to the start of your chosen time period (DAILY, MONTHLY, QUARTERLY, ANNUALLY, or C */
    Start?: string;
    /** The end date for a budget. If you didn't specify an end date, Amazon Web Services set your end date to 06/15/87 00:00 UTC. The defaults are the same for the Billing and Cost Management console and the */
    End?: string;
}
export interface CalculatedSpend {
    /** The amount of cost, usage, RI units, or Savings Plans units that you used. */
    ActualSpend: any;
    /** The amount of cost, usage, RI units, or Savings Plans units that you're forecasted to use. */
    ForecastedSpend?: any;
}
export interface AutoAdjustData {
    /** The string that defines whether your budget auto-adjusts based on historical or forecasted data. */
    AutoAdjustType: 'HISTORICAL' | 'FORECAST';
    /** The parameters that define or describe the historical data that your auto-adjusting budget is based on. */
    HistoricalOptions?: any;
    /** The last time that your budget was auto-adjusted. */
    LastAutoAdjustTime?: string;
}
export interface Expression {
    /** Return results that match either Dimension object. */
    Or?: any[];
    /** Return results that match both Dimension objects. */
    And?: any[];
    /** Return results that don't match a Dimension object. */
    Not?: any;
    /** The specific Dimension to use for Expression. */
    Dimensions?: any;
    /** The specific Tag to use for Expression. */
    Tags?: any;
    /** The filter that's based on CostCategoryValues. */
    CostCategories?: any;
}
export interface HealthStatus {
    /** The current status of the billing view resource. */
    Status?: 'HEALTHY' | 'UNHEALTHY';
    /** The reason for the current status. BILLING_VIEW_NO_ACCESS: The billing view resource does not grant billing:GetBillingViewData permission to this account. BILLING_VIEW_UNHEALTHY: The billing view asso */
    StatusReason?: 'BILLING_VIEW_NO_ACCESS' | 'BILLING_VIEW_UNHEALTHY' | 'FILTER_INVALID' | 'MULTI_YEAR_HISTORICAL_DATA_DISABLED';
    LastUpdatedTime?: string;
}
export interface Budget {
    /** The name of a budget. The name must be unique within an account. The : and \ characters, and the "/action/" substring, aren't allowed in BudgetName. */
    BudgetName: string;
    /** The total amount of cost, usage, RI utilization, RI coverage, Savings Plans utilization, or Savings Plans coverage that you want to track with your budget. BudgetLimit is required for cost or usage bu */
    BudgetLimit?: Spend;
    /** A map containing multiple BudgetLimit, including current or future limits. PlannedBudgetLimits is available for cost or usage budget and supports both monthly and quarterly TimeUnit. For monthly budge */
    PlannedBudgetLimits?: Record<string, any>;
    /** The cost filters, such as Region, Service, LinkedAccount, Tag, or CostCategory, that are applied to a budget. Amazon Web Services Budgets supports the following services as a Service filter for RI bud */
    CostFilters?: Record<string, any[]>;
    /** The types of costs that are included in this COST budget. USAGE, RI_UTILIZATION, RI_COVERAGE, SAVINGS_PLANS_UTILIZATION, and SAVINGS_PLANS_COVERAGE budgets do not have CostTypes. */
    CostTypes?: CostTypes;
    /** The length of time until a budget resets the actual and forecasted spend. */
    TimeUnit: 'DAILY' | 'MONTHLY' | 'QUARTERLY' | 'ANNUALLY' | 'CUSTOM';
    /** The period of time that's covered by a budget. You set the start date and end date. The start date must come before the end date. The end date must come before 06/15/87 00:00 UTC. If you create your b */
    TimePeriod?: TimePeriod;
    /** The actual and forecasted cost or usage that the budget tracks. */
    CalculatedSpend?: CalculatedSpend;
    /** Specifies whether this budget tracks costs, usage, RI utilization, RI coverage, Savings Plans utilization, or Savings Plans coverage. */
    BudgetType: 'USAGE' | 'COST' | 'RI_UTILIZATION' | 'RI_COVERAGE' | 'SAVINGS_PLANS_UTILIZATION' | 'SAVINGS_PLANS_COVERAGE';
    /** The last time that you updated this budget. */
    LastUpdatedTime?: string;
    /** The parameters that determine the budget amount for an auto-adjusting budget. */
    AutoAdjustData?: AutoAdjustData;
    /** The filtering dimensions for the budget and their corresponding values. */
    FilterExpression?: Expression;
    /** The definition for how the budget data is aggregated. */
    Metrics?: 'BlendedCost' | 'UnblendedCost' | 'AmortizedCost' | 'NetUnblendedCost' | 'NetAmortizedCost' | 'UsageQuantity' | 'NormalizedUsageAmount' | 'Hours'[];
    /** The Amazon Resource Name (ARN) that uniquely identifies a specific billing view. The ARN is used to specify which particular billing view you want to interact with or retrieve information from when ma */
    BillingViewArn?: string;
    /** The current operational state of a Billing View derived resource. */
    HealthStatus?: HealthStatus;
}
export interface NotificationWithSubscribers {
    /** The notification that's associated with a budget. */
    Notification: any;
    /** A list of subscribers who are subscribed to this notification. */
    Subscribers: any[];
}
export interface ResourceTag {
    /** The key that's associated with the tag. */
    Key: string;
    /** The value that's associated with the tag. */
    Value: string;
}
export interface ActionThreshold {
    ActionThresholdValue: number;
    ActionThresholdType: 'PERCENTAGE' | 'ABSOLUTE_VALUE';
}
export interface IamActionDefinition {
    /** The Amazon Resource Name (ARN) of the policy to be attached. */
    PolicyArn: string;
    /** A list of roles to be attached. There must be at least one role. */
    Roles?: any[];
    /** A list of groups to be attached. There must be at least one group. */
    Groups?: any[];
    /** A list of users to be attached. There must be at least one user. */
    Users?: any[];
}
export interface ScpActionDefinition {
    /** The policy ID attached. */
    PolicyId: string;
    /** A list of target IDs. */
    TargetIds: any[];
}
export interface SsmActionDefinition {
    /** The action subType. */
    ActionSubType: 'STOP_EC2_INSTANCES' | 'STOP_RDS_INSTANCES';
    /** The Region to run the SSM document. */
    Region: string;
    /** The EC2 and RDS instance IDs. */
    InstanceIds: any[];
}
export interface Definition {
    /** The Identity and Access Management (IAM) action definition details. */
    IamActionDefinition?: IamActionDefinition;
    /** The service control policies (SCPs) action definition details. */
    ScpActionDefinition?: ScpActionDefinition;
    /** The Amazon Web Services Systems Manager (SSM) action definition details. */
    SsmActionDefinition?: SsmActionDefinition;
}
export interface Subscriber {
    /** The type of notification that Amazon Web Services sends to a subscriber. */
    SubscriptionType: 'SNS' | 'EMAIL';
    /** The address that Amazon Web Services sends budget notifications to, either an SNS topic or an email. When you create a subscriber, the value of Address can't contain line breaks. */
    Address: string;
}
export interface Notification {
    /** Specifies whether the notification is for how much you have spent (ACTUAL) or for how much that you're forecasted to spend (FORECASTED). */
    NotificationType: 'ACTUAL' | 'FORECASTED';
    /** The comparison that's used for this notification. */
    ComparisonOperator: 'GREATER_THAN' | 'LESS_THAN' | 'EQUAL_TO';
    /** The threshold that's associated with a notification. Thresholds are always a percentage, and many customers find value being alerted between 50% - 200% of the budgeted amount. The maximum limit for yo */
    Threshold: number;
    /** The type of threshold for a notification. For ABSOLUTE_VALUE thresholds, Amazon Web Services notifies you when you go over or are forecasted to go over your total cost threshold. For PERCENTAGE thresh */
    ThresholdType?: 'PERCENTAGE' | 'ABSOLUTE_VALUE';
    /** Specifies whether this notification is in alarm. If a budget notification is in the ALARM state, you passed the set threshold for the budget. */
    NotificationState?: 'OK' | 'ALARM';
}
/** Request of CreateBudget */
export interface CreateBudgetInput {
    /** The accountId that is associated with the budget. */
    AccountId: string;
    /** The budget object that you want to create. */
    Budget: Budget;
    /** A notification that you want to associate with a budget. A budget can have up to five notifications, and each notification can have one SNS subscriber and up to 10 email subscribers. If you include no */
    NotificationsWithSubscribers?: NotificationWithSubscribers[];
    /** An optional list of tags to associate with the specified budget. Each tag consists of a key and a value, and each key must be unique for the resource. */
    ResourceTags?: ResourceTag[];
}
export interface CreateBudgetActionInput {
    AccountId: string;
    ActionThreshold: ActionThreshold;
    /** The type of action. This defines the type of tasks that can be carried out by this action. This field also determines the format for definition. */
    ActionType: 'APPLY_IAM_POLICY' | 'APPLY_SCP_POLICY' | 'RUN_SSM_DOCUMENTS';
    /** This specifies if the action needs manual or automatic approval. */
    ApprovalModel: 'AUTOMATIC' | 'MANUAL';
    BudgetName: string;
    Definition: Definition;
    /** The role passed for action execution and reversion. Roles and actions must be in the same account. */
    ExecutionRoleArn: string;
    NotificationType: 'ACTUAL' | 'FORECASTED';
    Subscribers: Subscriber[];
    /** An optional list of tags to associate with the specified budget action. Each tag consists of a key and a value, and each key must be unique for the resource. */
    ResourceTags?: ResourceTag[];
}
/** Request of CreateNotification */
export interface CreateNotificationInput {
    /** The accountId that is associated with the budget that you want to create a notification for. */
    AccountId: string;
    /** The name of the budget that you want Amazon Web Services to notify you about. Budget names must be unique within an account. */
    BudgetName: string;
    /** The notification that you want to create. */
    Notification: Notification;
    /** A list of subscribers that you want to associate with the notification. Each notification can have one SNS subscriber and up to 10 email subscribers. */
    Subscribers: Subscriber[];
}
/** Request of CreateSubscriber */
export interface CreateSubscriberInput {
    /** The accountId that is associated with the budget that you want to create a subscriber for. */
    AccountId: string;
    /** The name of the budget that you want to subscribe to. Budget names must be unique within an account. */
    BudgetName: string;
    /** The notification that you want to create a subscriber for. */
    Notification: Notification;
    /** The subscriber that you want to associate with a budget notification. */
    Subscriber: Subscriber;
}
/** Request of DeleteBudget */
export interface DeleteBudgetInput {
    /** The accountId that is associated with the budget that you want to delete. */
    AccountId: string;
    /** The name of the budget that you want to delete. */
    BudgetName: string;
}
export interface DeleteBudgetActionInput {
    AccountId: string;
    /** A system-generated universally unique identifier (UUID) for the action. */
    ActionId: string;
    BudgetName: string;
}
/** Request of DeleteNotification */
export interface DeleteNotificationInput {
    /** The accountId that is associated with the budget whose notification you want to delete. */
    AccountId: string;
    /** The name of the budget whose notification you want to delete. */
    BudgetName: string;
    /** The notification that you want to delete. */
    Notification: Notification;
}
/** Request of DeleteSubscriber */
export interface DeleteSubscriberInput {
    /** The accountId that is associated with the budget whose subscriber you want to delete. */
    AccountId: string;
    /** The name of the budget whose subscriber you want to delete. */
    BudgetName: string;
    /** The notification whose subscriber you want to delete. */
    Notification: Notification;
    /** The subscriber that you want to delete. */
    Subscriber: Subscriber;
}
/** Request of DescribeBudget */
export interface DescribeBudgetInput {
    /** The accountId that is associated with the budget that you want a description of. */
    AccountId: string;
    /** The name of the budget that you want a description of. */
    BudgetName: string;
    /** Specifies whether the response includes the filter expression associated with the budget. By showing the filter expression, you can see detailed filtering logic applied to the budget, such as Amazon W */
    ShowFilterExpression?: boolean;
}
export interface DescribeBudgetActionInput {
    AccountId: string;
    /** A system-generated universally unique identifier (UUID) for the action. */
    ActionId: string;
    BudgetName: string;
}
export interface DescribeBudgetActionHistoriesInput {
    AccountId: string;
    /** A system-generated universally unique identifier (UUID) for the action. */
    ActionId: string;
    BudgetName: string;
    MaxResults?: number;
    NextToken?: string;
    TimePeriod?: TimePeriod;
}
export interface DescribeBudgetActionsForAccountInput {
    AccountId: string;
    MaxResults?: number;
    NextToken?: string;
}
export interface DescribeBudgetActionsForBudgetInput {
    AccountId: string;
    BudgetName: string;
    MaxResults?: number;
    NextToken?: string;
}
export interface DescribeBudgetNotificationsForAccountInput {
    AccountId: string;
    /** An integer that represents how many budgets a paginated response contains. The default is 50. */
    MaxResults?: number;
    NextToken?: string;
}
export interface DescribeBudgetPerformanceHistoryInput {
    AccountId: string;
    BudgetName: string;
    MaxResults?: number;
    NextToken?: string;
    /** Retrieves how often the budget went into an ALARM state for the specified time period. */
    TimePeriod?: TimePeriod;
}
/** Request of DescribeBudgets */
export interface DescribeBudgetsInput {
    /** The accountId that is associated with the budgets that you want to describe. */
    AccountId: string;
    /** An integer that represents how many budgets a paginated response contains. The default is 100. */
    MaxResults?: number;
    /** The pagination token that you include in your request to indicate the next set of results that you want to retrieve. */
    NextToken?: string;
    /** Specifies whether the response includes the filter expression associated with the budgets. By showing the filter expression, you can see detailed filtering logic applied to the budgets, such as Amazon */
    ShowFilterExpression?: boolean;
}
/** Request of DescribeNotificationsForBudget */
export interface DescribeNotificationsForBudgetInput {
    /** The accountId that is associated with the budget whose notifications you want descriptions of. */
    AccountId: string;
    /** The name of the budget whose notifications you want descriptions of. */
    BudgetName: string;
    /** An optional integer that represents how many entries a paginated response contains. */
    MaxResults?: number;
    /** The pagination token that you include in your request to indicate the next set of results that you want to retrieve. */
    NextToken?: string;
}
/** Request of DescribeSubscribersForNotification */
export interface DescribeSubscribersForNotificationInput {
    /** The accountId that is associated with the budget whose subscribers you want descriptions of. */
    AccountId: string;
    /** The name of the budget whose subscribers you want descriptions of. */
    BudgetName: string;
    /** The notification whose subscribers you want to list. */
    Notification: Notification;
    /** An optional integer that represents how many entries a paginated response contains. */
    MaxResults?: number;
    /** The pagination token that you include in your request to indicate the next set of results that you want to retrieve. */
    NextToken?: string;
}
export interface ExecuteBudgetActionInput {
    AccountId: string;
    /** A system-generated universally unique identifier (UUID) for the action. */
    ActionId: string;
    BudgetName: string;
    /** The type of execution. */
    ExecutionType: 'APPROVE_BUDGET_ACTION' | 'RETRY_BUDGET_ACTION' | 'REVERSE_BUDGET_ACTION' | 'RESET_BUDGET_ACTION';
}
export interface ListTagsForResourceInput {
    /** The unique identifier for the resource. */
    ResourceARN: string;
}
export interface TagResourceInput {
    /** The unique identifier for the resource. */
    ResourceARN: string;
    /** The tags associated with the resource. */
    ResourceTags: ResourceTag[];
}
export interface UntagResourceInput {
    /** The unique identifier for the resource. */
    ResourceARN: string;
    /** The key that's associated with the tag. */
    ResourceTagKeys: string[];
}
/** Request of UpdateBudget */
export interface UpdateBudgetInput {
    /** The accountId that is associated with the budget that you want to update. */
    AccountId: string;
    /** The budget that you want to update your budget to. */
    NewBudget: Budget;
}
export interface UpdateBudgetActionInput {
    AccountId: string;
    /** A system-generated universally unique identifier (UUID) for the action. */
    ActionId: string;
    BudgetName: string;
    ActionThreshold?: ActionThreshold;
    /** This specifies if the action needs manual or automatic approval. */
    ApprovalModel?: 'AUTOMATIC' | 'MANUAL';
    Definition?: Definition;
    /** The role passed for action execution and reversion. Roles and actions must be in the same account. */
    ExecutionRoleArn?: string;
    NotificationType?: 'ACTUAL' | 'FORECASTED';
    Subscribers?: Subscriber[];
}
/** Request of UpdateNotification */
export interface UpdateNotificationInput {
    /** The accountId that is associated with the budget whose notification you want to update. */
    AccountId: string;
    /** The name of the budget whose notification you want to update. */
    BudgetName: string;
    /** The updated notification to be associated with a budget. */
    NewNotification: Notification;
    /** The previous notification that is associated with a budget. */
    OldNotification: Notification;
}
/** Request of UpdateSubscriber */
export interface UpdateSubscriberInput {
    /** The accountId that is associated with the budget whose subscriber you want to update. */
    AccountId: string;
    /** The name of the budget whose subscriber you want to update. */
    BudgetName: string;
    /** The updated subscriber that is associated with a budget notification. */
    NewSubscriber: Subscriber;
    /** The notification whose subscriber you want to update. */
    Notification: Notification;
    /** The previous subscriber that is associated with a budget notification. */
    OldSubscriber: Subscriber;
}
/** Budgets service binding for Step Functions SDK integrations. */
export declare class Budgets {
    constructor();
    createBudget<T>(params: CreateBudgetInput): Promise<T>;
    createBudgetAction<T>(params: CreateBudgetActionInput): Promise<T>;
    createNotification<T>(params: CreateNotificationInput): Promise<T>;
    createSubscriber<T>(params: CreateSubscriberInput): Promise<T>;
    deleteBudget<T>(params: DeleteBudgetInput): Promise<T>;
    deleteBudgetAction<T>(params: DeleteBudgetActionInput): Promise<T>;
    deleteNotification<T>(params: DeleteNotificationInput): Promise<T>;
    deleteSubscriber<T>(params: DeleteSubscriberInput): Promise<T>;
    describeBudget<T>(params: DescribeBudgetInput): Promise<T>;
    describeBudgetAction<T>(params: DescribeBudgetActionInput): Promise<T>;
    describeBudgetActionHistories<T>(params: DescribeBudgetActionHistoriesInput): Promise<T>;
    describeBudgetActionsForAccount<T>(params: DescribeBudgetActionsForAccountInput): Promise<T>;
    describeBudgetActionsForBudget<T>(params: DescribeBudgetActionsForBudgetInput): Promise<T>;
    describeBudgetNotificationsForAccount<T>(params: DescribeBudgetNotificationsForAccountInput): Promise<T>;
    describeBudgetPerformanceHistory<T>(params: DescribeBudgetPerformanceHistoryInput): Promise<T>;
    describeBudgets<T>(params: DescribeBudgetsInput): Promise<T>;
    describeNotificationsForBudget<T>(params: DescribeNotificationsForBudgetInput): Promise<T>;
    describeSubscribersForNotification<T>(params: DescribeSubscribersForNotificationInput): Promise<T>;
    executeBudgetAction<T>(params: ExecuteBudgetActionInput): Promise<T>;
    listTagsForResource<T>(params: ListTagsForResourceInput): Promise<T>;
    tagResource<T>(params: TagResourceInput): Promise<T>;
    untagResource<T>(params: UntagResourceInput): Promise<T>;
    updateBudget<T>(params: UpdateBudgetInput): Promise<T>;
    updateBudgetAction<T>(params: UpdateBudgetActionInput): Promise<T>;
    updateNotification<T>(params: UpdateNotificationInput): Promise<T>;
    updateSubscriber<T>(params: UpdateSubscriberInput): Promise<T>;
}
//# sourceMappingURL=Budgets.d.ts.map