type Fn = (...args: any[]) => any; type Constants = typeof constants; type TagKeys = { [K in keyof Constants]: K extends `${string}_TAG` ? K : never; }[keyof Constants]; type TagNameMap = { [K in TagKeys]: K extends `${infer P}_TAG` ? P : never; }; type TagTypeMap = { [K in TagKeys as TagNameMap[K]]: Constants[K]; }; export type TagType = keyof { [K in keyof TagTypeMap as TagTypeMap[K]]: never; }; import type { Value } from '.'; import * as _constants from './constants'; import AccessorCache from './model/accessor-cache'; import { Connection } from './connection'; export declare const constants: typeof _constants; export declare const Tag: Readonly; export declare const deps: { assignCache: (initValue: T) => AccessorCache; numCreated: number; }; export declare class Closable { private _closed; private _listeners; get closed(): boolean; close(): void; onClose(fn: Fn): () => void; offClose(fn: Fn): void; } export declare class Immutable extends Closable { private static _cacheMap; private _numConnectionsCreated; constructor(initValue: T); close(): void; connect(): Connection; } export {};