import { Signal } from '@angular/core';
import { type Observable } from 'rxjs';
import { DeepPartial, EuiService, EuiServiceStatus, UserState } from '@eui/base';
import { StoreService } from '../store';
import * as i0 from "@angular/core";
export declare class UserService<T extends UserState = UserState> extends EuiService<T | UserState> {
    protected store: StoreService;
    private static readonly DEFAULT_STATE;
    /**
     * a single signal holding the state - initial state is null
     */
    private state;
    /**
     * a BehaviorSubject holding the state - initial state is null
     * This is the main source of truth for the state
     */
    private stateSubject;
    constructor(store: StoreService);
    init(state: T): Observable<EuiServiceStatus>;
    getState(): Observable<T>;
    /**
     * @deprecated this will be removed in a future version
     * @param mapFn
     */
    getState<K = T>(mapFn?: (state: T) => K): Observable<K>;
    getState<a extends keyof DeepPartial<T>>(key?: a): Observable<DeepPartial<a>>;
    /**
     * This method is used to update the state of the service with a new state.
     *
     * @param state
     */
    updateState(state: DeepPartial<T>): void;
    /**
     * @deprecated it will be removed in next version. Use updateState(partialState: DeepPartial<T>) instead
     * @param slice
     * @param reducer
     */
    updateState(slice: DeepPartial<T>, reducer: (state: T, action: DeepPartial<T>) => T): void;
    /**
     * This method is used to get the signal of the service.
     */
    getSignal(): Signal<T>;
    static ɵfac: i0.ɵɵFactoryDeclaration<UserService<any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<UserService<any>>;
}
//# sourceMappingURL=user.service.d.ts.map