import {
  _InstanceType,
  BooleanOperator,
  CrossAccountFilterOption,
  IPAddressType,
  NotebookInstanceAcceleratorType,
  ResourceType,
  RootAccess,
  SearchSortOrder,
  WorkforceIpAddressType,
} from "./enums";
import { CfnUpdateTemplateProvider, Tag } from "./models_0";
import {
  InstanceMetadataServiceConfiguration,
  NotebookInstanceLifecycleHook,
  UserSettings,
} from "./models_1";
import {
  MemberDefinition,
  NotificationConfiguration,
  OidcConfig,
  ParallelismConfiguration,
  PartnerAppConfig,
  PartnerAppMaintenanceConfig,
  PipelineDefinitionS3Location,
  ProfilerRuleConfiguration,
  ProvisioningParameter,
  SourceIpConfig,
  SpaceSettings,
  TrialComponentArtifact,
  TrialComponentParameterValue,
  TrialComponentStatus,
  WorkerAccessConfiguration,
  WorkforceVpcConfigRequest,
} from "./models_2";
import { Filter, Workforce, Workteam } from "./models_3";
import {
  NestedFilters,
  ProfilerConfigForUpdate,
  RemoteDebugConfigForUpdate,
  ResourceConfigForUpdate,
  VisibilityConditions,
} from "./models_4";
export interface UpdateMonitoringScheduleResponse {
  MonitoringScheduleArn: string | undefined;
}
export interface UpdateNotebookInstanceInput {
  NotebookInstanceName: string | undefined;
  InstanceType?: _InstanceType | undefined;
  IpAddressType?: IPAddressType | undefined;
  PlatformIdentifier?: string | undefined;
  RoleArn?: string | undefined;
  LifecycleConfigName?: string | undefined;
  DisassociateLifecycleConfig?: boolean | undefined;
  VolumeSizeInGB?: number | undefined;
  DefaultCodeRepository?: string | undefined;
  AdditionalCodeRepositories?: string[] | undefined;
  AcceleratorTypes?: NotebookInstanceAcceleratorType[] | undefined;
  DisassociateAcceleratorTypes?: boolean | undefined;
  DisassociateDefaultCodeRepository?: boolean | undefined;
  DisassociateAdditionalCodeRepositories?: boolean | undefined;
  RootAccess?: RootAccess | undefined;
  InstanceMetadataServiceConfiguration?:
    | InstanceMetadataServiceConfiguration
    | undefined;
}
export interface UpdateNotebookInstanceOutput {}
export interface UpdateNotebookInstanceLifecycleConfigInput {
  NotebookInstanceLifecycleConfigName: string | undefined;
  OnCreate?: NotebookInstanceLifecycleHook[] | undefined;
  OnStart?: NotebookInstanceLifecycleHook[] | undefined;
}
export interface UpdateNotebookInstanceLifecycleConfigOutput {}
export interface UpdatePartnerAppRequest {
  Arn: string | undefined;
  MaintenanceConfig?: PartnerAppMaintenanceConfig | undefined;
  Tier?: string | undefined;
  ApplicationConfig?: PartnerAppConfig | undefined;
  EnableIamSessionBasedIdentity?: boolean | undefined;
  EnableAutoMinorVersionUpgrade?: boolean | undefined;
  AppVersion?: string | undefined;
  ClientToken?: string | undefined;
  Tags?: Tag[] | undefined;
}
export interface UpdatePartnerAppResponse {
  Arn?: string | undefined;
}
export interface UpdatePipelineRequest {
  PipelineName: string | undefined;
  PipelineDisplayName?: string | undefined;
  PipelineDefinition?: string | undefined;
  PipelineDefinitionS3Location?: PipelineDefinitionS3Location | undefined;
  PipelineDescription?: string | undefined;
  RoleArn?: string | undefined;
  ParallelismConfiguration?: ParallelismConfiguration | undefined;
}
export interface UpdatePipelineResponse {
  PipelineArn?: string | undefined;
  PipelineVersionId?: number | undefined;
}
export interface UpdatePipelineExecutionRequest {
  PipelineExecutionArn: string | undefined;
  PipelineExecutionDescription?: string | undefined;
  PipelineExecutionDisplayName?: string | undefined;
  ParallelismConfiguration?: ParallelismConfiguration | undefined;
}
export interface UpdatePipelineExecutionResponse {
  PipelineExecutionArn?: string | undefined;
}
export interface UpdatePipelineVersionRequest {
  PipelineArn: string | undefined;
  PipelineVersionId: number | undefined;
  PipelineVersionDisplayName?: string | undefined;
  PipelineVersionDescription?: string | undefined;
}
export interface UpdatePipelineVersionResponse {
  PipelineArn?: string | undefined;
  PipelineVersionId?: number | undefined;
}
export interface ServiceCatalogProvisioningUpdateDetails {
  ProvisioningArtifactId?: string | undefined;
  ProvisioningParameters?: ProvisioningParameter[] | undefined;
}
export interface UpdateTemplateProvider {
  CfnTemplateProvider?: CfnUpdateTemplateProvider | undefined;
}
export interface UpdateProjectInput {
  ProjectName: string | undefined;
  ProjectDescription?: string | undefined;
  ServiceCatalogProvisioningUpdateDetails?:
    | ServiceCatalogProvisioningUpdateDetails
    | undefined;
  Tags?: Tag[] | undefined;
  TemplateProvidersToUpdate?: UpdateTemplateProvider[] | undefined;
}
export interface UpdateProjectOutput {
  ProjectArn: string | undefined;
}
export interface UpdateSpaceRequest {
  DomainId: string | undefined;
  SpaceName: string | undefined;
  SpaceSettings?: SpaceSettings | undefined;
  SpaceDisplayName?: string | undefined;
}
export interface UpdateSpaceResponse {
  SpaceArn?: string | undefined;
}
export interface UpdateTrainingJobRequest {
  TrainingJobName: string | undefined;
  ProfilerConfig?: ProfilerConfigForUpdate | undefined;
  ProfilerRuleConfigurations?: ProfilerRuleConfiguration[] | undefined;
  ResourceConfig?: ResourceConfigForUpdate | undefined;
  RemoteDebugConfig?: RemoteDebugConfigForUpdate | undefined;
}
export interface UpdateTrainingJobResponse {
  TrainingJobArn: string | undefined;
}
export interface UpdateTrialRequest {
  TrialName: string | undefined;
  DisplayName?: string | undefined;
}
export interface UpdateTrialResponse {
  TrialArn?: string | undefined;
}
export interface UpdateTrialComponentRequest {
  TrialComponentName: string | undefined;
  DisplayName?: string | undefined;
  Status?: TrialComponentStatus | undefined;
  StartTime?: Date | undefined;
  EndTime?: Date | undefined;
  Parameters?: Record<string, TrialComponentParameterValue> | undefined;
  ParametersToRemove?: string[] | undefined;
  InputArtifacts?: Record<string, TrialComponentArtifact> | undefined;
  InputArtifactsToRemove?: string[] | undefined;
  OutputArtifacts?: Record<string, TrialComponentArtifact> | undefined;
  OutputArtifactsToRemove?: string[] | undefined;
}
export interface UpdateTrialComponentResponse {
  TrialComponentArn?: string | undefined;
}
export interface UpdateUserProfileRequest {
  DomainId: string | undefined;
  UserProfileName: string | undefined;
  UserSettings?: UserSettings | undefined;
}
export interface UpdateUserProfileResponse {
  UserProfileArn?: string | undefined;
}
export interface UpdateWorkforceRequest {
  WorkforceName: string | undefined;
  SourceIpConfig?: SourceIpConfig | undefined;
  OidcConfig?: OidcConfig | undefined;
  WorkforceVpcConfig?: WorkforceVpcConfigRequest | undefined;
  IpAddressType?: WorkforceIpAddressType | undefined;
}
export interface UpdateWorkforceResponse {
  Workforce: Workforce | undefined;
}
export interface UpdateWorkteamRequest {
  WorkteamName: string | undefined;
  MemberDefinitions?: MemberDefinition[] | undefined;
  Description?: string | undefined;
  NotificationConfiguration?: NotificationConfiguration | undefined;
  WorkerAccessConfiguration?: WorkerAccessConfiguration | undefined;
}
export interface UpdateWorkteamResponse {
  Workteam: Workteam | undefined;
}
export interface SearchExpression {
  Filters?: Filter[] | undefined;
  NestedFilters?: NestedFilters[] | undefined;
  SubExpressions?: SearchExpression[] | undefined;
  Operator?: BooleanOperator | undefined;
}
export interface SearchRequest {
  Resource: ResourceType | undefined;
  SearchExpression?: SearchExpression | undefined;
  SortBy?: string | undefined;
  SortOrder?: SearchSortOrder | undefined;
  NextToken?: string | undefined;
  MaxResults?: number | undefined;
  CrossAccountFilterOption?: CrossAccountFilterOption | undefined;
  VisibilityConditions?: VisibilityConditions[] | undefined;
}
