mod agency_consistency;
mod attribution_without_role;
mod bidirectional_exit_gate;
mod bikes_allowance;
mod block_trips_with_overlapping_stop_times;
mod booking_rules;
mod calendar;
mod calendar_presence;
mod continuous_pickup_drop_off;
mod date_trips;
mod duplicate_fare_media;
mod duplicate_key;
mod duplicate_route_name;
mod duplicate_stop_sequence;
mod expired_calendar;
mod fare_attribute_agency_id;
mod fare_attributes;
mod fare_leg_join_rule;
mod fare_leg_rule_network_id_foreign_key;
mod fare_media_name;
mod fare_product_default_rider_categories;
mod fare_rules;
mod fare_transfer_rule_duration_limit;
mod fare_transfer_rule_transfer_count;
mod feed_expiration_date;
mod feed_info;
mod feed_service_date;
mod frequencies;
mod google_rules;
mod lat_lon;
mod location_has_stop_times;
mod location_id_foreign_key;
mod location_type;
mod locations_geojson_notices;
mod locations_geojson_presence;
mod matching_feed_and_agency_lang;
mod missing_level_id;
mod missing_stops_file;
mod missing_trip_edge;
mod network_id_consistency;
mod overlapping_frequency;
mod overlapping_pickup_drop_off_zone;
mod parent_station;
mod pathway_dangling_generic_node;
mod pathway_endpoint_type;
mod pathway_loop;
mod pathway_reachable_location;
mod pathways;
mod pickup_booking_rule_id;
mod pickup_drop_off_type;
mod pickup_drop_off_window;
mod referential_integrity;
mod required_fields;
mod required_non_empty;
mod route_agency_id;
mod route_color_contrast;
mod routes;
pub mod shape_to_stop_matching;
mod shape_usage;
mod shapes;
mod single_shape_point;
mod stop_time_increasing_distance;
mod stop_time_travel_speed;
mod stop_times;
mod stop_times_geography_id_presence;
mod stop_times_record;
mod stop_times_shape_dist_presence;
mod stop_times_time;
mod stop_zone_id;
mod stops;
mod timeframe_overlap;
mod timeframe_service_id_foreign_key;
mod timeframe_start_and_end_time;
mod transfer_distance;
mod transfers;
mod transfers_in_seat_transfer_type;
mod transfers_stop_ids_conditional;
mod transfers_stop_type;
mod transfers_trip_reference;
mod translation_field_and_reference;
mod trip_service_id_foreign_key;
mod trip_shape_distance;
mod trips;
mod unique_geography_id;
mod unused_agency;
mod unused_route;
mod unused_stop;
mod url_consistency;
mod url_syntax;

use crate::ValidatorRunner;

pub use agency_consistency::AgencyConsistencyValidator;
pub use attribution_without_role::AttributionWithoutRoleValidator;
pub use bidirectional_exit_gate::BidirectionalExitGateValidator;
pub use bikes_allowance::BikesAllowanceValidator;
pub use block_trips_with_overlapping_stop_times::BlockTripsWithOverlappingStopTimesValidator;
pub use booking_rules::BookingRulesEntityValidator;
pub use calendar::CalendarValidator;
pub use calendar_presence::CalendarPresenceValidator;
pub use continuous_pickup_drop_off::ContinuousPickupDropOffValidator;
pub use date_trips::DateTripsValidator;
pub use duplicate_fare_media::DuplicateFareMediaValidator;
pub use duplicate_key::DuplicateKeyValidator;
pub use duplicate_route_name::DuplicateRouteNameValidator;
pub use duplicate_stop_sequence::DuplicateStopSequenceValidator;
pub use expired_calendar::ExpiredCalendarValidator;
pub use fare_attribute_agency_id::FareAttributeAgencyIdValidator;
pub use fare_attributes::FareAttributesValidator;
pub use fare_leg_join_rule::FareLegJoinRuleValidator;
pub use fare_leg_rule_network_id_foreign_key::FareLegRuleNetworkIdForeignKeyValidator;
pub use fare_media_name::FareMediaNameValidator;
pub use fare_product_default_rider_categories::FareProductDefaultRiderCategoriesValidator;
pub use fare_rules::FareRulesValidator;
pub use fare_transfer_rule_duration_limit::FareTransferRuleDurationLimitTypeValidator;
pub use fare_transfer_rule_transfer_count::FareTransferRuleTransferCountValidator;
pub use feed_expiration_date::FeedExpirationDateValidator;
pub use feed_info::{FeedContactValidator, FeedInfoValidator, MissingFeedInfoValidator};
pub use feed_service_date::FeedServiceDateValidator;
pub use frequencies::FrequenciesValidator;
pub use google_rules::{
    AgencyPhoneValidator, DuplicateTripValidator, GoogleFareAttributesValidator,
    GoogleTransferTypeValidator, HeadwayReasonablenessValidator, RouteShortNameLengthValidator,
    StopHeadsignFormatValidator,
};
pub use lat_lon::{ShapeLatLonValidator, StopLatLonValidator};
pub use location_has_stop_times::LocationHasStopTimesValidator;
pub use location_id_foreign_key::LocationIdForeignKeyValidator;
pub use location_type::LocationTypeValidator;
pub use locations_geojson_notices::LocationsGeoJsonNoticesValidator;
pub use locations_geojson_presence::LocationsGeoJsonPresenceValidator;
pub use matching_feed_and_agency_lang::MatchingFeedAndAgencyLangValidator;
pub use missing_level_id::MissingLevelIdValidator;
pub use missing_stops_file::MissingStopsFileValidator;
pub use missing_trip_edge::MissingTripEdgeValidator;
pub use network_id_consistency::NetworkIdConsistencyValidator;
pub use overlapping_frequency::OverlappingFrequencyValidator;
pub use overlapping_pickup_drop_off_zone::OverlappingPickupDropOffZoneValidator;
pub use parent_station::ParentStationValidator;
pub use pathway_dangling_generic_node::PathwayDanglingGenericNodeValidator;
pub use pathway_endpoint_type::PathwayEndpointTypeValidator;
pub use pathway_loop::PathwayLoopValidator;
pub use pathway_reachable_location::PathwayReachableLocationValidator;
pub use pathways::PathwaysValidator;
pub use pickup_booking_rule_id::PickupBookingRuleIdValidator;
pub use pickup_drop_off_type::PickupDropOffTypeValidator;
pub use pickup_drop_off_window::PickupDropOffWindowValidator;
pub use referential_integrity::ReferentialIntegrityValidator;
pub use required_fields::RequiredFieldsNonEmptyValidator;
pub use required_non_empty::RequiredTablesNotEmptyValidator;
pub use route_agency_id::RouteAgencyIdValidator;
pub use route_color_contrast::RouteColorContrastValidator;
pub use routes::RoutesValidator;
pub use shape_to_stop_matching::ShapeToStopMatchingValidator;
pub use shape_usage::ShapeUsageValidator;
pub use shapes::ShapeIncreasingDistanceValidator;
pub use single_shape_point::SingleShapePointValidator;
pub use stop_time_increasing_distance::StopTimeIncreasingDistanceValidator;
pub use stop_time_travel_speed::StopTimeTravelSpeedValidator;
pub use stop_times::TripUsageValidator;
pub use stop_times_geography_id_presence::StopTimesGeographyIdPresenceValidator;
pub use stop_times_record::StopTimesRecordValidator;
pub use stop_times_shape_dist_presence::StopTimesShapeDistTraveledPresenceValidator;
pub use stop_times_time::{StopTimeArrivalAndDepartureTimeValidator, TimepointTimeValidator};
pub use stop_zone_id::StopZoneIdValidator;
pub use stops::StopsValidator;
pub use timeframe_overlap::TimeframeOverlapValidator;
pub use timeframe_service_id_foreign_key::TimeframeServiceIdForeignKeyValidator;
pub use timeframe_start_and_end_time::TimeframeStartAndEndTimeValidator;
pub use transfer_distance::TransferDistanceValidator;
pub use transfers::TransfersValidator;
pub use transfers_in_seat_transfer_type::TransfersInSeatTransferTypeValidator;
pub use transfers_stop_ids_conditional::TransferStopIdsConditionalValidator;
pub use transfers_stop_type::TransfersStopTypeValidator;
pub use transfers_trip_reference::TransfersTripReferenceValidator;
pub use translation_field_and_reference::TranslationFieldAndReferenceValidator;
pub use trip_service_id_foreign_key::TripServiceIdForeignKeyValidator;
pub use trip_shape_distance::TripAndShapeDistanceValidator;
pub use trips::TripUsabilityValidator;
pub use unique_geography_id::UniqueGeographyIdValidator;
pub use unused_agency::UnusedAgencyValidator;
pub use unused_route::UnusedRouteValidator;
pub use unused_stop::UnusedStopValidator;
pub use url_consistency::UrlConsistencyValidator;
pub use url_syntax::UrlSyntaxValidator;

pub fn default_runner() -> ValidatorRunner {
    let mut runner = ValidatorRunner::new();
    runner.register(CalendarPresenceValidator);
    runner.register(CalendarValidator);
    runner.register(MissingStopsFileValidator);
    runner.register(AgencyConsistencyValidator);
    runner.register(ExpiredCalendarValidator);
    runner.register(DateTripsValidator);
    runner.register(RequiredTablesNotEmptyValidator);
    runner.register(RequiredFieldsNonEmptyValidator);
    runner.register(ReferentialIntegrityValidator);
    runner.register(TripUsageValidator);
    runner.register(StopTimeArrivalAndDepartureTimeValidator);
    runner.register(TimepointTimeValidator);
    runner.register(MissingTripEdgeValidator);
    runner.register(StopTimesRecordValidator);
    runner.register(PickupDropOffTypeValidator);
    runner.register(PickupDropOffWindowValidator);
    runner.register(StopTimesGeographyIdPresenceValidator);
    runner.register(LocationsGeoJsonPresenceValidator);
    runner.register(LocationsGeoJsonNoticesValidator);
    runner.register(LocationIdForeignKeyValidator);
    runner.register(StopLatLonValidator);
    runner.register(ShapeLatLonValidator);
    runner.register(StopTimeIncreasingDistanceValidator);
    runner.register(StopTimesShapeDistTraveledPresenceValidator);
    runner.register(StopTimeTravelSpeedValidator);
    runner.register(TripAndShapeDistanceValidator);
    runner.register(ShapeToStopMatchingValidator);
    runner.register(BlockTripsWithOverlappingStopTimesValidator);
    runner.register(DuplicateStopSequenceValidator);
    runner.register(StopsValidator);
    runner.register(LocationHasStopTimesValidator);
    runner.register(PickupBookingRuleIdValidator);
    runner.register(UniqueGeographyIdValidator);
    runner.register(ContinuousPickupDropOffValidator);
    runner.register(RoutesValidator);
    runner.register(BikesAllowanceValidator);
    runner.register(RouteAgencyIdValidator);
    runner.register(MatchingFeedAndAgencyLangValidator);
    runner.register(UrlConsistencyValidator);
    runner.register(RouteColorContrastValidator);
    runner.register(NetworkIdConsistencyValidator);
    runner.register(TripServiceIdForeignKeyValidator);
    runner.register(ParentStationValidator);
    runner.register(LocationTypeValidator);
    runner.register(TripUsabilityValidator);
    runner.register(FrequenciesValidator);
    runner.register(OverlappingFrequencyValidator);
    runner.register(TransfersValidator);
    runner.register(TransfersStopTypeValidator);
    runner.register(TransfersTripReferenceValidator);
    runner.register(TransferStopIdsConditionalValidator);
    runner.register(TransfersInSeatTransferTypeValidator);
    runner.register(TransferDistanceValidator);
    runner.register(OverlappingPickupDropOffZoneValidator);
    runner.register(ShapeIncreasingDistanceValidator);
    runner.register(ShapeUsageValidator);
    runner.register(SingleShapePointValidator);
    runner.register(StopZoneIdValidator);
    runner.register(FareAttributesValidator);
    runner.register(FareAttributeAgencyIdValidator);
    runner.register(BookingRulesEntityValidator);
    runner.register(FareRulesValidator);
    runner.register(FareMediaNameValidator);
    runner.register(DuplicateFareMediaValidator);
    runner.register(FareTransferRuleDurationLimitTypeValidator);
    runner.register(FareTransferRuleTransferCountValidator);
    runner.register(FareProductDefaultRiderCategoriesValidator);
    runner.register(FareLegRuleNetworkIdForeignKeyValidator);
    runner.register(FareLegJoinRuleValidator);
    runner.register(TimeframeStartAndEndTimeValidator);
    runner.register(TimeframeServiceIdForeignKeyValidator);
    runner.register(TimeframeOverlapValidator);
    runner.register(DuplicateRouteNameValidator);
    runner.register(MissingFeedInfoValidator);
    runner.register(FeedInfoValidator);
    runner.register(FeedServiceDateValidator);
    runner.register(FeedExpirationDateValidator);
    runner.register(FeedContactValidator);
    runner.register(AttributionWithoutRoleValidator);
    runner.register(PathwaysValidator);
    runner.register(BidirectionalExitGateValidator);
    runner.register(MissingLevelIdValidator);
    runner.register(TranslationFieldAndReferenceValidator);
    runner.register(PathwayLoopValidator);
    runner.register(PathwayEndpointTypeValidator);
    runner.register(PathwayDanglingGenericNodeValidator);
    runner.register(PathwayReachableLocationValidator);
    runner.register(DuplicateKeyValidator);
    runner.register(UrlSyntaxValidator);
    runner.register(UnusedStopValidator);
    runner.register(UnusedRouteValidator);
    runner.register(UnusedAgencyValidator);
    runner.register(GoogleTransferTypeValidator);
    runner.register(GoogleFareAttributesValidator);
    runner.register(AgencyPhoneValidator);
    runner.register(RouteShortNameLengthValidator);
    runner.register(StopHeadsignFormatValidator);
    runner.register(google_rules::GoogleServiceGapValidator);
    runner.register(google_rules::DuplicateTripValidator);
    runner.register(HeadwayReasonablenessValidator);
    runner
}
