import { OnDestroy } from '@angular/core';
import { Router } from '@angular/router';
import { TranslateService } from '@ngx-translate/core';
import { AbstractResourceService, ResourceProvider, UserResource } from '../../resources/public-api';
import { ConfigurationService } from '../../configuration/configuration.service';
import { UserService } from '../../user/services/user.service';
import { SnackBarService } from '../../snack-bar/services/snack-bar.service';
import { FilterRepository } from '../../filter/filter.repository';
import { LoggerService } from '../../logger/services/logger.service';
import { Observable } from 'rxjs';
import { User } from '../../user/models/user';
import * as i0 from "@angular/core";
export declare class ImpersonationService extends AbstractResourceService implements OnDestroy {
    protected provider: ResourceProvider;
    protected _router: Router;
    protected _configService: ConfigurationService;
    protected _userService: UserService;
    protected _snackbar: SnackBarService;
    protected _filter: FilterRepository;
    protected _log: LoggerService;
    protected _translate: TranslateService;
    private _impersonating$;
    private _lastUser;
    private _sub;
    constructor(provider: ResourceProvider, _router: Router, _configService: ConfigurationService, _userService: UserService, _snackbar: SnackBarService, _filter: FilterRepository, _log: LoggerService, _translate: TranslateService);
    get impersonating$(): Observable<boolean>;
    impersonateUser(userId: string): void;
    impersonateByConfig(configId: string): void;
    cease(): void;
    protected _resolveSuccess(user: UserResource): void;
    protected _resolveError(response: any): void;
    protected _triggerReload(): void;
    protected _resolveUserChange(user: User): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ImpersonationService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ImpersonationService>;
}
