import * as OJP_Types from 'ojp-shared-types';

/**
 * Configuration interface for HTTP requests
 *
 * This interface defines the structure for configuring HTTP request settings,
 * including the target URL and authentication token.
 *
 * @example
 * ```typescript
 * const config: HTTPConfig = {
 *   url: 'https://api.example.com/data',
 *   authToken: 'Bearer abc123xyz'
 * };
 * ```
 *
 * @category Core
 */
interface HTTPConfig {
    url: string;
    authToken: string | null;
}
/**
 * SDK language
 *
 * @category Core
 */
type Language = 'de' | 'fr' | 'it' | 'en';
/**
 * SDK OJP version
 *
 * @category Interoperability OJP 1.0
 */
type OJP_VERSION = '1.0' | '2.0';
/**
 * SDK union type for applications using both OJP versions
 *
 * @category Interoperability OJP 1.0
 */
type AnySDK = SDK<'1.0'> | SDK<'2.0'>;
/**
 * Configuration interface for XML serialization settings
 *
 * This interface defines the structure for configuring XML serialization behavior,
 * including OJP version, default namespace handling, and custom namespace mappings.
 *
 * @example
 * ```typescript
 * const config: XML_Config = {
 *   ojpVersion: '2.0',
 *   defaultNS: 'ojp',
 *   mapNS: {
 *     'http://www.vdv.de/ojp': 'ojp',
 *     'http://www.siri.org.uk/siri': 'siri'
 *   }
 * };
 * ```
 *
 * @category XML Utils
 */
interface XML_Config {
    /** The OJP version to use for serialization */
    ojpVersion: OJP_VERSION;
    /** The default namespace prefix ('ojp', 'siri', or null) */
    defaultNS: 'ojp' | 'siri' | null;
    /** Mapping of XML namespace URIs to their prefixes */
    mapNS: Record<string, string>;
}
/**
 * Interface containing request and response information
 *
 * This interface holds metadata about HTTP requests and responses, including
 * timestamps for request/response processing and the actual XML content.
 *
 * @example
 * ```typescript
 * const requestInfo: RequestInfo = {
 *   requestDateTime: new Date(),
 *   requestXML: '<OJP>...</OJP>',
 *   responseDateTime: new Date(),
 *   responseXML: '<OJPResponse>...</OJPResponse>',
 *   parseDateTime: new Date()
 * };
 * ```
 *
 * @category Core
 */
interface RequestInfo {
    requestDateTime: Date | null;
    requestXML: string | null;
    responseDateTime: Date | null;
    responseXML: string | null;
    parseDateTime: Date | null;
}

/**
 * Type definitions for OJP API response types.
 *
 * Each response type is a union of success and error states, following the pattern:
 * - { ok: true; value: T } for successful responses
 * - { ok: false; error: E } for failed responses
 *
 */
type ResponseOk<T> = {
    ok: true;
    value: T;
};
type ResponseError<E> = {
    ok: false;
    error: E;
};
type OJP_Response<T, E> = ResponseOk<T> | ResponseError<E>;
/**
 * FR Response (OJP 1.0)
 *
 * @category Response OJP 1.0
 */
type FareRequestResponse = OJP_Response<OJP_Types.FareDeliverySchema, Error>;
/**
 * LIR Response
 *
 * @see {@link https://vdvde.github.io/OJP/develop/documentation-tables/ojp.html#type_ojp__OJPLocationInformationDeliveryStructure }
 *
 * @category Response
 */
type LocationInformationRequestResponse = OJP_Response<OJP_Types.LocationInformationDeliverySchema, Error>;
/**
 * LIR Response (OJP 1.0)
 *
 * @category Response OJP 1.0
 */
type OJPv1_LocationInformationRequestResponse = OJP_Response<OJP_Types.OJPv1_LocationInformationDeliverySchema, Error>;
/**
 * SER Response
 *
 * @see {@link https://vdvde.github.io/OJP/develop/documentation-tables/ojp.html#type_ojp__OJPStopEventDeliveryStructure }
 *
 * @category Response
 */
type StopEventRequestResponse = OJP_Response<OJP_Types.StopEventDeliverySchema, Error>;
/**
 * SER Response (OJP 1.0)
 *
 * @category Response OJP 1.0
 */
type OJPv1_StopEventRequestResponse = OJP_Response<OJP_Types.OJPv1_StopEventDeliverySchema, Error>;
/**
 * TIR Response
 *
 * @see {@link https://vdvde.github.io/OJP/develop/documentation-tables/ojp.html#type_ojp__OJPTripInfoDeliveryStructure }
 *
 * @category Response
 */
type TripInfoRequestResponse = OJP_Response<OJP_Types.TripInfoDeliverySchema, Error>;
/**
 * TIR Response (OJP 1.0)
 *
 * @category Response OJP 1.0
 */
type OJPv1_TripInfoRequestResponse = OJP_Response<OJP_Types.OJPv1_TripInfoDeliverySchema, Error>;
/**
 * TRR Response
 *
 * @see {@link https://vdvde.github.io/OJP/develop/documentation-tables/ojp.html#type_ojp__OJPTripRefineDeliveryStructure }
 *
 * @category Response
 */
type TripRefineRequestResponse = OJP_Response<OJP_Types.TRR_DeliverySchema, Error>;
/**
 * TR Response
 *
 * @see {@link https://vdvde.github.io/OJP/develop/documentation-tables/ojp.html#type_ojp__OJPTripDeliveryStructure }
 *
 * @category Response
 */
type TripRequestResponse = OJP_Response<OJP_Types.TripDeliverySchema, Error>;
/**
 * TR Response (OJP 1.0)
 *
 * @category Response OJP 1.0
 */
type OJPv1_TripRequestResponse = OJP_Response<OJP_Types.OJPv1_TripDeliverySchema, Error>;

type ResultSpec = {
    fetchResponse: unknown;
};
declare abstract class BaseRequest<S extends ResultSpec> {
    requestInfo: RequestInfo;
    mockRequestXML: string | null;
    mockResponseXML: string | null;
    protected constructor();
    /**
     * Creates a new instance of the request class with a mock request XML string
     *
     * This method is used for testing purposes to simulate API requests with predefined XML payloads.
     * When this mock is set, the request will use the provided XML instead of building a new one.
     *
     * @param mockText - The XML string to use as the mock request
     * @returns A new instance of the request class with the mock set
     *
     * @example
     * ```typescript
     * const mockRequest = LocationInformationRequest.initWithRequestMock('<OJP>...</OJP>');
     * ```
     *
     * @group Initialization
     */
    static initWithRequestMock<T_This extends {
        Default(): any;
    }>(this: T_This, mockText: string): ReturnType<T_This['Default']>;
    /**
     * Creates a new instance of the request class with a mock response XML string
     *
     * This method is used for testing purposes to simulate API responses with predefined XML payloads.
     * When this mock is set, the request will use the provided XML response instead of making actual API calls.
     *
     * @param mockText - The XML string to use as the mock response
     * @returns A new instance of the request class with the mock set
     *
     * @example
     * ```typescript
     * const mockRequest = LocationInformationRequest.initWithResponseMock('<OJP>...</OJP>');
     * ```
     *
     * @group Initialization
     */
    static initWithResponseMock<T_This extends {
        Default(): any;
    }>(this: T_This, mockText: string): ReturnType<T_This['Default']>;
    protected abstract _fetchResponse(sdk: AnySDK): Promise<S['fetchResponse']>;
    fetchResponse(sdk: AnySDK): Promise<S['fetchResponse']>;
    abstract buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string;
}

declare abstract class SharedLocationInformationRequest<S extends ResultSpec> extends BaseRequest<S> {
    protected static computeGeoRestriction(bboxData: string | number[]): OJP_Types.GeoRestrictionsSchema | null;
}

/**
 * LocationInformationRequest (LIR) class
 *
 * Instances are created via static methods below. Direct construction is intentionally disabled.
 *
 * - `initWithLocationName` - use location name, i.e. `Bern`
 * - `initWithPlaceRef` - use place ref or literal coordinates (lat, lng)
 * - `initWithBBOX` - use bounding box to filter locations
 *
 * @category Request
 */
declare class LocationInformationRequest extends SharedLocationInformationRequest<{
    fetchResponse: LocationInformationRequestResponse;
}> {
    /**
     * The payload object that gets serialized to XML for the request
     *
     * @see {@link https://vdvde.github.io/OJP/develop/documentation-tables/ojp.html#type_ojp__OJPLocationInformationRequestStructure OJP LocationInformationRequest XSD Schema}
     */
    payload: OJP_Types.LocationInformationRequestSchema;
    protected constructor(restrictions: OJP_Types.LIR_RequestParamsSchema | undefined);
    private static DefaultRestrictionParams;
    private updateRestrictions;
    /**
     * Used by BaseRequest methods (i.e. `initWithRequestMock`, `initWithResponseMock`
     * @hidden
     */
    static Default(): LocationInformationRequest;
    /**
     * Inits LIR with location name
     *
     * @param name string, location name
     * @param placeTypes `OJP_Types.PlaceTypeEnum` "stop" | "address" | "poi" | "location" | "topographicPlace"
     * @param numberOfResults maximum number of results to return (default: 10)
     *
     * @group Initialization
     */
    static initWithLocationName(name: string, placeTypes?: OJP_Types.PlaceTypeEnum[], numberOfResults?: number): LocationInformationRequest;
    /**
     * Inits LIR with place ref or literal coords
     *
     * @param placeRefOrCoords place reference or coordinates string (e.g. `ch:1:sloid:7000:4:7` or `46.94857,7.43683` (latitude, longitude in WGS84))
     * @param numberOfResults maximum number of results to return (default: 10)
     *
     * @group Initialization
     */
    static initWithPlaceRef(placeRefOrCoords: string, numberOfResults?: number): LocationInformationRequest;
    /**
     * Inits LIR with bounding box
     *
     * @param bboxData bounding box data as string ("minLon,minLat,maxLon,maxLat") or array [minLon, minLat, maxLon, maxLat]
     * @param placeTypes `OJP_Types.PlaceTypeEnum` "stop" | "address" | "poi" | "location" | "topographicPlace"
     * @param numberOfResults maximum number of results to return (default: 10)
     *
     * @group Initialization
     */
    static initWithBBOX(bboxData: string | number[], placeTypes?: OJP_Types.PlaceTypeEnum[], numberOfResults?: number): LocationInformationRequest;
    /**
     * Builds the XML request string for the LIR
     *
     * @param language The language to use for the request (e.g. "en", "de")
     * @param requestorRef The requestor reference identifier
     * @param xmlConfig XML configuration options for building the request, default {@link DefaultXML_Config} OJP 2.0
     * @returns A formatted XML string representing the Location Information Request
     */
    buildRequestXML(language: Language, requestorRef: string, xmlConfig?: XML_Config): string;
    protected _fetchResponse(sdk: SDK<'2.0'>): Promise<LocationInformationRequestResponse>;
}

declare abstract class SharedStopEventRequest<S extends ResultSpec> extends BaseRequest<S> {
    protected static DefaultRequestParams(version?: OJP_VERSION): OJP_Types.SER_RequestParamsSchema;
}

/**
 * StopEventRequest (SER) class
 *
 * Instances are created via static methods below. Direct construction is intentionally disabled.
 *
 * - `initWithPlaceRefAndDate` - use PlaceRef ids + date
 *
 * @category Request
 */
declare class StopEventRequest extends SharedStopEventRequest<{
    fetchResponse: StopEventRequestResponse;
}> {
    /**
     * The payload object that gets serialized to XML for the request
     *
     * @see {@link https://vdvde.github.io/OJP/develop/documentation-tables/ojp.html#type_ojp__OJPStopEventRequestStructure OJP StopEventRequest XSD Schema}
     */
    payload: OJP_Types.StopEventRequestSchema;
    protected constructor(location: OJP_Types.SER_RequestLocationSchema, params?: OJP_Types.SER_RequestParamsSchema | undefined);
    /**
     * Used by BaseRequest methods (i.e. `initWithRequestMock`, `initWithResponseMock`
     * @hidden
     */
    static Default(): StopEventRequest;
    /**
     * Creates a new StopEventRequest with the given place reference and date
     *
     * @param placeRefS The stop point reference ID (e.g. "8507000" for Bern)
     * @param date The date and time for the stop event request (defaults to current date/time)
     * @returns A new StopEventRequest instance
     *
     * @example
     * ```typescript
     * const request = StopEventRequest.initWithPlaceRefAndDate('8507000');
     * const response = await request.fetch(sdk);
     * ```
     *
     * @group Initialization
     */
    static initWithPlaceRefAndDate(placeRefS: string, date?: Date): StopEventRequest;
    /**
     * Builds the XML request string for the SER
     *
     * @param language The language to use for the request (e.g. "en", "de")
     * @param requestorRef The requestor reference identifier
     * @param xmlConfig XML configuration options for building the request, default {@link DefaultXML_Config} OJP 2.0
     * @returns A formatted XML string representing the Location Information Request
     */
    buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string;
    protected _fetchResponse(sdk: SDK<'2.0'>): Promise<StopEventRequestResponse>;
}

declare abstract class SharedTripInfoRequest<S extends ResultSpec> extends BaseRequest<S> {
    protected static DefaultRequestParams(): {
        includeCalls?: boolean;
        includeService?: boolean;
        includeTrackProjection?: boolean;
        includePlacesContext?: boolean;
        includeSituationsContext?: boolean;
    };
}

/**
 * TripInfoRequest (TIR) class
 *
 * Instances are created via static methods below. Direct construction is intentionally disabled.
 *
 * - `initWithJourneyRef` - use journey reference and date
 *
 * @category Request
 */
declare class TripInfoRequest extends SharedTripInfoRequest<{
    fetchResponse: TripInfoRequestResponse;
}> {
    /**
     * The payload object that gets serialized to XML for the request
     *
     * @see {@link https://vdvde.github.io/OJP/develop/documentation-tables/ojp.html#type_ojp__OJPTripInfoRequestStructure OJP TripInfoRequest XSD Schema}
     */
    payload: OJP_Types.TIR_RequestSchema;
    protected constructor(journeyRef: string, operatingDayRef: string, params?: OJP_Types.TIR_RequestParamsSchema);
    /**
     * Used by BaseRequest methods (i.e. `initWithRequestMock`, `initWithResponseMock`
     * @hidden
     */
    static Default(): TripInfoRequest;
    /**
     * Creates a new TripInfoRequest with the given journey reference and date
     *
     * @param journeyRef The journey reference ID (e.g. "ch:1:sjyid:100001:2179-001")
     * @param journeyDate The date of the journey (defaults to current date)
     * @returns A new TripInfoRequest instance
     *
     * @example
     * ```typescript
     * const request = TripInfoRequest.initWithJourneyRef('ch:1:sjyid:100001:2179-001');
     * const response = await request.fetch(sdk);
     * ```
     *
     * @group Initialization
     */
    static initWithJourneyRef(journeyRef: string, journeyDate?: Date): TripInfoRequest;
    /**
     * Enables track projection in the request payload
     *
     * This method modifies the request to include track projection data in the response.
     * When enabled, the response will contain additional information about the vehicle's
     * track and movement patterns.
     *
     * @example
     * ```typescript
     * const request = TripInfoRequest.initWithJourneyRef('ch:1:sjyid:100001:2179-001');
     * request.enableTrackProjection();
     
    * const response = await request.fetch(sdk);
     * ```
     *
     * @group Request Payload Modification
     */
    enableTrackProjection(): void;
    /**
     * Builds the XML request string for the TIR
     *
     * @param language The language to use for the request (e.g. "en", "de")
     * @param requestorRef The requestor reference identifier
     * @param xmlConfig XML configuration options for building the request, default {@link DefaultXML_Config} OJP 2.0
     * @returns A formatted XML string representing the Location Information Request
     */
    buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string;
    protected _fetchResponse(sdk: SDK<'2.0'>): Promise<TripInfoRequestResponse>;
}

type GeoPositionLike = OJP_Types.GeoPositionSchema | number[] | string;
/**
 * Represents a geographic position with longitude and latitude coordinate.
 *
 * @example
 * ```typescript
 * // Create from coordinates
 * const position = new GeoPosition(8.54, 47.37);
 *
 * // Create from array
 * const position = new GeoPosition([8.54, 47.37]);
 *
 * // Create from string (lat, long)
 * const position = new GeoPosition("47.37,8.54");
 *
 * // Create from GeoPositionSchema
 * const position = new GeoPosition({ longitude: 8.54, latitude: 47.37 });
 * ```
 *
 * @category Geo
 */
declare class GeoPosition implements OJP_Types.GeoPositionSchema {
    longitude: number;
    latitude: number;
    properties: Record<string, any>;
    constructor(geoPositionArg: GeoPositionLike | number, optionalLatitude?: number | null);
    isValid(): boolean;
    distanceFrom(pointB: GeoPosition): number;
    asLatLngString(roundCoords?: boolean): string;
    asLngLat(): [number, number];
    asGeoPositionSchema(): OJP_Types.GeoPositionSchema;
}

/**
 * @deprecated this class will be removed from SDK
 * clients can implement specifc cases conforming to OJP_Types
 *
 * @hidden
 */
declare class Trip implements OJP_Types.TripSchema {
    id: string;
    duration: string;
    startTime: string;
    endTime: string;
    transfers: number;
    leg: OJP_Types.LegSchema[];
    cancelled?: boolean;
    delayed?: boolean;
    deviation?: boolean;
    infeasible?: boolean;
    unplanned?: boolean;
    private constructor();
    static initWithTripXML(rawXML: string): Trip;
}
interface NearbyPlace {
    distance: number;
    object: Place;
}
/**
 * @deprecated this class will be removed from SDK
 * clients can implement specifc cases conforming to OJP_Types
 *
 * @hidden
 */
declare class Place implements OJP_Types.PlaceSchema {
    stopPoint?: OJP_Types.StopPointSchema;
    stopPlace?: OJP_Types.StopPlaceSchema;
    topographicPlace?: OJP_Types.TopographicPlaceSchema;
    pointOfInterest?: OJP_Types.PointOfInterestSchema;
    address?: OJP_Types.AddressSchema;
    name: OJP_Types.InternationalTextSchema;
    geoPosition: GeoPosition;
    mode: OJP_Types.ModeStructureSchema[];
    attribute: OJP_Types.GeneralAttributeSchema[];
    placeType: OJP_Types.PlaceTypeEnum | null;
    private constructor();
    static initWithXMLSchema(placeSchema: OJP_Types.PlaceSchema): Place;
    static initWithCoords(geoPositionArg: GeoPositionLike | number, optionalLatitude?: number | null): Place;
    static Empty(): Place;
    findClosestPlace(otherPlaces: Place[]): NearbyPlace | null;
    asStopPlaceRefOrCoords(): string;
}
/**
 * @deprecated this class will be removed from SDK
 * clients can implement specifc cases conforming to OJP_Types
 *
 * @hidden
 */
declare class PlaceResult implements OJP_Types.PlaceResultSchema {
    place: Place;
    complete: boolean;
    probability?: number;
    private constructor();
    static initWithXMLSchema(placeResultSchema: OJP_Types.PlaceResultSchema): PlaceResult;
    static initWithXML(nodeXML: string): PlaceResult;
}
/**
 * @deprecated this class will be removed from SDK
 * clients can implement specifc cases conforming to OJP_Types
 *
 * @hidden
 */
declare class StopEventResult implements OJP_Types.StopEventResultSchema {
    id: string;
    stopEvent: OJP_Types.StopEventSchema;
    private constructor();
    static initWithXML(nodeXML: string): StopEventResult;
}

/**
 * TripRefineRequest (TRR) class
 *
 * Instances are created via static methods below. Direct construction is intentionally disabled.
 *
 * - `initWithTrip` - use a Trip OJP XSD schema to refine
 *
 * @category Request
 */
declare class TripRefineRequest extends BaseRequest<{
    fetchResponse: TripRefineRequestResponse;
}> {
    /**
     * The payload object that gets serialized to XML for the request
     *
     * @see {@link https://vdvde.github.io/OJP/develop/documentation-tables/ojp.html#type_ojp__OJPTripRefineRequestStructure OJP TripRefineRequest XSD Schema}
     */
    payload: OJP_Types.TRR_RequestSchema;
    protected constructor(tripResult: OJP_Types.TripResultSchema, refineParams?: OJP_Types.TRR_RequestParamsSchema);
    private static DefaultRequestParams;
    /**
     * Used by BaseRequest methods (i.e. `initWithRequestMock`, `initWithResponseMock`
     * @hidden
     */
    static Default(): TripRefineRequest;
    /**
     * Creates a new TripRefineRequest with the given Trip OJP XSD Schema
     *
     * @param trip the trip to be refined as Trip OJP XSD Schema
     *
     * @group Initialization
     */
    static initWithTrip(trip: Trip): TripRefineRequest;
    /**
     * Builds the XML request string for the TIR
     *
     * @param language The language to use for the request (e.g. "en", "de")
     * @param requestorRef The requestor reference identifier
     * @param xmlConfig XML configuration options for building the request, default {@link DefaultXML_Config} OJP 2.0
     * @returns A formatted XML string representing the Location Information Request
     */
    buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string;
    protected _fetchResponse(sdk: SDK<'2.0'>): Promise<TripRefineRequestResponse>;
}

type OJPv1_TaxiModeEnum = 'taxi' | 'others-drive-car';
/**
 * TripRequest (TR) class for OJP 1.0
 *
 * Instances are created via static methods below. Direct construction is intentionally disabled.
 *
 * - `initWithPlaceRefsOrCoords` - use place refs or literal coordinates (lat, lng) for origin, destinatio
 * - `initWithPlaces` - use Place OJP XSD schema objects
 *
 * @category Request OJP 1.0
 */
declare class OJPv1_TripRequest extends SharedTripRequest<{
    fetchResponse: OJPv1_TripRequestResponse;
}> {
    /**
     * The payload object that gets serialized to XML for the request (OJP v1)
     */
    payload: OJP_Types.OJPv1_TripRequestSchema;
    protected constructor(origin: OJP_Types.OJPv1_PlaceContextSchema, destination: OJP_Types.OJPv1_PlaceContextSchema, via?: OJP_Types.OJPv1_ViaPointSchema[], params?: OJP_Types.OJPv1_TripParamsSchema | null);
    private static DefaultRequestParams;
    /**
     * Used by BaseRequest methods (i.e. `initWithRequestMock`, `initWithResponseMock`
     *
     * @hidden
     */
    static Default(): OJPv1_TripRequest;
    /**
     * Initializes a TripRequest object with either place references or coordinates.
     *
     * @param originPlaceRefS - The origin place reference string - place reference or coordinate literals (lat, lon WGS84)
     * @param destinationPlaceRefS - The destination place reference string - place reference or coordinate literals (lat, lon WGS84)
     *
     * @group Initialization
    */
    static initWithPlaceRefsOrCoords(originPlaceRefS: string, destinationPlaceRefS: string): OJPv1_TripRequest;
    /**
     * Initializes a TripRequest object with Place OJP schema objects
     *
     * @param origin - The origin place
     * @param destination - The destination place
     *
     * @group Initialization
    */
    static initWithPlaces(origin: Place, destination: Place): OJPv1_TripRequest;
    /**
     * Updates arrival at destination datetime in the request payload
     *
     * @group Request Payload Modification
     */
    setArrivalDatetime(newDatetime?: Date): void;
    /**
     * Updates departure from origin datetime in the request payload
     *
     * @group Request Payload Modification
     */
    setDepartureDatetime(newDatetime?: Date): void;
    /**
     * @group Request Payload Modification
     */
    disableLinkProkection(): void;
    /**
     * @group Request Payload Modification
     */
    enableLinkProkection(): void;
    /**
     * @group Request Payload Modification
     */
    setPublicTransportRequest(motFilter: OJP_Types.VehicleModesOfTransportEnum[] | null): void;
    /**
     * @group Request Payload Modification
     */
    setCarRequest(): void;
    /**
     * This modifier works only in OJP 2.0
     *
     * @group Request Payload Modification
     */
    setRailSubmodes(railSubmodes: OJP_Types.RailSubmodeEnum | OJP_Types.RailSubmodeEnum[]): void;
    /**
     * This modifier works only in OJP 2.0
     *
     * @group Request Payload Modification
     */
    setMaxDurationWalkingTime(maxDurationMinutes: number | undefined, endpointType: EndpointType): void;
    /**
     * @group Request Payload Modification
     */
    setNumberOfResults(resultsNo: number | null): void;
    /**
     * @group Request Payload Modification
     */
    setNumberOfResultsAfter(resultsNo: number): void;
    /**
     * @group Request Payload Modification
     */
    setNumberOfResultsBefore(resultsNo: number): void;
    private computeLegacyTransportMode;
    private computeTransportOptions;
    private setParamsEndpointExtension;
    /**
     * @group Request Payload Modification
     */
    setOriginDurationDistanceRestrictions(operationMode: OJP_Types.PersonalModesOfOperationEnum, transportMode: OJP_Types.PersonalModesEnum, minDuration?: number | null, maxDuration?: number | null, minDistance?: number | null, maxDistance?: number | null): void;
    /**
     * @group Request Payload Modification
     */
    setDestinationDurationDistanceRestrictions(operationMode: OJP_Types.PersonalModesOfOperationEnum, transportMode: OJP_Types.PersonalModesEnum, minDuration?: number | null, maxDuration?: number | null, minDistance?: number | null, maxDistance?: number | null): void;
    /**
     * This modifier works only in OJP 2.0
     *
     * @group Request Payload Modification
     */
    setWalkSpeedDeviation(walkSpeedPercent: number): void;
    /**
     * @group Request Payload Modification
     */
    setViaPlace(place: Place, dwellTime: number | null): void;
    /**
     * This modifier works only in OJP 2.0
     *
     * @group Request Payload Modification
     */
    setWalkRequest(): void;
    /**
     * @group Request Payload Modification
     *
     * @see {@link https://opentransportdata.swiss/de/cookbook/open-journey-planner-ojp/ojptriprequest/#Ueberblick_der_Kombinationsmoeglichkeiten }
     */
    setMonomodalRequest(operationMode: OJP_Types.PersonalModesOfOperationEnum, transportMode: OJP_Types.PersonalModesEnum): void;
    /**
     * This modifier works only in OJP 1.0
     *
     * @group Request Payload Modification
     */
    setTaxiRequest(transportMode: OJPv1_TaxiModeEnum, endpointType?: 'origin' | 'destination' | null, minDuration?: number | null, maxDuration?: number | null, minDistance?: number | null, maxDistance?: number | null): void;
    /**
     * Builds the XML request string for the TR
     *
     * @param language The language to use for the request (e.g. "en", "de")
     * @param requestorRef The requestor reference identifier
     * @param xmlConfig XML configuration options for building the request, default {@link XML_BuilderConfigOJPv1} OJP 1.0
     * @returns A formatted XML string representing the Location Information Request
     */
    buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string;
    protected _fetchResponse(sdk: SDK<'1.0'>): Promise<OJPv1_TripRequestResponse>;
}

type EndpointType = 'origin' | 'destination' | 'both';
declare abstract class SharedTripRequest<S extends ResultSpec> extends BaseRequest<S> {
    abstract setArrivalDatetime(newDatetime: Date): void;
    abstract setDepartureDatetime(newDatetime: Date): void;
    abstract setPublicTransportRequest(motFilter: OJP_Types.VehicleModesOfTransportEnum[] | null): void;
    abstract setCarRequest(): void;
    abstract setRailSubmodes(railSubmodes: OJP_Types.RailSubmodeEnum | OJP_Types.RailSubmodeEnum[]): void;
    abstract setMaxDurationWalkingTime(maxDurationMinutes: number | undefined, endpointType: EndpointType): void;
    abstract enableLinkProkection(): void;
    abstract disableLinkProkection(): void;
    abstract setNumberOfResults(resultsNo: number | null): void;
    abstract setNumberOfResultsAfter(resultsNo: number): void;
    abstract setNumberOfResultsBefore(resultsNo: number): void;
    abstract setWalkSpeedDeviation(walkSpeedPercent: number): void;
    abstract setOriginDurationDistanceRestrictions(operationMode: OJP_Types.PersonalModesOfOperationEnum, transportMode: OJP_Types.PersonalModesEnum, minDuration: number | null, maxDuration: number | null, minDistance: number | null, maxDistance: number | null): void;
    abstract setDestinationDurationDistanceRestrictions(operationMode: OJP_Types.PersonalModesOfOperationEnum, transportMode: OJP_Types.PersonalModesEnum, minDuration: number | null, maxDuration: number | null, minDistance: number | null, maxDistance: number | null): void;
    abstract setViaPlace(place: Place, dwellTime: number | null): void;
    abstract setWalkRequest(): void;
    abstract setMonomodalRequest(operationMode: OJP_Types.PersonalModesOfOperationEnum, transportMode: OJP_Types.PersonalModesEnum): void;
    abstract setTaxiRequest(transportMode: OJPv1_TaxiModeEnum, endpointType: 'origin' | 'destination' | null, minDuration: number | null, maxDuration: number | null, minDistance: number | null, maxDistance: number | null): void;
}

/**
 * TripRequest (TR) class
 *
 * Instances are created via static methods below. Direct construction is intentionally disabled.
 *
 * - `initWithPlaceRefsOrCoords` - use place refs or literal coordinates (lat, lng) for origin, destinatio
 * - `initWithPlaces` - use Place OJP XSD schema objects
 *
 * @category Request
 */
declare class TripRequest extends SharedTripRequest<{
    fetchResponse: TripRequestResponse;
}> {
    /**
     * The payload object that gets serialized to XML for the request
     *
     * @see {@link https://vdvde.github.io/OJP/develop/documentation-tables/ojp.html#type_ojp__OJPTripRequestStructure OJP TripRequest XSD Schema}
     */
    payload: OJP_Types.TripRequestSchema;
    protected constructor(origin: OJP_Types.PlaceContextSchema, destination: OJP_Types.PlaceContextSchema, via?: OJP_Types.ViaPointSchema[], params?: OJP_Types.TripParamsSchema | null);
    private static DefaultRequestParams;
    /**
     * Used by BaseRequest methods (i.e. `initWithRequestMock`, `initWithResponseMock`
     * @hidden
     */
    static Default(): TripRequest;
    /**
     * Initializes a TripRequest object with either place references or coordinates.
     *
     * @param originPlaceRefS - The origin place reference string - place reference or coordinate literals (lat, lon WGS84)
     * @param destinationPlaceRefS - The destination place reference string - place reference or coordinate literals (lat, lon WGS84)
     *
     * @group Initialization
    */
    static initWithPlaceRefsOrCoords(originPlaceRefS: string, destinationPlaceRefS: string): TripRequest;
    /**
     * Initializes a TripRequest object with Place OJP schema objects
     *
     * @param origin - The origin place
     * @param destination - The destination place
     *
     * @group Initialization
    */
    static initWithPlaces(origin: Place, destination: Place): TripRequest;
    /**
     * Updates arrival at destination datetime in the request payload
     *
     * @group Request Payload Modification
     */
    setArrivalDatetime(newDatetime?: Date): void;
    /**
     * Updates departure from origin datetime in the request payload
     *
     * @group Request Payload Modification
     */
    setDepartureDatetime(newDatetime?: Date): void;
    /**
     * @group Request Payload Modification
     */
    setPublicTransportRequest(motFilter?: OJP_Types.VehicleModesOfTransportEnum[] | null): void;
    /**
     * @group Request Payload Modification
     */
    disableLinkProkection(): void;
    /**
     * @group Request Payload Modification
     */
    enableLinkProkection(): void;
    /**
     * @group Request Payload Modification
     */
    setCarRequest(): void;
    /**
     * @group Request Payload Modification
     */
    setMaxDurationWalkingTime(maxDurationMinutes?: number | undefined, endpointType?: EndpointType): void;
    /**
     * see https://vdvde.github.io/OJP/develop/documentation-tables/siri.html#type_siri__RailSubmodesOfTransportEnumeration
     *
     * @group Request Payload Modification
     */
    setRailSubmodes(railSubmodes: OJP_Types.RailSubmodeEnum | OJP_Types.RailSubmodeEnum[]): void;
    /**
     * @group Request Payload Modification
     */
    setNumberOfResults(resultsNo: number | null): void;
    /**
     * @group Request Payload Modification
     */
    setNumberOfResultsAfter(resultsNo: number): void;
    /**
     * @group Request Payload Modification
     */
    setNumberOfResultsBefore(resultsNo: number): void;
    private setEndpointDurationDistanceRestrictions;
    /**
     * @group Request Payload Modification
     */
    setOriginDurationDistanceRestrictions(operationMode: OJP_Types.PersonalModesOfOperationEnum, transportMode: OJP_Types.PersonalModesEnum, minDuration?: number | null, maxDuration?: number | null, minDistance?: number | null, maxDistance?: number | null): void;
    /**
     * @group Request Payload Modification
     */
    setDestinationDurationDistanceRestrictions(operationMode: OJP_Types.PersonalModesOfOperationEnum, transportMode: OJP_Types.PersonalModesEnum, minDuration?: number | null, maxDuration?: number | null, minDistance?: number | null, maxDistance?: number | null): void;
    /**
     * @group Request Payload Modification
     */
    setWalkSpeedDeviation(walkSpeedPercent: number): void;
    /**
     * @group Request Payload Modification
     */
    setViaPlace(place: Place, dwellTime: number | null): void;
    /**
     * @group Request Payload Modification
     */
    setWalkRequest(): void;
    /**
     * This modifier works only in OJP 1.0
     *
     * @group Request Payload Modification
     */
    setMonomodalRequest(operationMode: OJP_Types.PersonalModesOfOperationEnum, transportMode: OJP_Types.PersonalModesEnum): void;
    /**
     * This modifier works only in OJP 1.0
     *
     * @group Request Payload Modification
     */
    setTaxiRequest(transportMode: OJPv1_TaxiModeEnum, endpointType?: 'origin' | 'destination' | null, minDuration?: number | null, maxDuration?: number | null, minDistance?: number | null, maxDistance?: number | null): void;
    /**
     * Builds the XML request string for the TIR
     *
     * @param language The language to use for the request (e.g. "en", "de")
     * @param requestorRef The requestor reference identifier
     * @param xmlConfig XML configuration options for building the request, default {@link DefaultXML_Config} OJP 2.0
     * @returns A formatted XML string representing the Location Information Request
     */
    buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string;
    protected _fetchResponse(sdk: SDK<'2.0'>): Promise<TripRequestResponse>;
}

/**
 * FareRequest (FR) class for OJP 1.0
 *
 * Instances are created via static methods below. Direct construction is intentionally disabled.
 *
 * - `initWithOJPv1Trips` - use Trip OJP 1.0 schema items
 *
 * @category Request OJP 1.0
 */
declare class OJPv1_FareRequest extends BaseRequest<{
    fetchResponse: FareRequestResponse;
}> {
    /**
     * The payload object that gets serialized to XML for the request (OJP v1)
     */
    payload: OJP_Types.FareRequestSchema[];
    protected constructor(items: OJP_Types.FareRequestSchema[]);
    private static DefaultRequestParams;
    /**
     * Used by BaseRequest methods (i.e. `initWithRequestMock`, `initWithResponseMock`
     *
     * @hidden
     */
    static Default(): OJPv1_FareRequest;
    private static cleanTripForFareRequest;
    /**
     * Inits FR with OJP 1.0 Trip schema items
     *
     * @param trips array of OJP_Types.OJPv1_TripSchema
     *
     * @group Initialization
     */
    static initWithOJPv1Trips(trips: OJP_Types.OJPv1_TripSchema[]): OJPv1_FareRequest;
    /**
     * Builds the XML request string for the FR
     *
     * @param language The language to use for the request (e.g. "en", "de")
     * @param requestorRef The requestor reference identifier
     * @param xmlConfig XML configuration options for building the request, default {@link XML_BuilderConfigOJPv1} OJP 1.0
     * @returns A formatted XML string representing the Location Information Request
     */
    buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string;
    protected _fetchResponse(sdk: SDK<'1.0'>): Promise<FareRequestResponse>;
}

/**
 * LocationInformationRequest (LIR) class for OJP 1.0
 *
 * Instances are created via static methods below. Direct construction is intentionally disabled.
 *
 * - `initWithLocationName` - use location name, i.e. `Bern`
 * - `initWithPlaceRef` - use place ref or literal coordinates (lat, lng)
 * - `initWithBBOX` - use bounding box to filter locations
 *
 * @category Request OJP 1.0
 */
declare class OJPv1_LocationInformationRequest extends SharedLocationInformationRequest<{
    fetchResponse: OJPv1_LocationInformationRequestResponse;
}> {
    /**
     * The payload object that gets serialized to XML for the request (OJP v1)
     */
    payload: OJP_Types.OJPv1_LocationInformationRequestSchema;
    protected constructor(restrictions: OJP_Types.OJPv1_LIR_RequestParamsSchema);
    private static DefaultRestrictionParams;
    private updateRestrictions;
    /**
     * Used by BaseRequest methods (i.e. `initWithRequestMock`, `initWithResponseMock`
     *
     * @hidden
     */
    static Default(): OJPv1_LocationInformationRequest;
    /**
     * Inits LIR with location name
     *
     * @param name string, location name
     * @param placeTypes `OJP_Types.PlaceTypeEnum` "stop" | "address" | "poi" | "location" | "topographicPlace"
     * @param numberOfResults maximum number of results to return (default: 10)
     *
     * @group Initialization
     */
    static initWithLocationName(name: string, placeTypes?: OJP_Types.PlaceTypeEnum[], numberOfResults?: number): OJPv1_LocationInformationRequest;
    /**
     * Inits LIR with place ref or literal coords
     *
     * @param placeRefOrCoords place reference or coordinates string (e.g. `ch:1:sloid:7000:4:7` or `46.94857,7.43683` (latitude, longitude in WGS84))
     * @param numberOfResults maximum number of results to return (default: 10)
     *
     * @group Initialization
     */
    static initWithPlaceRef(placeRefOrCoords: string, numberOfResults?: number): OJPv1_LocationInformationRequest;
    /**
     * Inits LIR with bounding box
     *
     * @param bboxData bounding box data as string ("minLon,minLat,maxLon,maxLat") or array [minLon, minLat, maxLon, maxLat]
     * @param placeTypes `OJP_Types.PlaceTypeEnum` "stop" | "address" | "poi" | "location" | "topographicPlace"
     * @param numberOfResults maximum number of results to return (default: 10)
     *
     * @group Initialization
     */
    static initWithBBOX(bboxData: string | number[], placeTypes?: OJP_Types.PlaceTypeEnum[], numberOfResults?: number): OJPv1_LocationInformationRequest;
    /**
     * Builds the XML request string for the LIR
     *
     * @param language The language to use for the request (e.g. "en", "de")
     * @param requestorRef The requestor reference identifier
     * @param xmlConfig XML configuration options for building the request, default {@link XML_BuilderConfigOJPv1} OJP 1.0
     * @returns A formatted XML string representing the Location Information Request
     */
    buildRequestXML(language: Language, requestorRef: string, xmlConfig?: XML_Config): string;
    protected _fetchResponse(sdk: SDK<'1.0'>): Promise<OJPv1_LocationInformationRequestResponse>;
}

/**
 * StopEventRequest (SER) class for OJP 1.0
 *
 * Instances are created via static methods below. Direct construction is intentionally disabled.
 *
 * - `initWithPlaceRefAndDate` - use PlaceRef ids + date
 *
 * @category Request OJP 1.0
 */
declare class OJPv1_StopEventRequest extends SharedStopEventRequest<{
    fetchResponse: OJPv1_StopEventRequestResponse;
}> {
    /**
     * The payload object that gets serialized to XML for the request
     *
     */
    payload: OJP_Types.OJPv1_StopEventRequestSchema;
    protected constructor(location: OJP_Types.OJPv1_PlaceContextSchema, params?: OJP_Types.SER_RequestParamsSchema | undefined);
    /**
     * Used by BaseRequest methods (i.e. `initWithRequestMock`, `initWithResponseMock`
     *
     * @hidden
     */
    static Default(): OJPv1_StopEventRequest;
    /**
     * Creates a new StopEventRequest with the given place reference and date
     *
     * @param placeRefS The stop point reference ID (e.g. "8507000" for Bern)
     * @param date The date and time for the stop event request (defaults to current date/time)
     *
     * @group Initialization
     */
    static initWithPlaceRefAndDate(placeRefS: string, date?: Date): OJPv1_StopEventRequest;
    /**
     * Builds the XML request string for the SER
     *
     * @param language The language to use for the request (e.g. "en", "de")
     * @param requestorRef The requestor reference identifier
     * @param xmlConfig XML configuration options for building the request, default {@link XML_BuilderConfigOJPv1} OJP 1.0
     * @returns A formatted XML string representing the Location Information Request
     */
    buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string;
    protected _fetchResponse(sdk: SDK<'1.0'>): Promise<OJPv1_StopEventRequestResponse>;
}

/**
 * TripInfoRequest (TIR) class for OJP 1.0
 *
 * Instances are created via static methods below. Direct construction is intentionally disabled.
 *
 * - `initWithJourneyRef` - use journey reference and date
 *
 * @category Request OJP 1.0
 */
declare class OJPv1_TripInfoRequest extends SharedTripInfoRequest<{
    fetchResponse: OJPv1_TripInfoRequestResponse;
}> {
    /**
     * The payload object that gets serialized to XML for the request
     *
     */
    payload: OJP_Types.TIR_RequestSchema;
    protected constructor(journeyRef: string, operatingDayRef: string, params?: OJP_Types.TIR_RequestParamsSchema);
    /**
     * Used by BaseRequest methods (i.e. `initWithRequestMock`, `initWithResponseMock`
     *
     * @hidden
     */
    static Default(): OJPv1_TripInfoRequest;
    /**
     * Creates a new TripInfoRequest with the given journey reference and date
     *
     * @param journeyRef The journey reference ID (e.g. "ch:1:sjyid:100001:2179-001")
     * @param journeyDate The date of the journey (defaults to current date)
     *
     * @group Initialization
     */
    static initWithJourneyRef(journeyRef: string, journeyDate?: Date): OJPv1_TripInfoRequest;
    enableTrackProjection(): void;
    /**
     * Builds the XML request string for the TIR
     *
     * @param language The language to use for the request (e.g. "en", "de")
     * @param requestorRef The requestor reference identifier
     * @param xmlConfig XML configuration options for building the request, default {@link XML_BuilderConfigOJPv1} OJP 1.0
     * @returns A formatted XML string representing the Location Information Request
     */
    buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string;
    protected _fetchResponse(sdk: SDK<'1.0'>): Promise<OJPv1_TripInfoRequestResponse>;
}

declare class EmptyRequest {
    static init(): void;
}
declare const builders: {
    readonly '1.0': {
        readonly FareRequest: typeof OJPv1_FareRequest;
        readonly LocationInformationRequest: typeof OJPv1_LocationInformationRequest;
        readonly StopEventRequest: typeof OJPv1_StopEventRequest;
        readonly TripInfoRequest: typeof OJPv1_TripInfoRequest;
        readonly TripRefineRequest: typeof EmptyRequest;
        readonly TripRequest: typeof OJPv1_TripRequest;
    };
    readonly '2.0': {
        readonly FareRequest: typeof EmptyRequest;
        readonly LocationInformationRequest: typeof LocationInformationRequest;
        readonly StopEventRequest: typeof StopEventRequest;
        readonly TripInfoRequest: typeof TripInfoRequest;
        readonly TripRefineRequest: typeof TripRefineRequest;
        readonly TripRequest: typeof TripRequest;
    };
};
type Builders = typeof builders;
type RequestKey = keyof Builders['2.0'];
type ClassFor<V extends OJP_VERSION, K extends RequestKey> = Builders[V][K];
/**
 * SDK main class
 *
 * Instances are created via static methods below. Direct construction is intentionally disabled.
 *
 * ### Creation
 * - `OJP.SDK.create( ... )` for OJPv2 instance
 * - `OJP.SDK.v1( ... )` for legacy (OJPv1) instance
 *
 * @category Core
 */
declare class SDK<V extends OJP_VERSION = '2.0'> {
    readonly version: OJP_VERSION;
    requestorRef: string;
    httpConfig: HTTPConfig;
    language: Language;
    private constructor();
    /**
     * Create OJPv2 SDK
     *
     * @param requestorRef string used for sending `<RequestorRef>` to OJP backend, be careful not to use a too much generic value
     * @param httpConfig see {@link HTTPConfig | `HTTPConfig`}
     *
     * @group Initialization
     */
    static create(requestorRef: string, httpConfig: HTTPConfig, language?: Language): SDK<'2.0'>;
    /**
     * Create OJPv1 SDK
     *
     * @param requestorRef string used for sending `RequestorRef` to OJP backend, be careful not to use a too much generic value
     * @param httpConfig see {@link HTTPConfig | `HTTPConfig`}
     *
     * @group Initialization
     */
    static v1(requestorRef: string, httpConfig: HTTPConfig, language?: Language): SDK<'1.0'>;
    /**
     * Used by applications consuming both (OJPv1, OJPv2) SDK where the request class is infered from the main SDK constructor.
     *
     * - `const mySDK: OJP.SDK<'2.0'> | OJP.SDK<'1.0'> = ...`
     * - `mySDK.requests.LocationInformationRequest` will be either `OJP.LocationInformationRequest` or `OJP.OJPv1_LocationInformationRequest` class types
     *
     * @hidden
     */
    get requests(): {
        [K in RequestKey]: ClassFor<V, K>;
    };
}

/**
 * SDK current version
 *
 * @category Core
 */
declare const SDK_VERSION = "0.23.4";
/**
 * Default XML configuration for serialization with 'ojp' as the default namespace
 *
 * @category XML Utils
 */
declare const DefaultXML_Config: XML_Config;
/**
 * XML configuration for OJP version 1.0 with 'siri' as the default namespace
 *
 * @category XML Utils
 */
declare const XML_BuilderConfigOJPv1: XML_Config;
/**
 * XML configuration for OJP version 1.0 with 'ojp' as the default namespace
 *
 * @category XML Utils
 */
declare const XML_ParserConfigOJPv1: XML_Config;

/** @internal */
declare class DateHelpers {
    static formatDate(d: Date): string;
    static formatTimeHHMM(d?: Date): string;
    static computeDelayMinutes(timetableTimeS: Date | string, estimatedTimeS: Date | string | null): number | null;
}

/**
 * Serializes JavaScript objects to XML format with configurable options.
 *
 * The XmlSerializer provides methods to convert JavaScript objects into XML strings
 * using a configurable XML configuration. It includes automatic tag name transformation
 * to handle different naming conventions.
 *
 * @example
 * ```typescript
 * // Basic usage
 * const serializer = new XmlSerializer();
 * const xmlString = serializer.serialize({
 *   name: "John",
 *   age: 30
 * }, "person");
 *
 * // With custom configuration
 * const customConfig = {
 *   indent: '  ',
 *   newline: '\n'
 * };
 * const serializerWithConfig = new XmlSerializer(customConfig);
 * ```
 *
 * @category XML Utils
 */
declare class XmlSerializer {
    xmlConfig: XML_Config;
    constructor(xmlConfig?: XML_Config);
    /**
     * Serializes a JavaScript object to XML format
     *
     * @param obj - The object to serialize
     * @param wrapperNodeName - The name of the root XML element
     * @returns XML string representation of the object
     *
     * @example
     * ```typescript
     * const serializer = new XmlSerializer();
     * const xml = serializer.serialize({
     *   firstName: "John",
     *   lastName: "Doe"
     * }, "person");
     * // Returns: '<person><firstName>John</firstName><lastName>Doe</lastName></person>'
     * ```
     *
     */
    serialize(obj: Record<string, any>, wrapperNodeName: string): string;
    /**
     * Transforms a tag name to camelCase format for XML serialization
     *
     * This method handles special cases like OJP prefixes and preserves uppercase-only tags.
     * It converts hyphenated or underscored names to camelCase while ensuring the first
     * character is lowercase.
     *
     * @param tagName - The original tag name to transform
     * @returns Transformed tag name in camelCase format
     *
     * @example
     * ```typescript
     * // Transform various tag name formats
     * XmlSerializer.transformTagName('OJP_Feature'); // Returns: 'OJP_Feature'
     * XmlSerializer.transformTagName('FIRST_NAME');  // Returns: 'FIRST_NAME'
     * XmlSerializer.transformTagName('first-name');  // Returns: 'firstName'
     * XmlSerializer.transformTagName('user_name');   // Returns: 'userName'
     * ```
     */
    static transformTagName(tagName: string): string;
}

export { type AnySDK, DateHelpers, DefaultXML_Config, type FareRequestResponse, GeoPosition, type HTTPConfig, type Language, LocationInformationRequest, type LocationInformationRequestResponse, type OJP_VERSION, OJPv1_FareRequest, OJPv1_LocationInformationRequest, type OJPv1_LocationInformationRequestResponse, OJPv1_StopEventRequest, type OJPv1_StopEventRequestResponse, OJPv1_TripInfoRequest, type OJPv1_TripInfoRequestResponse, OJPv1_TripRequest, type OJPv1_TripRequestResponse, Place, PlaceResult, type RequestInfo, SDK, SDK_VERSION, StopEventRequest, type StopEventRequestResponse, StopEventResult, Trip, TripInfoRequest, type TripInfoRequestResponse, TripRefineRequest, type TripRefineRequestResponse, TripRequest, type TripRequestResponse, XML_BuilderConfigOJPv1, XML_ParserConfigOJPv1, XmlSerializer };
