## Alpha API Report File for "@fluidframework/datastore-definitions"

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

```ts

// @beta @legacy
export interface IChannel extends IFluidLoadable {
    // (undocumented)
    readonly attributes: IChannelAttributes;
    connect(services: IChannelServices): void;
    getAttachSummary(fullTree?: boolean, trackState?: boolean, telemetryContext?: ITelemetryContext): ISummaryTreeWithStats;
    getGCData(fullGC?: boolean): IGarbageCollectionData;
    readonly id: string;
    isAttached(): boolean;
    summarize(fullTree?: boolean, trackState?: boolean, telemetryContext?: ITelemetryContext, incrementalSummaryContext?: IExperimentalIncrementalSummaryContext): Promise<ISummaryTreeWithStats>;
}

// @beta @legacy
export interface IChannelAttributes {
    readonly packageVersion?: string;
    readonly snapshotFormatVersion: string;
    readonly type: string;
}

// @beta @legacy
export interface IChannelFactory<out TChannel = unknown> {
    readonly attributes: IChannelAttributes;
    create(runtime: IFluidDataStoreRuntime, id: string): TChannel & IChannel;
    load(runtime: IFluidDataStoreRuntime, id: string, services: IChannelServices, channelAttributes: Readonly<IChannelAttributes>): Promise<TChannel & IChannel>;
    readonly type: string;
}

// @beta @legacy
export interface IChannelServices {
    // (undocumented)
    deltaConnection: IDeltaConnection;
    // (undocumented)
    objectStorage: IChannelStorageService;
}

// @beta @legacy
export interface IChannelStorageService {
    contains(path: string): Promise<boolean>;
    getSnapshotTree(): ISnapshotTree | undefined;
    list(path: string): Promise<string[]>;
    readBlob(path: string): Promise<ArrayBufferLike>;
}

// @beta @legacy
export interface IDeltaConnection {
    attach(handler: IDeltaHandler): void;
    // (undocumented)
    connected: boolean;
    dirty(): void;
    submit(messageContent: any, localOpMetadata: unknown): void;
}

// @beta @legacy
export interface IDeltaHandler {
    applyStashedOp(message: any): void;
    processMessages: (messageCollection: IRuntimeMessageCollection) => void;
    reSubmit(message: any, localOpMetadata: unknown, squash?: boolean): void;
    rollback?(message: any, localOpMetadata: unknown): void;
    setConnectionState(connected: boolean): void;
}

// @beta @legacy
export type IDeltaManagerErased = ErasedType<"@fluidframework/container-definitions.IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>">;

// @beta @sealed @legacy
export interface IFluidDataStoreRuntime extends IEventProvider<IFluidDataStoreRuntimeEvents>, IDisposable {
    readonly activeLocalOperationActivity?: "applyStashed" | "rollback" | undefined;
    addChannel(channel: IChannel): void;
    readonly attachState: AttachState;
    bindChannel(channel: IChannel): void;
    // (undocumented)
    readonly channelsRoutingContext: IFluidHandleContext;
    // (undocumented)
    readonly clientId: string | undefined;
    // (undocumented)
    readonly connected: boolean;
    createChannel(id: string | undefined, type: string): IChannel;
    // (undocumented)
    readonly deltaManager: IDeltaManagerErased;
    readonly entryPoint: IFluidHandle<FluidObject>;
    getAudience(): IAudience;
    getChannel(id: string): Promise<IChannel>;
    getQuorum(): IQuorumClients;
    // (undocumented)
    readonly id: string;
    readonly idCompressor: IIdCompressor | undefined;
    // (undocumented)
    readonly IFluidHandleContext: IFluidHandleContext;
    readonly inStagingMode: boolean;
    readonly isDirty: boolean;
    readonly isReadOnly: () => boolean;
    // (undocumented)
    readonly logger: ITelemetryBaseLogger;
    // (undocumented)
    readonly objectsRoutingContext: IFluidHandleContext;
    // (undocumented)
    readonly options: Record<string | number, any>;
    // (undocumented)
    readonly rootRoutingContext: IFluidHandleContext;
    submitSignal: (type: string, content: unknown, targetClientId?: string) => void;
    uploadBlob(blob: ArrayBufferLike, signal?: AbortSignal): Promise<IFluidHandle<ArrayBufferLike>>;
    waitAttached(): Promise<void>;
}

// @alpha @sealed @legacy (undocumented)
export interface IFluidDataStoreRuntimeAlpha extends IFluidDataStoreRuntime {
}

// @beta @legacy
export interface IFluidDataStoreRuntimeEvents extends IEvent {
    // (undocumented)
    (event: "disconnected", listener: () => void): any;
    // (undocumented)
    (event: "dispose", listener: () => void): any;
    // (undocumented)
    (event: "attaching", listener: () => void): any;
    // (undocumented)
    (event: "attached", listener: () => void): any;
    // (undocumented)
    (event: "op", listener: (message: ISequencedDocumentMessage) => void): any;
    // (undocumented)
    (event: "signal", listener: (message: IInboundSignalMessage, local: boolean) => void): any;
    // (undocumented)
    (event: "connected", listener: (clientId: string) => void): any;
    // (undocumented)
    (event: "readonly", listener: (isReadOnly: boolean) => void): any;
}

// @beta @legacy (undocumented)
export interface Internal_InterfaceOfJsonableTypesWith<T> {
    // (undocumented)
    [index: string | number]: JsonableTypeWith<T>;
}

// @beta @legacy
export type Jsonable<T, TReplaced = never> = boolean extends (T extends never ? true : false) ? JsonableTypeWith<TReplaced> : unknown extends T ? JsonableTypeWith<TReplaced> : T extends undefined | null | boolean | number | string | TReplaced ? T : Extract<T, Function> extends never ? T extends object ? T extends (infer U)[] ? Jsonable<U, TReplaced>[] : {
    [K in keyof T]: Extract<K, symbol> extends never ? Jsonable<T[K], TReplaced> : never;
} : never : never;

// @beta @legacy
export type JsonableTypeWith<T> = undefined | null | boolean | number | string | T | Internal_InterfaceOfJsonableTypesWith<T> | ArrayLike<JsonableTypeWith<T>>;

// @beta @legacy
export type Serializable<T> = Jsonable<T, IFluidHandle>;

```
