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

export interface NodeInfoListArgs extends core.SchemaArgs {
  attachedEniId: string | core.StringOut;

  brokerId: number | core.NumberOut;

  clientSubnet: string | core.StringOut;

  clientVpcIpAddress: string | core.StringOut;

  endpoints: core.Array<string> | core.ArrayOut<core.StringOut>;

  nodeArn: string | core.StringOut;
}

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

  @core.attr(Number, { computed: true })
  public brokerId!: number | core.NumberOut;

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

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

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

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

export interface DsMskBrokerNodesArgs {
  clusterArn: string | core.StringOut;
}

export class DsMskBrokerNodes extends core.Data<DsMskBrokerNodesArgs> {
  @core.attr(String)
  public clusterArn!: string | core.StringOut;

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

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

  constructor(name: string, args?: DsMskBrokerNodesArgs) {
    super(name, "aws_msk_broker_nodes", args);
  }

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