import { Observable } from 'rxjs';
import { IAuthUserEntity } from '../definitions';
import { IJwtPayload } from '../entities';
export declare abstract class AuthRepository<T = string, TRequest = Record<string, any>> {
    abstract authenticate(username: string, request: TRequest, impersonated: boolean): Observable<IAuthUserEntity<T> | undefined> | Promise<IAuthUserEntity<T> | undefined>;
    abstract getAuthUserByAccessToken(accessToken: string, jwtPayload: IJwtPayload): Observable<IAuthUserEntity<T> | undefined> | Promise<IAuthUserEntity<T> | undefined>;
    abstract getAuthUserByRefreshToken(refreshToken: string, jwtPayload: IJwtPayload): Observable<IAuthUserEntity<T> | undefined> | Promise<IAuthUserEntity<T> | undefined>;
    abstract getAuthUserByApiKey(apiKey: string): Observable<IAuthUserEntity<T> | undefined> | Promise<IAuthUserEntity<T> | undefined>;
}
