import { CrudRepository, OCPP2_0_1, SystemConfig } from '@citrineos/base';
import { SequelizeRepository } from './Base';
import { type IDeviceModelRepository, type VariableAttributeQuerystring } from '../../../interfaces';
import { Component, Evse, Variable, VariableAttribute, VariableCharacteristics, VariableStatus } from '../model/DeviceModel';
import { ComponentVariable } from '../model/DeviceModel/ComponentVariable';
import { Sequelize } from 'sequelize-typescript';
import { ILogObj, Logger } from 'tslog';
export declare class SequelizeDeviceModelRepository extends SequelizeRepository<VariableAttribute> implements IDeviceModelRepository {
    variable: CrudRepository<Variable>;
    component: CrudRepository<Component>;
    evse: CrudRepository<Evse>;
    variableCharacteristics: CrudRepository<VariableCharacteristics>;
    componentVariable: CrudRepository<ComponentVariable>;
    variableStatus: CrudRepository<VariableStatus>;
    constructor(config: SystemConfig, logger?: Logger<ILogObj>, sequelizeInstance?: Sequelize, variable?: CrudRepository<Variable>, component?: CrudRepository<Component>, evse?: CrudRepository<Evse>, componentVariable?: CrudRepository<ComponentVariable>, variableCharacteristics?: CrudRepository<VariableCharacteristics>, variableStatus?: CrudRepository<VariableStatus>);
    createOrUpdateDeviceModelByStationId(value: OCPP2_0_1.ReportDataType, stationId: string, isoTimestamp: string): Promise<VariableAttribute[]>;
    findOrCreateEvseAndComponentAndVariable(componentType: OCPP2_0_1.ComponentType, variableType: OCPP2_0_1.VariableType, stationId?: string): Promise<[Component, Variable]>;
    findOrCreateEvseAndComponent(componentType: OCPP2_0_1.ComponentType, stationId?: string): Promise<Component>;
    createOrUpdateByGetVariablesResultAndStationId(getVariablesResult: OCPP2_0_1.GetVariableResultType[], stationId: string, isoTimestamp: string): Promise<VariableAttribute[]>;
    createOrUpdateBySetVariablesDataAndStationId(setVariablesData: OCPP2_0_1.SetVariableDataType[], stationId: string, isoTimestamp: string): Promise<VariableAttribute[]>;
    updateResultByStationId(result: OCPP2_0_1.SetVariableResultType, stationId: string, isoTimestamp: string): Promise<VariableAttribute | undefined>;
    readAllSetVariableByStationId(stationId: string): Promise<OCPP2_0_1.SetVariableDataType[]>;
    readAllByQuerystring(query: VariableAttributeQuerystring): Promise<VariableAttribute[]>;
    existByQuerystring(query: VariableAttributeQuerystring): Promise<number>;
    deleteAllByQuerystring(query: VariableAttributeQuerystring): Promise<VariableAttribute[]>;
    findComponentAndVariable(componentType: OCPP2_0_1.ComponentType, variableType: OCPP2_0_1.VariableType): Promise<[Component | undefined, Variable | undefined]>;
    findEvseByIdAndConnectorId(id: number, connectorId: number | null): Promise<Evse | undefined>;
    findVariableCharacteristicsByVariableNameAndVariableInstance(variableName: string, variableInstance: string | null): Promise<VariableCharacteristics | undefined>;
    /**
     * Private Methods
     */
    private createSetVariableDataType;
    private constructQuery;
}
