"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.mapTransportType = mapTransportType;
const RouteTypeEnums_1 = require("../../../helpers/RouteTypeEnums");
const SIMPLE_TYPE_MAP = {
    [RouteTypeEnums_1.GTFSRouteTypeEnum.METRO]: RouteTypeEnums_1.MPVRouteTypesEnum.METRO,
    [RouteTypeEnums_1.GTFSRouteTypeEnum.TRAIN]: RouteTypeEnums_1.MPVRouteTypesEnum.TRAIN,
    [RouteTypeEnums_1.GTFSRouteTypeEnum.TROLLEYBUS]: RouteTypeEnums_1.MPVRouteTypesEnum.TROLLEYBUS,
    [RouteTypeEnums_1.GTFSRouteTypeEnum.FERRY]: RouteTypeEnums_1.MPVRouteTypesEnum.FERRY,
    [RouteTypeEnums_1.GTFSRouteTypeEnum.FUNICULAR]: RouteTypeEnums_1.MPVRouteTypesEnum.FUNICULAR,
};
function mapTransportType(route) {
    if (route.type === RouteTypeEnums_1.GTFSRouteTypeEnum.TRAM) {
        return mapTram(route);
    }
    if (route.type === RouteTypeEnums_1.GTFSRouteTypeEnum.BUS) {
        return mapBus(route);
    }
    return SIMPLE_TYPE_MAP[route.type] ?? RouteTypeEnums_1.MPVRouteTypesEnum.OTHER;
}
function mapTram(route) {
    if (route.is_substitute_transport) {
        return RouteTypeEnums_1.MPVRouteTypesEnum.TRAM_SUBSTITUTE;
    }
    if (route.is_night) {
        return RouteTypeEnums_1.MPVRouteTypesEnum.TRAM_NIGHT;
    }
    return RouteTypeEnums_1.MPVRouteTypesEnum.TRAM;
}
function mapBus(route) {
    if (route.is_substitute_transport) {
        return RouteTypeEnums_1.MPVRouteTypesEnum.BUS_SUBSTITUTE;
    }
    if (route.is_regional && route.is_night) {
        return RouteTypeEnums_1.MPVRouteTypesEnum.BUS_NIGHT_REGIONAL;
    }
    if (route.is_regional) {
        return RouteTypeEnums_1.MPVRouteTypesEnum.BUS_REGIONAL;
    }
    if (route.is_night) {
        return RouteTypeEnums_1.MPVRouteTypesEnum.BUS_NIGHT;
    }
    return RouteTypeEnums_1.MPVRouteTypesEnum.BUS_CITY;
}
//# sourceMappingURL=MpvnetTransportTypeMapper.js.map