import * as core from "@terrascript/core"; export interface NotificationArgs extends core.SchemaArgs { comparisonOperator: string | core.StringOut; notificationType: string | core.StringOut; subscriberEmailAddresses?: core.Array | core.ArrayOut; subscriberSnsTopicArns?: core.Array | core.ArrayOut; threshold: number | core.NumberOut; thresholdType: string | core.StringOut; } export class Notification extends core.Schema { @core.attr(String) public comparisonOperator!: string | core.StringOut; @core.attr(String) public notificationType!: string | core.StringOut; @core.attr(String, { kind: "array" }) public subscriberEmailAddresses?: | core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public subscriberSnsTopicArns?: | core.Array | core.ArrayOut; @core.attr(Number) public threshold!: number | core.NumberOut; @core.attr(String) public thresholdType!: string | core.StringOut; } export interface CostTypesArgs extends core.SchemaArgs { includeCredit?: boolean | core.BooleanOut; includeDiscount?: boolean | core.BooleanOut; includeOtherSubscription?: boolean | core.BooleanOut; includeRecurring?: boolean | core.BooleanOut; includeRefund?: boolean | core.BooleanOut; includeSubscription?: boolean | core.BooleanOut; includeSupport?: boolean | core.BooleanOut; includeTax?: boolean | core.BooleanOut; includeUpfront?: boolean | core.BooleanOut; useAmortized?: boolean | core.BooleanOut; useBlended?: boolean | core.BooleanOut; } export class CostTypes extends core.Schema { @core.attr(Boolean) public includeCredit?: boolean | core.BooleanOut; @core.attr(Boolean) public includeDiscount?: boolean | core.BooleanOut; @core.attr(Boolean) public includeOtherSubscription?: boolean | core.BooleanOut; @core.attr(Boolean) public includeRecurring?: boolean | core.BooleanOut; @core.attr(Boolean) public includeRefund?: boolean | core.BooleanOut; @core.attr(Boolean) public includeSubscription?: boolean | core.BooleanOut; @core.attr(Boolean) public includeSupport?: boolean | core.BooleanOut; @core.attr(Boolean) public includeTax?: boolean | core.BooleanOut; @core.attr(Boolean) public includeUpfront?: boolean | core.BooleanOut; @core.attr(Boolean) public useAmortized?: boolean | core.BooleanOut; @core.attr(Boolean) public useBlended?: boolean | core.BooleanOut; } export interface CostFilterArgs extends core.SchemaArgs { name: string | core.StringOut; values: core.Array | core.ArrayOut; } export class CostFilter extends core.Schema { @core.attr(String) public name!: string | core.StringOut; @core.attr(String, { kind: "array" }) public values!: core.Array | core.ArrayOut; } export interface BudgetArgs extends core.ResourceArgs { /** * (Optional) The ID of the target account for budget. Will use current user's account_id by default if * omitted. */ accountId?: string | core.StringOut; /** * (Required) Whether this budget tracks monetary cost or usage. */ budgetType: string | core.StringOut; /** * (Optional) A list of [CostFilter](#cost-filter) name/values pair to apply to budget. */ costFilter?: core.Array | core.ArrayOut; /** * (Optional, **Deprecated**) Map of [CostFilters](#cost-filters) key/value pairs to apply to the budge * t. */ costFilters?: core.Map | core.MapOut; /** * (Optional) Object containing [CostTypes](#cost-types) The types of cost included in a budget, such a * s tax and subscriptions. */ costTypes?: CostTypes; /** * (Required) The amount of cost or usage being measured for a budget. */ limitAmount: string | core.StringOut; /** * (Required) The unit of measurement used for the budget forecast, actual spend, or budget threshold, * such as dollars or GB. See [Spend](http://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/data- * type-spend.html) documentation. */ limitUnit: string | core.StringOut; /** * (Optional) The name of a budget. Unique within accounts. */ name?: string | core.StringOut; /** * (Optional) The prefix of the name of a budget. Unique within accounts. */ namePrefix?: string | core.StringOut; /** * (Optional) Object containing [Budget Notifications](#budget-notification). Can be used multiple time * s to define more than one budget notification */ notification?: core.Array | core.ArrayOut; /** * (Optional) The end of the time period covered by the budget. There are no restrictions on the end da * te. Format: `2017-01-01_12:00`. */ timePeriodEnd?: string | core.StringOut; /** * (Optional) The start of the time period covered by the budget. If you don't specify a start date, AW * S defaults to the start of your chosen time period. The start date must come before the end date. Fo * rmat: `2017-01-01_12:00`. */ timePeriodStart?: string | core.StringOut; /** * (Required) The length of time until a budget resets the actual and forecasted spend. Valid values: ` * MONTHLY`, `QUARTERLY`, `ANNUALLY`, and `DAILY`. */ timeUnit: string | core.StringOut; } export class Budget extends core.Resource { /** * (Optional) The ID of the target account for budget. Will use current user's account_id by default if * omitted. */ @core.attr(String, { computed: true }) public accountId?: string | core.StringOut; /** * The ARN of the budget. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * (Required) Whether this budget tracks monetary cost or usage. */ @core.attr(String) public budgetType!: string | core.StringOut; /** * (Optional) A list of [CostFilter](#cost-filter) name/values pair to apply to budget. */ @core.attr(CostFilter, { computed: true, kind: "array" }) public costFilter?: core.Array | core.ArrayOut; /** * (Optional, **Deprecated**) Map of [CostFilters](#cost-filters) key/value pairs to apply to the budge * t. */ @core.attr(String, { computed: true, kind: "map" }) public costFilters?: core.Map | core.MapOut; /** * (Optional) Object containing [CostTypes](#cost-types) The types of cost included in a budget, such a * s tax and subscriptions. */ @core.attr(CostTypes, { computed: true }) public costTypes?: CostTypes; /** * id of resource. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Required) The amount of cost or usage being measured for a budget. */ @core.attr(String) public limitAmount!: string | core.StringOut; /** * (Required) The unit of measurement used for the budget forecast, actual spend, or budget threshold, * such as dollars or GB. See [Spend](http://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/data- * type-spend.html) documentation. */ @core.attr(String) public limitUnit!: string | core.StringOut; /** * (Optional) The name of a budget. Unique within accounts. */ @core.attr(String, { computed: true }) public name?: string | core.StringOut; /** * (Optional) The prefix of the name of a budget. Unique within accounts. */ @core.attr(String, { computed: true }) public namePrefix?: string | core.StringOut; /** * (Optional) Object containing [Budget Notifications](#budget-notification). Can be used multiple time * s to define more than one budget notification */ @core.attr(Notification, { kind: "array" }) public notification?: core.Array | core.ArrayOut; /** * (Optional) The end of the time period covered by the budget. There are no restrictions on the end da * te. Format: `2017-01-01_12:00`. */ @core.attr(String) public timePeriodEnd?: string | core.StringOut; /** * (Optional) The start of the time period covered by the budget. If you don't specify a start date, AW * S defaults to the start of your chosen time period. The start date must come before the end date. Fo * rmat: `2017-01-01_12:00`. */ @core.attr(String, { computed: true }) public timePeriodStart?: string | core.StringOut; /** * (Required) The length of time until a budget resets the actual and forecasted spend. Valid values: ` * MONTHLY`, `QUARTERLY`, `ANNUALLY`, and `DAILY`. */ @core.attr(String) public timeUnit!: string | core.StringOut; constructor(name: string, args?: BudgetArgs) { super(name, "aws_budgets_budget", args); } public override getNamespace(): string { return "aws_budgets"; } }