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

export interface ApnsChannelArgs extends core.ResourceArgs {
  /**
   * (Required) The application ID.
   */
  applicationId: string | core.StringOut;

  /**
   * (Required) The ID assigned to your iOS app. To find this value, choose Certificates, IDs & Profiles,
   * choose App IDs in the Identifiers section, and choose your app.
   */
  bundleId?: string | core.StringOut;

  /**
   * (Required) The pem encoded TLS Certificate from Apple.
   */
  certificate?: string | core.StringOut;

  /**
   * (Optional) The default authentication method used for APNs.
   */
  defaultAuthenticationMethod?: string | core.StringOut;

  /**
   * (Optional) Whether the channel is enabled or disabled. Defaults to `true`.
   */
  enabled?: boolean | core.BooleanOut;

  /**
   * (Required) The Certificate Private Key file (ie. `.key` file).
   */
  privateKey?: string | core.StringOut;

  /**
   * (Required) The ID assigned to your Apple developer account team. This value is provided on the Membe
   * rship page.
   */
  teamId?: string | core.StringOut;

  /**
   * (Required) The `.p8` file that you download from your Apple developer account when you create an aut
   * hentication key.
   */
  tokenKey?: string | core.StringOut;

  /**
   * (Required) The ID assigned to your signing key. To find this value, choose Certificates, IDs & Profi
   * les, and choose your key in the Keys section.
   */
  tokenKeyId?: string | core.StringOut;
}

export class ApnsChannel extends core.Resource<ApnsChannelArgs> {
  /**
   * (Required) The application ID.
   */
  @core.attr(String)
  public applicationId!: string | core.StringOut;

  /**
   * (Required) The ID assigned to your iOS app. To find this value, choose Certificates, IDs & Profiles,
   * choose App IDs in the Identifiers section, and choose your app.
   */
  @core.attr(String)
  public bundleId?: string | core.StringOut;

  /**
   * (Required) The pem encoded TLS Certificate from Apple.
   */
  @core.attr(String)
  public certificate?: string | core.StringOut;

  /**
   * (Optional) The default authentication method used for APNs.
   */
  @core.attr(String)
  public defaultAuthenticationMethod?: string | core.StringOut;

  /**
   * (Optional) Whether the channel is enabled or disabled. Defaults to `true`.
   */
  @core.attr(Boolean)
  public enabled?: boolean | core.BooleanOut;

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

  /**
   * (Required) The Certificate Private Key file (ie. `.key` file).
   */
  @core.attr(String)
  public privateKey?: string | core.StringOut;

  /**
   * (Required) The ID assigned to your Apple developer account team. This value is provided on the Membe
   * rship page.
   */
  @core.attr(String)
  public teamId?: string | core.StringOut;

  /**
   * (Required) The `.p8` file that you download from your Apple developer account when you create an aut
   * hentication key.
   */
  @core.attr(String)
  public tokenKey?: string | core.StringOut;

  /**
   * (Required) The ID assigned to your signing key. To find this value, choose Certificates, IDs & Profi
   * les, and choose your key in the Keys section.
   */
  @core.attr(String)
  public tokenKeyId?: string | core.StringOut;

  constructor(name: string, args?: ApnsChannelArgs) {
    super(name, "aws_pinpoint_apns_channel", args);
  }

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