import { Observable } from 'rxjs';
import { LoginCredentials, LoginResponse, UserEntity } from '../models';
import { BaseService } from './base.service';
import * as i0 from "@angular/core";
export declare class UserService extends BaseService {
    private static readonly keyStoreCredentials;
    /**
     * Implements resource /user/login POST
     * Logs the user in using cookie authentication method
     * @param credentials username and password object style of the user
     */
    login(credentials: LoginCredentials): Observable<LoginResponse>;
    /**
     * Implements /user/logout POST
     * Logs the user out.
     * Will throw and error if the user is not logged in
     */
    logout(): Observable<null>;
    /**
     * Implement resource /user/{user} GET
     * @param uid the user id
     */
    get(uid: number): Observable<UserEntity>;
    /**
     * Implement resource /entity/user: POST
     * @param user user object to create
     */
    create(user: UserEntity): Observable<UserEntity>;
    /**
     * Implement resource /user/{user}: PATCH
     * @param uid user id to update
     * @param user user object with required values
     */
    update(uid: number, user: UserEntity): Observable<UserEntity>;
    /**
     * Implement resource /user/{user}: DELETE
     * @param uid user id to delete
     */
    delete(uid: number): Observable<null>;
    /**
     * Implement resource /user/register: POST
     * @param user user info object to register
     */
    register(user: {
        name: string[];
        pass: string[];
        mail: string[];
        [key: string]: any[];
    }): Observable<UserEntity>;
    /**
     * try to login user with the saved credentials in local storage if they exist
     * @returns Observable<LoginResponse>
     */
    attemptToLoginWithSavedCredentials(): Observable<LoginResponse>;
    /**
     * Delete credentials from localstorage
     */
    deleteStoredCredentials(): void;
    /**
     * Get the current user credentials from localstorage
     */
    getStoredCredentials(): LoginCredentials | null;
    /**
     * Save credentials in localstorage
     * @param credentials credentials to save in localstorage
     */
    protected saveCredentialsInStorage(credentials: LoginCredentials): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<UserService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<UserService>;
}
