import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
export declare const protobufPackage = "minotor.timetable.v1";
export declare enum TransferType {
    TRANSFER_TYPE_UNSPECIFIED = 0,
    TRANSFER_TYPE_RECOMMENDED_TRANSFER_POINT = 1,
    TRANSFER_TYPE_TIMED_TRANSFER = 2,
    TRANSFER_TYPE_REQUIRES_MINIMAL_TIME = 3,
    TRANSFER_TYPE_IN_SEAT_TRANSFER = 4,
    UNRECOGNIZED = -1
}
export declare function transferTypeFromJSON(object: any): TransferType;
export declare function transferTypeToJSON(object: TransferType): string;
export declare enum RouteType {
    ROUTE_TYPE_UNSPECIFIED = 0,
    ROUTE_TYPE_TRAM = 1,
    ROUTE_TYPE_SUBWAY = 2,
    ROUTE_TYPE_RAIL = 3,
    ROUTE_TYPE_BUS = 4,
    ROUTE_TYPE_FERRY = 5,
    ROUTE_TYPE_CABLE_TRAM = 6,
    ROUTE_TYPE_AERIAL_LIFT = 7,
    ROUTE_TYPE_FUNICULAR = 8,
    ROUTE_TYPE_TROLLEYBUS = 9,
    ROUTE_TYPE_MONORAIL = 10,
    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 16 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: [drop_off_1][pickup_1][drop_off_0][pickup_0]
     * 2 bits per value
     */
    pickupDropOffTypes: Uint8Array;
    /**
     * Stops encoded as a 32 bit uint array.
     * Format: [stop1, stop2, stop3, etc.]
     */
    stops: Uint8Array;
    serviceRouteId: number;
}
export interface Transfer {
    destination: number;
    type: TransferType;
    minTransferTime?: number | undefined;
}
export interface TripStop {
    stopIndex: number;
    routeId: number;
    tripIndex: number;
}
export interface TripTransferEntry {
    origin: TripStop | undefined;
    destinations: TripStop[];
}
export interface StopAdjacency {
    routes: number[];
    transfers: Transfer[];
}
export interface ServiceRoute {
    type: RouteType;
    name: string;
    routes: number[];
}
export interface Timetable {
    stopsAdjacency: StopAdjacency[];
    routesAdjacency: Route[];
    serviceRoutes: ServiceRoute[];
    tripContinuations: TripTransferEntry[];
    guaranteedTripTransfers: TripTransferEntry[];
}
export declare const Route: MessageFns<Route>;
export declare const Transfer: MessageFns<Transfer>;
export declare const TripStop: MessageFns<TripStop>;
export declare const TripTransferEntry: MessageFns<TripTransferEntry>;
export declare const StopAdjacency: MessageFns<StopAdjacency>;
export declare const ServiceRoute: MessageFns<ServiceRoute>;
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 {};
