import { KeysetPaginationResponse, MerchantConfigurationCSVField, Vehicle, VehicleChange } from '@bringg/types';
import { StorableEventUnsubscribe } from '../../Data/storable-types';
import { DataOptions, GroupValue } from '../../data-entity';
import Session from '../../Services/Identity/Session';
import { PagedVehiclesFilters, PagedVehiclesResponse, VehicleGroup, VehiclesCsvImportResponse } from '../Vehicle.consts';
type VehicleDTO = Vehicle & {
    default_parking_spot_external_id?: string;
};
export default class VehiclesApi {
    private readonly vehiclesStore;
    private readonly vehiclesService;
    private readonly storableDataService;
    private readonly storableRealtimeSubscriptions;
    constructor(session: Session);
    load(id: number, options?: DataOptions): Promise<Vehicle>;
    loadAll(options?: DataOptions): Promise<Vehicle[]>;
    loadAllByTeam(teamId: number, options?: DataOptions): Promise<Vehicle[]>;
    loadMany(ids: number[], options?: Pick<DataOptions, 'chunkSize' | 'signal' | 'useCache'>): Promise<Vehicle[]>;
    loadAllByTeamsPaged(teamIds: number[], options?: Pick<Partial<DataOptions>, 'cursor' | 'signal' | 'useCache' | 'chunkSize'>): Promise<Omit<KeysetPaginationResponse<'vehicles', Vehicle[]>, 'previous_page_cursor'>>;
    delete(id: number): Promise<Vehicle>;
    update(id: number, vehicleData: Partial<VehicleDTO>): Promise<Vehicle>;
    batchUpdate(vehicles: Partial<VehicleDTO[]>): Promise<Vehicle[]>;
    create(vehicleData: Partial<VehicleDTO>): Promise<Vehicle>;
    updateStoreOnEvents(): void;
    onUpdate(callback: (vehicle: Vehicle) => StorableEventUnsubscribe): StorableEventUnsubscribe;
    onDelete(callback: (vehicle: Vehicle) => StorableEventUnsubscribe): StorableEventUnsubscribe;
    onUnassigned(callback: (vehicle: Vehicle) => StorableEventUnsubscribe): () => void;
    get(id: number): Vehicle;
    getAll(): Vehicle[];
    getGroup(group: VehicleGroup, groupValue: GroupValue): Vehicle[];
    deleteMany(ids: number[]): Promise<Vehicle[]>;
    importVehiclesCsv(file: Blob): Promise<VehiclesCsvImportResponse>;
    getCsvUploadFields(): Promise<MerchantConfigurationCSVField[]>;
    getAssignmentHistory(id: number, options?: {
        start_date?: string;
        only_assignments?: boolean;
        order_by?: 'id' | 'start_time';
        order_direction?: 'asc' | 'desc';
    }): Promise<VehicleChange[]>;
    loadPagedVehicles(cursor?: number, limit?: number, filters?: PagedVehiclesFilters, page_action?: 'previous' | 'next'): Promise<PagedVehiclesResponse>;
}
export {};
