import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
export declare const protobufPackage = "minotor.timetable";
export declare enum TransferType {
    RECOMMENDED_TRANSFER_POINT = 0,
    TIMED_TRANSFER = 1,
    REQUIRES_MINIMAL_TIME = 2,
    IN_SEAT_TRANSFER = 3,
    UNRECOGNIZED = -1
}
export declare function transferTypeFromJSON(object: any): TransferType;
export declare function transferTypeToJSON(object: TransferType): string;
export declare enum RouteType {
    TRAM = 0,
    SUBWAY = 1,
    RAIL = 2,
    BUS = 3,
    FERRY = 4,
    CABLE_TRAM = 5,
    AERIAL_LIFT = 6,
    FUNICULAR = 7,
    TROLLEYBUS = 8,
    MONORAIL = 9,
    UNRECOGNIZED = -1
}
export declare function routeTypeFromJSON(object: any): RouteType;
export declare function routeTypeToJSON(object: RouteType): string;
export interface Route {
    /**
     * Arrivals and departures encoded as a 32 bit uint array.
     * Format: [arrival1, departure1, arrival2, departure2, etc.]
     */
    stopTimes: Uint8Array;
    /**
     * PickUp and DropOff types represented as an 8 bit uint array.
     * Values:
     *   0: REGULAR
     *   1: NOT_AVAILABLE
     *   2: MUST_PHONE_AGENCY
     *   3: MUST_COORDINATE_WITH_DRIVER
     * Format: [pickupTypeStop1, dropOffTypeStop1, pickupTypeStop2, dropOffTypeStop2, etc.]
     */
    pickUpDropOffTypes: Uint8Array;
    /**
     * Stops encoded as a 32 bit uint array.
     * Format: [stop1, stop2, stop3, etc.]
     */
    stops: Uint8Array;
    serviceRouteId: string;
}
export interface RoutesAdjacency {
    routes: {
        [key: string]: Route;
    };
}
export interface RoutesAdjacency_RoutesEntry {
    key: string;
    value: Route | undefined;
}
export interface Transfer {
    destination: number;
    type: TransferType;
    minTransferTime?: number | undefined;
}
export interface StopsAdjacency {
    stops: {
        [key: string]: StopsAdjacency_StopAdjacency;
    };
}
export interface StopsAdjacency_StopAdjacency {
    transfers: Transfer[];
    routes: string[];
}
export interface StopsAdjacency_StopsEntry {
    key: string;
    value: StopsAdjacency_StopAdjacency | undefined;
}
export interface ServiceRoute {
    type: RouteType;
    name: string;
}
export interface ServiceRoutesMap {
    routes: {
        [key: string]: ServiceRoute;
    };
}
export interface ServiceRoutesMap_RoutesEntry {
    key: string;
    value: ServiceRoute | undefined;
}
export interface Timetable {
    version: string;
    stopsAdjacency: StopsAdjacency | undefined;
    routesAdjacency: RoutesAdjacency | undefined;
    routes: ServiceRoutesMap | undefined;
}
export declare const Route: MessageFns<Route>;
export declare const RoutesAdjacency: MessageFns<RoutesAdjacency>;
export declare const RoutesAdjacency_RoutesEntry: MessageFns<RoutesAdjacency_RoutesEntry>;
export declare const Transfer: MessageFns<Transfer>;
export declare const StopsAdjacency: MessageFns<StopsAdjacency>;
export declare const StopsAdjacency_StopAdjacency: MessageFns<StopsAdjacency_StopAdjacency>;
export declare const StopsAdjacency_StopsEntry: MessageFns<StopsAdjacency_StopsEntry>;
export declare const ServiceRoute: MessageFns<ServiceRoute>;
export declare const ServiceRoutesMap: MessageFns<ServiceRoutesMap>;
export declare const ServiceRoutesMap_RoutesEntry: MessageFns<ServiceRoutesMap_RoutesEntry>;
export declare const Timetable: MessageFns<Timetable>;
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
    [K in keyof T]?: DeepPartial<T[K]>;
} : Partial<T>;
type KeysOfUnion<T> = T extends T ? keyof T : never;
export type Exact<P, I extends P> = P extends Builtin ? P : P & {
    [K in keyof P]: Exact<P[K], I[K]>;
} & {
    [K in Exclude<keyof I, KeysOfUnion<P>>]: never;
};
export interface MessageFns<T> {
    encode(message: T, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): T;
    fromJSON(object: any): T;
    toJSON(message: T): unknown;
    create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
    fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
}
export {};
