import * as core from "@terrascript/core";

export interface UserStorageArgs extends core.SchemaArgs {
  capacity: string | core.StringOut;
}

export class UserStorage extends core.Schema<UserStorageArgs> {
  @core.attr(String, { computed: true })
  public capacity!: string | core.StringOut;
}

export interface RootStorageArgs extends core.SchemaArgs {
  capacity: string | core.StringOut;
}

export class RootStorage extends core.Schema<RootStorageArgs> {
  @core.attr(String, { computed: true })
  public capacity!: string | core.StringOut;
}

export interface ComputeTypeArgs extends core.SchemaArgs {
  name: string | core.StringOut;
}

export class ComputeType extends core.Schema<ComputeTypeArgs> {
  @core.attr(String, { computed: true })
  public name!: string | core.StringOut;
}

export interface DsBundleArgs {
  bundleId?: string | core.StringOut;

  name?: string | core.StringOut;

  owner?: string | core.StringOut;
}

export class DsBundle extends core.Data<DsBundleArgs> {
  @core.attr(String)
  public bundleId?: string | core.StringOut;

  @core.attr(ComputeType, { computed: true, kind: "array" })
  public computeType!: core.Array<ComputeType> | core.ArrayOut<ComputeType>;

  @core.attr(String, { computed: true })
  public description!: string | core.StringOut;

  @core.attr(String, { computed: true })
  public id!: string | core.StringOut;

  @core.attr(String)
  public name?: string | core.StringOut;

  @core.attr(String)
  public owner?: string | core.StringOut;

  @core.attr(RootStorage, { computed: true, kind: "array" })
  public rootStorage!: core.Array<RootStorage> | core.ArrayOut<RootStorage>;

  @core.attr(UserStorage, { computed: true, kind: "array" })
  public userStorage!: core.Array<UserStorage> | core.ArrayOut<UserStorage>;

  constructor(name: string, args?: DsBundleArgs) {
    super(name, "aws_workspaces_bundle", args);
  }

  public override getNamespace(): string {
    return "aws_workspaces";
  }
}
