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

export interface DsMountTargetArgs {
  accessPointId?: string | core.StringOut;

  fileSystemId?: string | core.StringOut;

  mountTargetId?: string | core.StringOut;
}

export class DsMountTarget extends core.Data<DsMountTargetArgs> {
  @core.attr(String)
  public accessPointId?: string | core.StringOut;

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

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

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

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

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

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

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

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

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

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

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

  @core.attr(String, { computed: true, kind: "array" })
  public securityGroups!: core.Array<string> | core.ArrayOut<core.StringOut>;

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

  constructor(name: string, args?: DsMountTargetArgs) {
    super(name, "aws_efs_mount_target", args);
  }

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