import { Subject, Observable } from "rxjs"; export declare type EmitterType = string; export declare namespace EmitterMetadata { type ProxyMode = keyof { None; From; Alias; Merge; }; namespace ProxyMode { const None: ProxyMode; const From: ProxyMode; const Alias: ProxyMode; const Merge: ProxyMode; } interface SubjectInfo extends SubjectInfo.CoreDetails { propertyKey: string; observable: Subject | Observable; } namespace SubjectInfo { interface CoreDetails { initialValue?: any; readOnly?: boolean; proxyMode?: ProxyMode; proxyPath?: string; proxyMergeUpdates?: boolean; } interface WithDynamicAlias extends SubjectInfo { observable: Observable; } interface WithStaticAlias extends SubjectInfo { observable: Subject; } function IsDynamicAlias(subjectInfo: SubjectInfo): subjectInfo is SubjectInfo.WithDynamicAlias; function IsStaticAlias(subjectInfo: SubjectInfo): subjectInfo is SubjectInfo.WithStaticAlias; } type MetadataMap = Map; const EmitterMapSymbol: symbol; /** @description Gets the metadata map object for the given target class (or its inheritted classes). */ function GetMetadataMap(target: Object): MetadataMap; /** @description Gets the metadata map object for the given target class. */ function GetOwnMetadataMap(target: Object): MetadataMap; function HasOwnMetadataMap(target: Object): boolean; function SetMetadataMap(target: Object, map: MetadataMap): void; /** @description Copy all metadata from the source map to the target map. * * Note: This mutates the target map. **/ function CopyMetadata(target: MetadataMap, source: MetadataMap, overwrite?: boolean): MetadataMap; /** @description Merge own and inheritted metadata into a single map. * * Note: This mutates the object's metadata. **/ function CopyInherittedMetadata(object: any): MetadataMap; }