import { HttpParameterCodec, HttpHeaders, HttpParams, HttpClient, HttpContext, HttpResponse, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';
import * as i0 from '@angular/core';
import { InjectionToken, ModuleWithProviders, EnvironmentProviders } from '@angular/core';

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */
/**
 * Service name.
 */
declare enum ServiceRouting {
    UNIVERSAL = "UNIVERSAL",
    ROUTING = "ROUTING",
    ACCOUNT = "ACCOUNT",
    ADMIN = "ADMIN",
    STUDIO = "STUDIO",
    MONITOR = "MONITOR",
    PACKER = "PACKER",
    AGRO = "AGRO",
    REGISTRY = "REGISTRY",
    SUPPORT = "SUPPORT"
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

/**
 * Data for request tracing.
 */
interface TracedataRouting {
    [key: string]: any | any;
    /**
     * Unique process identifier. One is created per process, the same for different requests for the same process.
     */
    process_code: string;
    /**
     * Unique identifier of the request. A new one is created for each request.
     */
    request_code: string;
    /**
     * Unique username for login.
     */
    username: string;
    /**
     * Unique company key.
     */
    company: string;
    service: ServiceRouting;
    /**
     * Operation (request) name.
     */
    operation: string;
    /**
     * Environment identifier.
     */
    env: string;
    /**
     * Pod identifier.
     */
    pod: string;
    /**
     * Date and time service method run in the [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6) format.
     */
    time: string;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */
/**
 * Geographical point.
 */
interface GeopointRouting {
    [key: string]: any | any;
    /**
     * Latitude in degrees.
     */
    latitude: number;
    /**
     * Longitude in degrees.
     */
    longitude: number;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

/**
 * Routing matrix waypoint.
 */
interface RoutingMatrixWaypointRouting {
    [key: string]: any | any;
    geopoint: GeopointRouting;
    /**
     * Name of the point. Can be used as an identifier to match the task and the calculation result.
     */
    name?: string | null;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

/**
 * Routing matrix. Contains durations and distances between points.
 */
interface RoutingMatrixRouting {
    [key: string]: any | any;
    /**
     * Array of geographical points with distances and times calculated between them.
     */
    waypoints: Array<RoutingMatrixWaypointRouting>;
    /**
     * Routes length between two neighbors locations, in meters. The values in the array are ordered according to the elements order in the `waypoints` parameter. Each matrix row is an array of distances from the desired point to every other point. A negative value (-1) means that it is not possible to drive between the specified locations.
     */
    distances: Array<Array<number>>;
    /**
     * An array of route durations between points, in seconds. The values in the array are ordered according to the order of the elements in the `waypoints` parameter. Each row of the matrix is an array of travel times from the desired point to each other point. A negative value (-1) means that it is impossible to travel between the specified points.
     */
    durations: Array<Array<number>>;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

/**
 * Matrix calculation result.
 */
interface MatrixResultRouting {
    [key: string]: any | any;
    tracedata: TracedataRouting;
    matrix: RoutingMatrixRouting;
}

/**
 * Standard parameter styles defined by OpenAPI spec
 */
type StandardParamStyle = 'matrix' | 'label' | 'form' | 'simple' | 'spaceDelimited' | 'pipeDelimited' | 'deepObject';
/**
 * The OpenAPI standard {@link StandardParamStyle}s may be extended by custom styles by the user.
 */
type ParamStyle = StandardParamStyle | string;
/**
 * Standard parameter locations defined by OpenAPI spec
 */
type ParamLocation = 'query' | 'header' | 'path' | 'cookie';
/**
 * Standard types as defined in <a href="https://swagger.io/specification/#data-types">OpenAPI Specification: Data Types</a>
 */
type StandardDataType = "integer" | "number" | "boolean" | "string" | "object" | "array";
/**
 * Standard {@link DataType}s plus your own types/classes.
 */
type DataType = StandardDataType | string;
/**
 * Standard formats as defined in <a href="https://swagger.io/specification/#data-types">OpenAPI Specification: Data Types</a>
 */
type StandardDataFormat = "int32" | "int64" | "float" | "double" | "byte" | "binary" | "date" | "date-time" | "password";
type DataFormat = StandardDataFormat | string;
/**
 * The parameter to encode.
 */
interface Param {
    name: string;
    value: unknown;
    in: ParamLocation;
    style: ParamStyle;
    explode: boolean;
    dataType: DataType;
    dataFormat: DataFormat | undefined;
}

interface ConfigurationParameters {
    /**
     *  @deprecated Since 5.0. Use credentials instead
     */
    apiKeys?: {
        [key: string]: string;
    };
    username?: string;
    password?: string;
    /**
     *  @deprecated Since 5.0. Use credentials instead
     */
    accessToken?: string | (() => string);
    basePath?: string;
    withCredentials?: boolean;
    /**
     * Takes care of encoding query- and form-parameters.
     */
    encoder?: HttpParameterCodec;
    /**
     * Override the default method for encoding path parameters in various
     * <a href="https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#style-values">styles</a>.
     * <p>
     * See {@link README.md} for more details
     * </p>
     */
    encodeParam?: (param: Param) => string;
    /**
     * The keys are the names in the securitySchemes section of the OpenAPI
     * document. They should map to the value used for authentication
     * minus any standard prefixes such as 'Basic' or 'Bearer'.
     */
    credentials?: {
        [key: string]: string | (() => string | undefined);
    };
}
declare class Configuration {
    /**
     *  @deprecated Since 5.0. Use credentials instead
     */
    apiKeys?: {
        [key: string]: string;
    };
    username?: string;
    password?: string;
    /**
     *  @deprecated Since 5.0. Use credentials instead
     */
    accessToken?: string | (() => string);
    basePath?: string;
    withCredentials?: boolean;
    /**
     * Takes care of encoding query- and form-parameters.
     */
    encoder?: HttpParameterCodec;
    /**
     * Encoding of various path parameter
     * <a href="https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#style-values">styles</a>.
     * <p>
     * See {@link README.md} for more details
     * </p>
     */
    encodeParam: (param: Param) => string;
    /**
     * The keys are the names in the securitySchemes section of the OpenAPI
     * document. They should map to the value used for authentication
     * minus any standard prefixes such as 'Basic' or 'Bearer'.
     */
    credentials: {
        [key: string]: string | (() => string | undefined);
    };
    constructor({ accessToken, apiKeys, basePath, credentials, encodeParam, encoder, password, username, withCredentials }?: ConfigurationParameters);
    /**
     * Select the correct content-type to use for a request.
     * Uses {@link Configuration#isJsonMime} to determine the correct content-type.
     * If no content type is found return the first found type if the contentTypes is not empty
     * @param contentTypes - the array of content types that are available for selection
     * @returns the selected content-type or <code>undefined</code> if no selection could be made.
     */
    selectHeaderContentType(contentTypes: string[]): string | undefined;
    /**
     * Select the correct accept content-type to use for a request.
     * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type.
     * If no content type is found return the first found type if the contentTypes is not empty
     * @param accepts - the array of content types that are available for selection.
     * @returns the selected content-type or <code>undefined</code> if no selection could be made.
     */
    selectHeaderAccept(accepts: string[]): string | undefined;
    /**
     * Check if the given MIME is a JSON MIME.
     * JSON MIME examples:
     *   application/json
     *   application/json; charset=UTF8
     *   APPLICATION/JSON
     *   application/vnd.company+json
     * @param mime - MIME (Multipurpose Internet Mail Extensions)
     * @return True if the given MIME is JSON, false otherwise.
     */
    isJsonMime(mime: string): boolean;
    lookupCredential(key: string): string | undefined;
    addCredentialToHeaders(credentialKey: string, headerName: string, headers: HttpHeaders, prefix?: string): HttpHeaders;
    addCredentialToQuery(credentialKey: string, paramName: string, query: HttpParams): HttpParams;
    private defaultEncodeParam;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

declare class BaseService {
    protected basePath: string;
    defaultHeaders: HttpHeaders;
    configuration: Configuration;
    encoder: HttpParameterCodec;
    constructor(basePath?: string | string[], configuration?: Configuration);
    protected canConsumeForm(consumes: string[]): boolean;
    protected addToHttpParams(httpParams: HttpParams, value: any, key?: string, isDeep?: boolean): HttpParams;
    protected addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string, isDeep?: boolean): HttpParams;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */
/**
 * Attribute.
 */
interface AttributeRouting {
    [key: string]: any | any;
    /**
     * Attribute\'s key.
     */
    key: string;
    /**
     * Attribute\'s value.
     */
    value: string;
    /**
     * Attribute processing strategy:    * `LASTMILE_REF_TIME` - when sending a task to the scheduler, the value (format [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6)) of the attribute is replaced with a relative time; if the value is not in the format, the calculation stops with the `FAILED` status.
     */
    strategy?: string | null;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */
/**
 * Service availability result.
 */
interface CheckResultRouting {
    [key: string]: any | any;
    /**
     * The current health indicator of the service.   * `0.0` means the service is not ready to perform tasks.   * `1.0` means the service is fully ready to perform tasks.
     */
    health: number;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */
/**
 * Data error by schema.
 */
interface SchemaErrorRouting {
    [key: string]: any | any;
    /**
     * Target entity identifier.
     */
    entity: string | null;
    /**
     * Error message.
     */
    message: string;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

/**
 * Error details for 400 `Bad Request`.
 */
interface General400Routing {
    [key: string]: any | any;
    tracedata: TracedataRouting;
    /**
     * Error message.
     */
    message?: string | null;
    /**
     * List of syntax errors - data does not match the schema.
     */
    schema_errors?: Array<SchemaErrorRouting>;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

/**
 * Error details for 402 `Payment Required`.
 */
interface General402Routing {
    [key: string]: any | any;
    tracedata: TracedataRouting;
    /**
     * Error message.
     */
    message?: string | null;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

/**
 * Resource details.
 */
interface General404DetailRouting {
    [key: string]: any | any;
    tracedata: TracedataRouting;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

/**
 * 404 Error details.
 */
interface General404Routing {
    [key: string]: any | any;
    /**
     * Resource identifier.
     */
    resource_key?: string | null;
    detail?: General404DetailRouting | null;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

/**
 * Error details for 429 `Too Many Requests`.
 */
interface General429Routing {
    [key: string]: any | any;
    tracedata: TracedataRouting;
    /**
     * Error message.
     */
    message?: string | null;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

/**
 * Error details for 500 `Internal Server Error`.
 */
interface General500Routing {
    [key: string]: any | any;
    tracedata: TracedataRouting;
    /**
     * Error message.
     */
    message?: string | null;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

/**
 * Geodata usage settings.
 */
interface GeoSettingsRouting {
    [key: string]: any | any;
    /**
     * Geodata provider:   * `VRT` - geo-data and traffic jams from Veeroute, work all over the world.  A specific provider may be specified for a specific region, availability depending on customer settings.
     */
    geo_provider?: string;
    /**
     * Use toll roads.
     */
    toll_roads?: boolean;
    /**
     * Use ferry crossing.
     */
    ferry_crossing?: boolean;
    /**
     * Accounting for traffic during the route planning.
     */
    traffic_jams?: boolean;
    /**
     * Use for calculating straight line distances. If `false` is specified, distances are calculated by roads. When this parameter is enabled, geo-provider not used and traffic (`traffic_jams`) is automatically disabled.
     */
    flight_distance?: boolean;
    /**
     * Attributes. Used to add service information.
     */
    attributes?: Array<AttributeRouting>;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */
/**
 * Transport types:   * `CAR` - car   * `TRUCK_1500` - truck with permissible weight 1500 kg   * `TRUCK_3000` - truck with permissible weight 3000 kg   * `TRUCK_5000` - truck with permissible weight 5000 kg   * `TRUCK_10000` - truck with permissible weight 10000 kg   * `TRUCK_20000` - truck with permissible weight 20000 kg   * `TRUCK_10000_L75_H35_W24_6000` - a truck with a permitted weight of no more than 10,000 kg, dimensions of 7.5 x 3.5 x 2.4 meters, and a permissible axle load of 6,000 kg   * `TRUCK_18000_L95_H40_W26_11000` - a truck with a permitted weight of no more than 18,000 kg, dimensions of 9.5 x 4.0 x 2.6 meters, and a permissible axle load of 11,000 kg   * `TRUCK_26000_L120_H40_W26_8000` - a truck with a permitted weight of no more than 26,000 kg, dimensions of 12.0 x 4.0 x 2.6 meters, and a permissible axle load of 8000 kg   * `TRUCK_GARBAGE_1` - truck for transporting garbage (type 1)   * `TRUCK_GARBAGE_2` - truck for transporting garbage (type 2)   * `TUK_TUK` - tuk-tuk   * `BICYCLE` - bicycle   * `PEDESTRIAN` - pedestrian         * `PUBLIC_TRANSPORT` - public transport   * `TELEPORT` - teleport (instant movement between points)      Permissible weight is the weight of the equipped transport with cargo and driver, set by the manufacturer as the maximum allowable.
 */
declare enum TransportTypeRouting {
    CAR = "CAR",
    TRUCK_1500 = "TRUCK_1500",
    TRUCK_3000 = "TRUCK_3000",
    TRUCK_5000 = "TRUCK_5000",
    TRUCK_10000 = "TRUCK_10000",
    TRUCK_20000 = "TRUCK_20000",
    TRUCK_10000_L75_H35_W24_6000 = "TRUCK_10000_L75_H35_W24_6000",
    TRUCK_18000_L95_H40_W26_11000 = "TRUCK_18000_L95_H40_W26_11000",
    TRUCK_26000_L120_H40_W26_8000 = "TRUCK_26000_L120_H40_W26_8000",
    TRUCK_GARBAGE_1 = "TRUCK_GARBAGE_1",
    TRUCK_GARBAGE_2 = "TRUCK_GARBAGE_2",
    TUK_TUK = "TUK_TUK",
    BICYCLE = "BICYCLE",
    PEDESTRIAN = "PEDESTRIAN",
    PUBLIC_TRANSPORT = "PUBLIC_TRANSPORT",
    TELEPORT = "TELEPORT"
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

/**
 * Task for calculating a matrix.
 */
interface MatrixTaskRouting {
    [key: string]: any | any;
    /**
     * Array of geographical points to calculate the distances and times between them. The for all matrices (with different `transport_type`) must be in the same order.
     */
    waypoints: Array<RoutingMatrixWaypointRouting>;
    transport_type?: TransportTypeRouting;
    geo_settings?: GeoSettingsRouting;
    /**
     * Departure date and time according to the [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6).
     */
    departure_time?: string | null;
    /**
     * The name of the dataset. A technical field that does not affect calculation.
     */
    dataset_name?: string;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */
/**
 * Time window.
 */
interface TimeWindowRouting {
    [key: string]: any | any;
    /**
     * Date and time in the [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6) format.
     */
    from: string;
    /**
     * Date and time in the [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6) format.
     */
    to: string;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

/**
 * General route statistics.
 */
interface RouteStatisticsRouting {
    [key: string]: any | any;
    /**
     * Time window for the beginning and end of the movement.
     */
    time_window: TimeWindowRouting;
    /**
     * Total length, in meters.
     */
    distance: number;
    /**
     * Time duration according to [ISO 8601 duration](https://en.wikipedia.org/wiki/ISO_8601#Durations).
     */
    duration: string;
    /**
     * Time duration according to [ISO 8601 duration](https://en.wikipedia.org/wiki/ISO_8601#Durations).
     */
    stopping_time: string;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */
/**
 * A geographic point with a time reference.
 */
interface TrackpointRouting {
    [key: string]: any | any;
    /**
     * Latitude in degrees.
     */
    latitude: number;
    /**
     * Longitude in degrees.
     */
    longitude: number;
    /**
     * Date and time in the [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6) format.
     */
    time?: string | null;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

/**
 * Route segment step (a separate step for a separate type of transports).
 */
interface RouteStepRouting {
    [key: string]: any | any;
    transport_type: TransportTypeRouting;
    /**
     * An array of geographic points with time reference between which a path is built.
     */
    polyline: Array<TrackpointRouting>;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

/**
 * The route leg between two locations.
 */
interface RouteLegRouting {
    [key: string]: any | any;
    /**
     * Steps required to pass a route leg.
     */
    steps: Array<RouteStepRouting>;
    /**
     * Name of the departure point. Filled in if specified in the source data.
     */
    departure_name?: string | null;
    /**
     * Name of the destination. Filled in if specified in the source data.
     */
    destination_name?: string | null;
    statistics: RouteStatisticsRouting;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

/**
 * Information about the planned route.
 */
interface RouteRouting {
    [key: string]: any | any;
    /**
     * Route segments between locations specified in the parameter `waypoints`.
     */
    legs: Array<RouteLegRouting>;
    statistics: RouteStatisticsRouting;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

/**
 * Routing result.
 */
interface RouteResultRouting {
    [key: string]: any | any;
    tracedata: TracedataRouting;
    route: RouteRouting;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

/**
 * A waypoint with the time of the stop at it.
 */
interface RouteWaypointRouting {
    [key: string]: any | any;
    geopoint: GeopointRouting;
    /**
     * Name of the point. Can be used as an identifier to match the task and the calculation result.
     */
    name?: string | null;
    /**
     * Departure date and time in [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6) format. If specified, replaces the estimated time. If it is set for one point, it must be set for all.
     */
    departure_time?: string | null;
    /**
     * Time duration according to [ISO 8601 duration](https://en.wikipedia.org/wiki/ISO_8601#Durations).
     */
    duration?: string | null;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

/**
 * Task for route planning. The departure time considers traffic jams.
 */
interface RouteTaskRouting {
    [key: string]: any | any;
    /**
     * Array of geographical points to build path between them.
     */
    waypoints: Array<RouteWaypointRouting>;
    transport_type?: TransportTypeRouting;
    geo_settings?: GeoSettingsRouting;
    /**
     * Departure date and time according to the [ISO 8601](https://tools.ietf.org/html/rfc3339#section-5.6).
     */
    departure_time?: string | null;
    /**
     * Timezone.
     */
    result_timezone?: number;
    /**
     * Building a detailed route - adds paths from points that are not on roads to nearby roads.
     */
    detail?: boolean;
    /**
     * Return a complete list of route segments. If the option is disabled, a short list is returned for simplified route display.
     */
    full_segments?: boolean;
    /**
     * Generate a polyline between points.
     */
    polyline?: boolean;
    /**
     * Generate times at intermediate points along the track.
     */
    trackpoint_time?: boolean;
    /**
     * The name of the dataset. A technical field that does not affect calculation.
     */
    dataset_name?: string;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */
/**
 * Service version.
 */
interface VersionResultRouting {
    [key: string]: any | any;
    /**
     * Product version. Within a single version, compatibility of common data structures between services is guaranteed. A version change indicates changes that are incompatible with previous versions of the product (and all services).
     */
    major: number;
    /**
     * Minor version of the service. A version change indicates new functionality. The update is backward compatible with the major version of the service.
     */
    minor: number;
    /**
     * Build version.       Contains backwards compatible bug fixes and docs update.
     */
    build: string;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

interface RunMatrixCalculationRequestParams {
    matrixTaskRouting: MatrixTaskRouting;
}
interface MatrixServiceInterface {
    defaultHeaders: HttpHeaders;
    configuration: Configuration;
    /**
     * Time-distance matrix
     * Creating time-distance matrices between each pair of locations. The result of this method may slightly differ from the &#x60;route&#x60; method.
* @param requestParameters
     */
    runMatrixCalculation(requestParameters: RunMatrixCalculationRequestParams, extraHttpRequestParams?: any): Observable<MatrixResultRouting>;
}

declare class MatrixService extends BaseService implements MatrixServiceInterface {
    protected httpClient: HttpClient;
    constructor(httpClient: HttpClient, basePath: string | string[], configuration?: Configuration);
    /**
     * Time-distance matrix
     * Creating time-distance matrices between each pair of locations. The result of this method may slightly differ from the &#x60;route&#x60; method.
     * @param requestParameters
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    runMatrixCalculation(requestParameters: RunMatrixCalculationRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<MatrixResultRouting>;
    runMatrixCalculation(requestParameters: RunMatrixCalculationRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<MatrixResultRouting>>;
    runMatrixCalculation(requestParameters: RunMatrixCalculationRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<MatrixResultRouting>>;
    static ɵfac: i0.ɵɵFactoryDeclaration<MatrixService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<MatrixService>;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

interface RunRouteCalculationRequestParams {
    routeTaskRouting: RouteTaskRouting;
}
interface RouteServiceInterface {
    defaultHeaders: HttpHeaders;
    configuration: Configuration;
    /**
     * Route between points
     * Constructing a route between points, taking into account the specified order and time at each stop. When specifying the departure time &#x60;departure_time&#x60;, traffic jams are taken into account.
* @param requestParameters
     */
    runRouteCalculation(requestParameters: RunRouteCalculationRequestParams, extraHttpRequestParams?: any): Observable<RouteResultRouting>;
}

declare class RouteService extends BaseService implements RouteServiceInterface {
    protected httpClient: HttpClient;
    constructor(httpClient: HttpClient, basePath: string | string[], configuration?: Configuration);
    /**
     * Route between points
     * Constructing a route between points, taking into account the specified order and time at each stop. When specifying the departure time &#x60;departure_time&#x60;, traffic jams are taken into account.
     * @param requestParameters
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    runRouteCalculation(requestParameters: RunRouteCalculationRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<RouteResultRouting>;
    runRouteCalculation(requestParameters: RunRouteCalculationRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<RouteResultRouting>>;
    runRouteCalculation(requestParameters: RunRouteCalculationRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<RouteResultRouting>>;
    static ɵfac: i0.ɵɵFactoryDeclaration<RouteService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<RouteService>;
}

/**
 * VRt.Routing [RT]
 *
 * The version of the OpenAPI document: 7.38.3336
 * Contact: support@veeroute.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator.
 * Do not edit the class manually.
 */

interface FileRequestParams {
    filename: string;
}
interface SystemServiceInterface {
    defaultHeaders: HttpHeaders;
    configuration: Configuration;
    /**
     * Checking the availability
     * Checking the service availability.
*/
    check(extraHttpRequestParams?: any): Observable<CheckResultRouting>;
    /**
     * Getting the documentation
     * Getting the file with this service documentation.
* @param requestParameters
     */
    file(requestParameters: FileRequestParams, extraHttpRequestParams?: any): Observable<string>;
    /**
     * Getting the service version
     * Getting the service version.
*/
    version(extraHttpRequestParams?: any): Observable<VersionResultRouting>;
}

declare class SystemService extends BaseService implements SystemServiceInterface {
    protected httpClient: HttpClient;
    constructor(httpClient: HttpClient, basePath: string | string[], configuration?: Configuration);
    /**
     * Checking the availability
     * Checking the service availability.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    check(observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<CheckResultRouting>;
    check(observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<CheckResultRouting>>;
    check(observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<CheckResultRouting>>;
    /**
     * Getting the documentation
     * Getting the file with this service documentation.
     * @param requestParameters
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    file(requestParameters: FileRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/html' | 'text/plain' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<string>;
    file(requestParameters: FileRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/html' | 'text/plain' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<string>>;
    file(requestParameters: FileRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/html' | 'text/plain' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<string>>;
    /**
     * Getting the service version
     * Getting the service version.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    version(observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<VersionResultRouting>;
    version(observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<VersionResultRouting>>;
    version(observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<VersionResultRouting>>;
    static ɵfac: i0.ɵɵFactoryDeclaration<SystemService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<SystemService>;
}

declare const APIS: (typeof MatrixService | typeof RouteService | typeof SystemService)[];

declare const BASE_PATH: InjectionToken<string>;
declare const COLLECTION_FORMATS: {
    csv: string;
    tsv: string;
    ssv: string;
    pipes: string;
};

declare class LssRoutingApiModule {
    static forRoot(configurationFactory: () => Configuration): ModuleWithProviders<LssRoutingApiModule>;
    constructor(parentModule: LssRoutingApiModule, http: HttpClient);
    static ɵfac: i0.ɵɵFactoryDeclaration<LssRoutingApiModule, [{ optional: true; skipSelf: true; }, { optional: true; }]>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<LssRoutingApiModule, never, never, never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<LssRoutingApiModule>;
}

declare function provideApi(configOrBasePath: string | ConfigurationParameters): EnvironmentProviders;

export { APIS, BASE_PATH, COLLECTION_FORMATS, Configuration, LssRoutingApiModule, MatrixService, RouteService, ServiceRouting, SystemService, TransportTypeRouting, provideApi };
export type { AttributeRouting, CheckResultRouting, ConfigurationParameters, DataFormat, DataType, FileRequestParams, General400Routing, General402Routing, General404DetailRouting, General404Routing, General429Routing, General500Routing, GeoSettingsRouting, GeopointRouting, MatrixResultRouting, MatrixServiceInterface, MatrixTaskRouting, Param, ParamLocation, ParamStyle, RouteLegRouting, RouteResultRouting, RouteRouting, RouteServiceInterface, RouteStatisticsRouting, RouteStepRouting, RouteTaskRouting, RouteWaypointRouting, RoutingMatrixRouting, RoutingMatrixWaypointRouting, RunMatrixCalculationRequestParams, RunRouteCalculationRequestParams, SchemaErrorRouting, StandardDataFormat, StandardDataType, StandardParamStyle, SystemServiceInterface, TimeWindowRouting, TracedataRouting, TrackpointRouting, VersionResultRouting };
