import { Observable } from 'rxjs';
import * as i0 from "@angular/core";
interface StateComponent<T> {
    state: T;
}
export declare class StateTService<T, H = T> {
    private componentStates;
    private stateSubjects;
    constructor();
    /**
     * setState(componentId : string, state : T) : void
     * @param componentId
     * @param state
     */
    setState(componentId: string, state: T): void;
    /**
     * getStateOtherType(componentId: string, typeFilter?: new (...args: []) => H)
     * @param componentId
     * @param typeFilter
     * @returns
     */
    getStateOtherType(componentId: string, typeFilter?: new (...args: []) => H): H | undefined;
    /**
     * getState(componentId: string)
     * @param componentId
     * @returns
     */
    getState(componentId: string): T | undefined;
    /**
     * getStateObservable(componentId: string)
     * @param componentId
     * @returns
     */
    getStateObservable(componentId: string): Observable<T> | undefined;
    /**
     * getAllStates()
     * @returns
     */
    getAllStates(): Map<string, StateComponent<T>>;
    /**
     * delete all state
     */
    clearAllStates(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<StateTService<any, any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<StateTService<any, any>>;
}
export {};
