import { NotPublicVehiclesRedisRepository } from "../cache/NotPublicVehiclesRedisRepository";
import { ProcessedPositionRepository } from "./ProcessedPositionRepository";
import { VehicleTypeRepository } from "../VehicleTypeRepository";
import { VehicleDescriptorRepository } from "../VehicleDescriptorRepository";
import { TripWithLastPositionModel } from "../../../../schema-definitions/vehicle-positions/models/views";
import { IDatabaseConnector } from "@golemio/core/dist/helpers/data-access/postgres/IDatabaseConnector";
import { IGeoJSONFeature } from "@golemio/core/dist/output-gateway/Geo";
import { ModelStatic } from "@golemio/core/dist/shared/sequelize";
import { ITripGetAllOutput } from "../interfaces/ITripWithPositionRepository";
import { AbstractBasicRepository } from "@golemio/core/dist/helpers/data-access/postgres/repositories/AbstractBasicRepository";
import { ILogger } from "@golemio/core/dist/helpers";
export declare class TripWithLastPositionRepository extends AbstractBasicRepository {
    private notPublicVehiclesRepository;
    private processedPositionRepository;
    private vehicleTypeRepository;
    private vehicleDescriptorRepository;
    schema: string;
    tableName: string;
    sequelizeModel: ModelStatic<TripWithLastPositionModel>;
    constructor(connector: IDatabaseConnector, logger: ILogger, notPublicVehiclesRepository: NotPublicVehiclesRedisRepository, processedPositionRepository: ProcessedPositionRepository, vehicleTypeRepository: VehicleTypeRepository, vehicleDescriptorRepository: VehicleDescriptorRepository);
    /** Retrieves all vehicle trips
     * @param {object} options Options object with params
     * @param {number} [options.limit] Limit
     * @param {number} [options.offset] Offset
     * @param {string} [options.routeId] Filter trips by specific route id
     * @param {string} [options.routeShortName] Filter trips by specific route short name
     * @param {string} [options.tripId] Filter trips by specific trip id
     * @param {boolean} [options.includeNotTracking] Should include not tracking vehicle positions (those off a trip)
     * @returns Array of the retrieved records
     */
    GetAll: (options: {
        cisTripNumber?: number;
        routeId?: string;
        routeShortName?: string;
        tripId?: string;
        includeNotTracking?: boolean;
        includeNotPublic?: boolean;
        limit?: number;
        offset?: number;
        updatedSince?: Date | null;
        preferredTimezone: string;
    }) => Promise<ITripGetAllOutput>;
    GetOne(): never;
    /** Retrieves specific vehicle trip
     * @param {string} id Id of the trip
     * @param {object} [options] Options object with params
     * @param {string} [options.includeNotTracking] Returns last known trip even if it is not tracked at time
     * @param {boolean} [options.includePositions] Should include all vehicle positions
     * @returns Object of the retrieved record or null
     */
    GetOneByGTFSTripId: (id: string, options: {
        includeNotTracking?: boolean;
        includePositions?: boolean;
        includeNotPublic?: boolean;
        preferredTimezone: string;
    }) => Promise<IGeoJSONFeature | null>;
    private composeIncludes;
    private determinePossibleStatePositions;
    private getNotPublicWhereConditions;
}
