import { CrudRepository, OCPP2_0_1, SystemConfig } from '@citrineos/base';
import { Transaction } from 'sequelize';
import { type AuthorizationQuerystring, type AuthorizationRestrictions, type IAuthorizationRepository } from '../../../interfaces';
import { AdditionalInfo, Authorization, IdToken, IdTokenInfo } from '../model/Authorization';
import { SequelizeRepository } from './Base';
import { Sequelize } from 'sequelize-typescript';
import { ILogObj, Logger } from 'tslog';
import { IdTokenAdditionalInfo } from '../model/Authorization/IdTokenAdditionalInfo';
export declare class SequelizeAuthorizationRepository extends SequelizeRepository<Authorization> implements IAuthorizationRepository {
    idToken: CrudRepository<IdToken>;
    idTokenInfo: CrudRepository<IdTokenInfo>;
    additionalInfo: CrudRepository<AdditionalInfo>;
    idTokenAdditionalInfo: CrudRepository<IdTokenAdditionalInfo>;
    constructor(config: SystemConfig, logger?: Logger<ILogObj>, sequelizeInstance?: Sequelize, idToken?: CrudRepository<IdToken>, idTokenInfo?: CrudRepository<IdTokenInfo>, additionalInfo?: CrudRepository<AdditionalInfo>, idTokenAdditionalInfo?: CrudRepository<IdTokenAdditionalInfo>);
    createOrUpdateByQuerystring(value: OCPP2_0_1.AuthorizationData, query: AuthorizationQuerystring, transaction?: Transaction): Promise<Authorization | undefined>;
    updateRestrictionsByQuerystring(value: AuthorizationRestrictions, query: AuthorizationQuerystring): Promise<Authorization[]>;
    readAllByQuerystring(query: AuthorizationQuerystring): Promise<Authorization[]>;
    readOnlyOneByQuerystring(query: AuthorizationQuerystring): Promise<Authorization | undefined>;
    existByQuerystring(query: AuthorizationQuerystring): Promise<number>;
    deleteAllByQuerystring(query: AuthorizationQuerystring): Promise<Authorization[]>;
    /**
     * Private Methods
     */
    private _updateIdToken;
    private _constructQuery;
    private _createInclude;
}
