import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client";
import { IoTServiceException as __BaseException } from "./IoTServiceException";
import {
  AbortConfig,
  AggregationType,
  AlertTarget,
  AlertTargetType,
  ApplicationProtocol,
  AttributePayload,
  AuditCheckConfiguration,
  AuditFrequency,
  AuditMitigationActionsTaskTarget,
  AuditNotificationTarget,
  AuditNotificationType,
  AuthenticationType,
  AuthInfo,
  AuthorizerConfig,
  AuthorizerStatus,
  AuthResult,
  AutoRegistrationStatus,
  Behavior,
  BillingGroupProperties,
  CertificateProviderOperation,
  ClientCertificateConfig,
  CustomMetricType,
  DayOfWeek,
  DimensionType,
  DimensionValueOperator,
  FleetMetricUnit,
  JobExecutionsRetryConfig,
  JobExecutionsRolloutConfig,
  LogLevel,
  MetricsExportConfig,
  MetricToRetain,
  MetricValue,
  MitigationActionParams,
  OTAUpdateStatus,
  PackageVersionArtifact,
  PackageVersionStatus,
  Policy,
  PresignedUrlConfig,
  ProvisioningHook,
  RelatedResource,
  ResourceIdentifier,
  ServerCertificateConfig,
  ServiceType,
  StreamFile,
  Tag,
  TargetSelection,
  TemplateType,
  ThingGroupProperties,
  ThingPrincipalType,
  ThingTypeProperties,
  TimeoutConfig,
  TlsConfig,
  TopicRuleDestinationStatus,
  TopicRulePayload,
  VerificationState,
  ViolationEventAdditionalInfo,
} from "./models_0";
import {
  BehaviorCriteriaType,
  CACertificateStatus,
  CertificateMode,
  CertificateStatus,
  Configuration,
  DetectMitigationActionsTaskSummary,
  DetectMitigationActionsTaskTarget,
  DomainConfigurationStatus,
  EventType,
  GroupNameAndArn,
  JobExecutionStatus,
  JobStatus,
  LogTargetType,
  MitigationActionType,
  RegistrationConfig,
  Status,
  ThingGroupIndexingConfiguration,
  ThingIndexingConfiguration,
  ThingTypeMetadata,
  VersionUpdateByJobsConfig,
  ViolationEventOccurrenceRange,
} from "./models_1";
export interface ListCustomMetricsResponse {
  metricNames?: string[] | undefined;
  nextToken?: string | undefined;
}
export interface ListDetectMitigationActionsExecutionsRequest {
  taskId?: string | undefined;
  violationId?: string | undefined;
  thingName?: string | undefined;
  startTime?: Date | undefined;
  endTime?: Date | undefined;
  maxResults?: number | undefined;
  nextToken?: string | undefined;
}
export declare const DetectMitigationActionExecutionStatus: {
  readonly FAILED: "FAILED";
  readonly IN_PROGRESS: "IN_PROGRESS";
  readonly SKIPPED: "SKIPPED";
  readonly SUCCESSFUL: "SUCCESSFUL";
};
export type DetectMitigationActionExecutionStatus =
  (typeof DetectMitigationActionExecutionStatus)[keyof typeof DetectMitigationActionExecutionStatus];
export interface DetectMitigationActionExecution {
  taskId?: string | undefined;
  violationId?: string | undefined;
  actionName?: string | undefined;
  thingName?: string | undefined;
  executionStartDate?: Date | undefined;
  executionEndDate?: Date | undefined;
  status?: DetectMitigationActionExecutionStatus | undefined;
  errorCode?: string | undefined;
  message?: string | undefined;
}
export interface ListDetectMitigationActionsExecutionsResponse {
  actionsExecutions?: DetectMitigationActionExecution[] | undefined;
  nextToken?: string | undefined;
}
export interface ListDetectMitigationActionsTasksRequest {
  maxResults?: number | undefined;
  nextToken?: string | undefined;
  startTime: Date | undefined;
  endTime: Date | undefined;
}
export interface ListDetectMitigationActionsTasksResponse {
  tasks?: DetectMitigationActionsTaskSummary[] | undefined;
  nextToken?: string | undefined;
}
export interface ListDimensionsRequest {
  nextToken?: string | undefined;
  maxResults?: number | undefined;
}
export interface ListDimensionsResponse {
  dimensionNames?: string[] | undefined;
  nextToken?: string | undefined;
}
export interface ListDomainConfigurationsRequest {
  marker?: string | undefined;
  pageSize?: number | undefined;
  serviceType?: ServiceType | undefined;
}
export interface DomainConfigurationSummary {
  domainConfigurationName?: string | undefined;
  domainConfigurationArn?: string | undefined;
  serviceType?: ServiceType | undefined;
}
export interface ListDomainConfigurationsResponse {
  domainConfigurations?: DomainConfigurationSummary[] | undefined;
  nextMarker?: string | undefined;
}
export interface ListFleetMetricsRequest {
  nextToken?: string | undefined;
  maxResults?: number | undefined;
}
export interface FleetMetricNameAndArn {
  metricName?: string | undefined;
  metricArn?: string | undefined;
}
export interface ListFleetMetricsResponse {
  fleetMetrics?: FleetMetricNameAndArn[] | undefined;
  nextToken?: string | undefined;
}
export interface ListIndicesRequest {
  nextToken?: string | undefined;
  maxResults?: number | undefined;
}
export interface ListIndicesResponse {
  indexNames?: string[] | undefined;
  nextToken?: string | undefined;
}
export interface ListJobExecutionsForJobRequest {
  jobId: string | undefined;
  status?: JobExecutionStatus | undefined;
  maxResults?: number | undefined;
  nextToken?: string | undefined;
}
export interface JobExecutionSummary {
  status?: JobExecutionStatus | undefined;
  queuedAt?: Date | undefined;
  startedAt?: Date | undefined;
  lastUpdatedAt?: Date | undefined;
  executionNumber?: number | undefined;
  retryAttempt?: number | undefined;
}
export interface JobExecutionSummaryForJob {
  thingArn?: string | undefined;
  jobExecutionSummary?: JobExecutionSummary | undefined;
}
export interface ListJobExecutionsForJobResponse {
  executionSummaries?: JobExecutionSummaryForJob[] | undefined;
  nextToken?: string | undefined;
}
export interface ListJobExecutionsForThingRequest {
  thingName: string | undefined;
  status?: JobExecutionStatus | undefined;
  namespaceId?: string | undefined;
  maxResults?: number | undefined;
  nextToken?: string | undefined;
  jobId?: string | undefined;
}
export interface JobExecutionSummaryForThing {
  jobId?: string | undefined;
  jobExecutionSummary?: JobExecutionSummary | undefined;
}
export interface ListJobExecutionsForThingResponse {
  executionSummaries?: JobExecutionSummaryForThing[] | undefined;
  nextToken?: string | undefined;
}
export interface ListJobsRequest {
  status?: JobStatus | undefined;
  targetSelection?: TargetSelection | undefined;
  maxResults?: number | undefined;
  nextToken?: string | undefined;
  thingGroupName?: string | undefined;
  thingGroupId?: string | undefined;
  namespaceId?: string | undefined;
}
export interface JobSummary {
  jobArn?: string | undefined;
  jobId?: string | undefined;
  thingGroupId?: string | undefined;
  targetSelection?: TargetSelection | undefined;
  status?: JobStatus | undefined;
  createdAt?: Date | undefined;
  lastUpdatedAt?: Date | undefined;
  completedAt?: Date | undefined;
  isConcurrent?: boolean | undefined;
}
export interface ListJobsResponse {
  jobs?: JobSummary[] | undefined;
  nextToken?: string | undefined;
}
export interface ListJobTemplatesRequest {
  maxResults?: number | undefined;
  nextToken?: string | undefined;
}
export interface JobTemplateSummary {
  jobTemplateArn?: string | undefined;
  jobTemplateId?: string | undefined;
  description?: string | undefined;
  createdAt?: Date | undefined;
}
export interface ListJobTemplatesResponse {
  jobTemplates?: JobTemplateSummary[] | undefined;
  nextToken?: string | undefined;
}
export interface ListManagedJobTemplatesRequest {
  templateName?: string | undefined;
  maxResults?: number | undefined;
  nextToken?: string | undefined;
}
export interface ManagedJobTemplateSummary {
  templateArn?: string | undefined;
  templateName?: string | undefined;
  description?: string | undefined;
  environments?: string[] | undefined;
  templateVersion?: string | undefined;
}
export interface ListManagedJobTemplatesResponse {
  managedJobTemplates?: ManagedJobTemplateSummary[] | undefined;
  nextToken?: string | undefined;
}
export interface ListMetricValuesRequest {
  thingName: string | undefined;
  metricName: string | undefined;
  dimensionName?: string | undefined;
  dimensionValueOperator?: DimensionValueOperator | undefined;
  startTime: Date | undefined;
  endTime: Date | undefined;
  maxResults?: number | undefined;
  nextToken?: string | undefined;
}
export interface MetricDatum {
  timestamp?: Date | undefined;
  value?: MetricValue | undefined;
}
export interface ListMetricValuesResponse {
  metricDatumList?: MetricDatum[] | undefined;
  nextToken?: string | undefined;
}
export interface ListMitigationActionsRequest {
  actionType?: MitigationActionType | undefined;
  maxResults?: number | undefined;
  nextToken?: string | undefined;
}
export interface MitigationActionIdentifier {
  actionName?: string | undefined;
  actionArn?: string | undefined;
  creationDate?: Date | undefined;
}
export interface ListMitigationActionsResponse {
  actionIdentifiers?: MitigationActionIdentifier[] | undefined;
  nextToken?: string | undefined;
}
export interface ListOTAUpdatesRequest {
  maxResults?: number | undefined;
  nextToken?: string | undefined;
  otaUpdateStatus?: OTAUpdateStatus | undefined;
}
export interface OTAUpdateSummary {
  otaUpdateId?: string | undefined;
  otaUpdateArn?: string | undefined;
  creationDate?: Date | undefined;
}
export interface ListOTAUpdatesResponse {
  otaUpdates?: OTAUpdateSummary[] | undefined;
  nextToken?: string | undefined;
}
export interface ListOutgoingCertificatesRequest {
  pageSize?: number | undefined;
  marker?: string | undefined;
  ascendingOrder?: boolean | undefined;
}
export interface OutgoingCertificate {
  certificateArn?: string | undefined;
  certificateId?: string | undefined;
  transferredTo?: string | undefined;
  transferDate?: Date | undefined;
  transferMessage?: string | undefined;
  creationDate?: Date | undefined;
}
export interface ListOutgoingCertificatesResponse {
  outgoingCertificates?: OutgoingCertificate[] | undefined;
  nextMarker?: string | undefined;
}
export interface ListPackagesRequest {
  maxResults?: number | undefined;
  nextToken?: string | undefined;
}
export interface PackageSummary {
  packageName?: string | undefined;
  defaultVersionName?: string | undefined;
  creationDate?: Date | undefined;
  lastModifiedDate?: Date | undefined;
}
export interface ListPackagesResponse {
  packageSummaries?: PackageSummary[] | undefined;
  nextToken?: string | undefined;
}
export interface ListPackageVersionsRequest {
  packageName: string | undefined;
  status?: PackageVersionStatus | undefined;
  maxResults?: number | undefined;
  nextToken?: string | undefined;
}
export interface PackageVersionSummary {
  packageName?: string | undefined;
  versionName?: string | undefined;
  status?: PackageVersionStatus | undefined;
  creationDate?: Date | undefined;
  lastModifiedDate?: Date | undefined;
}
export interface ListPackageVersionsResponse {
  packageVersionSummaries?: PackageVersionSummary[] | undefined;
  nextToken?: string | undefined;
}
export interface ListPoliciesRequest {
  marker?: string | undefined;
  pageSize?: number | undefined;
  ascendingOrder?: boolean | undefined;
}
export interface ListPoliciesResponse {
  policies?: Policy[] | undefined;
  nextMarker?: string | undefined;
}
export interface ListPolicyPrincipalsRequest {
  policyName: string | undefined;
  marker?: string | undefined;
  pageSize?: number | undefined;
  ascendingOrder?: boolean | undefined;
}
export interface ListPolicyPrincipalsResponse {
  principals?: string[] | undefined;
  nextMarker?: string | undefined;
}
export interface ListPolicyVersionsRequest {
  policyName: string | undefined;
}
export interface PolicyVersion {
  versionId?: string | undefined;
  isDefaultVersion?: boolean | undefined;
  createDate?: Date | undefined;
}
export interface ListPolicyVersionsResponse {
  policyVersions?: PolicyVersion[] | undefined;
}
export interface ListPrincipalPoliciesRequest {
  principal: string | undefined;
  marker?: string | undefined;
  pageSize?: number | undefined;
  ascendingOrder?: boolean | undefined;
}
export interface ListPrincipalPoliciesResponse {
  policies?: Policy[] | undefined;
  nextMarker?: string | undefined;
}
export interface ListPrincipalThingsRequest {
  nextToken?: string | undefined;
  maxResults?: number | undefined;
  principal: string | undefined;
}
export interface ListPrincipalThingsResponse {
  things?: string[] | undefined;
  nextToken?: string | undefined;
}
export interface ListPrincipalThingsV2Request {
  nextToken?: string | undefined;
  maxResults?: number | undefined;
  principal: string | undefined;
  thingPrincipalType?: ThingPrincipalType | undefined;
}
export interface PrincipalThingObject {
  thingName: string | undefined;
  thingPrincipalType?: ThingPrincipalType | undefined;
}
export interface ListPrincipalThingsV2Response {
  principalThingObjects?: PrincipalThingObject[] | undefined;
  nextToken?: string | undefined;
}
export interface ListProvisioningTemplatesRequest {
  maxResults?: number | undefined;
  nextToken?: string | undefined;
}
export interface ProvisioningTemplateSummary {
  templateArn?: string | undefined;
  templateName?: string | undefined;
  description?: string | undefined;
  creationDate?: Date | undefined;
  lastModifiedDate?: Date | undefined;
  enabled?: boolean | undefined;
  type?: TemplateType | undefined;
}
export interface ListProvisioningTemplatesResponse {
  templates?: ProvisioningTemplateSummary[] | undefined;
  nextToken?: string | undefined;
}
export interface ListProvisioningTemplateVersionsRequest {
  templateName: string | undefined;
  maxResults?: number | undefined;
  nextToken?: string | undefined;
}
export interface ProvisioningTemplateVersionSummary {
  versionId?: number | undefined;
  creationDate?: Date | undefined;
  isDefaultVersion?: boolean | undefined;
}
export interface ListProvisioningTemplateVersionsResponse {
  versions?: ProvisioningTemplateVersionSummary[] | undefined;
  nextToken?: string | undefined;
}
export interface ListRelatedResourcesForAuditFindingRequest {
  findingId: string | undefined;
  nextToken?: string | undefined;
  maxResults?: number | undefined;
}
export interface ListRelatedResourcesForAuditFindingResponse {
  relatedResources?: RelatedResource[] | undefined;
  nextToken?: string | undefined;
}
export interface ListRoleAliasesRequest {
  pageSize?: number | undefined;
  marker?: string | undefined;
  ascendingOrder?: boolean | undefined;
}
export interface ListRoleAliasesResponse {
  roleAliases?: string[] | undefined;
  nextMarker?: string | undefined;
}
export declare const SbomValidationResult: {
  readonly FAILED: "FAILED";
  readonly SUCCEEDED: "SUCCEEDED";
};
export type SbomValidationResult =
  (typeof SbomValidationResult)[keyof typeof SbomValidationResult];
export interface ListSbomValidationResultsRequest {
  packageName: string | undefined;
  versionName: string | undefined;
  validationResult?: SbomValidationResult | undefined;
  maxResults?: number | undefined;
  nextToken?: string | undefined;
}
export declare const SbomValidationErrorCode: {
  readonly FILE_SIZE_LIMIT_EXCEEDED: "FILE_SIZE_LIMIT_EXCEEDED";
  readonly INCOMPATIBLE_FORMAT: "INCOMPATIBLE_FORMAT";
};
export type SbomValidationErrorCode =
  (typeof SbomValidationErrorCode)[keyof typeof SbomValidationErrorCode];
export interface SbomValidationResultSummary {
  fileName?: string | undefined;
  validationResult?: SbomValidationResult | undefined;
  errorCode?: SbomValidationErrorCode | undefined;
  errorMessage?: string | undefined;
}
export interface ListSbomValidationResultsResponse {
  validationResultSummaries?: SbomValidationResultSummary[] | undefined;
  nextToken?: string | undefined;
}
export interface ListScheduledAuditsRequest {
  nextToken?: string | undefined;
  maxResults?: number | undefined;
}
export interface ScheduledAuditMetadata {
  scheduledAuditName?: string | undefined;
  scheduledAuditArn?: string | undefined;
  frequency?: AuditFrequency | undefined;
  dayOfMonth?: string | undefined;
  dayOfWeek?: DayOfWeek | undefined;
}
export interface ListScheduledAuditsResponse {
  scheduledAudits?: ScheduledAuditMetadata[] | undefined;
  nextToken?: string | undefined;
}
export interface ListSecurityProfilesRequest {
  nextToken?: string | undefined;
  maxResults?: number | undefined;
  dimensionName?: string | undefined;
  metricName?: string | undefined;
}
export interface SecurityProfileIdentifier {
  name: string | undefined;
  arn: string | undefined;
}
export interface ListSecurityProfilesResponse {
  securityProfileIdentifiers?: SecurityProfileIdentifier[] | undefined;
  nextToken?: string | undefined;
}
export interface ListSecurityProfilesForTargetRequest {
  nextToken?: string | undefined;
  maxResults?: number | undefined;
  recursive?: boolean | undefined;
  securityProfileTargetArn: string | undefined;
}
export interface SecurityProfileTarget {
  arn: string | undefined;
}
export interface SecurityProfileTargetMapping {
  securityProfileIdentifier?: SecurityProfileIdentifier | undefined;
  target?: SecurityProfileTarget | undefined;
}
export interface ListSecurityProfilesForTargetResponse {
  securityProfileTargetMappings?: SecurityProfileTargetMapping[] | undefined;
  nextToken?: string | undefined;
}
export interface ListStreamsRequest {
  maxResults?: number | undefined;
  nextToken?: string | undefined;
  ascendingOrder?: boolean | undefined;
}
export interface StreamSummary {
  streamId?: string | undefined;
  streamArn?: string | undefined;
  streamVersion?: number | undefined;
  description?: string | undefined;
}
export interface ListStreamsResponse {
  streams?: StreamSummary[] | undefined;
  nextToken?: string | undefined;
}
export interface ListTagsForResourceRequest {
  resourceArn: string | undefined;
  nextToken?: string | undefined;
}
export interface ListTagsForResourceResponse {
  tags?: Tag[] | undefined;
  nextToken?: string | undefined;
}
export interface ListTargetsForPolicyRequest {
  policyName: string | undefined;
  marker?: string | undefined;
  pageSize?: number | undefined;
}
export interface ListTargetsForPolicyResponse {
  targets?: string[] | undefined;
  nextMarker?: string | undefined;
}
export interface ListTargetsForSecurityProfileRequest {
  securityProfileName: string | undefined;
  nextToken?: string | undefined;
  maxResults?: number | undefined;
}
export interface ListTargetsForSecurityProfileResponse {
  securityProfileTargets?: SecurityProfileTarget[] | undefined;
  nextToken?: string | undefined;
}
export interface ListThingGroupsRequest {
  nextToken?: string | undefined;
  maxResults?: number | undefined;
  parentGroup?: string | undefined;
  namePrefixFilter?: string | undefined;
  recursive?: boolean | undefined;
}
export interface ListThingGroupsResponse {
  thingGroups?: GroupNameAndArn[] | undefined;
  nextToken?: string | undefined;
}
export interface ListThingGroupsForThingRequest {
  thingName: string | undefined;
  nextToken?: string | undefined;
  maxResults?: number | undefined;
}
export interface ListThingGroupsForThingResponse {
  thingGroups?: GroupNameAndArn[] | undefined;
  nextToken?: string | undefined;
}
export interface ListThingPrincipalsRequest {
  nextToken?: string | undefined;
  maxResults?: number | undefined;
  thingName: string | undefined;
}
export interface ListThingPrincipalsResponse {
  principals?: string[] | undefined;
  nextToken?: string | undefined;
}
export interface ListThingPrincipalsV2Request {
  nextToken?: string | undefined;
  maxResults?: number | undefined;
  thingName: string | undefined;
  thingPrincipalType?: ThingPrincipalType | undefined;
}
export interface ThingPrincipalObject {
  principal: string | undefined;
  thingPrincipalType?: ThingPrincipalType | undefined;
}
export interface ListThingPrincipalsV2Response {
  thingPrincipalObjects?: ThingPrincipalObject[] | undefined;
  nextToken?: string | undefined;
}
export declare const ReportType: {
  readonly ERRORS: "ERRORS";
  readonly RESULTS: "RESULTS";
};
export type ReportType = (typeof ReportType)[keyof typeof ReportType];
export interface ListThingRegistrationTaskReportsRequest {
  taskId: string | undefined;
  reportType: ReportType | undefined;
  nextToken?: string | undefined;
  maxResults?: number | undefined;
}
export interface ListThingRegistrationTaskReportsResponse {
  resourceLinks?: string[] | undefined;
  reportType?: ReportType | undefined;
  nextToken?: string | undefined;
}
export interface ListThingRegistrationTasksRequest {
  nextToken?: string | undefined;
  maxResults?: number | undefined;
  status?: Status | undefined;
}
export interface ListThingRegistrationTasksResponse {
  taskIds?: string[] | undefined;
  nextToken?: string | undefined;
}
export interface ListThingsRequest {
  nextToken?: string | undefined;
  maxResults?: number | undefined;
  attributeName?: string | undefined;
  attributeValue?: string | undefined;
  thingTypeName?: string | undefined;
  usePrefixAttributeValue?: boolean | undefined;
}
export interface ThingAttribute {
  thingName?: string | undefined;
  thingTypeName?: string | undefined;
  thingArn?: string | undefined;
  attributes?: Record<string, string> | undefined;
  version?: number | undefined;
}
export interface ListThingsResponse {
  things?: ThingAttribute[] | undefined;
  nextToken?: string | undefined;
}
export interface ListThingsInBillingGroupRequest {
  billingGroupName: string | undefined;
  nextToken?: string | undefined;
  maxResults?: number | undefined;
}
export interface ListThingsInBillingGroupResponse {
  things?: string[] | undefined;
  nextToken?: string | undefined;
}
export interface ListThingsInThingGroupRequest {
  thingGroupName: string | undefined;
  recursive?: boolean | undefined;
  nextToken?: string | undefined;
  maxResults?: number | undefined;
}
export interface ListThingsInThingGroupResponse {
  things?: string[] | undefined;
  nextToken?: string | undefined;
}
export interface ListThingTypesRequest {
  nextToken?: string | undefined;
  maxResults?: number | undefined;
  thingTypeName?: string | undefined;
}
export interface ThingTypeDefinition {
  thingTypeName?: string | undefined;
  thingTypeArn?: string | undefined;
  thingTypeProperties?: ThingTypeProperties | undefined;
  thingTypeMetadata?: ThingTypeMetadata | undefined;
}
export interface ListThingTypesResponse {
  thingTypes?: ThingTypeDefinition[] | undefined;
  nextToken?: string | undefined;
}
export interface ListTopicRuleDestinationsRequest {
  maxResults?: number | undefined;
  nextToken?: string | undefined;
}
export interface HttpUrlDestinationSummary {
  confirmationUrl?: string | undefined;
}
export interface VpcDestinationSummary {
  subnetIds?: string[] | undefined;
  securityGroups?: string[] | undefined;
  vpcId?: string | undefined;
  roleArn?: string | undefined;
}
export interface TopicRuleDestinationSummary {
  arn?: string | undefined;
  status?: TopicRuleDestinationStatus | undefined;
  createdAt?: Date | undefined;
  lastUpdatedAt?: Date | undefined;
  statusReason?: string | undefined;
  httpUrlSummary?: HttpUrlDestinationSummary | undefined;
  vpcDestinationSummary?: VpcDestinationSummary | undefined;
}
export interface ListTopicRuleDestinationsResponse {
  destinationSummaries?: TopicRuleDestinationSummary[] | undefined;
  nextToken?: string | undefined;
}
export interface ListTopicRulesRequest {
  topic?: string | undefined;
  maxResults?: number | undefined;
  nextToken?: string | undefined;
  ruleDisabled?: boolean | undefined;
}
export interface TopicRuleListItem {
  ruleArn?: string | undefined;
  ruleName?: string | undefined;
  topicPattern?: string | undefined;
  createdAt?: Date | undefined;
  ruleDisabled?: boolean | undefined;
}
export interface ListTopicRulesResponse {
  rules?: TopicRuleListItem[] | undefined;
  nextToken?: string | undefined;
}
export interface ListV2LoggingLevelsRequest {
  targetType?: LogTargetType | undefined;
  nextToken?: string | undefined;
  maxResults?: number | undefined;
}
export interface LogTarget {
  targetType: LogTargetType | undefined;
  targetName?: string | undefined;
}
export interface LogTargetConfiguration {
  logTarget?: LogTarget | undefined;
  logLevel?: LogLevel | undefined;
}
export interface ListV2LoggingLevelsResponse {
  logTargetConfigurations?: LogTargetConfiguration[] | undefined;
  nextToken?: string | undefined;
}
export interface ListViolationEventsRequest {
  startTime: Date | undefined;
  endTime: Date | undefined;
  thingName?: string | undefined;
  securityProfileName?: string | undefined;
  behaviorCriteriaType?: BehaviorCriteriaType | undefined;
  listSuppressedAlerts?: boolean | undefined;
  verificationState?: VerificationState | undefined;
  nextToken?: string | undefined;
  maxResults?: number | undefined;
}
export declare const ViolationEventType: {
  readonly ALARM_CLEARED: "alarm-cleared";
  readonly ALARM_INVALIDATED: "alarm-invalidated";
  readonly IN_ALARM: "in-alarm";
};
export type ViolationEventType =
  (typeof ViolationEventType)[keyof typeof ViolationEventType];
export interface ViolationEvent {
  violationId?: string | undefined;
  thingName?: string | undefined;
  securityProfileName?: string | undefined;
  behavior?: Behavior | undefined;
  metricValue?: MetricValue | undefined;
  violationEventAdditionalInfo?: ViolationEventAdditionalInfo | undefined;
  violationEventType?: ViolationEventType | undefined;
  verificationState?: VerificationState | undefined;
  verificationStateDescription?: string | undefined;
  violationEventTime?: Date | undefined;
}
export interface ListViolationEventsResponse {
  violationEvents?: ViolationEvent[] | undefined;
  nextToken?: string | undefined;
}
export interface PutVerificationStateOnViolationRequest {
  violationId: string | undefined;
  verificationState: VerificationState | undefined;
  verificationStateDescription?: string | undefined;
}
export interface PutVerificationStateOnViolationResponse {}
export interface RegisterCACertificateRequest {
  caCertificate: string | undefined;
  verificationCertificate?: string | undefined;
  setAsActive?: boolean | undefined;
  allowAutoRegistration?: boolean | undefined;
  registrationConfig?: RegistrationConfig | undefined;
  tags?: Tag[] | undefined;
  certificateMode?: CertificateMode | undefined;
}
export interface RegisterCACertificateResponse {
  certificateArn?: string | undefined;
  certificateId?: string | undefined;
}
export declare class RegistrationCodeValidationException extends __BaseException {
  readonly name: "RegistrationCodeValidationException";
  readonly $fault: "client";
  constructor(
    opts: __ExceptionOptionType<
      RegistrationCodeValidationException,
      __BaseException
    >
  );
}
export declare class CertificateConflictException extends __BaseException {
  readonly name: "CertificateConflictException";
  readonly $fault: "client";
  constructor(
    opts: __ExceptionOptionType<CertificateConflictException, __BaseException>
  );
}
export interface RegisterCertificateRequest {
  certificatePem: string | undefined;
  caCertificatePem?: string | undefined;
  setAsActive?: boolean | undefined;
  status?: CertificateStatus | undefined;
}
export interface RegisterCertificateResponse {
  certificateArn?: string | undefined;
  certificateId?: string | undefined;
}
export interface RegisterCertificateWithoutCARequest {
  certificatePem: string | undefined;
  status?: CertificateStatus | undefined;
}
export interface RegisterCertificateWithoutCAResponse {
  certificateArn?: string | undefined;
  certificateId?: string | undefined;
}
export interface RegisterThingRequest {
  templateBody: string | undefined;
  parameters?: Record<string, string> | undefined;
}
export interface RegisterThingResponse {
  certificatePem?: string | undefined;
  resourceArns?: Record<string, string> | undefined;
}
export declare class ResourceRegistrationFailureException extends __BaseException {
  readonly name: "ResourceRegistrationFailureException";
  readonly $fault: "client";
  constructor(
    opts: __ExceptionOptionType<
      ResourceRegistrationFailureException,
      __BaseException
    >
  );
}
export interface RejectCertificateTransferRequest {
  certificateId: string | undefined;
  rejectReason?: string | undefined;
}
export interface RemoveThingFromBillingGroupRequest {
  billingGroupName?: string | undefined;
  billingGroupArn?: string | undefined;
  thingName?: string | undefined;
  thingArn?: string | undefined;
}
export interface RemoveThingFromBillingGroupResponse {}
export interface RemoveThingFromThingGroupRequest {
  thingGroupName?: string | undefined;
  thingGroupArn?: string | undefined;
  thingName?: string | undefined;
  thingArn?: string | undefined;
}
export interface RemoveThingFromThingGroupResponse {}
export interface ReplaceTopicRuleRequest {
  ruleName: string | undefined;
  topicRulePayload: TopicRulePayload | undefined;
}
export interface SearchIndexRequest {
  indexName?: string | undefined;
  queryString: string | undefined;
  nextToken?: string | undefined;
  maxResults?: number | undefined;
  queryVersion?: string | undefined;
}
export interface ThingGroupDocument {
  thingGroupName?: string | undefined;
  thingGroupId?: string | undefined;
  thingGroupDescription?: string | undefined;
  attributes?: Record<string, string> | undefined;
  parentGroupNames?: string[] | undefined;
}
export interface ThingConnectivity {
  connected?: boolean | undefined;
  timestamp?: number | undefined;
  disconnectReason?: string | undefined;
}
export interface ThingDocument {
  thingName?: string | undefined;
  thingId?: string | undefined;
  thingTypeName?: string | undefined;
  thingGroupNames?: string[] | undefined;
  attributes?: Record<string, string> | undefined;
  shadow?: string | undefined;
  deviceDefender?: string | undefined;
  connectivity?: ThingConnectivity | undefined;
}
export interface SearchIndexResponse {
  nextToken?: string | undefined;
  things?: ThingDocument[] | undefined;
  thingGroups?: ThingGroupDocument[] | undefined;
}
export interface SetDefaultAuthorizerRequest {
  authorizerName: string | undefined;
}
export interface SetDefaultAuthorizerResponse {
  authorizerName?: string | undefined;
  authorizerArn?: string | undefined;
}
export interface SetDefaultPolicyVersionRequest {
  policyName: string | undefined;
  policyVersionId: string | undefined;
}
export interface LoggingOptionsPayload {
  roleArn: string | undefined;
  logLevel?: LogLevel | undefined;
}
export interface SetLoggingOptionsRequest {
  loggingOptionsPayload: LoggingOptionsPayload | undefined;
}
export interface SetV2LoggingLevelRequest {
  logTarget: LogTarget | undefined;
  logLevel: LogLevel | undefined;
}
export interface SetV2LoggingOptionsRequest {
  roleArn?: string | undefined;
  defaultLogLevel?: LogLevel | undefined;
  disableAllLogs?: boolean | undefined;
}
export interface StartAuditMitigationActionsTaskRequest {
  taskId: string | undefined;
  target: AuditMitigationActionsTaskTarget | undefined;
  auditCheckToActionsMapping: Record<string, string[]> | undefined;
  clientRequestToken?: string | undefined;
}
export interface StartAuditMitigationActionsTaskResponse {
  taskId?: string | undefined;
}
export declare class TaskAlreadyExistsException extends __BaseException {
  readonly name: "TaskAlreadyExistsException";
  readonly $fault: "client";
  constructor(
    opts: __ExceptionOptionType<TaskAlreadyExistsException, __BaseException>
  );
}
export interface StartDetectMitigationActionsTaskRequest {
  taskId: string | undefined;
  target: DetectMitigationActionsTaskTarget | undefined;
  actions: string[] | undefined;
  violationEventOccurrenceRange?: ViolationEventOccurrenceRange | undefined;
  includeOnlyActiveViolations?: boolean | undefined;
  includeSuppressedAlerts?: boolean | undefined;
  clientRequestToken?: string | undefined;
}
export interface StartDetectMitigationActionsTaskResponse {
  taskId?: string | undefined;
}
export interface StartOnDemandAuditTaskRequest {
  targetCheckNames: string[] | undefined;
}
export interface StartOnDemandAuditTaskResponse {
  taskId?: string | undefined;
}
export interface StartThingRegistrationTaskRequest {
  templateBody: string | undefined;
  inputFileBucket: string | undefined;
  inputFileKey: string | undefined;
  roleArn: string | undefined;
}
export interface StartThingRegistrationTaskResponse {
  taskId?: string | undefined;
}
export interface StopThingRegistrationTaskRequest {
  taskId: string | undefined;
}
export interface StopThingRegistrationTaskResponse {}
export interface TagResourceRequest {
  resourceArn: string | undefined;
  tags: Tag[] | undefined;
}
export interface TagResourceResponse {}
export interface TestAuthorizationRequest {
  principal?: string | undefined;
  cognitoIdentityPoolId?: string | undefined;
  authInfos: AuthInfo[] | undefined;
  clientId?: string | undefined;
  policyNamesToAdd?: string[] | undefined;
  policyNamesToSkip?: string[] | undefined;
}
export interface TestAuthorizationResponse {
  authResults?: AuthResult[] | undefined;
}
export declare class InvalidResponseException extends __BaseException {
  readonly name: "InvalidResponseException";
  readonly $fault: "client";
  constructor(
    opts: __ExceptionOptionType<InvalidResponseException, __BaseException>
  );
}
export interface HttpContext {
  headers?: Record<string, string> | undefined;
  queryString?: string | undefined;
}
export interface MqttContext {
  username?: string | undefined;
  password?: Uint8Array | undefined;
  clientId?: string | undefined;
}
export interface TlsContext {
  serverName?: string | undefined;
}
export interface TestInvokeAuthorizerRequest {
  authorizerName: string | undefined;
  token?: string | undefined;
  tokenSignature?: string | undefined;
  httpContext?: HttpContext | undefined;
  mqttContext?: MqttContext | undefined;
  tlsContext?: TlsContext | undefined;
}
export interface TestInvokeAuthorizerResponse {
  isAuthenticated?: boolean | undefined;
  principalId?: string | undefined;
  policyDocuments?: string[] | undefined;
  refreshAfterInSeconds?: number | undefined;
  disconnectAfterInSeconds?: number | undefined;
}
export interface TransferCertificateRequest {
  certificateId: string | undefined;
  targetAwsAccount: string | undefined;
  transferMessage?: string | undefined;
}
export interface TransferCertificateResponse {
  transferredCertificateArn?: string | undefined;
}
export declare class TransferConflictException extends __BaseException {
  readonly name: "TransferConflictException";
  readonly $fault: "client";
  constructor(
    opts: __ExceptionOptionType<TransferConflictException, __BaseException>
  );
}
export interface UntagResourceRequest {
  resourceArn: string | undefined;
  tagKeys: string[] | undefined;
}
export interface UntagResourceResponse {}
export interface UpdateAccountAuditConfigurationRequest {
  roleArn?: string | undefined;
  auditNotificationTargetConfigurations?:
    | Partial<Record<AuditNotificationType, AuditNotificationTarget>>
    | undefined;
  auditCheckConfigurations?:
    | Record<string, AuditCheckConfiguration>
    | undefined;
}
export interface UpdateAccountAuditConfigurationResponse {}
export interface UpdateAuditSuppressionRequest {
  checkName: string | undefined;
  resourceIdentifier: ResourceIdentifier | undefined;
  expirationDate?: Date | undefined;
  suppressIndefinitely?: boolean | undefined;
  description?: string | undefined;
}
export interface UpdateAuditSuppressionResponse {}
export interface UpdateAuthorizerRequest {
  authorizerName: string | undefined;
  authorizerFunctionArn?: string | undefined;
  tokenKeyName?: string | undefined;
  tokenSigningPublicKeys?: Record<string, string> | undefined;
  status?: AuthorizerStatus | undefined;
  enableCachingForHttp?: boolean | undefined;
}
export interface UpdateAuthorizerResponse {
  authorizerName?: string | undefined;
  authorizerArn?: string | undefined;
}
export interface UpdateBillingGroupRequest {
  billingGroupName: string | undefined;
  billingGroupProperties: BillingGroupProperties | undefined;
  expectedVersion?: number | undefined;
}
export interface UpdateBillingGroupResponse {
  version?: number | undefined;
}
export interface UpdateCACertificateRequest {
  certificateId: string | undefined;
  newStatus?: CACertificateStatus | undefined;
  newAutoRegistrationStatus?: AutoRegistrationStatus | undefined;
  registrationConfig?: RegistrationConfig | undefined;
  removeAutoRegistration?: boolean | undefined;
}
export interface UpdateCertificateRequest {
  certificateId: string | undefined;
  newStatus: CertificateStatus | undefined;
}
export interface UpdateCertificateProviderRequest {
  certificateProviderName: string | undefined;
  lambdaFunctionArn?: string | undefined;
  accountDefaultForOperations?: CertificateProviderOperation[] | undefined;
}
export interface UpdateCertificateProviderResponse {
  certificateProviderName?: string | undefined;
  certificateProviderArn?: string | undefined;
}
export interface UpdateCommandRequest {
  commandId: string | undefined;
  displayName?: string | undefined;
  description?: string | undefined;
  deprecated?: boolean | undefined;
}
export interface UpdateCommandResponse {
  commandId?: string | undefined;
  displayName?: string | undefined;
  description?: string | undefined;
  deprecated?: boolean | undefined;
  lastUpdatedAt?: Date | undefined;
}
export interface UpdateCustomMetricRequest {
  metricName: string | undefined;
  displayName: string | undefined;
}
export interface UpdateCustomMetricResponse {
  metricName?: string | undefined;
  metricArn?: string | undefined;
  metricType?: CustomMetricType | undefined;
  displayName?: string | undefined;
  creationDate?: Date | undefined;
  lastModifiedDate?: Date | undefined;
}
export interface UpdateDimensionRequest {
  name: string | undefined;
  stringValues: string[] | undefined;
}
export interface UpdateDimensionResponse {
  name?: string | undefined;
  arn?: string | undefined;
  type?: DimensionType | undefined;
  stringValues?: string[] | undefined;
  creationDate?: Date | undefined;
  lastModifiedDate?: Date | undefined;
}
export interface UpdateDomainConfigurationRequest {
  domainConfigurationName: string | undefined;
  authorizerConfig?: AuthorizerConfig | undefined;
  domainConfigurationStatus?: DomainConfigurationStatus | undefined;
  removeAuthorizerConfig?: boolean | undefined;
  tlsConfig?: TlsConfig | undefined;
  serverCertificateConfig?: ServerCertificateConfig | undefined;
  authenticationType?: AuthenticationType | undefined;
  applicationProtocol?: ApplicationProtocol | undefined;
  clientCertificateConfig?: ClientCertificateConfig | undefined;
}
export interface UpdateDomainConfigurationResponse {
  domainConfigurationName?: string | undefined;
  domainConfigurationArn?: string | undefined;
}
export interface UpdateDynamicThingGroupRequest {
  thingGroupName: string | undefined;
  thingGroupProperties: ThingGroupProperties | undefined;
  expectedVersion?: number | undefined;
  indexName?: string | undefined;
  queryString?: string | undefined;
  queryVersion?: string | undefined;
}
export interface UpdateDynamicThingGroupResponse {
  version?: number | undefined;
}
export interface UpdateEventConfigurationsRequest {
  eventConfigurations?: Partial<Record<EventType, Configuration>> | undefined;
}
export interface UpdateEventConfigurationsResponse {}
export interface UpdateFleetMetricRequest {
  metricName: string | undefined;
  queryString?: string | undefined;
  aggregationType?: AggregationType | undefined;
  period?: number | undefined;
  aggregationField?: string | undefined;
  description?: string | undefined;
  queryVersion?: string | undefined;
  indexName: string | undefined;
  unit?: FleetMetricUnit | undefined;
  expectedVersion?: number | undefined;
}
export interface UpdateIndexingConfigurationRequest {
  thingIndexingConfiguration?: ThingIndexingConfiguration | undefined;
  thingGroupIndexingConfiguration?: ThingGroupIndexingConfiguration | undefined;
}
export interface UpdateIndexingConfigurationResponse {}
export interface UpdateJobRequest {
  jobId: string | undefined;
  description?: string | undefined;
  presignedUrlConfig?: PresignedUrlConfig | undefined;
  jobExecutionsRolloutConfig?: JobExecutionsRolloutConfig | undefined;
  abortConfig?: AbortConfig | undefined;
  timeoutConfig?: TimeoutConfig | undefined;
  namespaceId?: string | undefined;
  jobExecutionsRetryConfig?: JobExecutionsRetryConfig | undefined;
}
export interface UpdateMitigationActionRequest {
  actionName: string | undefined;
  roleArn?: string | undefined;
  actionParams?: MitigationActionParams | undefined;
}
export interface UpdateMitigationActionResponse {
  actionArn?: string | undefined;
  actionId?: string | undefined;
}
export interface UpdatePackageRequest {
  packageName: string | undefined;
  description?: string | undefined;
  defaultVersionName?: string | undefined;
  unsetDefaultVersion?: boolean | undefined;
  clientToken?: string | undefined;
}
export interface UpdatePackageResponse {}
export interface UpdatePackageConfigurationRequest {
  versionUpdateByJobsConfig?: VersionUpdateByJobsConfig | undefined;
  clientToken?: string | undefined;
}
export interface UpdatePackageConfigurationResponse {}
export declare const PackageVersionAction: {
  readonly DEPRECATE: "DEPRECATE";
  readonly PUBLISH: "PUBLISH";
};
export type PackageVersionAction =
  (typeof PackageVersionAction)[keyof typeof PackageVersionAction];
export interface UpdatePackageVersionRequest {
  packageName: string | undefined;
  versionName: string | undefined;
  description?: string | undefined;
  attributes?: Record<string, string> | undefined;
  artifact?: PackageVersionArtifact | undefined;
  action?: PackageVersionAction | undefined;
  recipe?: string | undefined;
  clientToken?: string | undefined;
}
export interface UpdatePackageVersionResponse {}
export interface UpdateProvisioningTemplateRequest {
  templateName: string | undefined;
  description?: string | undefined;
  enabled?: boolean | undefined;
  defaultVersionId?: number | undefined;
  provisioningRoleArn?: string | undefined;
  preProvisioningHook?: ProvisioningHook | undefined;
  removePreProvisioningHook?: boolean | undefined;
}
export interface UpdateProvisioningTemplateResponse {}
export interface UpdateRoleAliasRequest {
  roleAlias: string | undefined;
  roleArn?: string | undefined;
  credentialDurationSeconds?: number | undefined;
}
export interface UpdateRoleAliasResponse {
  roleAlias?: string | undefined;
  roleAliasArn?: string | undefined;
}
export interface UpdateScheduledAuditRequest {
  frequency?: AuditFrequency | undefined;
  dayOfMonth?: string | undefined;
  dayOfWeek?: DayOfWeek | undefined;
  targetCheckNames?: string[] | undefined;
  scheduledAuditName: string | undefined;
}
export interface UpdateScheduledAuditResponse {
  scheduledAuditArn?: string | undefined;
}
export interface UpdateSecurityProfileRequest {
  securityProfileName: string | undefined;
  securityProfileDescription?: string | undefined;
  behaviors?: Behavior[] | undefined;
  alertTargets?: Partial<Record<AlertTargetType, AlertTarget>> | undefined;
  additionalMetricsToRetain?: string[] | undefined;
  additionalMetricsToRetainV2?: MetricToRetain[] | undefined;
  deleteBehaviors?: boolean | undefined;
  deleteAlertTargets?: boolean | undefined;
  deleteAdditionalMetricsToRetain?: boolean | undefined;
  expectedVersion?: number | undefined;
  metricsExportConfig?: MetricsExportConfig | undefined;
  deleteMetricsExportConfig?: boolean | undefined;
}
export interface UpdateSecurityProfileResponse {
  securityProfileName?: string | undefined;
  securityProfileArn?: string | undefined;
  securityProfileDescription?: string | undefined;
  behaviors?: Behavior[] | undefined;
  alertTargets?: Partial<Record<AlertTargetType, AlertTarget>> | undefined;
  additionalMetricsToRetain?: string[] | undefined;
  additionalMetricsToRetainV2?: MetricToRetain[] | undefined;
  version?: number | undefined;
  creationDate?: Date | undefined;
  lastModifiedDate?: Date | undefined;
  metricsExportConfig?: MetricsExportConfig | undefined;
}
export interface UpdateStreamRequest {
  streamId: string | undefined;
  description?: string | undefined;
  files?: StreamFile[] | undefined;
  roleArn?: string | undefined;
}
export interface UpdateStreamResponse {
  streamId?: string | undefined;
  streamArn?: string | undefined;
  description?: string | undefined;
  streamVersion?: number | undefined;
}
export interface UpdateThingRequest {
  thingName: string | undefined;
  thingTypeName?: string | undefined;
  attributePayload?: AttributePayload | undefined;
  expectedVersion?: number | undefined;
  removeThingType?: boolean | undefined;
}
export interface UpdateThingResponse {}
export interface UpdateThingGroupRequest {
  thingGroupName: string | undefined;
  thingGroupProperties: ThingGroupProperties | undefined;
  expectedVersion?: number | undefined;
}
export interface UpdateThingGroupResponse {
  version?: number | undefined;
}
export interface UpdateThingGroupsForThingRequest {
  thingName?: string | undefined;
  thingGroupsToAdd?: string[] | undefined;
  thingGroupsToRemove?: string[] | undefined;
  overrideDynamicGroups?: boolean | undefined;
}
export interface UpdateThingGroupsForThingResponse {}
export interface UpdateThingTypeRequest {
  thingTypeName: string | undefined;
  thingTypeProperties?: ThingTypeProperties | undefined;
}
export interface UpdateThingTypeResponse {}
export interface UpdateTopicRuleDestinationRequest {
  arn: string | undefined;
  status: TopicRuleDestinationStatus | undefined;
}
export interface UpdateTopicRuleDestinationResponse {}
export interface ValidateSecurityProfileBehaviorsRequest {
  behaviors: Behavior[] | undefined;
}
export interface ValidationError {
  errorMessage?: string | undefined;
}
export interface ValidateSecurityProfileBehaviorsResponse {
  valid?: boolean | undefined;
  validationErrors?: ValidationError[] | undefined;
}
export declare const UpdatePackageRequestFilterSensitiveLog: (
  obj: UpdatePackageRequest
) => any;
export declare const UpdatePackageVersionRequestFilterSensitiveLog: (
  obj: UpdatePackageVersionRequest
) => any;
