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