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

export interface TrackingOptionsArgs extends core.SchemaArgs {
  customRedirectDomain?: string | core.StringOut;
}

export class TrackingOptions extends core.Schema<TrackingOptionsArgs> {
  @core.attr(String)
  public customRedirectDomain?: string | core.StringOut;
}

export interface DeliveryOptionsArgs extends core.SchemaArgs {
  tlsPolicy?: string | core.StringOut;
}

export class DeliveryOptions extends core.Schema<DeliveryOptionsArgs> {
  @core.attr(String)
  public tlsPolicy?: string | core.StringOut;
}

export interface ConfigurationSetArgs extends core.ResourceArgs {
  deliveryOptions?: DeliveryOptions;

  name: string | core.StringOut;

  reputationMetricsEnabled?: boolean | core.BooleanOut;

  sendingEnabled?: boolean | core.BooleanOut;

  trackingOptions?: TrackingOptions;
}

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

  @core.attr(DeliveryOptions)
  public deliveryOptions?: DeliveryOptions;

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

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

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

  @core.attr(Boolean)
  public reputationMetricsEnabled?: boolean | core.BooleanOut;

  @core.attr(Boolean)
  public sendingEnabled?: boolean | core.BooleanOut;

  @core.attr(TrackingOptions)
  public trackingOptions?: TrackingOptions;

  constructor(name: string, args?: ConfigurationSetArgs) {
    super(name, "aws_ses_configuration_set", args);
  }

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