@fluid-experimental/fluid-framework Package

Packages > @fluid-experimental/fluid-framework

Classes

List of classes contained in this package or namespace
Class Description
AttachmentTreeEntry Basic implementation of an attachment ITreeEntry
BaseContainerRuntimeFactory BaseContainerRuntimeFactory produces container runtimes with a given data store and service registry, as well as given request handlers. It can be subclassed to implement a first-time initialization procedure for the containers it creates.
BaseContainerService This class is a simple starter class for building a Container Service. It simply provides routing
BlobTreeEntry Basic implementation of a blob ITreeEntry
CommitTreeEntry Basic implementation of a commit ITreeEntry
ConsensusOrderedCollection Implementation of a consensus collection shared objectImplements the shared object's communication, and the semantics around the release/complete mechanism following acquire.Generally not used directly. A derived type will pass in a backing data type IOrderedCollection that will define the deterministic add/acquire order and snapshot ability.
ConsensusQueue Implementation of a consensus stackAn derived type of ConsensusOrderedCollection with a queue as the backing data and order.
ConsensusRegisterCollection Implementation of a consensus register collection
ConsensusRegisterCollectionFactory The factory that defines the consensus queue
ContainerRuntimeFactoryWithDefaultDataStore A ContainerRuntimeFactory that initializes Containers with a single default data store, which can be requested from the container with an empty URL.This factory should be exposed as fluidExport off the entry point to your module.
DataObject DataObject is a base data store that is primed with a root directory. It ensures that it is created and ready before you can access it.Having a single root directory allows for easier development. Instead of creating and registering channels with the runtime any new DDS that is set on the root will automatically be registered.
DataObjectFactory DataObjectFactory is the IFluidDataStoreFactory for use with DataObjects. It facilitates DataObject's features (such as its shared directory) by ensuring relevant shared objects etc are available to the factory.
DirectoryFactory The factory that defines the directory.
Ink Ink is a shared object which holds a collection of ink strokes.
InkCanvas
InkFactory Factory for Ink.
Interval
IntervalCollection
IntervalCollectionIterator
MapFactory The factory that defines the map.
OldestClientObserver The OldestClientObserver is a utility inspect if the local client is the oldest amongst connected clients (in terms of when they connected) and watch for changes.It is still experimental and under development. Please do try it out, but expect breaking changes in the future.
PaddingSegment
ProtocolOpHandler Handles protocol specific ops.
PureDataObject This is a bare-bones base class that does basic setup and enables for factory on an initialize call. You probably don't want to inherit from this data store directly unless you are creating another base data store class
PureDataObjectFactory PureDataObjectFactory is a barebones IFluidDataStoreFactory for use with PureDataObject. Consumers should typically use DataObjectFactory instead unless creating another base data store factory.
Quorum A quorum represents all clients currently within the collaboration window. As well as the values they have agreed upon and any pending proposals.
QuorumProxy Proxies Quorum events.
RunSegment
SequenceDeltaEvent The event object returned on sequenceDelta events.The properties of this object and its sub-objects represent a point in time state at the time the operation was applied. They will not take into any future modifications performed to the underlying sequence and merge tree.For group ops, each op will get it's own event, and the group op property will be set on the op args.Ops may get multiple events. For instance, an insert-replace will get a remove then an insert event.
SequenceEvent Base class for SequenceDeltaEvent and SequenceMaintenanceEvent.The properties of this object and its sub-objects represent a point in time state at the time the operation was applied. They will not take into any future modifications performed to the underlying sequence and merge tree.
SequenceInterval
SequenceMaintenanceEvent The event object returned on maintenance events.The properties of this object and its sub-objects represent a point in time state at the time the operation was applied. They will not take into any future modifications performed to the underlying sequence and merge tree.
SharedCell The SharedCell distributed data structure can be used to store a single serializable value.
SharedCounter A SharedCounter is a shared object which holds a number that can be incremented or decremented.
SharedDirectory SharedDirectory provides a hierarchical organization of map-like data structures as SubDirectories. The values stored within can be accessed like a map, and the hierarchy can be navigated using path syntax. SubDirectories can be retrieved for use as working directories.
SharedIntervalCollection
SharedIntervalCollectionFactory The factory that defines the SharedIntervalCollection
SharedMap The SharedMap distributed data structure can be used to store key-value pairs. It provides the same API for setting and retrieving values that JavaScript developers are accustomed to with the Map built-in object. However, the keys of a SharedMap must be strings.
SharedMatrix A SharedMatrix holds a rectangular 2D array of values. Supported operations include setting values and inserting/removing rows and columns.Matrix values may be any Fluid serializable type, which is the set of JSON serializable types extended to include IFluidHandles.Fluid's SharedMatrix implementation works equally well for dense and sparse matrix data and physically stores data in Z-order to leverage CPU caches and prefetching when reading in either row or column major order. (See README.md for more details.)
SharedMatrixFactory
SharedNumberSequence The SharedNumberSequence holds a sequence of numbers. Each number will be stored at a position within the sequence. See the sequence readme for details on working with sequences.
SharedNumberSequenceFactory
SharedObjectSequence The SharedObjectSequence holds a sequence of serializable objects. Each object will be stored at a position within the sequence. See the sequence readme for details on working with sequences.
SharedObjectSequenceFactory
SharedSegmentSequence
SharedSequence
SharedString The Shared String is a specialized data structure for handling collaborative text. It is based on a more general Sequence data structure but has additional features that make working with text easier.In addition to text, a Shared String can also contain markers. Markers can be used to store metadata at positions within the text, like the details of an image or Fluid object that should be rendered with the text.
SharedStringFactory
SparseMatrix
SparseMatrixFactory
SubSequence
TaskManager The TaskManager distributed data structure tracks queues of clients that want to exclusively run a task.It is still experimental and under development. Please do try it out, but expect breaking changes in the future.
TreeTreeEntry Basic implementation of a tree ITreeEntry

Enumerations

List of enums contained in this package or namespace
Enumeration Description
AttachState
BindState
ConsensusResult
ContainerErrorType Different error types the Container may report out to the Host
FileMode
LoaderHeader Accepted header keys for requests coming to the Loader
MessageType
NackErrorType Type of the Nack. InvalidScopeError: Client's token is not valid for the intended op. ThrottlingError: Retryable after retryAfter number. BadRequestError: Clients op is invalid and should retry immediately with a valid op. LimitExceededError: Service is having issues. Client should not retry.
ReadPolicy Read policies used when reading the map value.
ScopeType
SummaryType
TreeEntry Type of entries that can be stored in a tree

Functions

List of functions contained in this package or namespace
Function Description
acquireAndComplete(collection) Helper method to acquire and complete an item Should be used in test code only
addBlobToTree(tree, blobName, content)
buildHierarchy(flatTree, blobsShaToPathCache) Build a tree hierarchy base on a flat tree
defaultFluidObjectRequestHandler(fluidObject, request) Default request handler for a Fluid object that returns the object itself if: 1. the request url is empty 2. the request url is "/" 3. the request url starts with "/" and is followed by a query param, such as /?key=value Returns a 404 error for any other url.
generateServiceProtocolEntries(deli, scribe)
getDefaultObjectFromContainer(container) Helper function for getting the default Fluid Object from a Container. This function only works for Containers that support "/" request.T - defines the type you expect to be returned
getGitMode(value) Take a summary object and returns its git mode.
getGitType(value) Take a summary object and returns its type.
getObjectFromContainer(path, container) Helper function for getting a Fluid Object from a Container given a path/url. This function only works for Containers that support getting FluidObjects via request.T - defines the type you expect to be returned
getObjectWithIdFromContainer(id, container) Helper function for getting as Fluid Object from a Container given a Unique Id. This function only works for Containers that support getting FluidObjects via request.T - defines the type you expect to be returned
getQuorumTreeEntries(documentId, minimumSequenceNumber, sequenceNumber, term, quorumSnapshot)
isSystemMessage(message)
mergeAppAndProtocolTree(appSummaryTree, protocolTree)
positionToRowCol(position)
waitAcquireAndComplete(collection) Helper method to acquire and complete an item Should be used in test code only
waitForAttach(dataStoreRuntime)

Interfaces

List of interfaces contained in this package or namespace
Interface Description
ContainerWarning Represents warnings raised on container.
IActorClient
IAttachment
IAudience Audience represents all clients connected to the op stream, both read-only and read/write.
IBlob Raw blob stored within the tree
IBranchOrigin Branch origin information
ICapabilities
IClearOperation Signals a clear operation.
IClient
IClientConfiguration Key value store of service configuration properties provided to the client as part of connection
IClientDetails
IClientJoin Contents sent with a ClientJoin message
ICodeAllowList Code AllowListing Interface
ICodeLoader Code loading interface
IColor RGBA color.
IConnect Message sent to connect to the given document
IConnected Message sent to indicate a client has connected to the server
IConnectionDetails Contract representing the result of a newly established connection to the server for syncing deltas
IConsensusOrderedCollection Consensus Ordered Collection interfaceAn consensus ordered collection is a distributed data structure, which holds a collection of JSON-able or handles, and has a deterministic add/remove order.
IConsensusOrderedCollectionEvents Events notifying about addition, acquisition, release and completion of items
IConsensusOrderedCollectionFactory Consensus Ordered Collection channel factory interfaceExtends the base IChannelFactory to return a more definite type of IConsensusOrderedCollection Use for the runtime to create and load distributed data structure by type name of each channel
IConsensusRegisterCollection Consensus Register Collection.A consensus register collection is a distributed data structure, which holds a set of registers with update versions. On concurrent updates, a register internally stores all possible versions of a value by using reference sequence number of the incoming update.Using all the stored versions, we can then distinguish amongst different read policies. Below are the policies we support:Atomic: Atomicity requires a linearizable register. A linearizable register behaves as if there is only a single copy of the data, and that every operation appears to take effect atomically at one point in time. This definition implies that operations are executed in an well-defined order. On a concurrent update, we perform a compare-and-set operation, where we compare a register sequence number with the incoming reference sequence number. The earliest operation overwriting prior sequence numbers wins since every client reaches to an agreement on the value. So we can safely return the first value.LWW: The last write to a key always wins.
IConsensusRegisterCollectionEvents
IConsensusRegisterCollectionFactory Consensus Register Collection channel factory interfaceExtends the base IChannelFactory to return a more definite type of IConsensusRegisterCollection Use for the runtime to create and load distributed data structure by type name of each channel
IContainer The Host's view of the Container and its connection to storage
IContainerContext The ContainerContext is a proxy standing between the Container and the Container's IRuntime. This allows the Container to terminate the connection to the IRuntime.Specifically, there is an event on Container, onContextChanged, which mean a new code proposal has been loaded, so the old IRuntime is no longer valid, as its ContainerContext has been revoked, and the Container has created a new ContainerContext.
IContainerEvents Events emitted by the Container "upwards" to the Loader and Host
IContainerLoadMode
ICreateBlobResponse
ICreateStrokeOperation Create stroke operations notify clients that a new stroke has been created, along with basic information about the stroke.
IDataObjectProps
IDeltaHandlerStrategy Interface used to define a strategy for handling incoming delta messages
IDeltaManager Manages the transmission of ops between the runtime and storage.
IDeltaManagerEvents Events emitted by the Delta Manager
IDeltaQueue Queue of ops to be sent to or processed from storage
IDeltaQueueEvents Events emitted by a Delta Queue
IDeltaSender Contract supporting delivery of outbound messages to the server
IDirectory Interface describing actions on a directory.
IDirectoryDataObject Defines the in-memory object structure to be used for the conversion to/from serialized.
IDirectoryEvents
IDirectoryNewStorageFormat
IDirectoryValueChanged Type of "valueChanged" event parameter for SharedDirectory
IDisposable
IDocumentAttributes
IDocumentMessage Document specific message
IDocumentSystemMessage Document Message with optional system level data field.
IErrorBase Base interface for all errors and warnings at container level
IErrorEvent
IEvent
IEventProvider
IFluidBrowserPackage A Fluid package for specification for browser environments
IFluidBrowserPackageEnvironment A specific Fluid package environment for browsers
IFluidCodeDetails Data structure used to describe the code to load on the Fluid document
IFluidCodeDetailsComparer Provides capability to compare Fluid code details.
IFluidCodeDetailsConfig Package manager configuration. Provides a key value mapping of config values
IFluidCodeResolver Fluid code resolvers take a Fluid code details, and resolve the full Fluid package including absolute urls for the browser file entries. The Fluid code resolver is coupled to a specific cdn and knows how to resolve the code detail for loading from that cdn. This include resolving to the most recent version of package that supports the provided code details.
IFluidConfiguration
IFluidHandle Handle to a shared FluidObject
IFluidHandleContext An IFluidHandleContext describes a routing context from which other IFluidHandleContexts are defined
IFluidLoadable A shared FluidObject has a URL from which it can be referenced
IFluidModule
IFluidObject
IFluidPackage Fluid-specific properties expected on a package to be loaded by the code loader. While compatible with the npm package format it is not necessary that that package is an npm package: https://stackoverflow.com/questions/10065564/add-custom-metadata-or-config-to-package-json-is-it-valid
IFluidPackageEnvironment Specifies an environment on Fluid property of a IFluidPackage
IFluidRouter
IFluidRunnable
IFluidSerializer
IFluidTokenProvider
IGenericError Generic wrapper for an unrecognized/uncategorized error object
IHelpMessage Represents a message containing tasks.
IHostLoader The Host's view of the Loader, used for loading Containers
IInk Shared data structure for representing ink.
IInkEvents
IInkPoint Data about a single point in an ink stroke
IInkStroke Represents a single ink stroke.
IIntervalHelpers
IJSONRunSegment
ILoader The Runtime's view of the Loader, used for loading Containers
ILoaderHeader Set of Request Headers that the Loader understands and may inspect or modify
ILoggingError An error object that supports exporting its properties to be logged to telemetry
INack
INackContent Interface for nack content.
IOldestClientObservable This is to make OldestClientObserver work with either a ContainerRuntime or an IFluidDataStoreRuntime (both expose the relevant API surface and eventing). However, really this info probably shouldn't live on either, since neither is really the source of truth (they are just the only currently-available plumbing options). It's information about the connection, so the real source of truth is lower (at the connection layer).
IOldestClientObservableEvents
IOldestClientObserver
IOldestClientObserverEvents
IOrderedCollection Ordered Collection interfaceCollection of objects that has deterministic add and remove ordering. Object implementing this interface can be used as the data backing for the ConsensusOrderedCollection
IPen Pen data for the current stroke
IPendingLocalState
IPendingProposal A proposal that has been propposed, but not yet accepted or committed
IProcessMessageResult
IProposal Proposal to set the given key/value pair.Consensus on the proposal is achieved if the MSN is >= the sequence number at which the proposal is made and no client within the collaboration window rejects the proposal.
IProtocolState
IProvideDeltaSender
IProvideFluidCodeDetailsComparer
IProvideFluidConfiguration
IProvideFluidHandle
IProvideFluidHandleContext
IProvideFluidLoadable
IProvideFluidRouter Request routing
IProvideFluidRunnable
IProvideFluidSerializer
IProvideFluidTokenProvider
IProvideRuntimeFactory
IProxyLoaderFactory Abstraction layer to support different Loaders in different Node execution contexts
IQueueMessage Represents a message in task queue to be processed.
IQuorum Interface combining tracking of clients as well as proposals in the Quorum.
IQuorumClients Interface for tracking clients in the Quorum.
IQuorumClientsEvents Events fired by a Quorum in response to client tracking.
IQuorumProposals Interface for tracking proposals in the Quorum.
IQuorumProposalsEvents Events fired by a Quorum in response to proposal tracking.
IQuorumSnapshot
IRequest
IRequestHeader
IResolvedFluidCodeDetails The interface returned from a IFluidCodeResolver which represents IFluidCodeDetails that have been resolved and are ready to load
IResponse
IRevertible
IRootDataObjectFactory
IRuntime The IRuntime represents an instantiation of a code package within a Container. Primarily held by the ContainerContext to be able to interact with the running instance of the Container.
IRuntimeFactory Exported module definitionProvides the entry point for the ContainerContext to load the proper IRuntime to start up the running instance of the Container.
IScribeProtocolState
ISequencedClient
ISequencedDocumentAugmentedMessage
ISequencedDocumentMessage Sequenced message for a distributed document
ISequencedDocumentSystemMessage
ISequenceDeltaRange
ISerializableInterval
ISerializableValue The _ready-for-serialization_ format of values contained in DDS contents. This allows us to use ISerializableValue.type to understand whether they're storing a Plain JS object, a SharedObject, or a value type. Note that the in-memory equivalent of ISerializableValue is ILocalValue (similarly holding a type, but with the _in-memory representation_ of the value instead). An ISerializableValue is what gets passed to JSON.stringify and comes out of JSON.parse. This format is used both for snapshots (loadCore/populate) and ops (set). If type is Plain, it must be a plain JS object that can survive a JSON.stringify/parse. E.g. a URL object will just get stringified to a URL string and not rehydrate as a URL object on the other side. It may contain members that are ISerializedHandle (the serialized form of a handle). If type is a value type then it must be amongst the types registered via registerValueType or we won't know how to serialize/deserialize it (we rely on its factory via .load() and .store()). Its value will be type-dependent. If type is Shared, then the in-memory value will just be a reference to the SharedObject. Its value will be a channel ID. This type is legacy and deprecated.
ISerializedHandle JSON serialized form of an IFluidHandle
ISerializedInterval
ISerializedValue
IServerError General errors returned from the server. May want to add error code or something similar in the future.
ISharedCell Shared cell interface
ISharedCellEvents
ISharedCounter Shared counter interface
ISharedCounterEvents
ISharedDirectory Interface describing a shared directory.
ISharedDirectoryEvents
ISharedIntervalCollection
ISharedMap Shared map interface
ISharedMapEvents
ISharedSegmentSequenceEvents
ISharedString Fluid object interface describing access methods on a SharedString
ISignalClient
ISignalMessage
ISnapshotable Interface for object that can be snapshotedTODO: move this to be use in other place TODO: currently input and output is not symmetrical, can they become symmetrical?
ISnapshotTree
ISnapshotTreeEx
IStylusOperation Base interface for stylus operations.
ISummaryAck Contents of summary ack expected from the server.
ISummaryAttachment
ISummaryAuthor
ISummaryBlob
ISummaryCommitter
ISummaryConfiguration
ISummaryContent
ISummaryHandle
ISummaryNack Contents of summary nack expected from the server.
ISummaryProposal Data about the original proposed summary op.
ISummaryTokenClaims
ISummaryTree
ITaggedTelemetryPropertyType A property to be logged to telemetry containing both the value and a tag. Tags are generic strings that can be used to mark pieces of information that should be organized or handled differently by loggers in various first or third party scenarios. For example, tags are used to mark PII that should not be stored in logs.
ITaskManager Task manager interface
ITaskManagerEvents
ITelemetryBaseEvent Base interface for logging telemetry statements. Can contain any number of properties that get serialized as json payload.
ITelemetryBaseLogger Interface to output telemetry events. Implemented by hosting app / loader
ITelemetryErrorEvent Error telemetry event. Maps to category = "error"
ITelemetryGenericEvent Informational (non-error) telemetry event Maps to category = "generic"
ITelemetryLogger ITelemetryLogger interface contains various helper telemetry methods, encoding in one place schemas for various types of Fluid telemetry events. Creates sub-logger that appends properties to all events
ITelemetryPerformanceEvent Performance telemetry event. Maps to category = "performance"
ITelemetryProperties
IThrottlingWarning Warning emitted when requests to storage are being throttled
ITokenClaims
ITokenProvider
ITokenService The ITokenService abstracts the discovery of claims contained within a token
ITrace Messages to track latency trace
ITree
IUndoConsumer
IUploadedSummaryDetails
IUser Base user definition. It is valid to extend this interface when adding new details to the user object.
IValueChanged Type of "valueChanged" event parameter.
IValueOpEmitter Value types are given an IValueOpEmitter to emit their ops through the container type that holds them.
IVersion Represents a version of the snapshot of a data store

Variables

List of variables contained in this package or namespace
Variable Description
defaultRouteRequestHandler Pipe through container request into internal request. If request is empty and default url is provided, redirect request to such default url.
generateContainerServicesRequestHandler Given a collection of IContainerServices will produce a RequestHandler for them all
IDeltaSender
IFluidCodeDetailsComparer
IFluidConfiguration
IFluidHandle
IFluidHandleContext
IFluidLoadable
IFluidRouter
IFluidRunnable
IFluidSerializer
IFluidTokenProvider
IRuntimeFactory
isFluidBrowserPackage Determines if any object is an IFluidBrowserPackage
isFluidCodeDetails
isFluidPackage Check if the package.json defines a Fluid package
isServiceMessageType Check if the string is a service message type, which includes MessageType.ClientJoin, MessageType.ClientLeave, MessageType.Control, MessageType.NoClient, MessageType.SummaryAck, and MessageType.SummaryNack
maxCellPosition
maxCol
maxCols
maxRow
maxRows
mountableViewRequestHandler A mountable view is only required if the view needs to be mounted across a bundle boundary. Mounting across bundle boundaries breaks some frameworks, so the mountable view is used to ensure the mounting is done within the same bundle as the view. For example, React hooks don't work if mounted across bundles since there will be two React instances, breaking the Rules of Hooks. When cross-bundle mounting isn't required, the mountable view isn't necessary.When a request is received with a mountableView: true header, this request handler will reissue the request without the header, and respond with a mountable view of the given class using the response.
rowColToPosition
serviceRoutePathRoot

Type Aliases

List of type aliases contained in this package or namespace
Type Alias Description
ConnectionMode
ConsensusCallback Callback provided to acquire() and waitAndAcquire() methods.
ContainerServiceRegistryEntries
DeserializeCallback
ExtendEventProvider Allow an interface to extend an interfaces that already extends an IEventProvider ```typescript interface AEvents extends IEvent{ (event: "a-event",listener: (a: number)=>void); } interface A extends IEventProvider{ a: object; }

interface BEvents extends IEvent{ (event: “b-event”,listener: (b: string)=>void); } interface B extends ExtendEventProvider<AEvents, A, BEvents>{ b: boolean; };

interface B will now extend interface A and it's events</td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-iapprovedproposal-TypeAlias'>IApprovedProposal</a></td>
      <td>Adds the sequence number at which the message was approved to an ISequencedProposal</td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-icommittedproposal-TypeAlias'>ICommittedProposal</a></td>
      <td>Adds the sequence number at which the message was committed to an IApprovedProposal</td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-icriticalcontainererror-TypeAlias'>ICriticalContainerError</a></td>
      <td>Represents errors raised on container.</td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-ieventthisplaceholder-TypeAlias'>IEventThisPlaceHolder</a></td>
      <td></td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-ieventtransformer-TypeAlias'>IEventTransformer</a></td>
      <td></td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-iinkoperation-TypeAlias'>IInkOperation</a></td>
      <td>Ink operations are one of several types.</td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-iloaderoptions-TypeAlias'>ILoaderOptions</a></td>
      <td></td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-iquorumevents-TypeAlias'>IQuorumEvents</a></td>
      <td>All events fired by an IQuorum, both client tracking and proposal tracking.</td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-isequencedproposal-TypeAlias'>ISequencedProposal</a></td>
      <td>Similar to IProposal except includes the sequence number when it was made in addition to the fields on IProposal</td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-itreeentry-TypeAlias'>ITreeEntry</a></td>
      <td>A tree entry wraps a path with a type of node</td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-matrixitem-TypeAlias'>MatrixItem</a></td>
      <td>A matrix cell value may be undefined (indicating an empty cell) or any serializable type, excluding null. (However, nulls may be embedded inside objects and arrays.)</td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-matrixsegment-TypeAlias'>MatrixSegment</a></td>
      <td></td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-readonlyinfo-TypeAlias'>ReadOnlyInfo</a></td>
      <td></td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-replaceieventthisplaceholder-TypeAlias'>ReplaceIEventThisPlaceHolder</a></td>
      <td></td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-sharedstringsegment-TypeAlias'>SharedStringSegment</a></td>
      <td></td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-sparsematrixitem-TypeAlias'>SparseMatrixItem</a></td>
      <td></td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-summaryobject-TypeAlias'>SummaryObject</a></td>
      <td></td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-summarytree-TypeAlias'>SummaryTree</a></td>
      <td></td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-summarytypenohandle-TypeAlias'>SummaryTypeNoHandle</a></td>
      <td></td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-telemetryeventcategory-TypeAlias'>TelemetryEventCategory</a></td>
      <td></td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-telemetryeventpropertytype-TypeAlias'>TelemetryEventPropertyType</a></td>
      <td></td>
    </tr>
    <tr>
      <td><a href='/docs/apis/fluid-framework/#fluid-framework-transformedevent-TypeAlias'>TransformedEvent</a></td>
      <td></td>
    </tr>
  </tbody>
</table>

<hr><div id=package-details>

## Enumerations

## AttachState enum {#fluid-framework-attachstate-Enum}

<b>Signature:</b>

```typescript
export declare enum AttachState 

Enumeration Members

List of members in use in this enum
Member Value Description
Attached "Attached"
Attaching "Attaching"
Detached "Detached"

BindState enum

Signature:

export declare enum BindState 

Enumeration Members

List of members in use in this enum
Member Value Description
Binding "Binding"
Bound "Bound"
NotBound "NotBound"

ConsensusResult enum

Signature:

export declare enum ConsensusResult 

Enumeration Members

List of members in use in this enum
Member Value Description
Complete 1
Release 0

ContainerErrorType enum

Different error types the Container may report out to the Host

Signature:

export declare enum ContainerErrorType 

Enumeration Members

List of members in use in this enum
Member Value Description
dataCorruptionError "dataCorruptionError" Data loss error detected by Container / DeltaManager. Likely points to storage issue.
dataProcessingError "dataProcessingError" Error encountered when processing an operation. May correlate with data corruption.
genericError "genericError" Some error, most likely an exception caught by runtime and propagated to container as critical error
throttlingError "throttlingError" Throttling error from server. Server is busy and is asking not to reconnect for some time

FileMode enum

Signature:

export declare enum FileMode 

Enumeration Members

List of members in use in this enum
Member Value Description
Commit "160000"
Directory "040000"
Executable "100755"
File "100644"
Symlink "120000"

LoaderHeader enum

Accepted header keys for requests coming to the Loader

Signature:

export declare enum LoaderHeader 

Enumeration Members

List of members in use in this enum
Member Value Description
cache "fluid-cache" Override the Loader's default caching behavior for this container.
clientDetails "fluid-client-details"
loadMode "loadMode" Start the container in a paused, unconnected state. Defaults to false
reconnect "fluid-reconnect"
sequenceNumber "fluid-sequence-number"
version "version" One of the following: null or "null": use ops, no snapshots undefined: fetch latest snapshot otherwise, version sha to load snapshot

MessageType enum

Signature:

export declare enum MessageType 

Enumeration Members

List of members in use in this enum
Member Value Description
ClientJoin "join"
ClientLeave "leave"
Control "control"
NoClient "noClient"
NoOp "noop"
Operation "op"
Propose "propose"
Reject "reject"
RemoteHelp "remoteHelp"
RoundTrip "tripComplete"
Save "saveOp"
Summarize "summarize"
SummaryAck "summaryAck"
SummaryNack "summaryNack"

NackErrorType enum

Type of the Nack. InvalidScopeError: Client’s token is not valid for the intended op. ThrottlingError: Retryable after retryAfter number. BadRequestError: Clients op is invalid and should retry immediately with a valid op. LimitExceededError: Service is having issues. Client should not retry.

Signature:

export declare enum NackErrorType 

Enumeration Members

List of members in use in this enum
Member Value Description
BadRequestError "BadRequestError"
InvalidScopeError "InvalidScopeError"
LimitExceededError "LimitExceededError"
ThrottlingError "ThrottlingError"

ReadPolicy enum

Read policies used when reading the map value.

Signature:

export declare enum ReadPolicy 

Enumeration Members

List of members in use in this enum
Member Value Description
Atomic 0
LWW 1

ScopeType enum

Signature:

export declare enum ScopeType 

Enumeration Members

List of members in use in this enum
Member Value Description
DocRead "doc:read"
DocWrite "doc:write"
SummaryWrite "summary:write"

SummaryType enum

Signature:

export declare const enum SummaryType 

Enumeration Members

List of members in use in this enum
Member Value Description
Attachment 4
Blob 2
Handle 3
Tree 1

TreeEntry enum

Type of entries that can be stored in a tree

Signature:

export declare enum TreeEntry 

Enumeration Members

List of members in use in this enum
Member Value Description
Attachment "Attachment"
Blob "Blob"
Commit "Commit"
Tree "Tree"

Functions

acquireAndComplete

Helper method to acquire and complete an item Should be used in test code only

Signature:

export declare function acquireAndComplete<T>(collection: IConsensusOrderedCollection<T>): Promise<T | undefined>;

Parameters

List of parameters
Parameter Type Description
collection IConsensusOrderedCollection

Returns:

Promise<T | undefined>

addBlobToTree

Signature:

export declare function addBlobToTree(tree: ITree, blobName: string, content: object): void;

Parameters

List of parameters
Parameter Type Description
tree ITree
blobName string
content object

Returns:

void

buildHierarchy

Build a tree hierarchy base on a flat tree

Signature:

export declare function buildHierarchy(flatTree: git.ITree, blobsShaToPathCache?: Map<string, string>): ISnapshotTreeEx;

Parameters

List of parameters
Parameter Type Description
flatTree git.ITree a flat tree
blobsShaToPathCache Map Map with blobs sha as keys and values as path of the blob.

Returns:

ISnapshotTreeEx

the hierarchical tree

defaultFluidObjectRequestHandler

Default request handler for a Fluid object that returns the object itself if: 1. the request url is empty 2. the request url is “/” 3. the request url starts with “/” and is followed by a query param, such as /?key=value Returns a 404 error for any other url.

Signature:

export declare function defaultFluidObjectRequestHandler(fluidObject: IFluidObject, request: IRequest): IResponse;

Parameters

List of parameters
Parameter Type Description
fluidObject IFluidObject
request IRequest

Returns:

IResponse

generateServiceProtocolEntries

Signature:

export declare function generateServiceProtocolEntries(deli: string, scribe: string): ITreeEntry[];

Parameters

List of parameters
Parameter Type Description
deli string
scribe string

Returns:

ITreeEntry[]

getDefaultObjectFromContainer

Helper function for getting the default Fluid Object from a Container. This function only works for Containers that support “/” request.

T - defines the type you expect to be returned

Signature:

export declare function getDefaultObjectFromContainer<T = IFluidObject>(container: IContainer): Promise<T>;

Parameters

List of parameters
Parameter Type Description
container IContainer Container you're attempting to get the object from

Returns:

Promise<T>

getGitMode

Take a summary object and returns its git mode.

Signature:

export declare function getGitMode(value: SummaryObject): string;

Parameters

List of parameters
Parameter Type Description
value SummaryObject summary object

Returns:

string

the git mode of summary object

getGitType

Take a summary object and returns its type.

Signature:

export declare function getGitType(value: SummaryObject): "blob" | "tree";

Parameters

List of parameters
Parameter Type Description
value SummaryObject summary object

Returns:

“blob” | “tree”

the type of summary object

getObjectFromContainer

Helper function for getting a Fluid Object from a Container given a path/url. This function only works for Containers that support getting FluidObjects via request.

T - defines the type you expect to be returned

Signature:

export declare function getObjectFromContainer<T = IFluidObject>(path: string, container: IContainer): Promise<T>;

Parameters

List of parameters
Parameter Type Description
path string Unique path/url of the FluidObject
container IContainer Container you're attempting to get the object from

Returns:

Promise<T>

getObjectWithIdFromContainer

Helper function for getting as Fluid Object from a Container given a Unique Id. This function only works for Containers that support getting FluidObjects via request.

T - defines the type you expect to be returned

Signature:

export declare function getObjectWithIdFromContainer<T = IFluidObject>(id: string, container: IContainer): Promise<T>;

Parameters

List of parameters
Parameter Type Description
id string Unique id of the FluidObject
container IContainer Container you're attempting to get the object from

Returns:

Promise<T>

getQuorumTreeEntries

Signature:

export declare function getQuorumTreeEntries(documentId: string, minimumSequenceNumber: number, sequenceNumber: number, term: number, quorumSnapshot: IQuorumSnapshot): ITreeEntry[];

Parameters

List of parameters
Parameter Type Description
documentId string
minimumSequenceNumber number
sequenceNumber number
term number
quorumSnapshot IQuorumSnapshot

Returns:

ITreeEntry[]

isSystemMessage

Signature:

export declare function isSystemMessage(message: ISequencedDocumentMessage): boolean;

Parameters

List of parameters
Parameter Type Description
message ISequencedDocumentMessage

Returns:

boolean

mergeAppAndProtocolTree

Signature:

export declare function mergeAppAndProtocolTree(appSummaryTree: ITree, protocolTree: ITree): ICreateTreeEntry[];

Parameters

List of parameters
Parameter Type Description
appSummaryTree ITree
protocolTree ITree

Returns:

ICreateTreeEntry[]

positionToRowCol

Signature:

export declare function positionToRowCol(position: number): {
    row: number;
    col: number;
};

Parameters

List of parameters
Parameter Type Description
position number

Returns:

{ row: number; col: number; }

waitAcquireAndComplete

Helper method to acquire and complete an item Should be used in test code only

Signature:

export declare function waitAcquireAndComplete<T>(collection: IConsensusOrderedCollection<T>): Promise<T>;

Parameters

List of parameters
Parameter Type Description
collection IConsensusOrderedCollection

Returns:

Promise<T>

waitForAttach

Signature:

export declare function waitForAttach(dataStoreRuntime: IFluidDataStoreRuntime): Promise<void>;

Parameters

List of parameters
Parameter Type Description
dataStoreRuntime IFluidDataStoreRuntime

Returns:

Promise<void>

Variables

defaultRouteRequestHandler

Pipe through container request into internal request. If request is empty and default url is provided, redirect request to such default url.

Signature:

defaultRouteRequestHandler: (defaultRootId: string) => (request: IRequest, runtime: IContainerRuntime) => Promise<IResponse | undefined>

generateContainerServicesRequestHandler

Given a collection of IContainerServices will produce a RequestHandler for them all

Signature:

generateContainerServicesRequestHandler: (serviceRegistry: ContainerServiceRegistryEntries) => RuntimeRequestHandler

IDeltaSender

Signature:

IDeltaSender: keyof IProvideDeltaSender

IFluidCodeDetailsComparer

Signature:

IFluidCodeDetailsComparer: keyof IProvideFluidCodeDetailsComparer

IFluidConfiguration

Signature:

IFluidConfiguration: keyof IProvideFluidConfiguration

IFluidHandle

Signature:

IFluidHandle: keyof IProvideFluidHandle

IFluidHandleContext

Signature:

IFluidHandleContext: keyof IProvideFluidHandleContext

IFluidLoadable

Signature:

IFluidLoadable: keyof IProvideFluidLoadable

IFluidRouter

Signature:

IFluidRouter: keyof IProvideFluidRouter

IFluidRunnable

Signature:

IFluidRunnable: keyof IProvideFluidRunnable

IFluidSerializer

Signature:

IFluidSerializer: keyof IProvideFluidSerializer

IFluidTokenProvider

Signature:

IFluidTokenProvider: keyof IProvideFluidTokenProvider

IRuntimeFactory

Signature:

IRuntimeFactory: keyof IProvideRuntimeFactory

isFluidBrowserPackage

Determines if any object is an IFluidBrowserPackage

Signature:

isFluidBrowserPackage: (maybePkg: any) => maybePkg is Readonly<IFluidBrowserPackage>

isFluidCodeDetails

Signature:

isFluidCodeDetails: (details: unknown) => details is Readonly<IFluidCodeDetails>

isFluidPackage

Check if the package.json defines a Fluid package

Signature:

isFluidPackage: (pkg: any) => pkg is Readonly<IFluidPackage>

isServiceMessageType

Check if the string is a service message type, which includes MessageType.ClientJoin, MessageType.ClientLeave, MessageType.Control, MessageType.NoClient, MessageType.SummaryAck, and MessageType.SummaryNack

Signature:

isServiceMessageType: (type: string) => boolean

maxCellPosition

Signature:

maxCellPosition: number

maxCol

Signature:

maxCol = 2097152

maxCols

Signature:

maxCols: number

maxRow

Signature:

maxRow = 4294967295

maxRows

Signature:

maxRows: number

mountableViewRequestHandler

A mountable view is only required if the view needs to be mounted across a bundle boundary. Mounting across bundle boundaries breaks some frameworks, so the mountable view is used to ensure the mounting is done within the same bundle as the view. For example, React hooks don’t work if mounted across bundles since there will be two React instances, breaking the Rules of Hooks. When cross-bundle mounting isn’t required, the mountable view isn’t necessary.

When a request is received with a mountableView: true header, this request handler will reissue the request without the header, and respond with a mountable view of the given class using the response.

Signature:

mountableViewRequestHandler: (MountableViewClass: IFluidMountableViewClass, handlers: RuntimeRequestHandler[]) => (request: RequestParser, runtime: IContainerRuntime) => Promise<IResponse>

rowColToPosition

Signature:

rowColToPosition: (row: number, col: number) => number

serviceRoutePathRoot

Signature:

serviceRoutePathRoot = "_services"

Type Aliases

ConnectionMode

Signature:

export declare type ConnectionMode = "write" | "read";

ConsensusCallback

Callback provided to acquire() and waitAndAcquire() methods.

Signature:

export declare type ConsensusCallback<T> = (value: T) => Promise<ConsensusResult>;

ContainerServiceRegistryEntries

Signature:

export declare type ContainerServiceRegistryEntries = Iterable<[string, (runtime: IContainerRuntime) => Promise<IFluidObject>]>;

DeserializeCallback

Signature:

export declare type DeserializeCallback = (properties: MergeTree.PropertySet) => void;

ExtendEventProvider

Allow an interface to extend an interfaces that already extends an IEventProvider

interface AEvents extends IEvent{
 (event: "a-event",listener: (a: number)=>void);
}
interface A extends IEventProvider<AEvents>{
 a: object;
}

interface BEvents extends IEvent{
 (event: "b-event",listener: (b: string)=>void);
}
interface B extends ExtendEventProvider<AEvents, A, BEvents>{
 b: boolean;
};

interface B will now extend interface A and it’s events

Signature:

export declare type ExtendEventProvider<TBaseEvent extends IEvent, TBase extends IEventProvider<TBaseEvent>, TEvent extends TBaseEvent> = Omit<Omit<Omit<TBase, "on">, "once">, "off"> & IEventProvider<TBaseEvent> & IEventProvider<TEvent>;

IApprovedProposal

Adds the sequence number at which the message was approved to an ISequencedProposal

Signature:

export declare type IApprovedProposal = {
    approvalSequenceNumber: number;
} & ISequencedProposal;

ICommittedProposal

Adds the sequence number at which the message was committed to an IApprovedProposal

Signature:

export declare type ICommittedProposal = {
    commitSequenceNumber: number;
} & IApprovedProposal;

ICriticalContainerError

Represents errors raised on container.

Signature:

export declare type ICriticalContainerError = IErrorBase;

IEventThisPlaceHolder

Signature:

export declare type IEventThisPlaceHolder = {
    thisPlaceHolder: "thisPlaceHolder";
};

IEventTransformer

Signature:

export declare type IEventTransformer<TThis, TEvent extends IEvent> = TEvent extends {
    (event: infer E0, listener: (...args: infer A0) => void): any;
    (event: infer E1, listener: (...args: infer A1) => void): any;
    (event: infer E2, listener: (...args: infer A2) => void): any;
    (event: infer E3, listener: (...args: infer A3) => void): any;
    (event: infer E4, listener: (...args: infer A4) => void): any;
    (event: infer E5, listener: (...args: infer A5) => void): any;
    (event: infer E6, listener: (...args: infer A6) => void): any;
    (event: infer E7, listener: (...args: infer A7) => void): any;
    (event: infer E8, listener: (...args: infer A8) => void): any;
    (event: infer E9, listener: (...args: infer A9) => void): any;
    (event: infer E10, listener: (...args: infer A10) => void): any;
    (event: infer E11, listener: (...args: infer A11) => void): any;
    (event: infer E12, listener: (...args: infer A12) => void): any;
    (event: infer E13, listener: (...args: infer A13) => void): any;
    (event: infer E14, listener: (...args: infer A14) => void): any;
    (event: string, listener: (...args: any[]) => void): any;
} ? TransformedEvent<TThis, E0, A0> & TransformedEvent<TThis, E1, A1> & TransformedEvent<TThis, E2, A2> & TransformedEvent<TThis, E3, A3> & TransformedEvent<TThis, E4, A4> & TransformedEvent<TThis, E5, A5> & TransformedEvent<TThis, E6, A6> & TransformedEvent<TThis, E7, A7> & TransformedEvent<TThis, E8, A8> & TransformedEvent<TThis, E9, A9> & TransformedEvent<TThis, E10, A10> & TransformedEvent<TThis, E11, A11> & TransformedEvent<TThis, E12, A12> & TransformedEvent<TThis, E13, A13> & TransformedEvent<TThis, E14, A14> : TEvent extends {
    (event: infer E0, listener: (...args: infer A0) => void): any;
    (event: infer E1, listener: (...args: infer A1) => void): any;
    (event: infer E2, listener: (...args: infer A2) => void): any;
    (event: infer E3, listener: (...args: infer A3) => void): any;
    (event: infer E4, listener: (...args: infer A4) => void): any;
    (event: infer E5, listener: (...args: infer A5) => void): any;
    (event: infer E6, listener: (...args: infer A6) => void): any;
    (event: infer E7, listener: (...args: infer A7) => void): any;
    (event: infer E8, listener: (...args: infer A8) => void): any;
    (event: infer E9, listener: (...args: infer A9) => void): any;
    (event: infer E10, listener: (...args: infer A10) => void): any;
    (event: infer E11, listener: (...args: infer A11) => void): any;
    (event: infer E12, listener: (...args: infer A12) => void): any;
    (event: infer E13, listener: (...args: infer A13) => void): any;
    (event: string, listener: (...args: any[]) => void): any;
} ? TransformedEvent<TThis, E0, A0> & TransformedEvent<TThis, E1, A1> & TransformedEvent<TThis, E2, A2> & TransformedEvent<TThis, E3, A3> & TransformedEvent<TThis, E4, A4> & TransformedEvent<TThis, E5, A5> & TransformedEvent<TThis, E6, A6> & TransformedEvent<TThis, E7, A7> & TransformedEvent<TThis, E8, A8> & TransformedEvent<TThis, E9, A9> & TransformedEvent<TThis, E10, A10> & TransformedEvent<TThis, E11, A11> & TransformedEvent<TThis, E12, A12> & TransformedEvent<TThis, E13, A13> : TEvent extends {
    (event: infer E0, listener: (...args: infer A0) => void): any;
    (event: infer E1, listener: (...args: infer A1) => void): any;
    (event: infer E2, listener: (...args: infer A2) => void): any;
    (event: infer E3, listener: (...args: infer A3) => void): any;
    (event: infer E4, listener: (...args: infer A4) => void): any;
    (event: infer E5, listener: (...args: infer A5) => void): any;
    (event: infer E6, listener: (...args: infer A6) => void): any;
    (event: infer E7, listener: (...args: infer A7) => void): any;
    (event: infer E8, listener: (...args: infer A8) => void): any;
    (event: infer E9, listener: (...args: infer A9) => void): any;
    (event: infer E10, listener: (...args: infer A10) => void): any;
    (event: infer E11, listener: (...args: infer A11) => void): any;
    (event: infer E12, listener: (...args: infer A12) => void): any;
    (event: string, listener: (...args: any[]) => void): any;
} ? TransformedEvent<TThis, E0, A0> & TransformedEvent<TThis, E1, A1> & TransformedEvent<TThis, E2, A2> & TransformedEvent<TThis, E3, A3> & TransformedEvent<TThis, E4, A4> & TransformedEvent<TThis, E5, A5> & TransformedEvent<TThis, E6, A6> & TransformedEvent<TThis, E7, A7> & TransformedEvent<TThis, E8, A8> & TransformedEvent<TThis, E9, A9> & TransformedEvent<TThis, E10, A10> & TransformedEvent<TThis, E11, A11> & TransformedEvent<TThis, E12, A12> : TEvent extends {
    (event: infer E0, listener: (...args: infer A0) => void): any;
    (event: infer E1, listener: (...args: infer A1) => void): any;
    (event: infer E2, listener: (...args: infer A2) => void): any;
    (event: infer E3, listener: (...args: infer A3) => void): any;
    (event: infer E4, listener: (...args: infer A4) => void): any;
    (event: infer E5, listener: (...args: infer A5) => void): any;
    (event: infer E6, listener: (...args: infer A6) => void): any;
    (event: infer E7, listener: (...args: infer A7) => void): any;
    (event: infer E8, listener: (...args: infer A8) => void): any;
    (event: infer E9, listener: (...args: infer A9) => void): any;
    (event: infer E10, listener: (...args: infer A10) => void): any;
    (event: infer E11, listener: (...args: infer A11) => void): any;
    (event: string, listener: (...args: any[]) => void): any;
} ? TransformedEvent<TThis, E0, A0> & TransformedEvent<TThis, E1, A1> & TransformedEvent<TThis, E2, A2> & TransformedEvent<TThis, E3, A3> & TransformedEvent<TThis, E4, A4> & TransformedEvent<TThis, E5, A5> & TransformedEvent<TThis, E6, A6> & TransformedEvent<TThis, E7, A7> & TransformedEvent<TThis, E8, A8> & TransformedEvent<TThis, E9, A9> & TransformedEvent<TThis, E10, A10> & TransformedEvent<TThis, E11, A11> : TEvent extends {
    (event: infer E0, listener: (...args: infer A0) => void): any;
    (event: infer E1, listener: (...args: infer A1) => void): any;
    (event: infer E2, listener: (...args: infer A2) => void): any;
    (event: infer E3, listener: (...args: infer A3) => void): any;
    (event: infer E4, listener: (...args: infer A4) => void): any;
    (event: infer E5, listener: (...args: infer A5) => void): any;
    (event: infer E6, listener: (...args: infer A6) => void): any;
    (event: infer E7, listener: (...args: infer A7) => void): any;
    (event: infer E8, listener: (...args: infer A8) => void): any;
    (event: infer E9, listener: (...args: infer A9) => void): any;
    (event: infer E10, listener: (...args: infer A10) => void): any;
    (event: string, listener: (...args: any[]) => void): any;
} ? TransformedEvent<TThis, E0, A0> & TransformedEvent<TThis, E1, A1> & TransformedEvent<TThis, E2, A2> & TransformedEvent<TThis, E3, A3> & TransformedEvent<TThis, E4, A4> & TransformedEvent<TThis, E5, A5> & TransformedEvent<TThis, E6, A6> & TransformedEvent<TThis, E7, A7> & TransformedEvent<TThis, E8, A8> & TransformedEvent<TThis, E9, A9> & TransformedEvent<TThis, E10, A10> : TEvent extends {
    (event: infer E0, listener: (...args: infer A0) => void): any;
    (event: infer E1, listener: (...args: infer A1) => void): any;
    (event: infer E2, listener: (...args: infer A2) => void): any;
    (event: infer E3, listener: (...args: infer A3) => void): any;
    (event: infer E4, listener: (...args: infer A4) => void): any;
    (event: infer E5, listener: (...args: infer A5) => void): any;
    (event: infer E6, listener: (...args: infer A6) => void): any;
    (event: infer E7, listener: (...args: infer A7) => void): any;
    (event: infer E8, listener: (...args: infer A8) => void): any;
    (event: infer E9, listener: (...args: infer A9) => void): any;
    (event: string, listener: (...args: any[]) => void): any;
} ? TransformedEvent<TThis, E0, A0> & TransformedEvent<TThis, E1, A1> & TransformedEvent<TThis, E2, A2> & TransformedEvent<TThis, E3, A3> & TransformedEvent<TThis, E4, A4> & TransformedEvent<TThis, E5, A5> & TransformedEvent<TThis, E6, A6> & TransformedEvent<TThis, E7, A7> & TransformedEvent<TThis, E8, A8> & TransformedEvent<TThis, E9, A9> : TEvent extends {
    (event: infer E0, listener: (...args: infer A0) => void): any;
    (event: infer E1, listener: (...args: infer A1) => void): any;
    (event: infer E2, listener: (...args: infer A2) => void): any;
    (event: infer E3, listener: (...args: infer A3) => void): any;
    (event: infer E4, listener: (...args: infer A4) => void): any;
    (event: infer E5, listener: (...args: infer A5) => void): any;
    (event: infer E6, listener: (...args: infer A6) => void): any;
    (event: infer E7, listener: (...args: infer A7) => void): any;
    (event: infer E8, listener: (...args: infer A8) => void): any;
    (event: string, listener: (...args: any[]) => void): any;
} ? TransformedEvent<TThis, E0, A0> & TransformedEvent<TThis, E1, A1> & TransformedEvent<TThis, E2, A2> & TransformedEvent<TThis, E3, A3> & TransformedEvent<TThis, E4, A4> & TransformedEvent<TThis, E5, A5> & TransformedEvent<TThis, E6, A6> & TransformedEvent<TThis, E7, A7> & TransformedEvent<TThis, E8, A8> : TEvent extends {
    (event: infer E0, listener: (...args: infer A0) => void): any;
    (event: infer E1, listener: (...args: infer A1) => void): any;
    (event: infer E2, listener: (...args: infer A2) => void): any;
    (event: infer E3, listener: (...args: infer A3) => void): any;
    (event: infer E4, listener: (...args: infer A4) => void): any;
    (event: infer E5, listener: (...args: infer A5) => void): any;
    (event: infer E6, listener: (...args: infer A6) => void): any;
    (event: infer E7, listener: (...args: infer A7) => void): any;
    (event: string, listener: (...args: any[]) => void): any;
} ? TransformedEvent<TThis, E0, A0> & TransformedEvent<TThis, E1, A1> & TransformedEvent<TThis, E2, A2> & TransformedEvent<TThis, E3, A3> & TransformedEvent<TThis, E4, A4> & TransformedEvent<TThis, E5, A5> & TransformedEvent<TThis, E6, A6> & TransformedEvent<TThis, E7, A7> : TEvent extends {
    (event: infer E0, listener: (...args: infer A0) => void): any;
    (event: infer E1, listener: (...args: infer A1) => void): any;
    (event: infer E2, listener: (...args: infer A2) => void): any;
    (event: infer E3, listener: (...args: infer A3) => void): any;
    (event: infer E4, listener: (...args: infer A4) => void): any;
    (event: infer E5, listener: (...args: infer A5) => void): any;
    (event: infer E6, listener: (...args: infer A6) => void): any;
    (event: string, listener: (...args: any[]) => void): any;
} ? TransformedEvent<TThis, E0, A0> & TransformedEvent<TThis, E1, A1> & TransformedEvent<TThis, E2, A2> & TransformedEvent<TThis, E3, A3> & TransformedEvent<TThis, E4, A4> & TransformedEvent<TThis, E5, A5> & TransformedEvent<TThis, E6, A6> : TEvent extends {
    (event: infer E0, listener: (...args: infer A0) => void): any;
    (event: infer E1, listener: (...args: infer A1) => void): any;
    (event: infer E2, listener: (...args: infer A2) => void): any;
    (event: infer E3, listener: (...args: infer A3) => void): any;
    (event: infer E4, listener: (...args: infer A4) => void): any;
    (event: infer E5, listener: (...args: infer A5) => void): any;
    (event: string, listener: (...args: any[]) => void): any;
} ? TransformedEvent<TThis, E0, A0> & TransformedEvent<TThis, E1, A1> & TransformedEvent<TThis, E2, A2> & TransformedEvent<TThis, E3, A3> & TransformedEvent<TThis, E4, A4> & TransformedEvent<TThis, E5, A5> : TEvent extends {
    (event: infer E0, listener: (...args: infer A0) => void): any;
    (event: infer E1, listener: (...args: infer A1) => void): any;
    (event: infer E2, listener: (...args: infer A2) => void): any;
    (event: infer E3, listener: (...args: infer A3) => void): any;
    (event: infer E4, listener: (...args: infer A4) => void): any;
    (event: string, listener: (...args: any[]) => void): any;
} ? TransformedEvent<TThis, E0, A0> & TransformedEvent<TThis, E1, A1> & TransformedEvent<TThis, E2, A2> & TransformedEvent<TThis, E3, A3> & TransformedEvent<TThis, E4, A4> : TEvent extends {
    (event: infer E0, listener: (...args: infer A0) => void): any;
    (event: infer E1, listener: (...args: infer A1) => void): any;
    (event: infer E2, listener: (...args: infer A2) => void): any;
    (event: infer E3, listener: (...args: infer A3) => void): any;
    (event: string, listener: (...args: any[]) => void): any;
} ? TransformedEvent<TThis, E0, A0> & TransformedEvent<TThis, E1, A1> & TransformedEvent<TThis, E2, A2> & TransformedEvent<TThis, E3, A3> : TEvent extends {
    (event: infer E0, listener: (...args: infer A0) => void): any;
    (event: infer E1, listener: (...args: infer A1) => void): any;
    (event: infer E2, listener: (...args: infer A2) => void): any;
    (event: string, listener: (...args: any[]) => void): any;
} ? TransformedEvent<TThis, E0, A0> & TransformedEvent<TThis, E1, A1> & TransformedEvent<TThis, E2, A2> : TEvent extends {
    (event: infer E0, listener: (...args: infer A0) => void): any;
    (event: infer E1, listener: (...args: infer A1) => void): any;
    (event: string, listener: (...args: any[]) => void): any;
} ? TransformedEvent<TThis, E0, A0> & TransformedEvent<TThis, E1, A1> : TEvent extends {
    (event: infer E0, listener: (...args: infer A0) => void): any;
    (event: string, listener: (...args: any[]) => void): any;
} ? TransformedEvent<TThis, E0, A0> : TransformedEvent<TThis, string, any[]>;

IInkOperation

Ink operations are one of several types.

Signature:

export declare type IInkOperation = IClearOperation | ICreateStrokeOperation | IStylusOperation;

ILoaderOptions

Signature:

export declare type ILoaderOptions = {
    [key in string | number]: any;
} & {
    cache?: boolean;
    provideScopeLoader?: boolean;
    noopTimeFrequency?: number;
    noopCountFrequency?: number;
    maxClientLeaveWaitTime?: number;
};

IQuorumEvents

All events fired by an IQuorum, both client tracking and proposal tracking.

Signature:

export declare type IQuorumEvents = IQuorumClientsEvents & IQuorumProposalsEvents;

ISequencedProposal

Similar to IProposal except includes the sequence number when it was made in addition to the fields on IProposal

Signature:

export declare type ISequencedProposal = {
    sequenceNumber: number;
} & IProposal;

ITreeEntry

A tree entry wraps a path with a type of node

Signature:

export declare type ITreeEntry = {
    path: string;
    mode: FileMode;
} & ({
    type: TreeEntry.Blob;
    value: IBlob;
} | {
    type: TreeEntry.Commit;
    value: string;
} | {
    type: TreeEntry.Tree;
    value: ITree;
} | {
    type: TreeEntry.Attachment;
    value: IAttachment;
});

MatrixItem

A matrix cell value may be undefined (indicating an empty cell) or any serializable type, excluding null. (However, nulls may be embedded inside objects and arrays.)

Signature:

export declare type MatrixItem<T> = Serializable<Exclude<T, null>> | undefined;

MatrixSegment

Signature:

export declare type MatrixSegment = RunSegment | PaddingSegment;

ReadOnlyInfo

Signature:

export declare type ReadOnlyInfo = {
    readonly readonly: false | undefined;
} | {
    readonly readonly: true;
    readonly forced: boolean;
    readonly permissions: boolean | undefined;
    readonly storageOnly: boolean;
};

ReplaceIEventThisPlaceHolder

Signature:

export declare type ReplaceIEventThisPlaceHolder<L extends any[], TThis> = L extends any[] ? {
    [K in keyof L]: L[K] extends IEventThisPlaceHolder ? TThis : L[K];
} : L;

SharedStringSegment

Signature:

export declare type SharedStringSegment = MergeTree.TextSegment | MergeTree.Marker;

SparseMatrixItem

Signature:

export declare type SparseMatrixItem = Serializable;

SummaryObject

Signature:

export declare type SummaryObject = ISummaryTree | ISummaryBlob | ISummaryHandle | ISummaryAttachment;

SummaryTree

Signature:

export declare type SummaryTree = ISummaryTree | ISummaryHandle;

SummaryTypeNoHandle

Signature:

export declare type SummaryTypeNoHandle = SummaryType.Tree | SummaryType.Blob | SummaryType.Attachment;

TelemetryEventCategory

Signature:

export declare type TelemetryEventCategory = "generic" | "error" | "performance";

TelemetryEventPropertyType

Signature:

export declare type TelemetryEventPropertyType = string | number | boolean | undefined;

TransformedEvent

Signature:

export declare type TransformedEvent<TThis, E, A extends any[]> = (event: E, listener: (...args: ReplaceIEventThisPlaceHolder<A, TThis>) => void) => TThis;