<?php
namespace Aws\GeoRoutes;

use Aws\AwsClient;

/**
 * This client is used to interact with the **Amazon Location Service Routes V2** service.
 * @method \Aws\Result calculateIsolines(array $args = [])
 * @phpstan-method \Aws\Result calculateIsolines(array{
 *     Allow?: array{Hot?: bool, Hov?: bool, ...},
 *     ArrivalTime?: string,
 *     Avoid?: array{
 *         Areas?: list<array>,
 *         CarShuttleTrains?: bool,
 *         ControlledAccessHighways?: bool,
 *         DirtRoads?: bool,
 *         Ferries?: bool,
 *         SeasonalClosure?: bool,
 *         TollRoads?: bool,
 *         TollTransponders?: bool,
 *         TruckRoadTypes?: list<string>,
 *         Tunnels?: bool,
 *         UTurns?: bool,
 *         ZoneCategories?: list<array>,
 *         ...,
 *     },
 *     DepartNow?: bool,
 *     DepartureTime?: string,
 *     Destination?: list<float>,
 *     DestinationOptions?: array{
 *         AvoidActionsForDistance?: int,
 *         Heading?: float,
 *         Matching?: array{
 *             NameHint?: string,
 *             OnRoadThreshold?: int,
 *             Radius?: int,
 *             Strategy?: 'MatchAny'|'MatchMostSignificantRoad',
 *             ...,
 *         },
 *         SideOfStreet?: array{Position?: list<float>, UseWith?: 'AnyStreet'|'DividedStreetOnly', ...},
 *         ...,
 *     },
 *     IsolineGeometryFormat?: 'FlexiblePolyline'|'Simple',
 *     IsolineGranularity?: array{MaxPoints?: int, MaxResolution?: int, ...},
 *     Key?: string,
 *     OptimizeIsolineFor?: 'AccurateCalculation'|'BalancedCalculation'|'FastCalculation',
 *     OptimizeRoutingFor?: 'FastestRoute'|'ShortestRoute',
 *     Origin?: list<float>,
 *     OriginOptions?: array{
 *         AvoidActionsForDistance?: int,
 *         Heading?: float,
 *         Matching?: array{
 *             NameHint?: string,
 *             OnRoadThreshold?: int,
 *             Radius?: int,
 *             Strategy?: 'MatchAny'|'MatchMostSignificantRoad',
 *             ...,
 *         },
 *         SideOfStreet?: array{Position?: list<float>, UseWith?: 'AnyStreet'|'DividedStreetOnly', ...},
 *         ...,
 *     },
 *     Thresholds?: array{Distance?: list<int>, Time?: list<int>, ...},
 *     Traffic?: array{FlowEventThresholdOverride?: int, Usage?: 'IgnoreTrafficData'|'UseTrafficData', ...},
 *     TravelMode?: 'Car'|'Pedestrian'|'Scooter'|'Truck',
 *     TravelModeOptions?: array{
 *         Car?: array{
 *             EngineType?: 'Electric'|'InternalCombustion'|'PluginHybrid',
 *             LicensePlate?: array,
 *             MaxSpeed?: float,
 *             Occupancy?: int,
 *             ...,
 *         },
 *         Scooter?: array{
 *             EngineType?: 'Electric'|'InternalCombustion'|'PluginHybrid',
 *             LicensePlate?: array,
 *             MaxSpeed?: float,
 *             Occupancy?: int,
 *             ...,
 *         },
 *         Truck?: array{
 *             AxleCount?: int,
 *             EngineType?: 'Electric'|'InternalCombustion'|'PluginHybrid',
 *             GrossWeight?: int,
 *             HazardousCargos?: list<'Combustible'|'Corrosive'|'Explosive'|'Flammable'|'Gas'|'HarmfulToWater'|'Organic'|'Other'|'Poison'|'PoisonousInhalation'|'Radioactive'>,
 *             Height?: int,
 *             HeightAboveFirstAxle?: int,
 *             KpraLength?: int,
 *             Length?: int,
 *             LicensePlate?: array,
 *             MaxSpeed?: float,
 *             Occupancy?: int,
 *             PayloadCapacity?: int,
 *             TireCount?: int,
 *             Trailer?: array,
 *             TruckType?: 'LightTruck'|'StraightTruck'|'Tractor',
 *             TunnelRestrictionCode?: string,
 *             WeightPerAxle?: int,
 *             WeightPerAxleGroup?: array,
 *             Width?: int,
 *             ...,
 *         },
 *         ...,
 *     },
 *     ...,
 * } $args = [])
 * @method \GuzzleHttp\Promise\Promise calculateIsolinesAsync(array $args = [])
 * @phpstan-method \GuzzleHttp\Promise\Promise calculateIsolinesAsync(array{
 *     Allow?: array{Hot?: bool, Hov?: bool, ...},
 *     ArrivalTime?: string,
 *     Avoid?: array{
 *         Areas?: list<array>,
 *         CarShuttleTrains?: bool,
 *         ControlledAccessHighways?: bool,
 *         DirtRoads?: bool,
 *         Ferries?: bool,
 *         SeasonalClosure?: bool,
 *         TollRoads?: bool,
 *         TollTransponders?: bool,
 *         TruckRoadTypes?: list<string>,
 *         Tunnels?: bool,
 *         UTurns?: bool,
 *         ZoneCategories?: list<array>,
 *         ...,
 *     },
 *     DepartNow?: bool,
 *     DepartureTime?: string,
 *     Destination?: list<float>,
 *     DestinationOptions?: array{
 *         AvoidActionsForDistance?: int,
 *         Heading?: float,
 *         Matching?: array{
 *             NameHint?: string,
 *             OnRoadThreshold?: int,
 *             Radius?: int,
 *             Strategy?: 'MatchAny'|'MatchMostSignificantRoad',
 *             ...,
 *         },
 *         SideOfStreet?: array{Position?: list<float>, UseWith?: 'AnyStreet'|'DividedStreetOnly', ...},
 *         ...,
 *     },
 *     IsolineGeometryFormat?: 'FlexiblePolyline'|'Simple',
 *     IsolineGranularity?: array{MaxPoints?: int, MaxResolution?: int, ...},
 *     Key?: string,
 *     OptimizeIsolineFor?: 'AccurateCalculation'|'BalancedCalculation'|'FastCalculation',
 *     OptimizeRoutingFor?: 'FastestRoute'|'ShortestRoute',
 *     Origin?: list<float>,
 *     OriginOptions?: array{
 *         AvoidActionsForDistance?: int,
 *         Heading?: float,
 *         Matching?: array{
 *             NameHint?: string,
 *             OnRoadThreshold?: int,
 *             Radius?: int,
 *             Strategy?: 'MatchAny'|'MatchMostSignificantRoad',
 *             ...,
 *         },
 *         SideOfStreet?: array{Position?: list<float>, UseWith?: 'AnyStreet'|'DividedStreetOnly', ...},
 *         ...,
 *     },
 *     Thresholds?: array{Distance?: list<int>, Time?: list<int>, ...},
 *     Traffic?: array{FlowEventThresholdOverride?: int, Usage?: 'IgnoreTrafficData'|'UseTrafficData', ...},
 *     TravelMode?: 'Car'|'Pedestrian'|'Scooter'|'Truck',
 *     TravelModeOptions?: array{
 *         Car?: array{
 *             EngineType?: 'Electric'|'InternalCombustion'|'PluginHybrid',
 *             LicensePlate?: array,
 *             MaxSpeed?: float,
 *             Occupancy?: int,
 *             ...,
 *         },
 *         Scooter?: array{
 *             EngineType?: 'Electric'|'InternalCombustion'|'PluginHybrid',
 *             LicensePlate?: array,
 *             MaxSpeed?: float,
 *             Occupancy?: int,
 *             ...,
 *         },
 *         Truck?: array{
 *             AxleCount?: int,
 *             EngineType?: 'Electric'|'InternalCombustion'|'PluginHybrid',
 *             GrossWeight?: int,
 *             HazardousCargos?: list<'Combustible'|'Corrosive'|'Explosive'|'Flammable'|'Gas'|'HarmfulToWater'|'Organic'|'Other'|'Poison'|'PoisonousInhalation'|'Radioactive'>,
 *             Height?: int,
 *             HeightAboveFirstAxle?: int,
 *             KpraLength?: int,
 *             Length?: int,
 *             LicensePlate?: array,
 *             MaxSpeed?: float,
 *             Occupancy?: int,
 *             PayloadCapacity?: int,
 *             TireCount?: int,
 *             Trailer?: array,
 *             TruckType?: 'LightTruck'|'StraightTruck'|'Tractor',
 *             TunnelRestrictionCode?: string,
 *             WeightPerAxle?: int,
 *             WeightPerAxleGroup?: array,
 *             Width?: int,
 *             ...,
 *         },
 *         ...,
 *     },
 *     ...,
 * } $args = [])
 * @method \Aws\Result calculateRouteMatrix(array $args = [])
 * @phpstan-method \Aws\Result calculateRouteMatrix(array{
 *     Allow?: array{Hot?: bool, Hov?: bool, ...},
 *     Avoid?: array{
 *         Areas?: list<array>,
 *         CarShuttleTrains?: bool,
 *         ControlledAccessHighways?: bool,
 *         DirtRoads?: bool,
 *         Ferries?: bool,
 *         TollRoads?: bool,
 *         TollTransponders?: bool,
 *         TruckRoadTypes?: list<string>,
 *         Tunnels?: bool,
 *         UTurns?: bool,
 *         ZoneCategories?: list<array>,
 *         ...,
 *     },
 *     DepartNow?: bool,
 *     DepartureTime?: string,
 *     Destinations?: list<array{Options?: array, Position?: list<float>, ...}>,
 *     Exclude?: array{Countries?: list<string>, ...},
 *     Key?: string,
 *     OptimizeRoutingFor?: 'FastestRoute'|'ShortestRoute',
 *     Origins?: list<array{Options?: array, Position?: list<float>, ...}>,
 *     RoutingBoundary?: array{
 *         Geometry?: array{AutoCircle?: array, Circle?: array, BoundingBox?: list<float>, Polygon?: list<list<list<float>>>, ...},
 *         Unbounded?: bool,
 *         ...,
 *     },
 *     Traffic?: array{FlowEventThresholdOverride?: int, Usage?: 'IgnoreTrafficData'|'UseTrafficData', ...},
 *     TravelMode?: 'Car'|'Pedestrian'|'Scooter'|'Truck',
 *     TravelModeOptions?: array{
 *         Car?: array{LicensePlate?: array, MaxSpeed?: float, Occupancy?: int, ...},
 *         Scooter?: array{LicensePlate?: array, MaxSpeed?: float, Occupancy?: int, ...},
 *         Truck?: array{
 *             AxleCount?: int,
 *             GrossWeight?: int,
 *             HazardousCargos?: list<'Combustible'|'Corrosive'|'Explosive'|'Flammable'|'Gas'|'HarmfulToWater'|'Organic'|'Other'|'Poison'|'PoisonousInhalation'|'Radioactive'>,
 *             Height?: int,
 *             KpraLength?: int,
 *             Length?: int,
 *             LicensePlate?: array,
 *             MaxSpeed?: float,
 *             Occupancy?: int,
 *             PayloadCapacity?: int,
 *             Trailer?: array,
 *             TruckType?: 'LightTruck'|'StraightTruck'|'Tractor',
 *             TunnelRestrictionCode?: string,
 *             WeightPerAxle?: int,
 *             WeightPerAxleGroup?: array,
 *             Width?: int,
 *             ...,
 *         },
 *         ...,
 *     },
 *     ...,
 * } $args = [])
 * @method \GuzzleHttp\Promise\Promise calculateRouteMatrixAsync(array $args = [])
 * @phpstan-method \GuzzleHttp\Promise\Promise calculateRouteMatrixAsync(array{
 *     Allow?: array{Hot?: bool, Hov?: bool, ...},
 *     Avoid?: array{
 *         Areas?: list<array>,
 *         CarShuttleTrains?: bool,
 *         ControlledAccessHighways?: bool,
 *         DirtRoads?: bool,
 *         Ferries?: bool,
 *         TollRoads?: bool,
 *         TollTransponders?: bool,
 *         TruckRoadTypes?: list<string>,
 *         Tunnels?: bool,
 *         UTurns?: bool,
 *         ZoneCategories?: list<array>,
 *         ...,
 *     },
 *     DepartNow?: bool,
 *     DepartureTime?: string,
 *     Destinations?: list<array{Options?: array, Position?: list<float>, ...}>,
 *     Exclude?: array{Countries?: list<string>, ...},
 *     Key?: string,
 *     OptimizeRoutingFor?: 'FastestRoute'|'ShortestRoute',
 *     Origins?: list<array{Options?: array, Position?: list<float>, ...}>,
 *     RoutingBoundary?: array{
 *         Geometry?: array{AutoCircle?: array, Circle?: array, BoundingBox?: list<float>, Polygon?: list<list<list<float>>>, ...},
 *         Unbounded?: bool,
 *         ...,
 *     },
 *     Traffic?: array{FlowEventThresholdOverride?: int, Usage?: 'IgnoreTrafficData'|'UseTrafficData', ...},
 *     TravelMode?: 'Car'|'Pedestrian'|'Scooter'|'Truck',
 *     TravelModeOptions?: array{
 *         Car?: array{LicensePlate?: array, MaxSpeed?: float, Occupancy?: int, ...},
 *         Scooter?: array{LicensePlate?: array, MaxSpeed?: float, Occupancy?: int, ...},
 *         Truck?: array{
 *             AxleCount?: int,
 *             GrossWeight?: int,
 *             HazardousCargos?: list<'Combustible'|'Corrosive'|'Explosive'|'Flammable'|'Gas'|'HarmfulToWater'|'Organic'|'Other'|'Poison'|'PoisonousInhalation'|'Radioactive'>,
 *             Height?: int,
 *             KpraLength?: int,
 *             Length?: int,
 *             LicensePlate?: array,
 *             MaxSpeed?: float,
 *             Occupancy?: int,
 *             PayloadCapacity?: int,
 *             Trailer?: array,
 *             TruckType?: 'LightTruck'|'StraightTruck'|'Tractor',
 *             TunnelRestrictionCode?: string,
 *             WeightPerAxle?: int,
 *             WeightPerAxleGroup?: array,
 *             Width?: int,
 *             ...,
 *         },
 *         ...,
 *     },
 *     ...,
 * } $args = [])
 * @method \Aws\Result calculateRoutes(array $args = [])
 * @phpstan-method \Aws\Result calculateRoutes(array{
 *     Allow?: array{Hot?: bool, Hov?: bool, ...},
 *     ArrivalTime?: string,
 *     Avoid?: array{
 *         Areas?: list<array>,
 *         CarShuttleTrains?: bool,
 *         ControlledAccessHighways?: bool,
 *         DirtRoads?: bool,
 *         Ferries?: bool,
 *         SeasonalClosure?: bool,
 *         TollRoads?: bool,
 *         TollTransponders?: bool,
 *         TruckRoadTypes?: list<string>,
 *         Tunnels?: bool,
 *         UTurns?: bool,
 *         ZoneCategories?: list<array>,
 *         ...,
 *     },
 *     DepartNow?: bool,
 *     DepartureTime?: string,
 *     Destination?: list<float>,
 *     DestinationOptions?: array{
 *         AvoidActionsForDistance?: int,
 *         AvoidUTurns?: bool,
 *         Heading?: float,
 *         Matching?: array{
 *             NameHint?: string,
 *             OnRoadThreshold?: int,
 *             Radius?: int,
 *             Strategy?: 'MatchAny'|'MatchMostSignificantRoad',
 *             ...,
 *         },
 *         SideOfStreet?: array{Position?: list<float>, UseWith?: 'AnyStreet'|'DividedStreetOnly', ...},
 *         StopDuration?: int,
 *         ...,
 *     },
 *     Driver?: array{Schedule?: list<array>, ...},
 *     Exclude?: array{Countries?: list<string>, ...},
 *     InstructionsMeasurementSystem?: 'Imperial'|'Metric',
 *     Key?: string,
 *     Languages?: list<string>,
 *     LegAdditionalFeatures?: list<'Bookings'|'Elevation'|'Incidents'|'IntermediateStops'|'NextDepartures'|'PassThroughWaypoints'|'Summary'|'Tolls'|'TravelStepInstructions'|'TruckRoadTypes'|'TypicalDuration'|'Zones'>,
 *     LegGeometryFormat?: 'FlexiblePolyline'|'Simple',
 *     MaxAlternatives?: int,
 *     OptimizeRoutingFor?: 'FastestRoute'|'ShortestRoute',
 *     Origin?: list<float>,
 *     OriginOptions?: array{
 *         AvoidActionsForDistance?: int,
 *         AvoidUTurns?: bool,
 *         Heading?: float,
 *         Matching?: array{
 *             NameHint?: string,
 *             OnRoadThreshold?: int,
 *             Radius?: int,
 *             Strategy?: 'MatchAny'|'MatchMostSignificantRoad',
 *             ...,
 *         },
 *         SideOfStreet?: array{Position?: list<float>, UseWith?: 'AnyStreet'|'DividedStreetOnly', ...},
 *         ...,
 *     },
 *     SpanAdditionalFeatures?: list<'BestCaseDuration'|'CarAccess'|'Consumption'|'Country'|'Distance'|'Duration'|'DynamicSpeed'|'FunctionalClassification'|'Gates'|'Incidents'|'Names'|'Notices'|'PedestrianAccess'|'RailwayCrossings'|'Region'|'RoadAttributes'|'RouteNumbers'|'ScooterAccess'|'SpeedLimit'|'TollSystems'|'TruckAccess'|'TruckRoadTypes'|'TypicalDuration'|'Zones'>,
 *     Tolls?: array{
 *         AllTransponders?: bool,
 *         AllVignettes?: bool,
 *         Currency?: string,
 *         EmissionType?: array{Co2EmissionClass?: string, Type?: string, ...},
 *         VehicleCategory?: 'Minibus',
 *         ...,
 *     },
 *     Traffic?: array{FlowEventThresholdOverride?: int, Usage?: 'IgnoreTrafficData'|'UseTrafficData', ...},
 *     TravelMode?: 'Car'|'Intermodal'|'Pedestrian'|'Scooter'|'Transit'|'Truck',
 *     TravelModeOptions?: array{
 *         Car?: array{
 *             EngineType?: 'Electric'|'InternalCombustion'|'PluginHybrid',
 *             LicensePlate?: array,
 *             MaxSpeed?: float,
 *             Occupancy?: int,
 *             ...,
 *         },
 *         Pedestrian?: array{Speed?: float, ...},
 *         Scooter?: array{
 *             EngineType?: 'Electric'|'InternalCombustion'|'PluginHybrid',
 *             LicensePlate?: array,
 *             MaxSpeed?: float,
 *             Occupancy?: int,
 *             ...,
 *         },
 *         Truck?: array{
 *             AxleCount?: int,
 *             EngineType?: 'Electric'|'InternalCombustion'|'PluginHybrid',
 *             GrossWeight?: int,
 *             HazardousCargos?: list<'Combustible'|'Corrosive'|'Explosive'|'Flammable'|'Gas'|'HarmfulToWater'|'Organic'|'Other'|'Poison'|'PoisonousInhalation'|'Radioactive'>,
 *             Height?: int,
 *             HeightAboveFirstAxle?: int,
 *             KpraLength?: int,
 *             Length?: int,
 *             LicensePlate?: array,
 *             MaxSpeed?: float,
 *             Occupancy?: int,
 *             PayloadCapacity?: int,
 *             TireCount?: int,
 *             Trailer?: array,
 *             TruckType?: 'LightTruck'|'StraightTruck'|'Tractor',
 *             TunnelRestrictionCode?: string,
 *             WeightPerAxle?: int,
 *             WeightPerAxleGroup?: array,
 *             Width?: int,
 *             ...,
 *         },
 *         Intermodal?: array{
 *             AccessibilityAttributes?: list<'Wheelchair'>,
 *             MaxTransfers?: int,
 *             Pedestrian?: array,
 *             Rental?: array,
 *             Taxi?: array,
 *             Transit?: array,
 *             Vehicle?: array,
 *             ...,
 *         },
 *         Transit?: array{
 *             AccessibilityAttributes?: list<'Wheelchair'>,
 *             AllowedModes?: list<'AerialTramway'|'Airplane'|'All'|'Bus'|'BusRapidTransit'|'CityTrain'|'Ferry'|'FunicularRailway'|'HighSpeedTrain'|'IntercityTrain'|'InterregionalTrain'|'LightRail'|'Monorail'|'PrivateBus'|'RegionalTrain'|'Subway'>,
 *             ExcludedModes?: list<'AerialTramway'|'Airplane'|'All'|'Bus'|'BusRapidTransit'|'CityTrain'|'Ferry'|'FunicularRailway'|'HighSpeedTrain'|'IntercityTrain'|'InterregionalTrain'|'LightRail'|'Monorail'|'PrivateBus'|'RegionalTrain'|'Subway'>,
 *             MaxTransfers?: int,
 *             Pedestrian?: array,
 *             ...,
 *         },
 *         ...,
 *     },
 *     TravelStepType?: 'Default'|'TurnByTurn',
 *     Waypoints?: list<array{
 *         AvoidActionsForDistance?: int,
 *         AvoidUTurns?: bool,
 *         Heading?: float,
 *         Matching?: array,
 *         PassThrough?: bool,
 *         Position?: list<float>,
 *         SideOfStreet?: array,
 *         StopDuration?: int,
 *         ...,
 *     }>,
 *     ...,
 * } $args = [])
 * @method \GuzzleHttp\Promise\Promise calculateRoutesAsync(array $args = [])
 * @phpstan-method \GuzzleHttp\Promise\Promise calculateRoutesAsync(array{
 *     Allow?: array{Hot?: bool, Hov?: bool, ...},
 *     ArrivalTime?: string,
 *     Avoid?: array{
 *         Areas?: list<array>,
 *         CarShuttleTrains?: bool,
 *         ControlledAccessHighways?: bool,
 *         DirtRoads?: bool,
 *         Ferries?: bool,
 *         SeasonalClosure?: bool,
 *         TollRoads?: bool,
 *         TollTransponders?: bool,
 *         TruckRoadTypes?: list<string>,
 *         Tunnels?: bool,
 *         UTurns?: bool,
 *         ZoneCategories?: list<array>,
 *         ...,
 *     },
 *     DepartNow?: bool,
 *     DepartureTime?: string,
 *     Destination?: list<float>,
 *     DestinationOptions?: array{
 *         AvoidActionsForDistance?: int,
 *         AvoidUTurns?: bool,
 *         Heading?: float,
 *         Matching?: array{
 *             NameHint?: string,
 *             OnRoadThreshold?: int,
 *             Radius?: int,
 *             Strategy?: 'MatchAny'|'MatchMostSignificantRoad',
 *             ...,
 *         },
 *         SideOfStreet?: array{Position?: list<float>, UseWith?: 'AnyStreet'|'DividedStreetOnly', ...},
 *         StopDuration?: int,
 *         ...,
 *     },
 *     Driver?: array{Schedule?: list<array>, ...},
 *     Exclude?: array{Countries?: list<string>, ...},
 *     InstructionsMeasurementSystem?: 'Imperial'|'Metric',
 *     Key?: string,
 *     Languages?: list<string>,
 *     LegAdditionalFeatures?: list<'Bookings'|'Elevation'|'Incidents'|'IntermediateStops'|'NextDepartures'|'PassThroughWaypoints'|'Summary'|'Tolls'|'TravelStepInstructions'|'TruckRoadTypes'|'TypicalDuration'|'Zones'>,
 *     LegGeometryFormat?: 'FlexiblePolyline'|'Simple',
 *     MaxAlternatives?: int,
 *     OptimizeRoutingFor?: 'FastestRoute'|'ShortestRoute',
 *     Origin?: list<float>,
 *     OriginOptions?: array{
 *         AvoidActionsForDistance?: int,
 *         AvoidUTurns?: bool,
 *         Heading?: float,
 *         Matching?: array{
 *             NameHint?: string,
 *             OnRoadThreshold?: int,
 *             Radius?: int,
 *             Strategy?: 'MatchAny'|'MatchMostSignificantRoad',
 *             ...,
 *         },
 *         SideOfStreet?: array{Position?: list<float>, UseWith?: 'AnyStreet'|'DividedStreetOnly', ...},
 *         ...,
 *     },
 *     SpanAdditionalFeatures?: list<'BestCaseDuration'|'CarAccess'|'Consumption'|'Country'|'Distance'|'Duration'|'DynamicSpeed'|'FunctionalClassification'|'Gates'|'Incidents'|'Names'|'Notices'|'PedestrianAccess'|'RailwayCrossings'|'Region'|'RoadAttributes'|'RouteNumbers'|'ScooterAccess'|'SpeedLimit'|'TollSystems'|'TruckAccess'|'TruckRoadTypes'|'TypicalDuration'|'Zones'>,
 *     Tolls?: array{
 *         AllTransponders?: bool,
 *         AllVignettes?: bool,
 *         Currency?: string,
 *         EmissionType?: array{Co2EmissionClass?: string, Type?: string, ...},
 *         VehicleCategory?: 'Minibus',
 *         ...,
 *     },
 *     Traffic?: array{FlowEventThresholdOverride?: int, Usage?: 'IgnoreTrafficData'|'UseTrafficData', ...},
 *     TravelMode?: 'Car'|'Intermodal'|'Pedestrian'|'Scooter'|'Transit'|'Truck',
 *     TravelModeOptions?: array{
 *         Car?: array{
 *             EngineType?: 'Electric'|'InternalCombustion'|'PluginHybrid',
 *             LicensePlate?: array,
 *             MaxSpeed?: float,
 *             Occupancy?: int,
 *             ...,
 *         },
 *         Pedestrian?: array{Speed?: float, ...},
 *         Scooter?: array{
 *             EngineType?: 'Electric'|'InternalCombustion'|'PluginHybrid',
 *             LicensePlate?: array,
 *             MaxSpeed?: float,
 *             Occupancy?: int,
 *             ...,
 *         },
 *         Truck?: array{
 *             AxleCount?: int,
 *             EngineType?: 'Electric'|'InternalCombustion'|'PluginHybrid',
 *             GrossWeight?: int,
 *             HazardousCargos?: list<'Combustible'|'Corrosive'|'Explosive'|'Flammable'|'Gas'|'HarmfulToWater'|'Organic'|'Other'|'Poison'|'PoisonousInhalation'|'Radioactive'>,
 *             Height?: int,
 *             HeightAboveFirstAxle?: int,
 *             KpraLength?: int,
 *             Length?: int,
 *             LicensePlate?: array,
 *             MaxSpeed?: float,
 *             Occupancy?: int,
 *             PayloadCapacity?: int,
 *             TireCount?: int,
 *             Trailer?: array,
 *             TruckType?: 'LightTruck'|'StraightTruck'|'Tractor',
 *             TunnelRestrictionCode?: string,
 *             WeightPerAxle?: int,
 *             WeightPerAxleGroup?: array,
 *             Width?: int,
 *             ...,
 *         },
 *         Intermodal?: array{
 *             AccessibilityAttributes?: list<'Wheelchair'>,
 *             MaxTransfers?: int,
 *             Pedestrian?: array,
 *             Rental?: array,
 *             Taxi?: array,
 *             Transit?: array,
 *             Vehicle?: array,
 *             ...,
 *         },
 *         Transit?: array{
 *             AccessibilityAttributes?: list<'Wheelchair'>,
 *             AllowedModes?: list<'AerialTramway'|'Airplane'|'All'|'Bus'|'BusRapidTransit'|'CityTrain'|'Ferry'|'FunicularRailway'|'HighSpeedTrain'|'IntercityTrain'|'InterregionalTrain'|'LightRail'|'Monorail'|'PrivateBus'|'RegionalTrain'|'Subway'>,
 *             ExcludedModes?: list<'AerialTramway'|'Airplane'|'All'|'Bus'|'BusRapidTransit'|'CityTrain'|'Ferry'|'FunicularRailway'|'HighSpeedTrain'|'IntercityTrain'|'InterregionalTrain'|'LightRail'|'Monorail'|'PrivateBus'|'RegionalTrain'|'Subway'>,
 *             MaxTransfers?: int,
 *             Pedestrian?: array,
 *             ...,
 *         },
 *         ...,
 *     },
 *     TravelStepType?: 'Default'|'TurnByTurn',
 *     Waypoints?: list<array{
 *         AvoidActionsForDistance?: int,
 *         AvoidUTurns?: bool,
 *         Heading?: float,
 *         Matching?: array,
 *         PassThrough?: bool,
 *         Position?: list<float>,
 *         SideOfStreet?: array,
 *         StopDuration?: int,
 *         ...,
 *     }>,
 *     ...,
 * } $args = [])
 * @method \Aws\Result optimizeWaypoints(array $args = [])
 * @phpstan-method \Aws\Result optimizeWaypoints(array{
 *     Avoid?: array{
 *         Areas?: list<array>,
 *         CarShuttleTrains?: bool,
 *         ControlledAccessHighways?: bool,
 *         DirtRoads?: bool,
 *         Ferries?: bool,
 *         TollRoads?: bool,
 *         Tunnels?: bool,
 *         UTurns?: bool,
 *         ...,
 *     },
 *     Clustering?: array{
 *         Algorithm?: 'DrivingDistance'|'TopologySegment',
 *         DrivingDistanceOptions?: array{DrivingDistance?: int, ...},
 *         ...,
 *     },
 *     DepartureTime?: string,
 *     Destination?: list<float>,
 *     DestinationOptions?: array{
 *         AccessHours?: array{From?: array, To?: array, ...},
 *         AppointmentTime?: string,
 *         Heading?: float,
 *         Id?: string,
 *         ServiceDuration?: int,
 *         SideOfStreet?: array{Position?: list<float>, UseWith?: 'AnyStreet'|'DividedStreetOnly', ...},
 *         ...,
 *     },
 *     Driver?: array{
 *         RestCycles?: array{LongCycle?: array, ShortCycle?: array, ...},
 *         RestProfile?: array{Profile?: string, ...},
 *         TreatServiceTimeAs?: 'Rest'|'Work',
 *         ...,
 *     },
 *     Exclude?: array{Countries?: list<string>, ...},
 *     Key?: string,
 *     OptimizeSequencingFor?: 'FastestRoute'|'ShortestRoute',
 *     Origin?: list<float>,
 *     OriginOptions?: array{Id?: string, ...},
 *     Traffic?: array{Usage?: 'IgnoreTrafficData'|'UseTrafficData', ...},
 *     TravelMode?: 'Car'|'Pedestrian'|'Scooter'|'Truck',
 *     TravelModeOptions?: array{
 *         Pedestrian?: array{Speed?: float, ...},
 *         Truck?: array{
 *             GrossWeight?: int,
 *             HazardousCargos?: list<'Combustible'|'Corrosive'|'Explosive'|'Flammable'|'Gas'|'HarmfulToWater'|'Organic'|'Other'|'Poison'|'PoisonousInhalation'|'Radioactive'>,
 *             Height?: int,
 *             Length?: int,
 *             Trailer?: array,
 *             TruckType?: 'StraightTruck'|'Tractor',
 *             TunnelRestrictionCode?: string,
 *             WeightPerAxle?: int,
 *             Width?: int,
 *             ...,
 *         },
 *         ...,
 *     },
 *     Waypoints?: list<array{
 *         AccessHours?: array,
 *         AppointmentTime?: string,
 *         Before?: list<int>,
 *         Heading?: float,
 *         Id?: string,
 *         Position?: list<float>,
 *         ServiceDuration?: int,
 *         SideOfStreet?: array,
 *         ...,
 *     }>,
 *     ...,
 * } $args = [])
 * @method \GuzzleHttp\Promise\Promise optimizeWaypointsAsync(array $args = [])
 * @phpstan-method \GuzzleHttp\Promise\Promise optimizeWaypointsAsync(array{
 *     Avoid?: array{
 *         Areas?: list<array>,
 *         CarShuttleTrains?: bool,
 *         ControlledAccessHighways?: bool,
 *         DirtRoads?: bool,
 *         Ferries?: bool,
 *         TollRoads?: bool,
 *         Tunnels?: bool,
 *         UTurns?: bool,
 *         ...,
 *     },
 *     Clustering?: array{
 *         Algorithm?: 'DrivingDistance'|'TopologySegment',
 *         DrivingDistanceOptions?: array{DrivingDistance?: int, ...},
 *         ...,
 *     },
 *     DepartureTime?: string,
 *     Destination?: list<float>,
 *     DestinationOptions?: array{
 *         AccessHours?: array{From?: array, To?: array, ...},
 *         AppointmentTime?: string,
 *         Heading?: float,
 *         Id?: string,
 *         ServiceDuration?: int,
 *         SideOfStreet?: array{Position?: list<float>, UseWith?: 'AnyStreet'|'DividedStreetOnly', ...},
 *         ...,
 *     },
 *     Driver?: array{
 *         RestCycles?: array{LongCycle?: array, ShortCycle?: array, ...},
 *         RestProfile?: array{Profile?: string, ...},
 *         TreatServiceTimeAs?: 'Rest'|'Work',
 *         ...,
 *     },
 *     Exclude?: array{Countries?: list<string>, ...},
 *     Key?: string,
 *     OptimizeSequencingFor?: 'FastestRoute'|'ShortestRoute',
 *     Origin?: list<float>,
 *     OriginOptions?: array{Id?: string, ...},
 *     Traffic?: array{Usage?: 'IgnoreTrafficData'|'UseTrafficData', ...},
 *     TravelMode?: 'Car'|'Pedestrian'|'Scooter'|'Truck',
 *     TravelModeOptions?: array{
 *         Pedestrian?: array{Speed?: float, ...},
 *         Truck?: array{
 *             GrossWeight?: int,
 *             HazardousCargos?: list<'Combustible'|'Corrosive'|'Explosive'|'Flammable'|'Gas'|'HarmfulToWater'|'Organic'|'Other'|'Poison'|'PoisonousInhalation'|'Radioactive'>,
 *             Height?: int,
 *             Length?: int,
 *             Trailer?: array,
 *             TruckType?: 'StraightTruck'|'Tractor',
 *             TunnelRestrictionCode?: string,
 *             WeightPerAxle?: int,
 *             Width?: int,
 *             ...,
 *         },
 *         ...,
 *     },
 *     Waypoints?: list<array{
 *         AccessHours?: array,
 *         AppointmentTime?: string,
 *         Before?: list<int>,
 *         Heading?: float,
 *         Id?: string,
 *         Position?: list<float>,
 *         ServiceDuration?: int,
 *         SideOfStreet?: array,
 *         ...,
 *     }>,
 *     ...,
 * } $args = [])
 * @method \Aws\Result snapToRoads(array $args = [])
 * @phpstan-method \Aws\Result snapToRoads(array{
 *     Key?: string,
 *     SnappedGeometryFormat?: 'FlexiblePolyline'|'Simple',
 *     SnapRadius?: int,
 *     TracePoints?: list<array{Heading?: float, Position?: list<float>, Speed?: float, Timestamp?: string, ...}>,
 *     TravelMode?: 'Car'|'Pedestrian'|'Scooter'|'Truck',
 *     TravelModeOptions?: array{
 *         Truck?: array{
 *             GrossWeight?: int,
 *             HazardousCargos?: list<'Combustible'|'Corrosive'|'Explosive'|'Flammable'|'Gas'|'HarmfulToWater'|'Organic'|'Other'|'Poison'|'PoisonousInhalation'|'Radioactive'>,
 *             Height?: int,
 *             Length?: int,
 *             Trailer?: array,
 *             TunnelRestrictionCode?: string,
 *             Width?: int,
 *             ...,
 *         },
 *         ...,
 *     },
 *     ...,
 * } $args = [])
 * @method \GuzzleHttp\Promise\Promise snapToRoadsAsync(array $args = [])
 * @phpstan-method \GuzzleHttp\Promise\Promise snapToRoadsAsync(array{
 *     Key?: string,
 *     SnappedGeometryFormat?: 'FlexiblePolyline'|'Simple',
 *     SnapRadius?: int,
 *     TracePoints?: list<array{Heading?: float, Position?: list<float>, Speed?: float, Timestamp?: string, ...}>,
 *     TravelMode?: 'Car'|'Pedestrian'|'Scooter'|'Truck',
 *     TravelModeOptions?: array{
 *         Truck?: array{
 *             GrossWeight?: int,
 *             HazardousCargos?: list<'Combustible'|'Corrosive'|'Explosive'|'Flammable'|'Gas'|'HarmfulToWater'|'Organic'|'Other'|'Poison'|'PoisonousInhalation'|'Radioactive'>,
 *             Height?: int,
 *             Length?: int,
 *             Trailer?: array,
 *             TunnelRestrictionCode?: string,
 *             Width?: int,
 *             ...,
 *         },
 *         ...,
 *     },
 *     ...,
 * } $args = [])
 */
class GeoRoutesClient extends AwsClient {}
