import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client";
import { IoTServiceException as __BaseException } from "./IoTServiceException";
import {
  AbortConfig,
  AggregationType,
  AlertTarget,
  AlertTargetType,
  AttributePayload,
  AuditCheckConfiguration,
  AuditFrequency,
  AuditMitigationActionsTaskTarget,
  AuditNotificationTarget,
  AuditNotificationType,
  AuthInfo,
  AuthorizerConfig,
  AuthorizerStatus,
  AuthResult,
  AutoRegistrationStatus,
  Behavior,
  BillingGroupProperties,
  CertificateProviderOperation,
  CustomMetricType,
  DayOfWeek,
  DimensionType,
  FleetMetricUnit,
  JobExecutionsRetryConfig,
  JobExecutionsRolloutConfig,
  LogLevel,
  MetricsExportConfig,
  MetricToRetain,
  MetricValue,
  MitigationActionParams,
  PackageVersionStatus,
  Policy,
  PresignedUrlConfig,
  ProvisioningHook,
  RelatedResource,
  ResourceIdentifier,
  ServerCertificateConfig,
  StreamFile,
  Tag,
  TemplateType,
  ThingGroupProperties,
  ThingTypeProperties,
  TimeoutConfig,
  TlsConfig,
  TopicRuleDestinationStatus,
  TopicRulePayload,
  VerificationState,
  ViolationEventAdditionalInfo,
} from "./models_0";
import {
  BehaviorCriteriaType,
  CACertificateStatus,
  CertificateMode,
  CertificateStatus,
  Configuration,
  DetectMitigationActionsTaskTarget,
  DomainConfigurationStatus,
  EventType,
  GroupNameAndArn,
  LogTargetType,
  RegistrationConfig,
  Status,
  ThingGroupIndexingConfiguration,
  ThingIndexingConfiguration,
  ThingTypeMetadata,
  VersionUpdateByJobsConfig,
  ViolationEventOccurrenceRange,
} from "./models_1";
export interface ListOutgoingCertificatesRequest {
  pageSize?: number;
  marker?: string;
  ascendingOrder?: boolean;
}
export interface OutgoingCertificate {
  certificateArn?: string;
  certificateId?: string;
  transferredTo?: string;
  transferDate?: Date;
  transferMessage?: string;
  creationDate?: Date;
}
export interface ListOutgoingCertificatesResponse {
  outgoingCertificates?: OutgoingCertificate[];
  nextMarker?: string;
}
export interface ListPackagesRequest {
  maxResults?: number;
  nextToken?: string;
}
export interface PackageSummary {
  packageName?: string;
  defaultVersionName?: string;
  creationDate?: Date;
  lastModifiedDate?: Date;
}
export interface ListPackagesResponse {
  packageSummaries?: PackageSummary[];
  nextToken?: string;
}
export interface ListPackageVersionsRequest {
  packageName: string | undefined;
  status?: PackageVersionStatus;
  maxResults?: number;
  nextToken?: string;
}
export interface PackageVersionSummary {
  packageName?: string;
  versionName?: string;
  status?: PackageVersionStatus;
  creationDate?: Date;
  lastModifiedDate?: Date;
}
export interface ListPackageVersionsResponse {
  packageVersionSummaries?: PackageVersionSummary[];
  nextToken?: string;
}
export interface ListPoliciesRequest {
  marker?: string;
  pageSize?: number;
  ascendingOrder?: boolean;
}
export interface ListPoliciesResponse {
  policies?: Policy[];
  nextMarker?: string;
}
export interface ListPolicyPrincipalsRequest {
  policyName: string | undefined;
  marker?: string;
  pageSize?: number;
  ascendingOrder?: boolean;
}
export interface ListPolicyPrincipalsResponse {
  principals?: string[];
  nextMarker?: string;
}
export interface ListPolicyVersionsRequest {
  policyName: string | undefined;
}
export interface PolicyVersion {
  versionId?: string;
  isDefaultVersion?: boolean;
  createDate?: Date;
}
export interface ListPolicyVersionsResponse {
  policyVersions?: PolicyVersion[];
}
export interface ListPrincipalPoliciesRequest {
  principal: string | undefined;
  marker?: string;
  pageSize?: number;
  ascendingOrder?: boolean;
}
export interface ListPrincipalPoliciesResponse {
  policies?: Policy[];
  nextMarker?: string;
}
export interface ListPrincipalThingsRequest {
  nextToken?: string;
  maxResults?: number;
  principal: string | undefined;
}
export interface ListPrincipalThingsResponse {
  things?: string[];
  nextToken?: string;
}
export interface ListProvisioningTemplatesRequest {
  maxResults?: number;
  nextToken?: string;
}
export interface ProvisioningTemplateSummary {
  templateArn?: string;
  templateName?: string;
  description?: string;
  creationDate?: Date;
  lastModifiedDate?: Date;
  enabled?: boolean;
  type?: TemplateType;
}
export interface ListProvisioningTemplatesResponse {
  templates?: ProvisioningTemplateSummary[];
  nextToken?: string;
}
export interface ListProvisioningTemplateVersionsRequest {
  templateName: string | undefined;
  maxResults?: number;
  nextToken?: string;
}
export interface ProvisioningTemplateVersionSummary {
  versionId?: number;
  creationDate?: Date;
  isDefaultVersion?: boolean;
}
export interface ListProvisioningTemplateVersionsResponse {
  versions?: ProvisioningTemplateVersionSummary[];
  nextToken?: string;
}
export interface ListRelatedResourcesForAuditFindingRequest {
  findingId: string | undefined;
  nextToken?: string;
  maxResults?: number;
}
export interface ListRelatedResourcesForAuditFindingResponse {
  relatedResources?: RelatedResource[];
  nextToken?: string;
}
export interface ListRoleAliasesRequest {
  pageSize?: number;
  marker?: string;
  ascendingOrder?: boolean;
}
export interface ListRoleAliasesResponse {
  roleAliases?: string[];
  nextMarker?: string;
}
export interface ListScheduledAuditsRequest {
  nextToken?: string;
  maxResults?: number;
}
export interface ScheduledAuditMetadata {
  scheduledAuditName?: string;
  scheduledAuditArn?: string;
  frequency?: AuditFrequency;
  dayOfMonth?: string;
  dayOfWeek?: DayOfWeek;
}
export interface ListScheduledAuditsResponse {
  scheduledAudits?: ScheduledAuditMetadata[];
  nextToken?: string;
}
export interface ListSecurityProfilesRequest {
  nextToken?: string;
  maxResults?: number;
  dimensionName?: string;
  metricName?: string;
}
export interface SecurityProfileIdentifier {
  name: string | undefined;
  arn: string | undefined;
}
export interface ListSecurityProfilesResponse {
  securityProfileIdentifiers?: SecurityProfileIdentifier[];
  nextToken?: string;
}
export interface ListSecurityProfilesForTargetRequest {
  nextToken?: string;
  maxResults?: number;
  recursive?: boolean;
  securityProfileTargetArn: string | undefined;
}
export interface SecurityProfileTarget {
  arn: string | undefined;
}
export interface SecurityProfileTargetMapping {
  securityProfileIdentifier?: SecurityProfileIdentifier;
  target?: SecurityProfileTarget;
}
export interface ListSecurityProfilesForTargetResponse {
  securityProfileTargetMappings?: SecurityProfileTargetMapping[];
  nextToken?: string;
}
export interface ListStreamsRequest {
  maxResults?: number;
  nextToken?: string;
  ascendingOrder?: boolean;
}
export interface StreamSummary {
  streamId?: string;
  streamArn?: string;
  streamVersion?: number;
  description?: string;
}
export interface ListStreamsResponse {
  streams?: StreamSummary[];
  nextToken?: string;
}
export interface ListTagsForResourceRequest {
  resourceArn: string | undefined;
  nextToken?: string;
}
export interface ListTagsForResourceResponse {
  tags?: Tag[];
  nextToken?: string;
}
export interface ListTargetsForPolicyRequest {
  policyName: string | undefined;
  marker?: string;
  pageSize?: number;
}
export interface ListTargetsForPolicyResponse {
  targets?: string[];
  nextMarker?: string;
}
export interface ListTargetsForSecurityProfileRequest {
  securityProfileName: string | undefined;
  nextToken?: string;
  maxResults?: number;
}
export interface ListTargetsForSecurityProfileResponse {
  securityProfileTargets?: SecurityProfileTarget[];
  nextToken?: string;
}
export interface ListThingGroupsRequest {
  nextToken?: string;
  maxResults?: number;
  parentGroup?: string;
  namePrefixFilter?: string;
  recursive?: boolean;
}
export interface ListThingGroupsResponse {
  thingGroups?: GroupNameAndArn[];
  nextToken?: string;
}
export interface ListThingGroupsForThingRequest {
  thingName: string | undefined;
  nextToken?: string;
  maxResults?: number;
}
export interface ListThingGroupsForThingResponse {
  thingGroups?: GroupNameAndArn[];
  nextToken?: string;
}
export interface ListThingPrincipalsRequest {
  nextToken?: string;
  maxResults?: number;
  thingName: string | undefined;
}
export interface ListThingPrincipalsResponse {
  principals?: string[];
  nextToken?: string;
}
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;
  maxResults?: number;
}
export interface ListThingRegistrationTaskReportsResponse {
  resourceLinks?: string[];
  reportType?: ReportType;
  nextToken?: string;
}
export interface ListThingRegistrationTasksRequest {
  nextToken?: string;
  maxResults?: number;
  status?: Status;
}
export interface ListThingRegistrationTasksResponse {
  taskIds?: string[];
  nextToken?: string;
}
export interface ListThingsRequest {
  nextToken?: string;
  maxResults?: number;
  attributeName?: string;
  attributeValue?: string;
  thingTypeName?: string;
  usePrefixAttributeValue?: boolean;
}
export interface ThingAttribute {
  thingName?: string;
  thingTypeName?: string;
  thingArn?: string;
  attributes?: Record<string, string>;
  version?: number;
}
export interface ListThingsResponse {
  things?: ThingAttribute[];
  nextToken?: string;
}
export interface ListThingsInBillingGroupRequest {
  billingGroupName: string | undefined;
  nextToken?: string;
  maxResults?: number;
}
export interface ListThingsInBillingGroupResponse {
  things?: string[];
  nextToken?: string;
}
export interface ListThingsInThingGroupRequest {
  thingGroupName: string | undefined;
  recursive?: boolean;
  nextToken?: string;
  maxResults?: number;
}
export interface ListThingsInThingGroupResponse {
  things?: string[];
  nextToken?: string;
}
export interface ListThingTypesRequest {
  nextToken?: string;
  maxResults?: number;
  thingTypeName?: string;
}
export interface ThingTypeDefinition {
  thingTypeName?: string;
  thingTypeArn?: string;
  thingTypeProperties?: ThingTypeProperties;
  thingTypeMetadata?: ThingTypeMetadata;
}
export interface ListThingTypesResponse {
  thingTypes?: ThingTypeDefinition[];
  nextToken?: string;
}
export interface ListTopicRuleDestinationsRequest {
  maxResults?: number;
  nextToken?: string;
}
export interface HttpUrlDestinationSummary {
  confirmationUrl?: string;
}
export interface VpcDestinationSummary {
  subnetIds?: string[];
  securityGroups?: string[];
  vpcId?: string;
  roleArn?: string;
}
export interface TopicRuleDestinationSummary {
  arn?: string;
  status?: TopicRuleDestinationStatus;
  createdAt?: Date;
  lastUpdatedAt?: Date;
  statusReason?: string;
  httpUrlSummary?: HttpUrlDestinationSummary;
  vpcDestinationSummary?: VpcDestinationSummary;
}
export interface ListTopicRuleDestinationsResponse {
  destinationSummaries?: TopicRuleDestinationSummary[];
  nextToken?: string;
}
export interface ListTopicRulesRequest {
  topic?: string;
  maxResults?: number;
  nextToken?: string;
  ruleDisabled?: boolean;
}
export interface TopicRuleListItem {
  ruleArn?: string;
  ruleName?: string;
  topicPattern?: string;
  createdAt?: Date;
  ruleDisabled?: boolean;
}
export interface ListTopicRulesResponse {
  rules?: TopicRuleListItem[];
  nextToken?: string;
}
export interface ListV2LoggingLevelsRequest {
  targetType?: LogTargetType;
  nextToken?: string;
  maxResults?: number;
}
export interface LogTarget {
  targetType: LogTargetType | undefined;
  targetName?: string;
}
export interface LogTargetConfiguration {
  logTarget?: LogTarget;
  logLevel?: LogLevel;
}
export interface ListV2LoggingLevelsResponse {
  logTargetConfigurations?: LogTargetConfiguration[];
  nextToken?: string;
}
export interface ListViolationEventsRequest {
  startTime: Date | undefined;
  endTime: Date | undefined;
  thingName?: string;
  securityProfileName?: string;
  behaviorCriteriaType?: BehaviorCriteriaType;
  listSuppressedAlerts?: boolean;
  verificationState?: VerificationState;
  nextToken?: string;
  maxResults?: number;
}
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;
  thingName?: string;
  securityProfileName?: string;
  behavior?: Behavior;
  metricValue?: MetricValue;
  violationEventAdditionalInfo?: ViolationEventAdditionalInfo;
  violationEventType?: ViolationEventType;
  verificationState?: VerificationState;
  verificationStateDescription?: string;
  violationEventTime?: Date;
}
export interface ListViolationEventsResponse {
  violationEvents?: ViolationEvent[];
  nextToken?: string;
}
export interface PutVerificationStateOnViolationRequest {
  violationId: string | undefined;
  verificationState: VerificationState | undefined;
  verificationStateDescription?: string;
}
export interface PutVerificationStateOnViolationResponse {}
export interface RegisterCACertificateRequest {
  caCertificate: string | undefined;
  verificationCertificate?: string;
  setAsActive?: boolean;
  allowAutoRegistration?: boolean;
  registrationConfig?: RegistrationConfig;
  tags?: Tag[];
  certificateMode?: CertificateMode;
}
export interface RegisterCACertificateResponse {
  certificateArn?: string;
  certificateId?: string;
}
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;
  setAsActive?: boolean;
  status?: CertificateStatus;
}
export interface RegisterCertificateResponse {
  certificateArn?: string;
  certificateId?: string;
}
export interface RegisterCertificateWithoutCARequest {
  certificatePem: string | undefined;
  status?: CertificateStatus;
}
export interface RegisterCertificateWithoutCAResponse {
  certificateArn?: string;
  certificateId?: string;
}
export interface RegisterThingRequest {
  templateBody: string | undefined;
  parameters?: Record<string, string>;
}
export interface RegisterThingResponse {
  certificatePem?: string;
  resourceArns?: Record<string, string>;
}
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;
}
export interface RemoveThingFromBillingGroupRequest {
  billingGroupName?: string;
  billingGroupArn?: string;
  thingName?: string;
  thingArn?: string;
}
export interface RemoveThingFromBillingGroupResponse {}
export interface RemoveThingFromThingGroupRequest {
  thingGroupName?: string;
  thingGroupArn?: string;
  thingName?: string;
  thingArn?: string;
}
export interface RemoveThingFromThingGroupResponse {}
export interface ReplaceTopicRuleRequest {
  ruleName: string | undefined;
  topicRulePayload: TopicRulePayload | undefined;
}
export interface SearchIndexRequest {
  indexName?: string;
  queryString: string | undefined;
  nextToken?: string;
  maxResults?: number;
  queryVersion?: string;
}
export interface ThingGroupDocument {
  thingGroupName?: string;
  thingGroupId?: string;
  thingGroupDescription?: string;
  attributes?: Record<string, string>;
  parentGroupNames?: string[];
}
export interface ThingConnectivity {
  connected?: boolean;
  timestamp?: number;
  disconnectReason?: string;
}
export interface ThingDocument {
  thingName?: string;
  thingId?: string;
  thingTypeName?: string;
  thingGroupNames?: string[];
  attributes?: Record<string, string>;
  shadow?: string;
  deviceDefender?: string;
  connectivity?: ThingConnectivity;
}
export interface SearchIndexResponse {
  nextToken?: string;
  things?: ThingDocument[];
  thingGroups?: ThingGroupDocument[];
}
export interface SetDefaultAuthorizerRequest {
  authorizerName: string | undefined;
}
export interface SetDefaultAuthorizerResponse {
  authorizerName?: string;
  authorizerArn?: string;
}
export interface SetDefaultPolicyVersionRequest {
  policyName: string | undefined;
  policyVersionId: string | undefined;
}
export interface LoggingOptionsPayload {
  roleArn: string | undefined;
  logLevel?: LogLevel;
}
export interface SetLoggingOptionsRequest {
  loggingOptionsPayload: LoggingOptionsPayload | undefined;
}
export interface SetV2LoggingLevelRequest {
  logTarget: LogTarget | undefined;
  logLevel: LogLevel | undefined;
}
export interface SetV2LoggingOptionsRequest {
  roleArn?: string;
  defaultLogLevel?: LogLevel;
  disableAllLogs?: boolean;
}
export interface StartAuditMitigationActionsTaskRequest {
  taskId: string | undefined;
  target: AuditMitigationActionsTaskTarget | undefined;
  auditCheckToActionsMapping: Record<string, string[]> | undefined;
  clientRequestToken?: string;
}
export interface StartAuditMitigationActionsTaskResponse {
  taskId?: string;
}
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;
  includeOnlyActiveViolations?: boolean;
  includeSuppressedAlerts?: boolean;
  clientRequestToken?: string;
}
export interface StartDetectMitigationActionsTaskResponse {
  taskId?: string;
}
export interface StartOnDemandAuditTaskRequest {
  targetCheckNames: string[] | undefined;
}
export interface StartOnDemandAuditTaskResponse {
  taskId?: string;
}
export interface StartThingRegistrationTaskRequest {
  templateBody: string | undefined;
  inputFileBucket: string | undefined;
  inputFileKey: string | undefined;
  roleArn: string | undefined;
}
export interface StartThingRegistrationTaskResponse {
  taskId?: string;
}
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;
  cognitoIdentityPoolId?: string;
  authInfos: AuthInfo[] | undefined;
  clientId?: string;
  policyNamesToAdd?: string[];
  policyNamesToSkip?: string[];
}
export interface TestAuthorizationResponse {
  authResults?: AuthResult[];
}
export declare class InvalidResponseException extends __BaseException {
  readonly name: "InvalidResponseException";
  readonly $fault: "client";
  constructor(
    opts: __ExceptionOptionType<InvalidResponseException, __BaseException>
  );
}
export interface HttpContext {
  headers?: Record<string, string>;
  queryString?: string;
}
export interface MqttContext {
  username?: string;
  password?: Uint8Array;
  clientId?: string;
}
export interface TlsContext {
  serverName?: string;
}
export interface TestInvokeAuthorizerRequest {
  authorizerName: string | undefined;
  token?: string;
  tokenSignature?: string;
  httpContext?: HttpContext;
  mqttContext?: MqttContext;
  tlsContext?: TlsContext;
}
export interface TestInvokeAuthorizerResponse {
  isAuthenticated?: boolean;
  principalId?: string;
  policyDocuments?: string[];
  refreshAfterInSeconds?: number;
  disconnectAfterInSeconds?: number;
}
export interface TransferCertificateRequest {
  certificateId: string | undefined;
  targetAwsAccount: string | undefined;
  transferMessage?: string;
}
export interface TransferCertificateResponse {
  transferredCertificateArn?: string;
}
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;
  auditNotificationTargetConfigurations?: Partial<
    Record<AuditNotificationType, AuditNotificationTarget>
  >;
  auditCheckConfigurations?: Record<string, AuditCheckConfiguration>;
}
export interface UpdateAccountAuditConfigurationResponse {}
export interface UpdateAuditSuppressionRequest {
  checkName: string | undefined;
  resourceIdentifier: ResourceIdentifier | undefined;
  expirationDate?: Date;
  suppressIndefinitely?: boolean;
  description?: string;
}
export interface UpdateAuditSuppressionResponse {}
export interface UpdateAuthorizerRequest {
  authorizerName: string | undefined;
  authorizerFunctionArn?: string;
  tokenKeyName?: string;
  tokenSigningPublicKeys?: Record<string, string>;
  status?: AuthorizerStatus;
  enableCachingForHttp?: boolean;
}
export interface UpdateAuthorizerResponse {
  authorizerName?: string;
  authorizerArn?: string;
}
export interface UpdateBillingGroupRequest {
  billingGroupName: string | undefined;
  billingGroupProperties: BillingGroupProperties | undefined;
  expectedVersion?: number;
}
export interface UpdateBillingGroupResponse {
  version?: number;
}
export interface UpdateCACertificateRequest {
  certificateId: string | undefined;
  newStatus?: CACertificateStatus;
  newAutoRegistrationStatus?: AutoRegistrationStatus;
  registrationConfig?: RegistrationConfig;
  removeAutoRegistration?: boolean;
}
export interface UpdateCertificateRequest {
  certificateId: string | undefined;
  newStatus: CertificateStatus | undefined;
}
export interface UpdateCertificateProviderRequest {
  certificateProviderName: string | undefined;
  lambdaFunctionArn?: string;
  accountDefaultForOperations?: CertificateProviderOperation[];
}
export interface UpdateCertificateProviderResponse {
  certificateProviderName?: string;
  certificateProviderArn?: string;
}
export interface UpdateCustomMetricRequest {
  metricName: string | undefined;
  displayName: string | undefined;
}
export interface UpdateCustomMetricResponse {
  metricName?: string;
  metricArn?: string;
  metricType?: CustomMetricType;
  displayName?: string;
  creationDate?: Date;
  lastModifiedDate?: Date;
}
export interface UpdateDimensionRequest {
  name: string | undefined;
  stringValues: string[] | undefined;
}
export interface UpdateDimensionResponse {
  name?: string;
  arn?: string;
  type?: DimensionType;
  stringValues?: string[];
  creationDate?: Date;
  lastModifiedDate?: Date;
}
export interface UpdateDomainConfigurationRequest {
  domainConfigurationName: string | undefined;
  authorizerConfig?: AuthorizerConfig;
  domainConfigurationStatus?: DomainConfigurationStatus;
  removeAuthorizerConfig?: boolean;
  tlsConfig?: TlsConfig;
  serverCertificateConfig?: ServerCertificateConfig;
}
export interface UpdateDomainConfigurationResponse {
  domainConfigurationName?: string;
  domainConfigurationArn?: string;
}
export interface UpdateDynamicThingGroupRequest {
  thingGroupName: string | undefined;
  thingGroupProperties: ThingGroupProperties | undefined;
  expectedVersion?: number;
  indexName?: string;
  queryString?: string;
  queryVersion?: string;
}
export interface UpdateDynamicThingGroupResponse {
  version?: number;
}
export interface UpdateEventConfigurationsRequest {
  eventConfigurations?: Partial<Record<EventType, Configuration>>;
}
export interface UpdateEventConfigurationsResponse {}
export interface UpdateFleetMetricRequest {
  metricName: string | undefined;
  queryString?: string;
  aggregationType?: AggregationType;
  period?: number;
  aggregationField?: string;
  description?: string;
  queryVersion?: string;
  indexName: string | undefined;
  unit?: FleetMetricUnit;
  expectedVersion?: number;
}
export interface UpdateIndexingConfigurationRequest {
  thingIndexingConfiguration?: ThingIndexingConfiguration;
  thingGroupIndexingConfiguration?: ThingGroupIndexingConfiguration;
}
export interface UpdateIndexingConfigurationResponse {}
export interface UpdateJobRequest {
  jobId: string | undefined;
  description?: string;
  presignedUrlConfig?: PresignedUrlConfig;
  jobExecutionsRolloutConfig?: JobExecutionsRolloutConfig;
  abortConfig?: AbortConfig;
  timeoutConfig?: TimeoutConfig;
  namespaceId?: string;
  jobExecutionsRetryConfig?: JobExecutionsRetryConfig;
}
export interface UpdateMitigationActionRequest {
  actionName: string | undefined;
  roleArn?: string;
  actionParams?: MitigationActionParams;
}
export interface UpdateMitigationActionResponse {
  actionArn?: string;
  actionId?: string;
}
export interface UpdatePackageRequest {
  packageName: string | undefined;
  description?: string;
  defaultVersionName?: string;
  unsetDefaultVersion?: boolean;
  clientToken?: string;
}
export interface UpdatePackageResponse {}
export interface UpdatePackageConfigurationRequest {
  versionUpdateByJobsConfig?: VersionUpdateByJobsConfig;
  clientToken?: string;
}
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;
  attributes?: Record<string, string>;
  action?: PackageVersionAction;
  clientToken?: string;
}
export interface UpdatePackageVersionResponse {}
export interface UpdateProvisioningTemplateRequest {
  templateName: string | undefined;
  description?: string;
  enabled?: boolean;
  defaultVersionId?: number;
  provisioningRoleArn?: string;
  preProvisioningHook?: ProvisioningHook;
  removePreProvisioningHook?: boolean;
}
export interface UpdateProvisioningTemplateResponse {}
export interface UpdateRoleAliasRequest {
  roleAlias: string | undefined;
  roleArn?: string;
  credentialDurationSeconds?: number;
}
export interface UpdateRoleAliasResponse {
  roleAlias?: string;
  roleAliasArn?: string;
}
export interface UpdateScheduledAuditRequest {
  frequency?: AuditFrequency;
  dayOfMonth?: string;
  dayOfWeek?: DayOfWeek;
  targetCheckNames?: string[];
  scheduledAuditName: string | undefined;
}
export interface UpdateScheduledAuditResponse {
  scheduledAuditArn?: string;
}
export interface UpdateSecurityProfileRequest {
  securityProfileName: string | undefined;
  securityProfileDescription?: string;
  behaviors?: Behavior[];
  alertTargets?: Partial<Record<AlertTargetType, AlertTarget>>;
  additionalMetricsToRetain?: string[];
  additionalMetricsToRetainV2?: MetricToRetain[];
  deleteBehaviors?: boolean;
  deleteAlertTargets?: boolean;
  deleteAdditionalMetricsToRetain?: boolean;
  expectedVersion?: number;
  metricsExportConfig?: MetricsExportConfig;
  deleteMetricsExportConfig?: boolean;
}
export interface UpdateSecurityProfileResponse {
  securityProfileName?: string;
  securityProfileArn?: string;
  securityProfileDescription?: string;
  behaviors?: Behavior[];
  alertTargets?: Partial<Record<AlertTargetType, AlertTarget>>;
  additionalMetricsToRetain?: string[];
  additionalMetricsToRetainV2?: MetricToRetain[];
  version?: number;
  creationDate?: Date;
  lastModifiedDate?: Date;
  metricsExportConfig?: MetricsExportConfig;
}
export interface UpdateStreamRequest {
  streamId: string | undefined;
  description?: string;
  files?: StreamFile[];
  roleArn?: string;
}
export interface UpdateStreamResponse {
  streamId?: string;
  streamArn?: string;
  description?: string;
  streamVersion?: number;
}
export interface UpdateThingRequest {
  thingName: string | undefined;
  thingTypeName?: string;
  attributePayload?: AttributePayload;
  expectedVersion?: number;
  removeThingType?: boolean;
}
export interface UpdateThingResponse {}
export interface UpdateThingGroupRequest {
  thingGroupName: string | undefined;
  thingGroupProperties: ThingGroupProperties | undefined;
  expectedVersion?: number;
}
export interface UpdateThingGroupResponse {
  version?: number;
}
export interface UpdateThingGroupsForThingRequest {
  thingName?: string;
  thingGroupsToAdd?: string[];
  thingGroupsToRemove?: string[];
  overrideDynamicGroups?: boolean;
}
export interface UpdateThingGroupsForThingResponse {}
export interface UpdateTopicRuleDestinationRequest {
  arn: string | undefined;
  status: TopicRuleDestinationStatus | undefined;
}
export interface UpdateTopicRuleDestinationResponse {}
export interface ValidateSecurityProfileBehaviorsRequest {
  behaviors: Behavior[] | undefined;
}
export interface ValidationError {
  errorMessage?: string;
}
export interface ValidateSecurityProfileBehaviorsResponse {
  valid?: boolean;
  validationErrors?: ValidationError[];
}
export declare const UpdatePackageRequestFilterSensitiveLog: (
  obj: UpdatePackageRequest
) => any;
export declare const UpdatePackageVersionRequestFilterSensitiveLog: (
  obj: UpdatePackageVersionRequest
) => any;
