import {
  ByoipCidr,
  IpPermission,
  NatGatewayAddress,
  TagSpecification,
  TransitGatewayAttachmentResourceType,
} from "./models_0";
import { LocalGatewayRoute } from "./models_1";
import { TransitGatewayRoute } from "./models_2";
import { ClientVpnConnectionStatus, Filter } from "./models_3";
import {
  InstanceState,
  NetworkInsightsAccessScopeAnalysis,
  NetworkInsightsAnalysis,
} from "./models_4";
import {
  InstanceMonitoring,
  ScheduledInstancesBlockDeviceMapping,
  ScheduledInstancesIamInstanceProfile,
  ScheduledInstancesIpv6Address,
  ScheduledInstancesMonitoring,
  ScheduledInstancesPrivateIpAddressConfig,
} from "./models_6";
export interface ScheduledInstancesNetworkInterface {
  AssociatePublicIpAddress?: boolean;
  DeleteOnTermination?: boolean;
  Description?: string;
  DeviceIndex?: number;
  Groups?: string[];
  Ipv6AddressCount?: number;
  Ipv6Addresses?: ScheduledInstancesIpv6Address[];
  NetworkInterfaceId?: string;
  PrivateIpAddress?: string;
  PrivateIpAddressConfigs?: ScheduledInstancesPrivateIpAddressConfig[];
  SecondaryPrivateIpAddressCount?: number;
  SubnetId?: string;
}
export interface ScheduledInstancesPlacement {
  AvailabilityZone?: string;
  GroupName?: string;
}
export interface ScheduledInstancesLaunchSpecification {
  BlockDeviceMappings?: ScheduledInstancesBlockDeviceMapping[];
  EbsOptimized?: boolean;
  IamInstanceProfile?: ScheduledInstancesIamInstanceProfile;
  ImageId: string | undefined;
  InstanceType?: string;
  KernelId?: string;
  KeyName?: string;
  Monitoring?: ScheduledInstancesMonitoring;
  NetworkInterfaces?: ScheduledInstancesNetworkInterface[];
  Placement?: ScheduledInstancesPlacement;
  RamdiskId?: string;
  SecurityGroupIds?: string[];
  SubnetId?: string;
  UserData?: string;
}
export interface RunScheduledInstancesRequest {
  ClientToken?: string;
  DryRun?: boolean;
  InstanceCount?: number;
  LaunchSpecification: ScheduledInstancesLaunchSpecification | undefined;
  ScheduledInstanceId: string | undefined;
}
export interface RunScheduledInstancesResult {
  InstanceIdSet?: string[];
}
export interface SearchLocalGatewayRoutesRequest {
  LocalGatewayRouteTableId: string | undefined;
  Filters?: Filter[];
  MaxResults?: number;
  NextToken?: string;
  DryRun?: boolean;
}
export interface SearchLocalGatewayRoutesResult {
  Routes?: LocalGatewayRoute[];
  NextToken?: string;
}
export interface SearchTransitGatewayMulticastGroupsRequest {
  TransitGatewayMulticastDomainId: string | undefined;
  Filters?: Filter[];
  MaxResults?: number;
  NextToken?: string;
  DryRun?: boolean;
}
export declare const MembershipType: {
  readonly igmp: "igmp";
  readonly static: "static";
};
export type MembershipType =
  (typeof MembershipType)[keyof typeof MembershipType];
export interface TransitGatewayMulticastGroup {
  GroupIpAddress?: string;
  TransitGatewayAttachmentId?: string;
  SubnetId?: string;
  ResourceId?: string;
  ResourceType?: TransitGatewayAttachmentResourceType | string;
  ResourceOwnerId?: string;
  NetworkInterfaceId?: string;
  GroupMember?: boolean;
  GroupSource?: boolean;
  MemberType?: MembershipType | string;
  SourceType?: MembershipType | string;
}
export interface SearchTransitGatewayMulticastGroupsResult {
  MulticastGroups?: TransitGatewayMulticastGroup[];
  NextToken?: string;
}
export interface SearchTransitGatewayRoutesRequest {
  TransitGatewayRouteTableId: string | undefined;
  Filters: Filter[] | undefined;
  MaxResults?: number;
  DryRun?: boolean;
}
export interface SearchTransitGatewayRoutesResult {
  Routes?: TransitGatewayRoute[];
  AdditionalRoutesAvailable?: boolean;
}
export interface SendDiagnosticInterruptRequest {
  InstanceId: string | undefined;
  DryRun?: boolean;
}
export interface StartInstancesRequest {
  InstanceIds: string[] | undefined;
  AdditionalInfo?: string;
  DryRun?: boolean;
}
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;
}
export declare const ScheduledInstancesLaunchSpecificationFilterSensitiveLog: (
  obj: ScheduledInstancesLaunchSpecification
) => any;
export declare const RunScheduledInstancesRequestFilterSensitiveLog: (
  obj: RunScheduledInstancesRequest
) => any;
