/**
 * Store for facade objects
 * This is used to cache channels and others so that they don't need to be recreated all the time.
 * This is just a wrapper around a "Map" object, but we like to keep it abstract.
 */
export declare class ObjectStore {
    private store;
    get<T>(id: string): T;
    set(id: string, value: unknown): void;
    /**
     * Return the cached object for the given id or create it (and cache it) using the factory.
     * Caching lives in the accessor methods of the facades, so that constructors always
     * run exactly once and never re-run their side effects on a cached instance.
     */
    getOrCreate<T>(id: string, factory: () => T): T;
}
