import { Store } from '@ngrx/store';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/take';
import { SessionUserBuilder } from './builders/session-user-builder';
import { SessionUser } from '../models/session-user.model';
import { SessionPublisher } from '../../pubsub/publishers/session.publisher';
import { UserWarehouse } from '../../warehouse/users/user.warehouse';
import { ApplicationDataState } from '../../app-data.state';
export declare class UserSession {
    private userWarehouse;
    private sessionPublisher;
    private sessionUserBuilder;
    private store;
    private userId;
    private watchSubscription;
    constructor(userWarehouse: UserWarehouse, sessionPublisher: SessionPublisher, sessionUserBuilder: SessionUserBuilder, store: Store<ApplicationDataState>);
    refresh(sessionUser: SessionUser): void;
    state(): SessionUser;
    watch(): Observable<SessionUser>;
    private monitorAuthenticationState();
    private watchForUser(userId);
    private publishSessionState(user);
}
