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

export interface CommonAttributesArgs extends core.SchemaArgs {
  name: string | core.StringOut;

  value: string | core.StringOut;
}

export class CommonAttributes extends core.Schema<CommonAttributesArgs> {
  @core.attr(String)
  public name!: string | core.StringOut;

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

export interface RequestConfigurationArgs extends core.SchemaArgs {
  commonAttributes?:
    | core.Array<CommonAttributes>
    | core.ArrayOut<CommonAttributes>;

  contentEncoding?: string | core.StringOut;
}

export class RequestConfiguration extends core.Schema<RequestConfigurationArgs> {
  @core.attr(CommonAttributes, { kind: "array" })
  public commonAttributes?:
    | core.Array<CommonAttributes>
    | core.ArrayOut<CommonAttributes>;

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

export interface CloudwatchLoggingOptionsArgs extends core.SchemaArgs {
  enabled?: boolean | core.BooleanOut;

  logGroupName?: string | core.StringOut;

  logStreamName?: string | core.StringOut;
}

export class CloudwatchLoggingOptions extends core.Schema<CloudwatchLoggingOptionsArgs> {
  @core.attr(Boolean)
  public enabled?: boolean | core.BooleanOut;

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

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

export interface ParametersArgs extends core.SchemaArgs {
  parameterName: string | core.StringOut;

  parameterValue: string | core.StringOut;
}

export class Parameters extends core.Schema<ParametersArgs> {
  @core.attr(String)
  public parameterName!: string | core.StringOut;

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

export interface ProcessorsArgs extends core.SchemaArgs {
  parameters?: core.Array<Parameters> | core.ArrayOut<Parameters>;

  type: string | core.StringOut;
}

export class Processors extends core.Schema<ProcessorsArgs> {
  @core.attr(Parameters, { kind: "array" })
  public parameters?: core.Array<Parameters> | core.ArrayOut<Parameters>;

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

export interface ProcessingConfigurationArgs extends core.SchemaArgs {
  enabled?: boolean | core.BooleanOut;

  processors?: core.Array<Processors> | core.ArrayOut<Processors>;
}

export class ProcessingConfiguration extends core.Schema<ProcessingConfigurationArgs> {
  @core.attr(Boolean)
  public enabled?: boolean | core.BooleanOut;

  @core.attr(Processors, { kind: "array" })
  public processors?: core.Array<Processors> | core.ArrayOut<Processors>;
}

export interface HttpEndpointConfigurationArgs extends core.SchemaArgs {
  accessKey?: string | core.StringOut;

  bufferingInterval?: number | core.NumberOut;

  bufferingSize?: number | core.NumberOut;

  cloudwatchLoggingOptions?: CloudwatchLoggingOptions;

  name?: string | core.StringOut;

  processingConfiguration?: ProcessingConfiguration;

  requestConfiguration?: RequestConfiguration;

  retryDuration?: number | core.NumberOut;

  roleArn?: string | core.StringOut;

  s3BackupMode?: string | core.StringOut;

  url: string | core.StringOut;
}

export class HttpEndpointConfiguration extends core.Schema<HttpEndpointConfigurationArgs> {
  @core.attr(String)
  public accessKey?: string | core.StringOut;

  @core.attr(Number)
  public bufferingInterval?: number | core.NumberOut;

  @core.attr(Number)
  public bufferingSize?: number | core.NumberOut;

  @core.attr(CloudwatchLoggingOptions, { computed: true })
  public cloudwatchLoggingOptions?: CloudwatchLoggingOptions;

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

  @core.attr(ProcessingConfiguration)
  public processingConfiguration?: ProcessingConfiguration;

  @core.attr(RequestConfiguration, { computed: true })
  public requestConfiguration?: RequestConfiguration;

  @core.attr(Number)
  public retryDuration?: number | core.NumberOut;

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

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

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

export interface S3ConfigurationArgs extends core.SchemaArgs {
  bucketArn: string | core.StringOut;

  bufferInterval?: number | core.NumberOut;

  bufferSize?: number | core.NumberOut;

  cloudwatchLoggingOptions?: CloudwatchLoggingOptions;

  compressionFormat?: string | core.StringOut;

  errorOutputPrefix?: string | core.StringOut;

  kmsKeyArn?: string | core.StringOut;

  prefix?: string | core.StringOut;

  roleArn: string | core.StringOut;
}

export class S3Configuration extends core.Schema<S3ConfigurationArgs> {
  @core.attr(String)
  public bucketArn!: string | core.StringOut;

  @core.attr(Number)
  public bufferInterval?: number | core.NumberOut;

  @core.attr(Number)
  public bufferSize?: number | core.NumberOut;

  @core.attr(CloudwatchLoggingOptions, { computed: true })
  public cloudwatchLoggingOptions?: CloudwatchLoggingOptions;

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

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

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

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

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

export interface ServerSideEncryptionArgs extends core.SchemaArgs {
  enabled?: boolean | core.BooleanOut;

  keyArn?: string | core.StringOut;

  keyType?: string | core.StringOut;
}

export class ServerSideEncryption extends core.Schema<ServerSideEncryptionArgs> {
  @core.attr(Boolean)
  public enabled?: boolean | core.BooleanOut;

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

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

export interface S3BackupConfigurationArgs extends core.SchemaArgs {
  bucketArn: string | core.StringOut;

  bufferInterval?: number | core.NumberOut;

  bufferSize?: number | core.NumberOut;

  cloudwatchLoggingOptions?: CloudwatchLoggingOptions;

  compressionFormat?: string | core.StringOut;

  errorOutputPrefix?: string | core.StringOut;

  kmsKeyArn?: string | core.StringOut;

  prefix?: string | core.StringOut;

  roleArn: string | core.StringOut;
}

export class S3BackupConfiguration extends core.Schema<S3BackupConfigurationArgs> {
  @core.attr(String)
  public bucketArn!: string | core.StringOut;

  @core.attr(Number)
  public bufferInterval?: number | core.NumberOut;

  @core.attr(Number)
  public bufferSize?: number | core.NumberOut;

  @core.attr(CloudwatchLoggingOptions, { computed: true })
  public cloudwatchLoggingOptions?: CloudwatchLoggingOptions;

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

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

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

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

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

export interface RedshiftConfigurationArgs extends core.SchemaArgs {
  cloudwatchLoggingOptions?: CloudwatchLoggingOptions;

  clusterJdbcurl: string | core.StringOut;

  copyOptions?: string | core.StringOut;

  dataTableColumns?: string | core.StringOut;

  dataTableName: string | core.StringOut;

  password: string | core.StringOut;

  processingConfiguration?: ProcessingConfiguration;

  retryDuration?: number | core.NumberOut;

  roleArn: string | core.StringOut;

  s3BackupConfiguration?: S3BackupConfiguration;

  s3BackupMode?: string | core.StringOut;

  username: string | core.StringOut;
}

export class RedshiftConfiguration extends core.Schema<RedshiftConfigurationArgs> {
  @core.attr(CloudwatchLoggingOptions, { computed: true })
  public cloudwatchLoggingOptions?: CloudwatchLoggingOptions;

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

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

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

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

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

  @core.attr(ProcessingConfiguration)
  public processingConfiguration?: ProcessingConfiguration;

  @core.attr(Number)
  public retryDuration?: number | core.NumberOut;

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

  @core.attr(S3BackupConfiguration)
  public s3BackupConfiguration?: S3BackupConfiguration;

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

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

export interface HiveJsonSerDeArgs extends core.SchemaArgs {
  timestampFormats?: core.Array<string> | core.ArrayOut<core.StringOut>;
}

export class HiveJsonSerDe extends core.Schema<HiveJsonSerDeArgs> {
  @core.attr(String, { kind: "array" })
  public timestampFormats?: core.Array<string> | core.ArrayOut<core.StringOut>;
}

export interface OpenXJsonSerDeArgs extends core.SchemaArgs {
  caseInsensitive?: boolean | core.BooleanOut;

  columnToJsonKeyMappings?:
    | core.Map<string, string>
    | core.MapOut<core.StringOut>;

  convertDotsInJsonKeysToUnderscores?: boolean | core.BooleanOut;
}

export class OpenXJsonSerDe extends core.Schema<OpenXJsonSerDeArgs> {
  @core.attr(Boolean)
  public caseInsensitive?: boolean | core.BooleanOut;

  @core.attr(String, { kind: "map" })
  public columnToJsonKeyMappings?:
    | core.Map<string, string>
    | core.MapOut<core.StringOut>;

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

export interface DeserializerArgs extends core.SchemaArgs {
  hiveJsonSerDe?: HiveJsonSerDe;

  openXJsonSerDe?: OpenXJsonSerDe;
}

export class Deserializer extends core.Schema<DeserializerArgs> {
  @core.attr(HiveJsonSerDe)
  public hiveJsonSerDe?: HiveJsonSerDe;

  @core.attr(OpenXJsonSerDe)
  public openXJsonSerDe?: OpenXJsonSerDe;
}

export interface InputFormatConfigurationArgs extends core.SchemaArgs {
  deserializer: Deserializer;
}

export class InputFormatConfiguration extends core.Schema<InputFormatConfigurationArgs> {
  @core.attr(Deserializer)
  public deserializer!: Deserializer;
}

export interface ParquetSerDeArgs extends core.SchemaArgs {
  blockSizeBytes?: number | core.NumberOut;

  compression?: string | core.StringOut;

  enableDictionaryCompression?: boolean | core.BooleanOut;

  maxPaddingBytes?: number | core.NumberOut;

  pageSizeBytes?: number | core.NumberOut;

  writerVersion?: string | core.StringOut;
}

export class ParquetSerDe extends core.Schema<ParquetSerDeArgs> {
  @core.attr(Number)
  public blockSizeBytes?: number | core.NumberOut;

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

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

  @core.attr(Number)
  public maxPaddingBytes?: number | core.NumberOut;

  @core.attr(Number)
  public pageSizeBytes?: number | core.NumberOut;

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

export interface OrcSerDeArgs extends core.SchemaArgs {
  blockSizeBytes?: number | core.NumberOut;

  bloomFilterColumns?: core.Array<string> | core.ArrayOut<core.StringOut>;

  bloomFilterFalsePositiveProbability?: number | core.NumberOut;

  compression?: string | core.StringOut;

  dictionaryKeyThreshold?: number | core.NumberOut;

  enablePadding?: boolean | core.BooleanOut;

  formatVersion?: string | core.StringOut;

  paddingTolerance?: number | core.NumberOut;

  rowIndexStride?: number | core.NumberOut;

  stripeSizeBytes?: number | core.NumberOut;
}

export class OrcSerDe extends core.Schema<OrcSerDeArgs> {
  @core.attr(Number)
  public blockSizeBytes?: number | core.NumberOut;

  @core.attr(String, { kind: "array" })
  public bloomFilterColumns?:
    | core.Array<string>
    | core.ArrayOut<core.StringOut>;

  @core.attr(Number)
  public bloomFilterFalsePositiveProbability?: number | core.NumberOut;

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

  @core.attr(Number)
  public dictionaryKeyThreshold?: number | core.NumberOut;

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

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

  @core.attr(Number)
  public paddingTolerance?: number | core.NumberOut;

  @core.attr(Number)
  public rowIndexStride?: number | core.NumberOut;

  @core.attr(Number)
  public stripeSizeBytes?: number | core.NumberOut;
}

export interface SerializerArgs extends core.SchemaArgs {
  orcSerDe?: OrcSerDe;

  parquetSerDe?: ParquetSerDe;
}

export class Serializer extends core.Schema<SerializerArgs> {
  @core.attr(OrcSerDe)
  public orcSerDe?: OrcSerDe;

  @core.attr(ParquetSerDe)
  public parquetSerDe?: ParquetSerDe;
}

export interface OutputFormatConfigurationArgs extends core.SchemaArgs {
  serializer: Serializer;
}

export class OutputFormatConfiguration extends core.Schema<OutputFormatConfigurationArgs> {
  @core.attr(Serializer)
  public serializer!: Serializer;
}

export interface SchemaConfigurationArgs extends core.SchemaArgs {
  catalogId?: string | core.StringOut;

  databaseName: string | core.StringOut;

  region?: string | core.StringOut;

  roleArn: string | core.StringOut;

  tableName: string | core.StringOut;

  versionId?: string | core.StringOut;
}

export class SchemaConfiguration extends core.Schema<SchemaConfigurationArgs> {
  @core.attr(String, { computed: true })
  public catalogId?: string | core.StringOut;

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

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

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

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

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

export interface DataFormatConversionConfigurationArgs extends core.SchemaArgs {
  enabled?: boolean | core.BooleanOut;

  inputFormatConfiguration: InputFormatConfiguration;

  outputFormatConfiguration: OutputFormatConfiguration;

  schemaConfiguration: SchemaConfiguration;
}

export class DataFormatConversionConfiguration extends core.Schema<DataFormatConversionConfigurationArgs> {
  @core.attr(Boolean)
  public enabled?: boolean | core.BooleanOut;

  @core.attr(InputFormatConfiguration)
  public inputFormatConfiguration!: InputFormatConfiguration;

  @core.attr(OutputFormatConfiguration)
  public outputFormatConfiguration!: OutputFormatConfiguration;

  @core.attr(SchemaConfiguration)
  public schemaConfiguration!: SchemaConfiguration;
}

export interface DynamicPartitioningConfigurationArgs extends core.SchemaArgs {
  enabled?: boolean | core.BooleanOut;

  retryDuration?: number | core.NumberOut;
}

export class DynamicPartitioningConfiguration extends core.Schema<DynamicPartitioningConfigurationArgs> {
  @core.attr(Boolean)
  public enabled?: boolean | core.BooleanOut;

  @core.attr(Number)
  public retryDuration?: number | core.NumberOut;
}

export interface ExtendedS3ConfigurationArgs extends core.SchemaArgs {
  bucketArn: string | core.StringOut;

  bufferInterval?: number | core.NumberOut;

  bufferSize?: number | core.NumberOut;

  cloudwatchLoggingOptions?: CloudwatchLoggingOptions;

  compressionFormat?: string | core.StringOut;

  dataFormatConversionConfiguration?: DataFormatConversionConfiguration;

  dynamicPartitioningConfiguration?: DynamicPartitioningConfiguration;

  errorOutputPrefix?: string | core.StringOut;

  kmsKeyArn?: string | core.StringOut;

  prefix?: string | core.StringOut;

  processingConfiguration?: ProcessingConfiguration;

  roleArn: string | core.StringOut;

  s3BackupConfiguration?: S3BackupConfiguration;

  s3BackupMode?: string | core.StringOut;
}

export class ExtendedS3Configuration extends core.Schema<ExtendedS3ConfigurationArgs> {
  @core.attr(String)
  public bucketArn!: string | core.StringOut;

  @core.attr(Number)
  public bufferInterval?: number | core.NumberOut;

  @core.attr(Number)
  public bufferSize?: number | core.NumberOut;

  @core.attr(CloudwatchLoggingOptions, { computed: true })
  public cloudwatchLoggingOptions?: CloudwatchLoggingOptions;

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

  @core.attr(DataFormatConversionConfiguration)
  public dataFormatConversionConfiguration?: DataFormatConversionConfiguration;

  @core.attr(DynamicPartitioningConfiguration)
  public dynamicPartitioningConfiguration?: DynamicPartitioningConfiguration;

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

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

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

  @core.attr(ProcessingConfiguration)
  public processingConfiguration?: ProcessingConfiguration;

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

  @core.attr(S3BackupConfiguration)
  public s3BackupConfiguration?: S3BackupConfiguration;

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

export interface VpcConfigArgs extends core.SchemaArgs {
  roleArn: string | core.StringOut;

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

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

  vpcId: string | core.StringOut;
}

export class VpcConfig extends core.Schema<VpcConfigArgs> {
  @core.attr(String)
  public roleArn!: string | core.StringOut;

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

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

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

export interface ElasticsearchConfigurationArgs extends core.SchemaArgs {
  bufferingInterval?: number | core.NumberOut;

  bufferingSize?: number | core.NumberOut;

  cloudwatchLoggingOptions?: CloudwatchLoggingOptions;

  clusterEndpoint?: string | core.StringOut;

  domainArn?: string | core.StringOut;

  indexName: string | core.StringOut;

  indexRotationPeriod?: string | core.StringOut;

  processingConfiguration?: ProcessingConfiguration;

  retryDuration?: number | core.NumberOut;

  roleArn: string | core.StringOut;

  s3BackupMode?: string | core.StringOut;

  typeName?: string | core.StringOut;

  vpcConfig?: VpcConfig;
}

export class ElasticsearchConfiguration extends core.Schema<ElasticsearchConfigurationArgs> {
  @core.attr(Number)
  public bufferingInterval?: number | core.NumberOut;

  @core.attr(Number)
  public bufferingSize?: number | core.NumberOut;

  @core.attr(CloudwatchLoggingOptions, { computed: true })
  public cloudwatchLoggingOptions?: CloudwatchLoggingOptions;

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

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

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

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

  @core.attr(ProcessingConfiguration)
  public processingConfiguration?: ProcessingConfiguration;

  @core.attr(Number)
  public retryDuration?: number | core.NumberOut;

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

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

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

  @core.attr(VpcConfig)
  public vpcConfig?: VpcConfig;
}

export interface SplunkConfigurationArgs extends core.SchemaArgs {
  cloudwatchLoggingOptions?: CloudwatchLoggingOptions;

  hecAcknowledgmentTimeout?: number | core.NumberOut;

  hecEndpoint: string | core.StringOut;

  hecEndpointType?: string | core.StringOut;

  hecToken: string | core.StringOut;

  processingConfiguration?: ProcessingConfiguration;

  retryDuration?: number | core.NumberOut;

  s3BackupMode?: string | core.StringOut;
}

export class SplunkConfiguration extends core.Schema<SplunkConfigurationArgs> {
  @core.attr(CloudwatchLoggingOptions, { computed: true })
  public cloudwatchLoggingOptions?: CloudwatchLoggingOptions;

  @core.attr(Number)
  public hecAcknowledgmentTimeout?: number | core.NumberOut;

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

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

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

  @core.attr(ProcessingConfiguration)
  public processingConfiguration?: ProcessingConfiguration;

  @core.attr(Number)
  public retryDuration?: number | core.NumberOut;

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

export interface KinesisSourceConfigurationArgs extends core.SchemaArgs {
  kinesisStreamArn: string | core.StringOut;

  roleArn: string | core.StringOut;
}

export class KinesisSourceConfiguration extends core.Schema<KinesisSourceConfigurationArgs> {
  @core.attr(String)
  public kinesisStreamArn!: string | core.StringOut;

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

export interface DeliveryStreamArgs extends core.ResourceArgs {
  arn?: string | core.StringOut;

  destination: string | core.StringOut;

  destinationId?: string | core.StringOut;

  elasticsearchConfiguration?: ElasticsearchConfiguration;

  extendedS3Configuration?: ExtendedS3Configuration;

  httpEndpointConfiguration?: HttpEndpointConfiguration;

  kinesisSourceConfiguration?: KinesisSourceConfiguration;

  name: string | core.StringOut;

  redshiftConfiguration?: RedshiftConfiguration;

  s3Configuration?: S3Configuration;

  serverSideEncryption?: ServerSideEncryption;

  splunkConfiguration?: SplunkConfiguration;

  tags?: core.Map<string, string> | core.MapOut<core.StringOut>;

  tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;

  versionId?: string | core.StringOut;
}

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

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

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

  @core.attr(ElasticsearchConfiguration)
  public elasticsearchConfiguration?: ElasticsearchConfiguration;

  @core.attr(ExtendedS3Configuration)
  public extendedS3Configuration?: ExtendedS3Configuration;

  @core.attr(HttpEndpointConfiguration)
  public httpEndpointConfiguration?: HttpEndpointConfiguration;

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

  @core.attr(KinesisSourceConfiguration)
  public kinesisSourceConfiguration?: KinesisSourceConfiguration;

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

  @core.attr(RedshiftConfiguration)
  public redshiftConfiguration?: RedshiftConfiguration;

  @core.attr(S3Configuration)
  public s3Configuration?: S3Configuration;

  @core.attr(ServerSideEncryption)
  public serverSideEncryption?: ServerSideEncryption;

  @core.attr(SplunkConfiguration)
  public splunkConfiguration?: SplunkConfiguration;

  @core.attr(String, { kind: "map" })
  public tags?: core.Map<string, string> | core.MapOut<core.StringOut>;

  @core.attr(String, { computed: true, kind: "map" })
  public tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;

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

  constructor(name: string, args?: DeliveryStreamArgs) {
    super(name, "aws_kinesis_firehose_delivery_stream", args);
  }

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