import { DocumentType as __DocumentType } from "@smithy/types";
import {
  DeletionProtectionType,
  DeviceRememberedStatusType,
  ExplicitAuthFlowsType,
  FeedbackValueType,
  OAuthFlowType,
  PreventUserExistenceErrorTypes,
  TermsEnforcementType,
  TermsSourceType,
  UpdateReplicaStatusType,
  UserPoolMfaType,
  UserPoolTierType,
  VerifiedAttributeType,
  VerifySoftwareTokenResponseType,
} from "./enums";
import {
  AccountRecoverySettingType,
  AdminCreateUserConfigType,
  AnalyticsConfigurationType,
  AnalyticsMetadataType,
  AssetType,
  AttributeType,
  CodeDeliveryDetailsType,
  CustomDomainConfigType,
  DeviceConfigurationType,
  EmailConfigurationType,
  EmailMfaConfigType,
  GroupType,
  IdentityProviderType,
  IssuerConfigurationType,
  KeyConfigurationType,
  LambdaConfigType,
  LimitDefinitionType,
  LimitType,
  ManagedLoginBrandingType,
  MFAOptionType,
  RefreshTokenRotationType,
  ResourceServerScopeType,
  ResourceServerType,
  RoutingType,
  SmsConfigurationType,
  SmsMfaConfigType,
  SoftwareTokenMfaConfigType,
  TermsType,
  TokenValidityUnitsType,
  UserAttributeUpdateSettingsType,
  UserContextDataType,
  UserImportJobType,
  UserPoolAddOnsType,
  UserPoolClientType,
  UserPoolPolicyType,
  UserPoolReplicaType,
  VerificationMessageTemplateType,
  WebAuthnConfigurationType,
} from "./models_0";
export interface SetUserPoolMfaConfigResponse {
  SmsMfaConfiguration?: SmsMfaConfigType | undefined;
  SoftwareTokenMfaConfiguration?: SoftwareTokenMfaConfigType | undefined;
  EmailMfaConfiguration?: EmailMfaConfigType | undefined;
  MfaConfiguration?: UserPoolMfaType | undefined;
  WebAuthnConfiguration?: WebAuthnConfigurationType | undefined;
}
export interface SetUserSettingsRequest {
  AccessToken: string | undefined;
  MFAOptions: MFAOptionType[] | undefined;
}
export interface SetUserSettingsResponse {}
export interface SignUpRequest {
  ClientId: string | undefined;
  SecretHash?: string | undefined;
  Username: string | undefined;
  Password?: string | undefined;
  UserAttributes?: AttributeType[] | undefined;
  ValidationData?: AttributeType[] | undefined;
  AnalyticsMetadata?: AnalyticsMetadataType | undefined;
  UserContextData?: UserContextDataType | undefined;
  ClientMetadata?: Record<string, string> | undefined;
}
export interface SignUpResponse {
  UserConfirmed: boolean | undefined;
  CodeDeliveryDetails?: CodeDeliveryDetailsType | undefined;
  UserSub: string | undefined;
  Session?: string | undefined;
}
export interface StartUserImportJobRequest {
  UserPoolId: string | undefined;
  JobId: string | undefined;
}
export interface StartUserImportJobResponse {
  UserImportJob?: UserImportJobType | undefined;
}
export interface StartWebAuthnRegistrationRequest {
  AccessToken: string | undefined;
}
export interface StartWebAuthnRegistrationResponse {
  CredentialCreationOptions: __DocumentType | undefined;
}
export interface StopUserImportJobRequest {
  UserPoolId: string | undefined;
  JobId: string | undefined;
}
export interface StopUserImportJobResponse {
  UserImportJob?: UserImportJobType | undefined;
}
export interface TagResourceRequest {
  ResourceArn: string | undefined;
  Tags: Record<string, string> | undefined;
}
export interface TagResourceResponse {}
export interface UntagResourceRequest {
  ResourceArn: string | undefined;
  TagKeys: string[] | undefined;
}
export interface UntagResourceResponse {}
export interface UpdateAuthEventFeedbackRequest {
  UserPoolId: string | undefined;
  Username: string | undefined;
  EventId: string | undefined;
  FeedbackToken: string | undefined;
  FeedbackValue: FeedbackValueType | undefined;
}
export interface UpdateAuthEventFeedbackResponse {}
export interface UpdateDeviceStatusRequest {
  AccessToken: string | undefined;
  DeviceKey: string | undefined;
  DeviceRememberedStatus?: DeviceRememberedStatusType | undefined;
}
export interface UpdateDeviceStatusResponse {}
export interface UpdateGroupRequest {
  GroupName: string | undefined;
  UserPoolId: string | undefined;
  Description?: string | undefined;
  RoleArn?: string | undefined;
  Precedence?: number | undefined;
}
export interface UpdateGroupResponse {
  Group?: GroupType | undefined;
}
export interface UpdateIdentityProviderRequest {
  UserPoolId: string | undefined;
  ProviderName: string | undefined;
  ProviderDetails?: Record<string, string> | undefined;
  AttributeMapping?: Record<string, string> | undefined;
  IdpIdentifiers?: string[] | undefined;
}
export interface UpdateIdentityProviderResponse {
  IdentityProvider: IdentityProviderType | undefined;
}
export interface UpdateManagedLoginBrandingRequest {
  UserPoolId?: string | undefined;
  ManagedLoginBrandingId?: string | undefined;
  UseCognitoProvidedValues?: boolean | undefined;
  Settings?: __DocumentType | undefined;
  Assets?: AssetType[] | undefined;
}
export interface UpdateManagedLoginBrandingResponse {
  ManagedLoginBranding?: ManagedLoginBrandingType | undefined;
}
export interface UpdateProvisionedLimitRequest {
  LimitDefinition: LimitDefinitionType | undefined;
  RequestedLimitValue: number | undefined;
}
export interface UpdateProvisionedLimitResponse {
  Limit: LimitType | undefined;
}
export interface UpdateResourceServerRequest {
  UserPoolId: string | undefined;
  Identifier: string | undefined;
  Name: string | undefined;
  Scopes?: ResourceServerScopeType[] | undefined;
}
export interface UpdateResourceServerResponse {
  ResourceServer: ResourceServerType | undefined;
}
export interface UpdateTermsRequest {
  TermsId: string | undefined;
  UserPoolId: string | undefined;
  TermsName?: string | undefined;
  TermsSource?: TermsSourceType | undefined;
  Enforcement?: TermsEnforcementType | undefined;
  Links?: Record<string, string> | undefined;
}
export interface UpdateTermsResponse {
  Terms?: TermsType | undefined;
}
export interface UpdateUserAttributesRequest {
  UserAttributes: AttributeType[] | undefined;
  AccessToken: string | undefined;
  ClientMetadata?: Record<string, string> | undefined;
}
export interface UpdateUserAttributesResponse {
  CodeDeliveryDetailsList?: CodeDeliveryDetailsType[] | undefined;
}
export interface UpdateUserPoolRequest {
  UserPoolId: string | undefined;
  Policies?: UserPoolPolicyType | undefined;
  DeletionProtection?: DeletionProtectionType | undefined;
  LambdaConfig?: LambdaConfigType | undefined;
  AutoVerifiedAttributes?: VerifiedAttributeType[] | undefined;
  SmsVerificationMessage?: string | undefined;
  EmailVerificationMessage?: string | undefined;
  EmailVerificationSubject?: string | undefined;
  VerificationMessageTemplate?: VerificationMessageTemplateType | undefined;
  SmsAuthenticationMessage?: string | undefined;
  UserAttributeUpdateSettings?: UserAttributeUpdateSettingsType | undefined;
  MfaConfiguration?: UserPoolMfaType | undefined;
  DeviceConfiguration?: DeviceConfigurationType | undefined;
  EmailConfiguration?: EmailConfigurationType | undefined;
  SmsConfiguration?: SmsConfigurationType | undefined;
  UserPoolTags?: Record<string, string> | undefined;
  AdminCreateUserConfig?: AdminCreateUserConfigType | undefined;
  UserPoolAddOns?: UserPoolAddOnsType | undefined;
  AccountRecoverySetting?: AccountRecoverySettingType | undefined;
  PoolName?: string | undefined;
  UserPoolTier?: UserPoolTierType | undefined;
  KeyConfiguration?: KeyConfigurationType | undefined;
  IssuerConfiguration?: IssuerConfigurationType | undefined;
}
export interface UpdateUserPoolResponse {}
export interface UpdateUserPoolClientRequest {
  UserPoolId: string | undefined;
  ClientId: string | undefined;
  ClientName?: string | undefined;
  RefreshTokenValidity?: number | undefined;
  AccessTokenValidity?: number | undefined;
  IdTokenValidity?: number | undefined;
  TokenValidityUnits?: TokenValidityUnitsType | undefined;
  ReadAttributes?: string[] | undefined;
  WriteAttributes?: string[] | undefined;
  ExplicitAuthFlows?: ExplicitAuthFlowsType[] | undefined;
  SupportedIdentityProviders?: string[] | undefined;
  CallbackURLs?: string[] | undefined;
  LogoutURLs?: string[] | undefined;
  DefaultRedirectURI?: string | undefined;
  AllowedOAuthFlows?: OAuthFlowType[] | undefined;
  AllowedOAuthScopes?: string[] | undefined;
  AllowedOAuthFlowsUserPoolClient?: boolean | undefined;
  AnalyticsConfiguration?: AnalyticsConfigurationType | undefined;
  PreventUserExistenceErrors?: PreventUserExistenceErrorTypes | undefined;
  EnableTokenRevocation?: boolean | undefined;
  EnablePropagateAdditionalUserContextData?: boolean | undefined;
  AuthSessionValidity?: number | undefined;
  RefreshTokenRotation?: RefreshTokenRotationType | undefined;
}
export interface UpdateUserPoolClientResponse {
  UserPoolClient?: UserPoolClientType | undefined;
}
export interface UpdateUserPoolDomainRequest {
  Domain: string | undefined;
  UserPoolId: string | undefined;
  ManagedLoginVersion?: number | undefined;
  CustomDomainConfig?: CustomDomainConfigType | undefined;
  Routing?: RoutingType | undefined;
}
export interface UpdateUserPoolDomainResponse {
  ManagedLoginVersion?: number | undefined;
  CloudFrontDomain?: string | undefined;
  Routing?: RoutingType | undefined;
}
export interface UpdateUserPoolReplicaRequest {
  UserPoolId: string | undefined;
  RegionName: string | undefined;
  Status: UpdateReplicaStatusType | undefined;
}
export interface UpdateUserPoolReplicaResponse {
  UserPoolReplica?: UserPoolReplicaType | undefined;
}
export interface VerifySoftwareTokenRequest {
  AccessToken?: string | undefined;
  Session?: string | undefined;
  UserCode: string | undefined;
  FriendlyDeviceName?: string | undefined;
}
export interface VerifySoftwareTokenResponse {
  Status?: VerifySoftwareTokenResponseType | undefined;
  Session?: string | undefined;
}
export interface VerifyUserAttributeRequest {
  AccessToken: string | undefined;
  AttributeName: string | undefined;
  Code: string | undefined;
}
export interface VerifyUserAttributeResponse {}
