import {
  ByoipCidr,
  IpPermission,
  NatGatewayAddress,
  TagSpecification,
} from "./models_0";
import { ClientVpnConnectionStatus } from "./models_3";
import {
  InstanceState,
  NetworkInsightsAccessScopeAnalysis,
  NetworkInsightsAnalysis,
} from "./models_4";
import { InstanceMonitoring } from "./models_6";
export interface InstanceStateChange {
  CurrentState?: InstanceState;
  InstanceId?: string;
  PreviousState?: InstanceState;
}
export interface StartInstancesResult {
  StartingInstances?: InstanceStateChange[];
}
export interface StartNetworkInsightsAccessScopeAnalysisRequest {
  NetworkInsightsAccessScopeId: string | undefined;
  DryRun?: boolean;
  TagSpecifications?: TagSpecification[];
  ClientToken?: string;
}
export interface StartNetworkInsightsAccessScopeAnalysisResult {
  NetworkInsightsAccessScopeAnalysis?: NetworkInsightsAccessScopeAnalysis;
}
export interface StartNetworkInsightsAnalysisRequest {
  NetworkInsightsPathId: string | undefined;
  AdditionalAccounts?: string[];
  FilterInArns?: string[];
  DryRun?: boolean;
  TagSpecifications?: TagSpecification[];
  ClientToken?: string;
}
export interface StartNetworkInsightsAnalysisResult {
  NetworkInsightsAnalysis?: NetworkInsightsAnalysis;
}
export interface StartVpcEndpointServicePrivateDnsVerificationRequest {
  DryRun?: boolean;
  ServiceId: string | undefined;
}
export interface StartVpcEndpointServicePrivateDnsVerificationResult {
  ReturnValue?: boolean;
}
export interface StopInstancesRequest {
  InstanceIds: string[] | undefined;
  Hibernate?: boolean;
  DryRun?: boolean;
  Force?: boolean;
}
export interface StopInstancesResult {
  StoppingInstances?: InstanceStateChange[];
}
export interface TerminateClientVpnConnectionsRequest {
  ClientVpnEndpointId: string | undefined;
  ConnectionId?: string;
  Username?: string;
  DryRun?: boolean;
}
export interface TerminateConnectionStatus {
  ConnectionId?: string;
  PreviousStatus?: ClientVpnConnectionStatus;
  CurrentStatus?: ClientVpnConnectionStatus;
}
export interface TerminateClientVpnConnectionsResult {
  ClientVpnEndpointId?: string;
  Username?: string;
  ConnectionStatuses?: TerminateConnectionStatus[];
}
export interface TerminateInstancesRequest {
  InstanceIds: string[] | undefined;
  DryRun?: boolean;
}
export interface TerminateInstancesResult {
  TerminatingInstances?: InstanceStateChange[];
}
export interface UnassignIpv6AddressesRequest {
  Ipv6Addresses?: string[];
  Ipv6Prefixes?: string[];
  NetworkInterfaceId: string | undefined;
}
export interface UnassignIpv6AddressesResult {
  NetworkInterfaceId?: string;
  UnassignedIpv6Addresses?: string[];
  UnassignedIpv6Prefixes?: string[];
}
export interface UnassignPrivateIpAddressesRequest {
  NetworkInterfaceId: string | undefined;
  PrivateIpAddresses?: string[];
  Ipv4Prefixes?: string[];
}
export interface UnassignPrivateNatGatewayAddressRequest {
  NatGatewayId: string | undefined;
  PrivateIpAddresses: string[] | undefined;
  MaxDrainDurationSeconds?: number;
  DryRun?: boolean;
}
export interface UnassignPrivateNatGatewayAddressResult {
  NatGatewayId?: string;
  NatGatewayAddresses?: NatGatewayAddress[];
}
export interface UnmonitorInstancesRequest {
  InstanceIds: string[] | undefined;
  DryRun?: boolean;
}
export interface UnmonitorInstancesResult {
  InstanceMonitorings?: InstanceMonitoring[];
}
export interface SecurityGroupRuleDescription {
  SecurityGroupRuleId?: string;
  Description?: string;
}
export interface UpdateSecurityGroupRuleDescriptionsEgressRequest {
  DryRun?: boolean;
  GroupId?: string;
  GroupName?: string;
  IpPermissions?: IpPermission[];
  SecurityGroupRuleDescriptions?: SecurityGroupRuleDescription[];
}
export interface UpdateSecurityGroupRuleDescriptionsEgressResult {
  Return?: boolean;
}
export interface UpdateSecurityGroupRuleDescriptionsIngressRequest {
  DryRun?: boolean;
  GroupId?: string;
  GroupName?: string;
  IpPermissions?: IpPermission[];
  SecurityGroupRuleDescriptions?: SecurityGroupRuleDescription[];
}
export interface UpdateSecurityGroupRuleDescriptionsIngressResult {
  Return?: boolean;
}
export interface WithdrawByoipCidrRequest {
  Cidr: string | undefined;
  DryRun?: boolean;
}
export interface WithdrawByoipCidrResult {
  ByoipCidr?: ByoipCidr;
}
