import * as core from "@terrascript/core"; export interface InheritedValueArgs extends core.SchemaArgs { dimensionKey?: string | core.StringOut; dimensionName?: string | core.StringOut; } export class InheritedValue extends core.Schema { @core.attr(String) public dimensionKey?: string | core.StringOut; @core.attr(String) public dimensionName?: string | core.StringOut; } export interface CostCategoryBlkArgs extends core.SchemaArgs { key?: string | core.StringOut; matchOptions?: core.Array | core.ArrayOut; values?: core.Array | core.ArrayOut; } export class CostCategoryBlk extends core.Schema { @core.attr(String) public key?: string | core.StringOut; @core.attr(String, { kind: "array" }) public matchOptions?: core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public values?: core.Array | core.ArrayOut; } export interface DimensionArgs extends core.SchemaArgs { key?: string | core.StringOut; matchOptions?: core.Array | core.ArrayOut; values?: core.Array | core.ArrayOut; } export class Dimension extends core.Schema { @core.attr(String) public key?: string | core.StringOut; @core.attr(String, { kind: "array" }) public matchOptions?: core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public values?: core.Array | core.ArrayOut; } export interface TagsArgs extends core.SchemaArgs { key?: string | core.StringOut; matchOptions?: core.Array | core.ArrayOut; values?: core.Array | core.ArrayOut; } export class Tags extends core.Schema { @core.attr(String) public key?: string | core.StringOut; @core.attr(String, { kind: "array" }) public matchOptions?: core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public values?: core.Array | core.ArrayOut; } export interface NotArgs extends core.SchemaArgs { costCategory?: CostCategoryBlk; dimension?: Dimension; tags?: Tags; } export class Not extends core.Schema { @core.attr(CostCategoryBlk) public costCategory?: CostCategoryBlk; @core.attr(Dimension) public dimension?: Dimension; @core.attr(Tags) public tags?: Tags; } export interface OrArgs extends core.SchemaArgs { costCategory?: CostCategoryBlk; dimension?: Dimension; tags?: Tags; } export class Or extends core.Schema { @core.attr(CostCategoryBlk) public costCategory?: CostCategoryBlk; @core.attr(Dimension) public dimension?: Dimension; @core.attr(Tags) public tags?: Tags; } export interface AndArgs extends core.SchemaArgs { costCategory?: CostCategoryBlk; dimension?: Dimension; tags?: Tags; } export class And extends core.Schema { @core.attr(CostCategoryBlk) public costCategory?: CostCategoryBlk; @core.attr(Dimension) public dimension?: Dimension; @core.attr(Tags) public tags?: Tags; } export interface RuleRuleArgs extends core.SchemaArgs { and?: core.Array | core.ArrayOut; costCategory?: CostCategoryBlk; dimension?: Dimension; not?: Not; or?: core.Array | core.ArrayOut; tags?: Tags; } export class RuleRule extends core.Schema { @core.attr(And, { kind: "array" }) public and?: core.Array | core.ArrayOut; @core.attr(CostCategoryBlk) public costCategory?: CostCategoryBlk; @core.attr(Dimension) public dimension?: Dimension; @core.attr(Not) public not?: Not; @core.attr(Or, { kind: "array" }) public or?: core.Array | core.ArrayOut; @core.attr(Tags) public tags?: Tags; } export interface RuleArgs extends core.SchemaArgs { inheritedValue?: InheritedValue; rule?: RuleRule; type?: string | core.StringOut; value?: string | core.StringOut; } export class Rule extends core.Schema { @core.attr(InheritedValue) public inheritedValue?: InheritedValue; @core.attr(RuleRule) public rule?: RuleRule; @core.attr(String) public type?: string | core.StringOut; @core.attr(String) public value?: string | core.StringOut; } export interface ParameterArgs extends core.SchemaArgs { type?: string | core.StringOut; values?: core.Array | core.ArrayOut; } export class Parameter extends core.Schema { @core.attr(String) public type?: string | core.StringOut; @core.attr(String, { kind: "array" }) public values?: core.Array | core.ArrayOut; } export interface SplitChargeRuleArgs extends core.SchemaArgs { method: string | core.StringOut; parameter?: core.Array | core.ArrayOut; source: string | core.StringOut; targets: core.Array | core.ArrayOut; } export class SplitChargeRule extends core.Schema { @core.attr(String) public method!: string | core.StringOut; @core.attr(Parameter, { kind: "array" }) public parameter?: core.Array | core.ArrayOut; @core.attr(String) public source!: string | core.StringOut; @core.attr(String, { kind: "array" }) public targets!: core.Array | core.ArrayOut; } export interface CostCategoryArgs extends core.ResourceArgs { /** * (Optional) Default value for the cost category. */ defaultValue?: string | core.StringOut; /** * (Required) Unique name for the Cost Category. */ name: string | core.StringOut; /** * (Required) Configuration block for the Cost Category rules used to categorize costs. See below. */ rule: core.Array | core.ArrayOut; /** * (Required) Rule schema version in this particular Cost Category. */ ruleVersion: string | core.StringOut; /** * (Optional) Configuration block for the split charge rules used to allocate your charges between your * Cost Category values. See below. */ splitChargeRule?: | core.Array | core.ArrayOut; /** * (Optional) Key-value mapping of resource tags. If configured with a provider [`default_tags` configu * ration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configu * ration-block) present, tags with matching keys will overwrite those defined at the provider-level. */ tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ tagsAll?: core.Map | core.MapOut; } export class CostCategory extends core.Resource { /** * ARN of the cost category. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * (Optional) Default value for the cost category. */ @core.attr(String) public defaultValue?: string | core.StringOut; /** * Effective end data of your Cost Category. */ @core.attr(String, { computed: true }) public effectiveEnd!: string | core.StringOut; /** * Effective state data of your Cost Category. */ @core.attr(String, { computed: true }) public effectiveStart!: string | core.StringOut; /** * Unique ID of the cost category. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Required) Unique name for the Cost Category. */ @core.attr(String) public name!: string | core.StringOut; /** * (Required) Configuration block for the Cost Category rules used to categorize costs. See below. */ @core.attr(Rule, { kind: "array" }) public rule!: core.Array | core.ArrayOut; /** * (Required) Rule schema version in this particular Cost Category. */ @core.attr(String) public ruleVersion!: string | core.StringOut; /** * (Optional) Configuration block for the split charge rules used to allocate your charges between your * Cost Category values. See below. */ @core.attr(SplitChargeRule, { kind: "array" }) public splitChargeRule?: | core.Array | core.ArrayOut; /** * (Optional) Key-value mapping of resource tags. If configured with a provider [`default_tags` configu * ration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configu * ration-block) present, tags with matching keys will overwrite those defined at the provider-level. */ @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ @core.attr(String, { computed: true, kind: "map" }) public tagsAll?: core.Map | core.MapOut; constructor(name: string, args?: CostCategoryArgs) { super(name, "aws_ce_cost_category", args); } public override getNamespace(): string { return "aws_ce"; } }