import { StateContext } from '@ngxs/store';
import { AuthenticationActions } from './authentication.actions';
import { Observable } from 'rxjs';
import { AuthService } from '../../../modules/rbk-utils/auth/auth.service';
import { LoginResponse } from '../../../modules/rbk-utils/auth/models';
import { AuthenticationService } from '../../../modules/smz-access/services/authentication.service';
import { JwtResponse } from '../../../modules/smz-access/models/jwt-response';
import * as i0 from "@angular/core";
export interface AuthenticationStateModel<T> {
    userdata: T;
    refreshToken: string | null;
    accessToken: string | null;
}
export declare const getAuthenticationInitialState: () => AuthenticationStateModel<any>;
export declare class AuthenticationState {
    private authService;
    private authenticationService;
    constructor(authService: AuthService, authenticationService: AuthenticationService);
    localLogin(ctx: StateContext<AuthenticationStateModel<any>>, action: AuthenticationActions.LocalLogin): void;
    localLoginFailure(ctx: StateContext<AuthenticationStateModel<any>>, action: AuthenticationActions.LocalLoginFailure): void;
    remoteLogin(ctx: StateContext<AuthenticationStateModel<any>>, action: AuthenticationActions.RemoteLogin): Observable<LoginResponse>;
    remoteLoginSuccess(ctx: StateContext<AuthenticationStateModel<any>>, action: AuthenticationActions.RemoteLoginSuccess | AuthenticationActions.RefreshTokenSuccess): void;
    localLoginSuccess(ctx: StateContext<AuthenticationStateModel<any>>, action: AuthenticationActions.LocalLoginSuccess): void;
    logout(ctx: StateContext<AuthenticationStateModel<any>>): void;
    onSwitchTenant(ctx: StateContext<AuthenticationStateModel<any>>, action: AuthenticationActions.SwitchTenant): Observable<JwtResponse>;
    static ɵfac: i0.ɵɵFactoryDeclaration<AuthenticationState, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AuthenticationState>;
}
