## Beta API Report File for "@fluidframework/map"

> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).

```ts

// @beta @sealed @legacy
export class DirectoryFactory implements IChannelFactory<ISharedDirectory> {
    static readonly Attributes: IChannelAttributes;
    get attributes(): IChannelAttributes;
    create(runtime: IFluidDataStoreRuntime, id: string): ISharedDirectory;
    load(runtime: IFluidDataStoreRuntime, id: string, services: IChannelServices, attributes: IChannelAttributes): Promise<ISharedDirectory>;
    static readonly Type = "https://graph.microsoft.com/types/directory";
    get type(): string;
}

// @beta @sealed @legacy
export interface FluidMapLegacy<K, V> extends Omit<FluidMap<K, V>, "get" | "set" | "forEach"> {
    clear(): void;
    delete(key: K): boolean;
    forEach(callbackfn: (value: V, key: K, map: FluidMap<K, V>) => void, thisArg?: any): void;
    forEach(callbackfn: (value: V, key: K, map: Map<K, V>) => void, thisArg?: any): void;
}

// @beta @deprecated @legacy
export interface ICreateInfo {
    ccIds: string[];
    csn: number;
}

// @public @sealed @legacy
export interface IDirectory extends FluidMap<string, any>, IEventProvider<IDirectoryEvents>, Partial<IDisposable> {
    readonly absolutePath: string;
    clear(): void;
    countSubDirectory?(): number;
    createSubDirectory(subdirName: string): IDirectory;
    delete(key: string): boolean;
    deleteSubDirectory(subdirName: string): boolean;
    get<T = any>(key: string): T | undefined;
    getSubDirectory(subdirName: string): IDirectory | undefined;
    getWorkingDirectory(relativePath: string): IDirectory | undefined;
    hasSubDirectory(subdirName: string): boolean;
    set<T = unknown>(key: string, value: T): this;
    subdirectories(): FluidIterableIterator<[string, IDirectory]>;
}

// @beta @deprecated @legacy
export interface IDirectoryDataObject {
    ci?: ICreateInfo;
    storage?: Record<string, ISerializableValue>;
    subdirectories?: Record<string, IDirectoryDataObject>;
}

// @public @sealed @legacy
export interface IDirectoryEvents extends IEvent {
    (event: "containedValueChanged", listener: (changed: IValueChanged, local: boolean, target: IEventThisPlaceHolder) => void): any;
    (event: "subDirectoryCreated", listener: (path: string, local: boolean, target: IEventThisPlaceHolder) => void): any;
    (event: "subDirectoryDeleted", listener: (path: string, local: boolean, target: IEventThisPlaceHolder) => void): any;
    (event: "disposed", listener: (target: IEventThisPlaceHolder) => void): any;
    (event: "undisposed", listener: (target: IEventThisPlaceHolder) => void): any;
}

// @beta @deprecated @legacy
export interface IDirectoryNewStorageFormat {
    blobs: string[];
    content: IDirectoryDataObject;
}

// @public @sealed @legacy
export interface IDirectoryValueChanged extends IValueChanged {
    path: string;
}

// @beta @deprecated @legacy
export interface ISerializableValue {
    type: string;
    value: any;
}

// @beta @sealed @legacy
export interface ISharedDirectory extends ISharedObject<ISharedDirectoryEvents & IDirectoryEvents>, Omit<IDirectory, "on" | "once" | "off"> {
    // (undocumented)
    [Symbol.iterator](): FluidIterableIterator<[string, any]>;
    // (undocumented)
    readonly [Symbol.toStringTag]: string;
}

// @beta @sealed @legacy
export interface ISharedDirectoryEvents extends ISharedObjectEvents {
    (event: "valueChanged", listener: (changed: IDirectoryValueChanged, local: boolean, target: IEventThisPlaceHolder) => void): any;
    // @deprecated
    (event: "clear", listener: (local: boolean, target: IEventThisPlaceHolder) => void): any;
    (event: "cleared", listener: (path: string, local: boolean, target: IEventThisPlaceHolder) => void): any;
    (event: "subDirectoryCreated", listener: (path: string, local: boolean, target: IEventThisPlaceHolder) => void): any;
    (event: "subDirectoryDeleted", listener: (path: string, local: boolean, target: IEventThisPlaceHolder) => void): any;
}

// @beta @sealed @legacy
export interface ISharedMap extends ISharedObject<ISharedMapEvents>, FluidMap<string, any> {
    clear(): void;
    delete(key: string): boolean;
    get<T = any>(key: string): T | undefined;
    set<T = unknown>(key: string, value: T): this;
}

// @beta @sealed @legacy
export interface ISharedMapBeta extends Omit<ISharedMap, Exclude<keyof FluidMap<string, unknown>, "get" | "set">>, FluidMapLegacy<string, any> {
}

// @beta @sealed @legacy
export interface ISharedMapEvents extends ISharedObjectEvents {
    (event: "valueChanged", listener: (changed: IValueChanged, local: boolean, target: IEventThisPlaceHolder) => void): any;
    (event: "clear", listener: (local: boolean, target: IEventThisPlaceHolder) => void): any;
}

// @public @sealed @legacy
export interface IValueChanged {
    readonly key: string;
    readonly previousValue: any;
}

// @beta @sealed @legacy
export class MapFactory implements IChannelFactory<ISharedMap> {
    static readonly Attributes: IChannelAttributes;
    get attributes(): IChannelAttributes;
    create(runtime: IFluidDataStoreRuntime, id: string): ISharedMap;
    load(runtime: IFluidDataStoreRuntime, id: string, services: IChannelServices, attributes: IChannelAttributes): Promise<ISharedMap>;
    static readonly Type = "https://graph.microsoft.com/types/map";
    get type(): string;
}

// @beta @legacy
export const SharedDirectory: ISharedObjectKind<ISharedDirectory> & SharedObjectKind<ISharedDirectory>;

// @beta @legacy
export type SharedDirectory = ISharedDirectory;

// @beta @legacy
export const SharedMap: ISharedObjectKind<ISharedMap> & SharedObjectKind<ISharedMap>;

// @beta @legacy
export type SharedMap = ISharedMap;

```
