import type { BootstrapConfig, OCPP2_0_1 } from '@citrineos/base';
import { CrudRepository, OCPPVersion } from '@citrineos/base';
import { Sequelize } from 'sequelize-typescript';
import type { ILogObj } from 'tslog';
import { Logger } from 'tslog';
import { type ILocationRepository } from '../../../index.js';
import { ChargingStation, Connector, Location, SequelizeRepository, StatusNotification } from '../index.js';
import { Evse, LatestStatusNotification } from '../model/index.js';
export declare class SequelizeLocationRepository extends SequelizeRepository<Location> implements ILocationRepository {
    chargingStation: CrudRepository<ChargingStation>;
    statusNotification: CrudRepository<StatusNotification>;
    latestStatusNotification: CrudRepository<LatestStatusNotification>;
    connector: CrudRepository<Connector>;
    constructor(config: BootstrapConfig, logger?: Logger<ILogObj>, sequelizeInstance?: Sequelize, chargingStation?: CrudRepository<ChargingStation>, statusNotification?: CrudRepository<StatusNotification>, latestStatusNotification?: CrudRepository<LatestStatusNotification>, connector?: CrudRepository<Connector>);
    readLocationById(tenantId: number, id: number): Promise<Location | undefined>;
    readChargingStationByStationId(tenantId: number, stationId: string): Promise<ChargingStation | undefined>;
    setChargingStationIsOnlineAndOCPPVersion(tenantId: number, stationId: string, isOnline: boolean, ocppVersion: OCPPVersion | null): Promise<ChargingStation | undefined>;
    doesChargingStationExistByStationId(tenantId: number, stationId: string): Promise<boolean>;
    addStatusNotificationToChargingStation(tenantId: number, stationId: string, statusNotification: StatusNotification): Promise<void>;
    updateLatestStatusNotification(tenantId: number, stationId: string, statusNotification: StatusNotification): Promise<void>;
    getChargingStationsByIds(tenantId: number, stationIds: string[]): Promise<ChargingStation[]>;
    createOrUpdateLocationWithChargingStations(tenantId: number, location: Partial<Location>): Promise<Location>;
    createOrUpdateChargingStation(tenantId: number, chargingStation: ChargingStation): Promise<ChargingStation>;
    createOrUpdateConnector(tenantId: number, connector: Connector): Promise<Connector | undefined>;
    updateAllConnectorsByQuery(tenantId: number, value: Partial<Connector>, query: object): Promise<Connector[]>;
    updateChargingStationTimestamp(tenantId: number, stationId: string, timestamp: string): Promise<void>;
    readConnectorByStationIdAndOcpp16ConnectorId(tenantId: number, stationId: string, ocpp16ConnectorId: number): Promise<Connector | undefined>;
    readEvseByStationIdAndOcpp201EvseId(tenantId: number, stationId: string, ocpp201EvseId: number): Promise<Evse | undefined>;
    readConnectorByStationIdAndOcpp201EvseType(tenantId: number, stationId: string, ocpp201EvseType: OCPP2_0_1.EVSEType): Promise<Connector | undefined>;
}
