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

export interface KeySigningKeyArgs extends core.ResourceArgs {
  hostedZoneId: string | core.StringOut;

  keyManagementServiceArn: string | core.StringOut;

  name: string | core.StringOut;

  status?: string | core.StringOut;
}

export class KeySigningKey extends core.Resource<KeySigningKeyArgs> {
  @core.attr(String, { computed: true })
  public digestAlgorithmMnemonic!: string | core.StringOut;

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

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

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

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

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

  @core.attr(String)
  public hostedZoneId!: string | core.StringOut;

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

  @core.attr(String)
  public keyManagementServiceArn!: string | core.StringOut;

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

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

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

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

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

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

  constructor(name: string, args?: KeySigningKeyArgs) {
    super(name, "aws_route53_key_signing_key", args);
  }

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