import { Store } from '@ngrx/store';
import { Profile, User, UserService as UserServiceClass } from 'ngx-login-client';
import { ConnectableObservable, Observable } from 'rxjs';
import { AppState } from './../states/app.state';
import { Mapper, MapTree, modelService, modelUI } from './common.model';
export interface UserService extends modelService {
    attributes?: Profile;
    links?: {
        self?: string;
        related?: string;
    };
}
export interface UserUI extends modelUI {
    avatar: string;
    username: string;
    currentUser: boolean;
}
export declare class UserMapper implements Mapper<UserService, UserUI> {
    serviceToUiMapTree: MapTree;
    uiToServiceMapTree: MapTree;
    toUIModel(arg: UserService): UserUI;
    toServiceModel(arg: UserUI): UserService;
}
export declare class UserQuery {
    private store;
    private userService;
    constructor(store: Store<AppState>, userService: UserServiceClass);
    private plannerSelector;
    private userSelector;
    private userSource;
    private collaboratorIdsSelector;
    private collaboratorSelector;
    private collaboratorSource;
    getUserObservableById(id: string): Observable<UserUI>;
    getUserObservablesByIds(ids?: string[]): Observable<UserUI[]>;
    getCollaborators(): Observable<UserUI[]>;
    /**
     * getCollaboratorAndLoggedInUserIds this function returns an
     * array of all the collaborators IDs and loggedIn user IDs
     */
    readonly getCollaboratorIds: Observable<string[]>;
    /**
     * This function returns the loggedInUser subject
     */
    readonly getLoggedInUser: ConnectableObservable<User>;
}
