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

export interface NetworkDirectionArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class NetworkDirection extends core.Schema<NetworkDirectionArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface RecordStateArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class RecordState extends core.Schema<RecordStateArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ResourceAwsS3BucketOwnerNameArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ResourceAwsS3BucketOwnerName extends core.Schema<ResourceAwsS3BucketOwnerNameArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface MalwarePathArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class MalwarePath extends core.Schema<MalwarePathArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ResourceAwsS3BucketOwnerIdArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ResourceAwsS3BucketOwnerId extends core.Schema<ResourceAwsS3BucketOwnerIdArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface NetworkDestinationIpv4Args extends core.SchemaArgs {
  cidr: string | core.StringOut;
}

export class NetworkDestinationIpv4 extends core.Schema<NetworkDestinationIpv4Args> {
  @core.attr(String)
  public cidr!: string | core.StringOut;
}

export interface NetworkDestinationIpv6Args extends core.SchemaArgs {
  cidr: string | core.StringOut;
}

export class NetworkDestinationIpv6 extends core.Schema<NetworkDestinationIpv6Args> {
  @core.attr(String)
  public cidr!: string | core.StringOut;
}

export interface NoteUpdatedByArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class NoteUpdatedBy extends core.Schema<NoteUpdatedByArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ThreatIntelIndicatorSourceArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ThreatIntelIndicatorSource extends core.Schema<ThreatIntelIndicatorSourceArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ResourceRegionArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ResourceRegion extends core.Schema<ResourceRegionArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface RecommendationTextArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class RecommendationText extends core.Schema<RecommendationTextArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface FindingProviderFieldsCriticalityArgs extends core.SchemaArgs {
  eq?: string | core.StringOut;

  gte?: string | core.StringOut;

  lte?: string | core.StringOut;
}

export class FindingProviderFieldsCriticality extends core.Schema<FindingProviderFieldsCriticalityArgs> {
  @core.attr(String)
  public eq?: string | core.StringOut;

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

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

export interface FindingProviderFieldsRelatedFindingsIdArgs
  extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class FindingProviderFieldsRelatedFindingsId extends core.Schema<FindingProviderFieldsRelatedFindingsIdArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ResourceAwsEc2InstanceVpcIdArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ResourceAwsEc2InstanceVpcId extends core.Schema<ResourceAwsEc2InstanceVpcIdArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface DateRangeArgs extends core.SchemaArgs {
  unit: string | core.StringOut;

  value: number | core.NumberOut;
}

export class DateRange extends core.Schema<DateRangeArgs> {
  @core.attr(String)
  public unit!: string | core.StringOut;

  @core.attr(Number)
  public value!: number | core.NumberOut;
}

export interface LastObservedAtArgs extends core.SchemaArgs {
  dateRange?: DateRange;

  end?: string | core.StringOut;

  start?: string | core.StringOut;
}

export class LastObservedAt extends core.Schema<LastObservedAtArgs> {
  @core.attr(DateRange)
  public dateRange?: DateRange;

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

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

export interface ResourceContainerImageIdArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ResourceContainerImageId extends core.Schema<ResourceContainerImageIdArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ResourceContainerLaunchedAtArgs extends core.SchemaArgs {
  dateRange?: DateRange;

  end?: string | core.StringOut;

  start?: string | core.StringOut;
}

export class ResourceContainerLaunchedAt extends core.Schema<ResourceContainerLaunchedAtArgs> {
  @core.attr(DateRange)
  public dateRange?: DateRange;

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

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

export interface ProcessPathArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ProcessPath extends core.Schema<ProcessPathArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface KeywordArgs extends core.SchemaArgs {
  value: string | core.StringOut;
}

export class Keyword extends core.Schema<KeywordArgs> {
  @core.attr(String)
  public value!: string | core.StringOut;
}

export interface UserDefinedValuesArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  key: string | core.StringOut;

  value: string | core.StringOut;
}

export class UserDefinedValues extends core.Schema<UserDefinedValuesArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

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

export interface MalwareTypeArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class MalwareType extends core.Schema<MalwareTypeArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ThreatIntelIndicatorValueArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ThreatIntelIndicatorValue extends core.Schema<ThreatIntelIndicatorValueArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ResourceAwsEc2InstanceSubnetIdArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ResourceAwsEc2InstanceSubnetId extends core.Schema<ResourceAwsEc2InstanceSubnetIdArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface NetworkSourceDomainArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class NetworkSourceDomain extends core.Schema<NetworkSourceDomainArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface NetworkSourcePortArgs extends core.SchemaArgs {
  eq?: string | core.StringOut;

  gte?: string | core.StringOut;

  lte?: string | core.StringOut;
}

export class NetworkSourcePort extends core.Schema<NetworkSourcePortArgs> {
  @core.attr(String)
  public eq?: string | core.StringOut;

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

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

export interface ResourceTagsArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  key: string | core.StringOut;

  value: string | core.StringOut;
}

export class ResourceTags extends core.Schema<ResourceTagsArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

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

export interface SeverityLabelArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class SeverityLabel extends core.Schema<SeverityLabelArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface TypeArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class Type extends core.Schema<TypeArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface NetworkSourceMacArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class NetworkSourceMac extends core.Schema<NetworkSourceMacArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ResourceTypeArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ResourceType extends core.Schema<ResourceTypeArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface WorkflowStatusArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class WorkflowStatus extends core.Schema<WorkflowStatusArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ResourceAwsEc2InstanceTypeArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ResourceAwsEc2InstanceType extends core.Schema<ResourceAwsEc2InstanceTypeArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ProductFieldsArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  key: string | core.StringOut;

  value: string | core.StringOut;
}

export class ProductFields extends core.Schema<ProductFieldsArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

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

export interface ProcessLaunchedAtArgs extends core.SchemaArgs {
  dateRange?: DateRange;

  end?: string | core.StringOut;

  start?: string | core.StringOut;
}

export class ProcessLaunchedAt extends core.Schema<ProcessLaunchedAtArgs> {
  @core.attr(DateRange)
  public dateRange?: DateRange;

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

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

export interface FirstObservedAtArgs extends core.SchemaArgs {
  dateRange?: DateRange;

  end?: string | core.StringOut;

  start?: string | core.StringOut;
}

export class FirstObservedAt extends core.Schema<FirstObservedAtArgs> {
  @core.attr(DateRange)
  public dateRange?: DateRange;

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

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

export interface ProcessTerminatedAtArgs extends core.SchemaArgs {
  dateRange?: DateRange;

  end?: string | core.StringOut;

  start?: string | core.StringOut;
}

export class ProcessTerminatedAt extends core.Schema<ProcessTerminatedAtArgs> {
  @core.attr(DateRange)
  public dateRange?: DateRange;

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

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

export interface NoteTextArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class NoteText extends core.Schema<NoteTextArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface CreatedAtArgs extends core.SchemaArgs {
  dateRange?: DateRange;

  end?: string | core.StringOut;

  start?: string | core.StringOut;
}

export class CreatedAt extends core.Schema<CreatedAtArgs> {
  @core.attr(DateRange)
  public dateRange?: DateRange;

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

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

export interface UpdatedAtArgs extends core.SchemaArgs {
  dateRange?: DateRange;

  end?: string | core.StringOut;

  start?: string | core.StringOut;
}

export class UpdatedAt extends core.Schema<UpdatedAtArgs> {
  @core.attr(DateRange)
  public dateRange?: DateRange;

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

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

export interface ProductArnArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ProductArn extends core.Schema<ProductArnArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ComplianceStatusArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ComplianceStatus extends core.Schema<ComplianceStatusArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface SourceUrlArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class SourceUrl extends core.Schema<SourceUrlArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ProcessPidArgs extends core.SchemaArgs {
  eq?: string | core.StringOut;

  gte?: string | core.StringOut;

  lte?: string | core.StringOut;
}

export class ProcessPid extends core.Schema<ProcessPidArgs> {
  @core.attr(String)
  public eq?: string | core.StringOut;

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

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

export interface FindingProviderFieldsConfidenceArgs extends core.SchemaArgs {
  eq?: string | core.StringOut;

  gte?: string | core.StringOut;

  lte?: string | core.StringOut;
}

export class FindingProviderFieldsConfidence extends core.Schema<FindingProviderFieldsConfidenceArgs> {
  @core.attr(String)
  public eq?: string | core.StringOut;

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

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

export interface ResourceAwsIamAccessKeyUserNameArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ResourceAwsIamAccessKeyUserName extends core.Schema<ResourceAwsIamAccessKeyUserNameArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface FindingProviderFieldsSeverityLabelArgs
  extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class FindingProviderFieldsSeverityLabel extends core.Schema<FindingProviderFieldsSeverityLabelArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface NetworkSourceIpv6Args extends core.SchemaArgs {
  cidr: string | core.StringOut;
}

export class NetworkSourceIpv6 extends core.Schema<NetworkSourceIpv6Args> {
  @core.attr(String)
  public cidr!: string | core.StringOut;
}

export interface ProcessParentPidArgs extends core.SchemaArgs {
  eq?: string | core.StringOut;

  gte?: string | core.StringOut;

  lte?: string | core.StringOut;
}

export class ProcessParentPid extends core.Schema<ProcessParentPidArgs> {
  @core.attr(String)
  public eq?: string | core.StringOut;

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

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

export interface ResourceAwsEc2InstanceKeyNameArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ResourceAwsEc2InstanceKeyName extends core.Schema<ResourceAwsEc2InstanceKeyNameArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface FindingProviderFieldsRelatedFindingsProductArnArgs
  extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class FindingProviderFieldsRelatedFindingsProductArn extends core.Schema<FindingProviderFieldsRelatedFindingsProductArnArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ResourceContainerImageNameArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ResourceContainerImageName extends core.Schema<ResourceContainerImageNameArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface CompanyNameArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class CompanyName extends core.Schema<CompanyNameArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface NoteUpdatedAtArgs extends core.SchemaArgs {
  dateRange?: DateRange;

  end?: string | core.StringOut;

  start?: string | core.StringOut;
}

export class NoteUpdatedAt extends core.Schema<NoteUpdatedAtArgs> {
  @core.attr(DateRange)
  public dateRange?: DateRange;

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

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

export interface ProcessNameArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ProcessName extends core.Schema<ProcessNameArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface RelatedFindingsIdArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class RelatedFindingsId extends core.Schema<RelatedFindingsIdArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface RelatedFindingsProductArnArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class RelatedFindingsProductArn extends core.Schema<RelatedFindingsProductArnArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface FindingProviderFieldsSeverityOriginalArgs
  extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class FindingProviderFieldsSeverityOriginal extends core.Schema<FindingProviderFieldsSeverityOriginalArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface DescriptionArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class Description extends core.Schema<DescriptionArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface VerificationStateArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class VerificationState extends core.Schema<VerificationStateArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ThreatIntelIndicatorCategoryArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ThreatIntelIndicatorCategory extends core.Schema<ThreatIntelIndicatorCategoryArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface TitleArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class Title extends core.Schema<TitleArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface GeneratorIdArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class GeneratorId extends core.Schema<GeneratorIdArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ResourcePartitionArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ResourcePartition extends core.Schema<ResourcePartitionArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface CriticalityArgs extends core.SchemaArgs {
  eq?: string | core.StringOut;

  gte?: string | core.StringOut;

  lte?: string | core.StringOut;
}

export class Criticality extends core.Schema<CriticalityArgs> {
  @core.attr(String)
  public eq?: string | core.StringOut;

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

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

export interface NetworkDestinationPortArgs extends core.SchemaArgs {
  eq?: string | core.StringOut;

  gte?: string | core.StringOut;

  lte?: string | core.StringOut;
}

export class NetworkDestinationPort extends core.Schema<NetworkDestinationPortArgs> {
  @core.attr(String)
  public eq?: string | core.StringOut;

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

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

export interface FindingProviderFieldsTypesArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class FindingProviderFieldsTypes extends core.Schema<FindingProviderFieldsTypesArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ResourceAwsIamAccessKeyCreatedAtArgs extends core.SchemaArgs {
  dateRange?: DateRange;

  end?: string | core.StringOut;

  start?: string | core.StringOut;
}

export class ResourceAwsIamAccessKeyCreatedAt extends core.Schema<ResourceAwsIamAccessKeyCreatedAtArgs> {
  @core.attr(DateRange)
  public dateRange?: DateRange;

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

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

export interface NetworkSourceIpv4Args extends core.SchemaArgs {
  cidr: string | core.StringOut;
}

export class NetworkSourceIpv4 extends core.Schema<NetworkSourceIpv4Args> {
  @core.attr(String)
  public cidr!: string | core.StringOut;
}

export interface ThreatIntelIndicatorLastObservedAtArgs
  extends core.SchemaArgs {
  dateRange?: DateRange;

  end?: string | core.StringOut;

  start?: string | core.StringOut;
}

export class ThreatIntelIndicatorLastObservedAt extends core.Schema<ThreatIntelIndicatorLastObservedAtArgs> {
  @core.attr(DateRange)
  public dateRange?: DateRange;

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

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

export interface ResourceIdArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ResourceId extends core.Schema<ResourceIdArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ResourceAwsEc2InstanceLaunchedAtArgs extends core.SchemaArgs {
  dateRange?: DateRange;

  end?: string | core.StringOut;

  start?: string | core.StringOut;
}

export class ResourceAwsEc2InstanceLaunchedAt extends core.Schema<ResourceAwsEc2InstanceLaunchedAtArgs> {
  @core.attr(DateRange)
  public dateRange?: DateRange;

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

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

export interface MalwareNameArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class MalwareName extends core.Schema<MalwareNameArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface MalwareStateArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class MalwareState extends core.Schema<MalwareStateArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ConfidenceArgs extends core.SchemaArgs {
  eq?: string | core.StringOut;

  gte?: string | core.StringOut;

  lte?: string | core.StringOut;
}

export class Confidence extends core.Schema<ConfidenceArgs> {
  @core.attr(String)
  public eq?: string | core.StringOut;

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

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

export interface ThreatIntelIndicatorSourceUrlArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ThreatIntelIndicatorSourceUrl extends core.Schema<ThreatIntelIndicatorSourceUrlArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ProductNameArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ProductName extends core.Schema<ProductNameArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ResourceAwsEc2InstanceImageIdArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ResourceAwsEc2InstanceImageId extends core.Schema<ResourceAwsEc2InstanceImageIdArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ResourceAwsEc2InstanceIpv4AddressesArgs
  extends core.SchemaArgs {
  cidr: string | core.StringOut;
}

export class ResourceAwsEc2InstanceIpv4Addresses extends core.Schema<ResourceAwsEc2InstanceIpv4AddressesArgs> {
  @core.attr(String)
  public cidr!: string | core.StringOut;
}

export interface ResourceAwsEc2InstanceIamInstanceProfileArnArgs
  extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ResourceAwsEc2InstanceIamInstanceProfileArn extends core.Schema<ResourceAwsEc2InstanceIamInstanceProfileArnArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ResourceContainerNameArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ResourceContainerName extends core.Schema<ResourceContainerNameArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface AwsAccountIdArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class AwsAccountId extends core.Schema<AwsAccountIdArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface IdArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class Id extends core.Schema<IdArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ResourceAwsEc2InstanceIpv6AddressesArgs
  extends core.SchemaArgs {
  cidr: string | core.StringOut;
}

export class ResourceAwsEc2InstanceIpv6Addresses extends core.Schema<ResourceAwsEc2InstanceIpv6AddressesArgs> {
  @core.attr(String)
  public cidr!: string | core.StringOut;
}

export interface ResourceDetailsOtherArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  key: string | core.StringOut;

  value: string | core.StringOut;
}

export class ResourceDetailsOther extends core.Schema<ResourceDetailsOtherArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

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

export interface ResourceAwsIamAccessKeyStatusArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ResourceAwsIamAccessKeyStatus extends core.Schema<ResourceAwsIamAccessKeyStatusArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface ThreatIntelIndicatorTypeArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class ThreatIntelIndicatorType extends core.Schema<ThreatIntelIndicatorTypeArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface NetworkDestinationDomainArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class NetworkDestinationDomain extends core.Schema<NetworkDestinationDomainArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface NetworkProtocolArgs extends core.SchemaArgs {
  comparison: string | core.StringOut;

  value: string | core.StringOut;
}

export class NetworkProtocol extends core.Schema<NetworkProtocolArgs> {
  @core.attr(String)
  public comparison!: string | core.StringOut;

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

export interface FiltersArgs extends core.SchemaArgs {
  awsAccountId?: core.Array<AwsAccountId> | core.ArrayOut<AwsAccountId>;

  companyName?: core.Array<CompanyName> | core.ArrayOut<CompanyName>;

  complianceStatus?:
    | core.Array<ComplianceStatus>
    | core.ArrayOut<ComplianceStatus>;

  confidence?: core.Array<Confidence> | core.ArrayOut<Confidence>;

  createdAt?: core.Array<CreatedAt> | core.ArrayOut<CreatedAt>;

  criticality?: core.Array<Criticality> | core.ArrayOut<Criticality>;

  description?: core.Array<Description> | core.ArrayOut<Description>;

  findingProviderFieldsConfidence?:
    | core.Array<FindingProviderFieldsConfidence>
    | core.ArrayOut<FindingProviderFieldsConfidence>;

  findingProviderFieldsCriticality?:
    | core.Array<FindingProviderFieldsCriticality>
    | core.ArrayOut<FindingProviderFieldsCriticality>;

  findingProviderFieldsRelatedFindingsId?:
    | core.Array<FindingProviderFieldsRelatedFindingsId>
    | core.ArrayOut<FindingProviderFieldsRelatedFindingsId>;

  findingProviderFieldsRelatedFindingsProductArn?:
    | core.Array<FindingProviderFieldsRelatedFindingsProductArn>
    | core.ArrayOut<FindingProviderFieldsRelatedFindingsProductArn>;

  findingProviderFieldsSeverityLabel?:
    | core.Array<FindingProviderFieldsSeverityLabel>
    | core.ArrayOut<FindingProviderFieldsSeverityLabel>;

  findingProviderFieldsSeverityOriginal?:
    | core.Array<FindingProviderFieldsSeverityOriginal>
    | core.ArrayOut<FindingProviderFieldsSeverityOriginal>;

  findingProviderFieldsTypes?:
    | core.Array<FindingProviderFieldsTypes>
    | core.ArrayOut<FindingProviderFieldsTypes>;

  firstObservedAt?:
    | core.Array<FirstObservedAt>
    | core.ArrayOut<FirstObservedAt>;

  generatorId?: core.Array<GeneratorId> | core.ArrayOut<GeneratorId>;

  id?: core.Array<Id> | core.ArrayOut<Id>;

  keyword?: core.Array<Keyword> | core.ArrayOut<Keyword>;

  lastObservedAt?: core.Array<LastObservedAt> | core.ArrayOut<LastObservedAt>;

  malwareName?: core.Array<MalwareName> | core.ArrayOut<MalwareName>;

  malwarePath?: core.Array<MalwarePath> | core.ArrayOut<MalwarePath>;

  malwareState?: core.Array<MalwareState> | core.ArrayOut<MalwareState>;

  malwareType?: core.Array<MalwareType> | core.ArrayOut<MalwareType>;

  networkDestinationDomain?:
    | core.Array<NetworkDestinationDomain>
    | core.ArrayOut<NetworkDestinationDomain>;

  networkDestinationIpv4?:
    | core.Array<NetworkDestinationIpv4>
    | core.ArrayOut<NetworkDestinationIpv4>;

  networkDestinationIpv6?:
    | core.Array<NetworkDestinationIpv6>
    | core.ArrayOut<NetworkDestinationIpv6>;

  networkDestinationPort?:
    | core.Array<NetworkDestinationPort>
    | core.ArrayOut<NetworkDestinationPort>;

  networkDirection?:
    | core.Array<NetworkDirection>
    | core.ArrayOut<NetworkDirection>;

  networkProtocol?:
    | core.Array<NetworkProtocol>
    | core.ArrayOut<NetworkProtocol>;

  networkSourceDomain?:
    | core.Array<NetworkSourceDomain>
    | core.ArrayOut<NetworkSourceDomain>;

  networkSourceIpv4?:
    | core.Array<NetworkSourceIpv4>
    | core.ArrayOut<NetworkSourceIpv4>;

  networkSourceIpv6?:
    | core.Array<NetworkSourceIpv6>
    | core.ArrayOut<NetworkSourceIpv6>;

  networkSourceMac?:
    | core.Array<NetworkSourceMac>
    | core.ArrayOut<NetworkSourceMac>;

  networkSourcePort?:
    | core.Array<NetworkSourcePort>
    | core.ArrayOut<NetworkSourcePort>;

  noteText?: core.Array<NoteText> | core.ArrayOut<NoteText>;

  noteUpdatedAt?: core.Array<NoteUpdatedAt> | core.ArrayOut<NoteUpdatedAt>;

  noteUpdatedBy?: core.Array<NoteUpdatedBy> | core.ArrayOut<NoteUpdatedBy>;

  processLaunchedAt?:
    | core.Array<ProcessLaunchedAt>
    | core.ArrayOut<ProcessLaunchedAt>;

  processName?: core.Array<ProcessName> | core.ArrayOut<ProcessName>;

  processParentPid?:
    | core.Array<ProcessParentPid>
    | core.ArrayOut<ProcessParentPid>;

  processPath?: core.Array<ProcessPath> | core.ArrayOut<ProcessPath>;

  processPid?: core.Array<ProcessPid> | core.ArrayOut<ProcessPid>;

  processTerminatedAt?:
    | core.Array<ProcessTerminatedAt>
    | core.ArrayOut<ProcessTerminatedAt>;

  productArn?: core.Array<ProductArn> | core.ArrayOut<ProductArn>;

  productFields?: core.Array<ProductFields> | core.ArrayOut<ProductFields>;

  productName?: core.Array<ProductName> | core.ArrayOut<ProductName>;

  recommendationText?:
    | core.Array<RecommendationText>
    | core.ArrayOut<RecommendationText>;

  recordState?: core.Array<RecordState> | core.ArrayOut<RecordState>;

  relatedFindingsId?:
    | core.Array<RelatedFindingsId>
    | core.ArrayOut<RelatedFindingsId>;

  relatedFindingsProductArn?:
    | core.Array<RelatedFindingsProductArn>
    | core.ArrayOut<RelatedFindingsProductArn>;

  resourceAwsEc2InstanceIamInstanceProfileArn?:
    | core.Array<ResourceAwsEc2InstanceIamInstanceProfileArn>
    | core.ArrayOut<ResourceAwsEc2InstanceIamInstanceProfileArn>;

  resourceAwsEc2InstanceImageId?:
    | core.Array<ResourceAwsEc2InstanceImageId>
    | core.ArrayOut<ResourceAwsEc2InstanceImageId>;

  resourceAwsEc2InstanceIpv4Addresses?:
    | core.Array<ResourceAwsEc2InstanceIpv4Addresses>
    | core.ArrayOut<ResourceAwsEc2InstanceIpv4Addresses>;

  resourceAwsEc2InstanceIpv6Addresses?:
    | core.Array<ResourceAwsEc2InstanceIpv6Addresses>
    | core.ArrayOut<ResourceAwsEc2InstanceIpv6Addresses>;

  resourceAwsEc2InstanceKeyName?:
    | core.Array<ResourceAwsEc2InstanceKeyName>
    | core.ArrayOut<ResourceAwsEc2InstanceKeyName>;

  resourceAwsEc2InstanceLaunchedAt?:
    | core.Array<ResourceAwsEc2InstanceLaunchedAt>
    | core.ArrayOut<ResourceAwsEc2InstanceLaunchedAt>;

  resourceAwsEc2InstanceSubnetId?:
    | core.Array<ResourceAwsEc2InstanceSubnetId>
    | core.ArrayOut<ResourceAwsEc2InstanceSubnetId>;

  resourceAwsEc2InstanceType?:
    | core.Array<ResourceAwsEc2InstanceType>
    | core.ArrayOut<ResourceAwsEc2InstanceType>;

  resourceAwsEc2InstanceVpcId?:
    | core.Array<ResourceAwsEc2InstanceVpcId>
    | core.ArrayOut<ResourceAwsEc2InstanceVpcId>;

  resourceAwsIamAccessKeyCreatedAt?:
    | core.Array<ResourceAwsIamAccessKeyCreatedAt>
    | core.ArrayOut<ResourceAwsIamAccessKeyCreatedAt>;

  resourceAwsIamAccessKeyStatus?:
    | core.Array<ResourceAwsIamAccessKeyStatus>
    | core.ArrayOut<ResourceAwsIamAccessKeyStatus>;

  resourceAwsIamAccessKeyUserName?:
    | core.Array<ResourceAwsIamAccessKeyUserName>
    | core.ArrayOut<ResourceAwsIamAccessKeyUserName>;

  resourceAwsS3BucketOwnerId?:
    | core.Array<ResourceAwsS3BucketOwnerId>
    | core.ArrayOut<ResourceAwsS3BucketOwnerId>;

  resourceAwsS3BucketOwnerName?:
    | core.Array<ResourceAwsS3BucketOwnerName>
    | core.ArrayOut<ResourceAwsS3BucketOwnerName>;

  resourceContainerImageId?:
    | core.Array<ResourceContainerImageId>
    | core.ArrayOut<ResourceContainerImageId>;

  resourceContainerImageName?:
    | core.Array<ResourceContainerImageName>
    | core.ArrayOut<ResourceContainerImageName>;

  resourceContainerLaunchedAt?:
    | core.Array<ResourceContainerLaunchedAt>
    | core.ArrayOut<ResourceContainerLaunchedAt>;

  resourceContainerName?:
    | core.Array<ResourceContainerName>
    | core.ArrayOut<ResourceContainerName>;

  resourceDetailsOther?:
    | core.Array<ResourceDetailsOther>
    | core.ArrayOut<ResourceDetailsOther>;

  resourceId?: core.Array<ResourceId> | core.ArrayOut<ResourceId>;

  resourcePartition?:
    | core.Array<ResourcePartition>
    | core.ArrayOut<ResourcePartition>;

  resourceRegion?: core.Array<ResourceRegion> | core.ArrayOut<ResourceRegion>;

  resourceTags?: core.Array<ResourceTags> | core.ArrayOut<ResourceTags>;

  resourceType?: core.Array<ResourceType> | core.ArrayOut<ResourceType>;

  severityLabel?: core.Array<SeverityLabel> | core.ArrayOut<SeverityLabel>;

  sourceUrl?: core.Array<SourceUrl> | core.ArrayOut<SourceUrl>;

  threatIntelIndicatorCategory?:
    | core.Array<ThreatIntelIndicatorCategory>
    | core.ArrayOut<ThreatIntelIndicatorCategory>;

  threatIntelIndicatorLastObservedAt?:
    | core.Array<ThreatIntelIndicatorLastObservedAt>
    | core.ArrayOut<ThreatIntelIndicatorLastObservedAt>;

  threatIntelIndicatorSource?:
    | core.Array<ThreatIntelIndicatorSource>
    | core.ArrayOut<ThreatIntelIndicatorSource>;

  threatIntelIndicatorSourceUrl?:
    | core.Array<ThreatIntelIndicatorSourceUrl>
    | core.ArrayOut<ThreatIntelIndicatorSourceUrl>;

  threatIntelIndicatorType?:
    | core.Array<ThreatIntelIndicatorType>
    | core.ArrayOut<ThreatIntelIndicatorType>;

  threatIntelIndicatorValue?:
    | core.Array<ThreatIntelIndicatorValue>
    | core.ArrayOut<ThreatIntelIndicatorValue>;

  title?: core.Array<Title> | core.ArrayOut<Title>;

  type?: core.Array<Type> | core.ArrayOut<Type>;

  updatedAt?: core.Array<UpdatedAt> | core.ArrayOut<UpdatedAt>;

  userDefinedValues?:
    | core.Array<UserDefinedValues>
    | core.ArrayOut<UserDefinedValues>;

  verificationState?:
    | core.Array<VerificationState>
    | core.ArrayOut<VerificationState>;

  workflowStatus?: core.Array<WorkflowStatus> | core.ArrayOut<WorkflowStatus>;
}

export class Filters extends core.Schema<FiltersArgs> {
  @core.attr(AwsAccountId, { kind: "array" })
  public awsAccountId?: core.Array<AwsAccountId> | core.ArrayOut<AwsAccountId>;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

export interface InsightArgs extends core.ResourceArgs {
  filters: Filters;

  groupByAttribute: string | core.StringOut;

  name: string | core.StringOut;
}

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

  @core.attr(Filters)
  public filters!: Filters;

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

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

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

  constructor(name: string, args?: InsightArgs) {
    super(name, "aws_securityhub_insight", args);
  }

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