import { SequelizeRepository } from './Base';
import { EventData, VariableMonitoring, VariableMonitoringStatus } from '../model/VariableMonitoring';
import { type IVariableMonitoringRepository } from '../../../interfaces';
import { CallAction, CrudRepository, OCPP2_0_1, SystemConfig } from '@citrineos/base';
import { Sequelize } from 'sequelize-typescript';
import { ILogObj, Logger } from 'tslog';
export declare class SequelizeVariableMonitoringRepository extends SequelizeRepository<VariableMonitoring> implements IVariableMonitoringRepository {
    eventData: CrudRepository<EventData>;
    variableMonitoringStatus: CrudRepository<VariableMonitoringStatus>;
    constructor(config: SystemConfig, logger?: Logger<ILogObj>, sequelizeInstance?: Sequelize, eventData?: CrudRepository<EventData>, variableMonitoringStatus?: CrudRepository<VariableMonitoringStatus>);
    createOrUpdateByMonitoringDataTypeAndStationId(value: OCPP2_0_1.MonitoringDataType, componentId: string, variableId: string, stationId: string): Promise<VariableMonitoring[]>;
    createVariableMonitoringStatus(status: OCPP2_0_1.SetMonitoringStatusEnumType, action: CallAction, variableMonitoringId: number): Promise<void>;
    createOrUpdateBySetMonitoringDataTypeAndStationId(value: OCPP2_0_1.SetMonitoringDataType, componentId: string, variableId: string, stationId: string): Promise<VariableMonitoring>;
    rejectAllVariableMonitoringsByStationId(action: CallAction, stationId: string): Promise<void>;
    rejectVariableMonitoringByIdAndStationId(action: CallAction, id: number, stationId: string): Promise<void>;
    updateResultByStationId(result: OCPP2_0_1.SetMonitoringResultType, stationId: string): Promise<VariableMonitoring>;
    createEventDatumByComponentIdAndVariableIdAndStationId(event: OCPP2_0_1.EventDataType, componentId: string, variableId: string, stationId: string): Promise<EventData>;
}
