fluid-framework 2.3.0-288113 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1012 @@
1
+ ## Alpha API Report File for "fluid-framework"
2
+
3
+ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
4
+
5
+ ```ts
6
+
7
+ // @public
8
+ export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
9
+
10
+ // @public
11
+ type ApplyKind<T, Kind extends FieldKind, DefaultsAreOptional extends boolean> = {
12
+ [FieldKind.Required]: T;
13
+ [FieldKind.Optional]: T | undefined;
14
+ [FieldKind.Identifier]: DefaultsAreOptional extends true ? T | undefined : T;
15
+ }[Kind];
16
+
17
+ // @public
18
+ export enum AttachState {
19
+ Attached = "Attached",
20
+ Attaching = "Attaching",
21
+ Detached = "Detached"
22
+ }
23
+
24
+ // @public
25
+ export enum CommitKind {
26
+ Default = 0,
27
+ Redo = 2,
28
+ Undo = 1
29
+ }
30
+
31
+ // @public @sealed
32
+ export interface CommitMetadata {
33
+ readonly isLocal: boolean;
34
+ readonly kind: CommitKind;
35
+ }
36
+
37
+ // @public
38
+ export enum ConnectionState {
39
+ CatchingUp = 1,
40
+ Connected = 2,
41
+ Disconnected = 0,
42
+ EstablishingConnection = 3
43
+ }
44
+
45
+ // @public
46
+ export namespace ConnectionStateType {
47
+ export type CatchingUp = 1;
48
+ export type Connected = 2;
49
+ export type Disconnected = 0;
50
+ export type EstablishingConnection = 3;
51
+ }
52
+
53
+ // @public
54
+ export type ConnectionStateType = ConnectionStateType.Disconnected | ConnectionStateType.EstablishingConnection | ConnectionStateType.CatchingUp | ConnectionStateType.Connected;
55
+
56
+ // @public
57
+ export type ContainerAttachProps<T = unknown> = T;
58
+
59
+ // @public
60
+ export interface ContainerSchema {
61
+ readonly dynamicObjectTypes?: readonly SharedObjectKind[];
62
+ readonly initialObjects: Record<string, SharedObjectKind>;
63
+ }
64
+
65
+ // @public @sealed
66
+ interface DefaultProvider extends ErasedType<"@fluidframework/tree.FieldProvider"> {
67
+ }
68
+
69
+ // @public @sealed
70
+ export abstract class ErasedType<out Name = unknown> {
71
+ static [Symbol.hasInstance](value: never): value is never;
72
+ protected abstract brand(dummy: never): Name;
73
+ }
74
+
75
+ // @public
76
+ type ExtractItemType<Item extends LazyItem> = Item extends () => infer Result ? Result : Item;
77
+
78
+ // @public
79
+ type FieldHasDefault<T extends ImplicitFieldSchema> = T extends FieldSchema<FieldKind.Optional | FieldKind.Identifier> ? true : false;
80
+
81
+ // @public @sealed
82
+ type FieldHasDefaultUnsafe<T extends Unenforced<ImplicitFieldSchema>> = T extends FieldSchemaUnsafe<FieldKind.Optional | FieldKind.Identifier, Unenforced<ImplicitAllowedTypes>> ? true : false;
83
+
84
+ // @public
85
+ export enum FieldKind {
86
+ Identifier = 2,
87
+ Optional = 0,
88
+ Required = 1
89
+ }
90
+
91
+ // @public
92
+ export interface FieldProps {
93
+ readonly defaultProvider?: DefaultProvider;
94
+ readonly key?: string;
95
+ }
96
+
97
+ // @public @sealed
98
+ export class FieldSchema<out Kind extends FieldKind = FieldKind, out Types extends ImplicitAllowedTypes = ImplicitAllowedTypes> {
99
+ readonly allowedTypes: Types;
100
+ get allowedTypeSet(): ReadonlySet<TreeNodeSchema>;
101
+ readonly kind: Kind;
102
+ readonly props?: FieldProps | undefined;
103
+ readonly requiresValue: boolean;
104
+ protected _typeCheck: MakeNominal;
105
+ }
106
+
107
+ // @public
108
+ export interface FieldSchemaUnsafe<out Kind extends FieldKind, out Types extends Unenforced<ImplicitAllowedTypes>> extends FieldSchema<Kind, any> {
109
+ readonly allowedTypes: Types;
110
+ readonly allowedTypeSet: ReadonlySet<TreeNodeSchema>;
111
+ readonly kind: Kind;
112
+ }
113
+
114
+ // @alpha
115
+ export type FixRecursiveArraySchema<T> = T extends TreeNodeSchema ? undefined : undefined;
116
+
117
+ // @public
118
+ type FlattenKeys<T> = [{
119
+ [Property in keyof T]: T[Property];
120
+ }][_InlineTrick];
121
+
122
+ // @public
123
+ type FlexList<Item = unknown> = readonly LazyItem<Item>[];
124
+
125
+ // @public
126
+ type FlexListToUnion<TList extends FlexList> = ExtractItemType<TList[number]>;
127
+
128
+ // @public
129
+ export type FluidObject<T = unknown> = {
130
+ [P in FluidObjectProviderKeys<T>]?: T[P];
131
+ };
132
+
133
+ // @public
134
+ export type FluidObjectProviderKeys<T, TProp extends keyof T = keyof T> = string extends TProp ? never : number extends TProp ? never : TProp extends keyof Required<T>[TProp] ? Required<T>[TProp] extends Required<Required<T>[TProp]>[TProp] ? TProp : never : never;
135
+
136
+ // @alpha
137
+ export function getJsonSchema(schema: ImplicitAllowedTypes): JsonTreeSchema;
138
+
139
+ // @public
140
+ export interface IConnection {
141
+ readonly id: string;
142
+ readonly mode: "write" | "read";
143
+ }
144
+
145
+ // @public
146
+ export type ICriticalContainerError = IErrorBase;
147
+
148
+ // @public @sealed
149
+ export interface IDisposable {
150
+ dispose(error?: Error): void;
151
+ readonly disposed: boolean;
152
+ }
153
+
154
+ // @public
155
+ export interface IErrorBase extends Partial<Error> {
156
+ readonly errorType: string;
157
+ getTelemetryProperties?(): ITelemetryBaseProperties;
158
+ readonly message: string;
159
+ readonly name?: string;
160
+ readonly stack?: string;
161
+ }
162
+
163
+ // @public
164
+ export interface IErrorEvent extends IEvent {
165
+ // @eventProperty
166
+ (event: "error", listener: (message: any) => void): any;
167
+ }
168
+
169
+ // @public
170
+ export interface IEvent {
171
+ // @eventProperty
172
+ (event: string, listener: (...args: any[]) => void): any;
173
+ }
174
+
175
+ // @public @sealed
176
+ export interface IEventProvider<TEvent extends IEvent> {
177
+ readonly off: IEventTransformer<this, TEvent>;
178
+ readonly on: IEventTransformer<this, TEvent>;
179
+ readonly once: IEventTransformer<this, TEvent>;
180
+ }
181
+
182
+ // @public
183
+ export type IEventThisPlaceHolder = {
184
+ thisPlaceHolder: "thisPlaceHolder";
185
+ };
186
+
187
+ // @public
188
+ export type IEventTransformer<TThis, TEvent extends IEvent> = TEvent extends {
189
+ (event: infer E0, listener: (...args: infer A0) => void): any;
190
+ (event: infer E1, listener: (...args: infer A1) => void): any;
191
+ (event: infer E2, listener: (...args: infer A2) => void): any;
192
+ (event: infer E3, listener: (...args: infer A3) => void): any;
193
+ (event: infer E4, listener: (...args: infer A4) => void): any;
194
+ (event: infer E5, listener: (...args: infer A5) => void): any;
195
+ (event: infer E6, listener: (...args: infer A6) => void): any;
196
+ (event: infer E7, listener: (...args: infer A7) => void): any;
197
+ (event: infer E8, listener: (...args: infer A8) => void): any;
198
+ (event: infer E9, listener: (...args: infer A9) => void): any;
199
+ (event: infer E10, listener: (...args: infer A10) => void): any;
200
+ (event: infer E11, listener: (...args: infer A11) => void): any;
201
+ (event: infer E12, listener: (...args: infer A12) => void): any;
202
+ (event: infer E13, listener: (...args: infer A13) => void): any;
203
+ (event: infer E14, listener: (...args: infer A14) => void): any;
204
+ (event: string, listener: (...args: any[]) => void): any;
205
+ } ? 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 {
206
+ (event: infer E0, listener: (...args: infer A0) => void): any;
207
+ (event: infer E1, listener: (...args: infer A1) => void): any;
208
+ (event: infer E2, listener: (...args: infer A2) => void): any;
209
+ (event: infer E3, listener: (...args: infer A3) => void): any;
210
+ (event: infer E4, listener: (...args: infer A4) => void): any;
211
+ (event: infer E5, listener: (...args: infer A5) => void): any;
212
+ (event: infer E6, listener: (...args: infer A6) => void): any;
213
+ (event: infer E7, listener: (...args: infer A7) => void): any;
214
+ (event: infer E8, listener: (...args: infer A8) => void): any;
215
+ (event: infer E9, listener: (...args: infer A9) => void): any;
216
+ (event: infer E10, listener: (...args: infer A10) => void): any;
217
+ (event: infer E11, listener: (...args: infer A11) => void): any;
218
+ (event: infer E12, listener: (...args: infer A12) => void): any;
219
+ (event: infer E13, listener: (...args: infer A13) => void): any;
220
+ (event: string, listener: (...args: any[]) => void): any;
221
+ } ? 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 {
222
+ (event: infer E0, listener: (...args: infer A0) => void): any;
223
+ (event: infer E1, listener: (...args: infer A1) => void): any;
224
+ (event: infer E2, listener: (...args: infer A2) => void): any;
225
+ (event: infer E3, listener: (...args: infer A3) => void): any;
226
+ (event: infer E4, listener: (...args: infer A4) => void): any;
227
+ (event: infer E5, listener: (...args: infer A5) => void): any;
228
+ (event: infer E6, listener: (...args: infer A6) => void): any;
229
+ (event: infer E7, listener: (...args: infer A7) => void): any;
230
+ (event: infer E8, listener: (...args: infer A8) => void): any;
231
+ (event: infer E9, listener: (...args: infer A9) => void): any;
232
+ (event: infer E10, listener: (...args: infer A10) => void): any;
233
+ (event: infer E11, listener: (...args: infer A11) => void): any;
234
+ (event: infer E12, listener: (...args: infer A12) => void): any;
235
+ (event: string, listener: (...args: any[]) => void): any;
236
+ } ? 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 {
237
+ (event: infer E0, listener: (...args: infer A0) => void): any;
238
+ (event: infer E1, listener: (...args: infer A1) => void): any;
239
+ (event: infer E2, listener: (...args: infer A2) => void): any;
240
+ (event: infer E3, listener: (...args: infer A3) => void): any;
241
+ (event: infer E4, listener: (...args: infer A4) => void): any;
242
+ (event: infer E5, listener: (...args: infer A5) => void): any;
243
+ (event: infer E6, listener: (...args: infer A6) => void): any;
244
+ (event: infer E7, listener: (...args: infer A7) => void): any;
245
+ (event: infer E8, listener: (...args: infer A8) => void): any;
246
+ (event: infer E9, listener: (...args: infer A9) => void): any;
247
+ (event: infer E10, listener: (...args: infer A10) => void): any;
248
+ (event: infer E11, listener: (...args: infer A11) => void): any;
249
+ (event: string, listener: (...args: any[]) => void): any;
250
+ } ? 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 {
251
+ (event: infer E0, listener: (...args: infer A0) => void): any;
252
+ (event: infer E1, listener: (...args: infer A1) => void): any;
253
+ (event: infer E2, listener: (...args: infer A2) => void): any;
254
+ (event: infer E3, listener: (...args: infer A3) => void): any;
255
+ (event: infer E4, listener: (...args: infer A4) => void): any;
256
+ (event: infer E5, listener: (...args: infer A5) => void): any;
257
+ (event: infer E6, listener: (...args: infer A6) => void): any;
258
+ (event: infer E7, listener: (...args: infer A7) => void): any;
259
+ (event: infer E8, listener: (...args: infer A8) => void): any;
260
+ (event: infer E9, listener: (...args: infer A9) => void): any;
261
+ (event: infer E10, listener: (...args: infer A10) => void): any;
262
+ (event: string, listener: (...args: any[]) => void): any;
263
+ } ? 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 {
264
+ (event: infer E0, listener: (...args: infer A0) => void): any;
265
+ (event: infer E1, listener: (...args: infer A1) => void): any;
266
+ (event: infer E2, listener: (...args: infer A2) => void): any;
267
+ (event: infer E3, listener: (...args: infer A3) => void): any;
268
+ (event: infer E4, listener: (...args: infer A4) => void): any;
269
+ (event: infer E5, listener: (...args: infer A5) => void): any;
270
+ (event: infer E6, listener: (...args: infer A6) => void): any;
271
+ (event: infer E7, listener: (...args: infer A7) => void): any;
272
+ (event: infer E8, listener: (...args: infer A8) => void): any;
273
+ (event: infer E9, listener: (...args: infer A9) => void): any;
274
+ (event: string, listener: (...args: any[]) => void): any;
275
+ } ? 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 {
276
+ (event: infer E0, listener: (...args: infer A0) => void): any;
277
+ (event: infer E1, listener: (...args: infer A1) => void): any;
278
+ (event: infer E2, listener: (...args: infer A2) => void): any;
279
+ (event: infer E3, listener: (...args: infer A3) => void): any;
280
+ (event: infer E4, listener: (...args: infer A4) => void): any;
281
+ (event: infer E5, listener: (...args: infer A5) => void): any;
282
+ (event: infer E6, listener: (...args: infer A6) => void): any;
283
+ (event: infer E7, listener: (...args: infer A7) => void): any;
284
+ (event: infer E8, listener: (...args: infer A8) => void): any;
285
+ (event: string, listener: (...args: any[]) => void): any;
286
+ } ? 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 {
287
+ (event: infer E0, listener: (...args: infer A0) => void): any;
288
+ (event: infer E1, listener: (...args: infer A1) => void): any;
289
+ (event: infer E2, listener: (...args: infer A2) => void): any;
290
+ (event: infer E3, listener: (...args: infer A3) => void): any;
291
+ (event: infer E4, listener: (...args: infer A4) => void): any;
292
+ (event: infer E5, listener: (...args: infer A5) => void): any;
293
+ (event: infer E6, listener: (...args: infer A6) => void): any;
294
+ (event: infer E7, listener: (...args: infer A7) => void): any;
295
+ (event: string, listener: (...args: any[]) => void): any;
296
+ } ? 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 {
297
+ (event: infer E0, listener: (...args: infer A0) => void): any;
298
+ (event: infer E1, listener: (...args: infer A1) => void): any;
299
+ (event: infer E2, listener: (...args: infer A2) => void): any;
300
+ (event: infer E3, listener: (...args: infer A3) => void): any;
301
+ (event: infer E4, listener: (...args: infer A4) => void): any;
302
+ (event: infer E5, listener: (...args: infer A5) => void): any;
303
+ (event: infer E6, listener: (...args: infer A6) => void): any;
304
+ (event: string, listener: (...args: any[]) => void): any;
305
+ } ? 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 {
306
+ (event: infer E0, listener: (...args: infer A0) => void): any;
307
+ (event: infer E1, listener: (...args: infer A1) => void): any;
308
+ (event: infer E2, listener: (...args: infer A2) => void): any;
309
+ (event: infer E3, listener: (...args: infer A3) => void): any;
310
+ (event: infer E4, listener: (...args: infer A4) => void): any;
311
+ (event: infer E5, listener: (...args: infer A5) => void): any;
312
+ (event: string, listener: (...args: any[]) => void): any;
313
+ } ? 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 {
314
+ (event: infer E0, listener: (...args: infer A0) => void): any;
315
+ (event: infer E1, listener: (...args: infer A1) => void): any;
316
+ (event: infer E2, listener: (...args: infer A2) => void): any;
317
+ (event: infer E3, listener: (...args: infer A3) => void): any;
318
+ (event: infer E4, listener: (...args: infer A4) => void): any;
319
+ (event: string, listener: (...args: any[]) => void): any;
320
+ } ? TransformedEvent<TThis, E0, A0> & TransformedEvent<TThis, E1, A1> & TransformedEvent<TThis, E2, A2> & TransformedEvent<TThis, E3, A3> & TransformedEvent<TThis, E4, A4> : TEvent extends {
321
+ (event: infer E0, listener: (...args: infer A0) => void): any;
322
+ (event: infer E1, listener: (...args: infer A1) => void): any;
323
+ (event: infer E2, listener: (...args: infer A2) => void): any;
324
+ (event: infer E3, listener: (...args: infer A3) => void): any;
325
+ (event: string, listener: (...args: any[]) => void): any;
326
+ } ? TransformedEvent<TThis, E0, A0> & TransformedEvent<TThis, E1, A1> & TransformedEvent<TThis, E2, A2> & TransformedEvent<TThis, E3, A3> : TEvent extends {
327
+ (event: infer E0, listener: (...args: infer A0) => void): any;
328
+ (event: infer E1, listener: (...args: infer A1) => void): any;
329
+ (event: infer E2, listener: (...args: infer A2) => void): any;
330
+ (event: string, listener: (...args: any[]) => void): any;
331
+ } ? TransformedEvent<TThis, E0, A0> & TransformedEvent<TThis, E1, A1> & TransformedEvent<TThis, E2, A2> : TEvent extends {
332
+ (event: infer E0, listener: (...args: infer A0) => void): any;
333
+ (event: infer E1, listener: (...args: infer A1) => void): any;
334
+ (event: string, listener: (...args: any[]) => void): any;
335
+ } ? TransformedEvent<TThis, E0, A0> & TransformedEvent<TThis, E1, A1> : TEvent extends {
336
+ (event: infer E0, listener: (...args: infer A0) => void): any;
337
+ (event: string, listener: (...args: any[]) => void): any;
338
+ } ? TransformedEvent<TThis, E0, A0> : TransformedEvent<TThis, string, any[]>;
339
+
340
+ // @public @sealed
341
+ export interface IFluidContainer<TContainerSchema extends ContainerSchema = ContainerSchema> extends IEventProvider<IFluidContainerEvents> {
342
+ attach(props?: ContainerAttachProps): Promise<string>;
343
+ readonly attachState: AttachState;
344
+ connect(): void;
345
+ readonly connectionState: ConnectionStateType;
346
+ create<T extends IFluidLoadable>(objectClass: SharedObjectKind<T>): Promise<T>;
347
+ disconnect(): void;
348
+ dispose(): void;
349
+ readonly disposed: boolean;
350
+ readonly initialObjects: InitialObjects<TContainerSchema>;
351
+ readonly isDirty: boolean;
352
+ }
353
+
354
+ // @public @sealed
355
+ export interface IFluidContainerEvents extends IEvent {
356
+ (event: "connected", listener: () => void): void;
357
+ (event: "disconnected", listener: () => void): void;
358
+ (event: "saved", listener: () => void): void;
359
+ (event: "dirty", listener: () => void): void;
360
+ (event: "disposed", listener: (error?: ICriticalContainerError) => void): any;
361
+ }
362
+
363
+ // @public (undocumented)
364
+ export const IFluidHandle = "IFluidHandle";
365
+
366
+ // @public @sealed
367
+ export interface IFluidHandle<out T = unknown> {
368
+ readonly [fluidHandleSymbol]: IFluidHandleErased<T>;
369
+ get(): Promise<T>;
370
+ readonly isAttached: boolean;
371
+ }
372
+
373
+ // @public @sealed
374
+ export interface IFluidHandleErased<T> extends ErasedType<readonly ["IFluidHandle", T]> {
375
+ }
376
+
377
+ // @public (undocumented)
378
+ export const IFluidLoadable: keyof IProvideFluidLoadable;
379
+
380
+ // @public @sealed
381
+ export interface IFluidLoadable extends IProvideFluidLoadable {
382
+ // (undocumented)
383
+ readonly handle: IFluidHandle;
384
+ }
385
+
386
+ // @public
387
+ export interface IMember {
388
+ readonly connections: IConnection[];
389
+ readonly id: string;
390
+ }
391
+
392
+ // @public
393
+ export type ImplicitAllowedTypes = AllowedTypes | TreeNodeSchema;
394
+
395
+ // @public
396
+ export type ImplicitFieldSchema = FieldSchema | ImplicitAllowedTypes;
397
+
398
+ // @public
399
+ export type InitialObjects<T extends ContainerSchema> = {
400
+ [K in keyof T["initialObjects"]]: T["initialObjects"][K] extends SharedObjectKind<infer TChannel> ? TChannel : never;
401
+ };
402
+
403
+ // @public
404
+ type _InlineTrick = 0;
405
+
406
+ // @public
407
+ type InsertableObjectFromSchemaRecord<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>> = FlattenKeys<{
408
+ readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property]>;
409
+ } & {
410
+ readonly [Property in keyof T as FieldHasDefault<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property]>;
411
+ }>;
412
+
413
+ // @public
414
+ export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>> = {
415
+ readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
416
+ } & {
417
+ readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends true ? Property : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
418
+ };
419
+
420
+ // @public
421
+ export type InsertableTreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypes<Types>, Kind, true> : TSchema extends ImplicitAllowedTypes ? InsertableTreeNodeFromImplicitAllowedTypes<TSchema> : unknown;
422
+
423
+ // @public
424
+ export type InsertableTreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, true> : InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema>;
425
+
426
+ // @public
427
+ export type InsertableTreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? InsertableTypedNode<TSchema> : TSchema extends AllowedTypes ? InsertableTypedNode<FlexListToUnion<TSchema>> : never;
428
+
429
+ // @public
430
+ export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends AllowedTypes ? InsertableTypedNodeUnsafe<FlexListToUnion<TSchema>> : InsertableTypedNodeUnsafe<TSchema>;
431
+
432
+ // @public
433
+ export type InsertableTypedNode<T extends TreeNodeSchema> = (T extends {
434
+ implicitlyConstructable: true;
435
+ } ? NodeBuilderData<T> : never) | Unhydrated<NodeFromSchema<T>>;
436
+
437
+ // @public
438
+ type InsertableTypedNodeUnsafe<T extends Unenforced<TreeNodeSchema>> = [
439
+ Unhydrated<NodeFromSchemaUnsafe<T>> | (T extends {
440
+ implicitlyConstructable: true;
441
+ } ? NodeBuilderDataUnsafe<T> : never)
442
+ ][_InlineTrick];
443
+
444
+ // @public @sealed
445
+ export interface InternalTreeNode extends ErasedType<"@fluidframework/tree.InternalTreeNode"> {
446
+ }
447
+
448
+ declare namespace InternalTypes {
449
+ export {
450
+ _InlineTrick,
451
+ FlattenKeys,
452
+ ApplyKind,
453
+ NodeBuilderData,
454
+ FieldHasDefault,
455
+ TreeNodeSchemaNonClass,
456
+ TreeArrayNodeBase,
457
+ ScopedSchemaName,
458
+ DefaultProvider,
459
+ typeNameSymbol,
460
+ InsertableObjectFromSchemaRecord,
461
+ ObjectFromSchemaRecord,
462
+ FieldHasDefaultUnsafe,
463
+ ObjectFromSchemaRecordUnsafe,
464
+ TreeObjectNodeUnsafe,
465
+ TreeFieldFromImplicitFieldUnsafe,
466
+ TreeNodeFromImplicitAllowedTypesUnsafe,
467
+ InsertableTreeNodeFromImplicitAllowedTypesUnsafe,
468
+ TreeArrayNodeUnsafe,
469
+ TreeMapNodeUnsafe,
470
+ InsertableObjectFromSchemaRecordUnsafe,
471
+ InsertableTreeFieldFromImplicitFieldUnsafe,
472
+ InsertableTypedNodeUnsafe,
473
+ NodeBuilderDataUnsafe,
474
+ NodeFromSchemaUnsafe,
475
+ ReadonlyMapInlined,
476
+ FlexList,
477
+ FlexListToUnion,
478
+ ExtractItemType,
479
+ TreeApi
480
+ }
481
+ }
482
+ export { InternalTypes }
483
+
484
+ // @public (undocumented)
485
+ export interface IProvideFluidLoadable {
486
+ // (undocumented)
487
+ readonly IFluidLoadable: IFluidLoadable;
488
+ }
489
+
490
+ // @public
491
+ export interface IServiceAudience<M extends IMember> extends IEventProvider<IServiceAudienceEvents<M>> {
492
+ getMembers(): ReadonlyMap<string, M>;
493
+ getMyself(): Myself<M> | undefined;
494
+ }
495
+
496
+ // @public
497
+ export interface IServiceAudienceEvents<M extends IMember> extends IEvent {
498
+ // @eventProperty
499
+ (event: "membersChanged", listener: () => void): void;
500
+ // @eventProperty
501
+ (event: "memberAdded", listener: MemberChangedListener<M>): void;
502
+ // @eventProperty
503
+ (event: "memberRemoved", listener: MemberChangedListener<M>): void;
504
+ }
505
+
506
+ // @public
507
+ export function isFluidHandle(value: unknown): value is IFluidHandle;
508
+
509
+ // @public
510
+ export type IsListener<TListener> = TListener extends (...args: any[]) => void ? true : false;
511
+
512
+ // @public
513
+ export interface ITelemetryBaseProperties {
514
+ [index: string]: TelemetryBaseEventPropertyType | Tagged<TelemetryBaseEventPropertyType>;
515
+ }
516
+
517
+ // @public @sealed
518
+ export class IterableTreeArrayContent<T> implements Iterable<T> {
519
+ [Symbol.iterator](): Iterator<T>;
520
+ }
521
+
522
+ // @public @sealed
523
+ export interface ITree extends IFluidLoadable {
524
+ viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): TreeView<TRoot>;
525
+ }
526
+
527
+ // @public
528
+ export interface ITreeConfigurationOptions {
529
+ enableSchemaValidation?: boolean;
530
+ readonly preventAmbiguity?: boolean;
531
+ }
532
+
533
+ // @public
534
+ export interface ITreeViewConfiguration<TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> extends ITreeConfigurationOptions {
535
+ readonly schema: TSchema;
536
+ }
537
+
538
+ // @alpha @sealed
539
+ export interface JsonArrayNodeSchema extends JsonNodeSchemaBase<NodeKind.Array, "array"> {
540
+ readonly items: {
541
+ anyOf: JsonSchemaRef[];
542
+ };
543
+ }
544
+
545
+ // @alpha @sealed
546
+ export interface JsonFieldSchema {
547
+ readonly anyOf: JsonSchemaRef[];
548
+ }
549
+
550
+ // @alpha @sealed
551
+ export interface JsonLeafNodeSchema extends JsonNodeSchemaBase<NodeKind.Leaf, JsonLeafSchemaType> {
552
+ readonly type: JsonLeafSchemaType;
553
+ }
554
+
555
+ // @alpha
556
+ export type JsonLeafSchemaType = "string" | "number" | "boolean" | "null";
557
+
558
+ // @alpha @sealed
559
+ export interface JsonMapNodeSchema extends JsonNodeSchemaBase<NodeKind.Map, "object"> {
560
+ readonly patternProperties: {
561
+ "^.*$": JsonFieldSchema;
562
+ };
563
+ }
564
+
565
+ // @alpha
566
+ export type JsonNodeSchema = JsonLeafNodeSchema | JsonMapNodeSchema | JsonArrayNodeSchema | JsonObjectNodeSchema;
567
+
568
+ // @alpha @sealed
569
+ export interface JsonNodeSchemaBase<TNodeKind extends NodeKind, TJsonSchemaType extends JsonSchemaType> {
570
+ readonly _treeNodeSchemaKind: TNodeKind;
571
+ readonly type: TJsonSchemaType;
572
+ }
573
+
574
+ // @alpha @sealed
575
+ export interface JsonObjectNodeSchema extends JsonNodeSchemaBase<NodeKind.Object, "object"> {
576
+ readonly additionalProperties?: boolean;
577
+ readonly properties: Record<string, JsonFieldSchema>;
578
+ readonly required?: string[];
579
+ }
580
+
581
+ // @alpha
582
+ export type JsonRefPath = `#/$defs/${JsonSchemaId}`;
583
+
584
+ // @alpha
585
+ export type JsonSchemaId = string;
586
+
587
+ // @alpha @sealed
588
+ export interface JsonSchemaRef {
589
+ $ref: JsonRefPath;
590
+ }
591
+
592
+ // @alpha
593
+ export type JsonSchemaType = "object" | "array" | JsonLeafSchemaType;
594
+
595
+ // @alpha @sealed
596
+ export interface JsonTreeSchema extends JsonFieldSchema {
597
+ readonly $defs: Record<JsonSchemaId, JsonNodeSchema>;
598
+ }
599
+
600
+ // @public
601
+ export type LazyItem<Item = unknown> = Item | (() => Item);
602
+
603
+ // @public @sealed
604
+ export interface Listenable<TListeners extends object> {
605
+ on<K extends keyof Listeners<TListeners>>(eventName: K, listener: TListeners[K]): Off;
606
+ }
607
+
608
+ // @public
609
+ export type Listeners<T extends object> = {
610
+ [P in (string | symbol) & keyof T as IsListener<T[P]> extends true ? P : never]: T[P];
611
+ };
612
+
613
+ // @public @sealed
614
+ export interface MakeNominal {
615
+ }
616
+
617
+ // @public
618
+ export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<readonly [string, InsertableTreeNodeFromImplicitAllowedTypes<T>]> | RestrictiveReadonlyRecord<string, InsertableTreeNodeFromImplicitAllowedTypes<T>>;
619
+
620
+ // @public
621
+ export type MemberChangedListener<M extends IMember> = (clientId: string, member: M) => void;
622
+
623
+ // @public
624
+ export type Myself<M extends IMember = IMember> = M & {
625
+ readonly currentConnection: string;
626
+ };
627
+
628
+ // @public
629
+ type NodeBuilderData<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
630
+
631
+ // @public
632
+ type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
633
+
634
+ // @beta @sealed
635
+ export interface NodeChangedData<TNode extends TreeNode = TreeNode> {
636
+ readonly changedProperties?: ReadonlySet<TNode extends WithType<string, NodeKind.Object, infer TInfo> ? string & keyof TInfo : string>;
637
+ }
638
+
639
+ // @public
640
+ export type NodeFromSchema<T extends TreeNodeSchema> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
641
+
642
+ // @public
643
+ type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> = T extends TreeNodeSchema<string, NodeKind, infer TNode> ? TNode : never;
644
+
645
+ // @public
646
+ export interface NodeInDocumentConstraint {
647
+ // (undocumented)
648
+ readonly node: TreeNode;
649
+ // (undocumented)
650
+ readonly type: "nodeInDocument";
651
+ }
652
+
653
+ // @public
654
+ export enum NodeKind {
655
+ Array = 1,
656
+ Leaf = 3,
657
+ Map = 0,
658
+ Object = 2
659
+ }
660
+
661
+ // @public
662
+ type ObjectFromSchemaRecord<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>> = {
663
+ -readonly [Property in keyof T]: TreeFieldFromImplicitField<T[Property]>;
664
+ };
665
+
666
+ // @public
667
+ type ObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>> = {
668
+ -readonly [Property in keyof T]: TreeFieldFromImplicitFieldUnsafe<T[Property]>;
669
+ };
670
+
671
+ // @public
672
+ export type Off = () => void;
673
+
674
+ // @public @sealed
675
+ interface ReadonlyMapInlined<K, T extends Unenforced<ImplicitAllowedTypes>> {
676
+ [Symbol.iterator](): IterableIterator<[K, TreeNodeFromImplicitAllowedTypesUnsafe<T>]>;
677
+ entries(): IterableIterator<[K, TreeNodeFromImplicitAllowedTypesUnsafe<T>]>;
678
+ // (undocumented)
679
+ forEach(callbackfn: (value: TreeNodeFromImplicitAllowedTypesUnsafe<T>, key: K, map: ReadonlyMap<K, TreeNodeFromImplicitAllowedTypesUnsafe<T>>) => void, thisArg?: any): void;
680
+ // (undocumented)
681
+ get(key: K): TreeNodeFromImplicitAllowedTypesUnsafe<T> | undefined;
682
+ // (undocumented)
683
+ has(key: K): boolean;
684
+ keys(): IterableIterator<K>;
685
+ // (undocumented)
686
+ readonly size: number;
687
+ values(): IterableIterator<TreeNodeFromImplicitAllowedTypesUnsafe<T>>;
688
+ }
689
+
690
+ // @public
691
+ export type ReplaceIEventThisPlaceHolder<L extends any[], TThis> = L extends any[] ? {
692
+ [K in keyof L]: L[K] extends IEventThisPlaceHolder ? TThis : L[K];
693
+ } : L;
694
+
695
+ // @public
696
+ export type RestrictiveReadonlyRecord<K extends symbol | string, T> = {
697
+ readonly [P in symbol | string]: P extends K ? T : never;
698
+ };
699
+
700
+ // @public @sealed
701
+ export interface Revertible {
702
+ dispose(): void;
703
+ revert(): void;
704
+ revert(dispose: boolean): void;
705
+ readonly status: RevertibleStatus;
706
+ }
707
+
708
+ // @public @sealed
709
+ export type RevertibleFactory = (onRevertibleDisposed?: (revertible: Revertible) => void) => Revertible;
710
+
711
+ // @public
712
+ export enum RevertibleStatus {
713
+ Disposed = 1,
714
+ Valid = 0
715
+ }
716
+
717
+ // @public
718
+ export const rollback: unique symbol;
719
+
720
+ // @public @sealed
721
+ export interface RunTransaction {
722
+ <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult): TResult;
723
+ <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult): TResult;
724
+ <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult | typeof rollback): TResult | typeof rollback;
725
+ <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback): TResult | typeof rollback;
726
+ <TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void): void;
727
+ <TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void): void;
728
+ <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
729
+ <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult, preconditions?: readonly TransactionConstraint[]): TResult;
730
+ <TNode extends TreeNode, TResult>(node: TNode, transaction: (node: TNode) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
731
+ <TView extends TreeView<ImplicitFieldSchema>, TResult>(tree: TView, transaction: (root: TView["root"]) => TResult | typeof rollback, preconditions?: readonly TransactionConstraint[]): TResult | typeof rollback;
732
+ <TNode extends TreeNode>(node: TNode, transaction: (node: TNode) => void, preconditions?: readonly TransactionConstraint[]): void;
733
+ <TView extends TreeView<ImplicitFieldSchema>>(tree: TView, transaction: (root: TView["root"]) => void, preconditions?: readonly TransactionConstraint[]): void;
734
+ readonly rollback: typeof rollback;
735
+ }
736
+
737
+ // @public @sealed
738
+ export interface SchemaCompatibilityStatus {
739
+ readonly canInitialize: boolean;
740
+ readonly canUpgrade: boolean;
741
+ readonly canView: boolean;
742
+ readonly isEquivalent: boolean;
743
+ }
744
+
745
+ // @public @sealed
746
+ export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> {
747
+ constructor(scope: TScope);
748
+ array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchema<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
749
+ array<const Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T>;
750
+ arrayRecursive<const Name extends TName, const T extends Unenforced<ImplicitAllowedTypes>>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, TreeArrayNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Array, unknown>, {
751
+ [Symbol.iterator](): Iterator<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>;
752
+ }, false, T>;
753
+ readonly boolean: TreeNodeSchema<"com.fluidframework.leaf.boolean", NodeKind.Leaf, boolean, boolean>;
754
+ readonly handle: TreeNodeSchema<"com.fluidframework.leaf.handle", NodeKind.Leaf, IFluidHandle<unknown>, IFluidHandle<unknown>>;
755
+ get identifier(): FieldSchema<FieldKind.Identifier, typeof SchemaFactory.string>;
756
+ map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchema<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map>, MapNodeInsertableData<T>, true, T>;
757
+ map<Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map>, MapNodeInsertableData<T>, true, T>;
758
+ mapRecursive<Name extends TName, const T extends Unenforced<ImplicitAllowedTypes>>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map, unknown>, {
759
+ [Symbol.iterator](): Iterator<[
760
+ string,
761
+ InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>
762
+ ]>;
763
+ }, false, T>;
764
+ readonly null: TreeNodeSchema<"com.fluidframework.leaf.null", NodeKind.Leaf, null, null>;
765
+ readonly number: TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
766
+ object<const Name extends TName, const T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>(name: Name, fields: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
767
+ objectRecursive<const Name extends TName, const T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & { readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>; } & { readonly [Property_1 in keyof T as FieldHasDefaultUnsafe<T[Property_1]> extends true ? Property_1 : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property_1]> | undefined; }, false, T>;
768
+ optional<const T extends ImplicitAllowedTypes>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchema<FieldKind.Optional, T>;
769
+ optionalRecursive<const T extends Unenforced<ImplicitAllowedTypes>>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchemaUnsafe<FieldKind.Optional, T>;
770
+ required<const T extends ImplicitAllowedTypes>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchema<FieldKind.Required, T>;
771
+ requiredRecursive<const T extends Unenforced<ImplicitAllowedTypes>>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchemaUnsafe<FieldKind.Required, T>;
772
+ // (undocumented)
773
+ readonly scope: TScope;
774
+ readonly string: TreeNodeSchema<"com.fluidframework.leaf.string", NodeKind.Leaf, string, string>;
775
+ }
776
+
777
+ // @public
778
+ type ScopedSchemaName<TScope extends string | undefined, TName extends number | string> = TScope extends undefined ? `${TName}` : `${TScope}.${TName}`;
779
+
780
+ // @public @sealed
781
+ export interface SharedObjectKind<out TSharedObject = unknown> extends ErasedType<readonly ["SharedObjectKind", TSharedObject]> {
782
+ is(value: IFluidLoadable): value is IFluidLoadable & TSharedObject;
783
+ }
784
+
785
+ // @public
786
+ export const SharedTree: SharedObjectKind<ITree>;
787
+
788
+ // @public
789
+ export interface Tagged<V, T extends string = string> {
790
+ // (undocumented)
791
+ tag: T;
792
+ // (undocumented)
793
+ value: V;
794
+ }
795
+
796
+ // @public
797
+ export type TelemetryBaseEventPropertyType = string | number | boolean | undefined;
798
+
799
+ // @public
800
+ export type TransactionConstraint = NodeInDocumentConstraint;
801
+
802
+ // @public
803
+ export type TransformedEvent<TThis, E, A extends any[]> = (event: E, listener: (...args: ReplaceIEventThisPlaceHolder<A, TThis>) => void) => TThis;
804
+
805
+ // @public
806
+ export const Tree: TreeApi;
807
+
808
+ // @public @sealed
809
+ interface TreeApi extends TreeNodeApi {
810
+ contains(node: TreeNode, other: TreeNode): boolean;
811
+ readonly runTransaction: RunTransaction;
812
+ }
813
+
814
+ // @public @sealed
815
+ export interface TreeArrayNode<TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypes<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes>, TreeArrayNode> {
816
+ }
817
+
818
+ // @public
819
+ export const TreeArrayNode: {
820
+ readonly spread: <T>(content: Iterable<T>) => IterableTreeArrayContent<T>;
821
+ };
822
+
823
+ // @public @sealed
824
+ interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom> extends ReadonlyArray<T>, TreeNode {
825
+ insertAt(index: number, ...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
826
+ insertAtEnd(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
827
+ insertAtStart(...value: readonly (TNew | IterableTreeArrayContent<TNew>)[]): void;
828
+ moveRangeToEnd(sourceStart: number, sourceEnd: number): void;
829
+ moveRangeToEnd(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
830
+ moveRangeToIndex(index: number, sourceStart: number, sourceEnd: number): void;
831
+ moveRangeToIndex(index: number, sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
832
+ moveRangeToStart(sourceStart: number, sourceEnd: number): void;
833
+ moveRangeToStart(sourceStart: number, sourceEnd: number, source: TMoveFrom): void;
834
+ moveToEnd(sourceIndex: number): void;
835
+ moveToEnd(sourceIndex: number, source: TMoveFrom): void;
836
+ moveToIndex(index: number, sourceIndex: number): void;
837
+ moveToIndex(index: number, sourceIndex: number, source: TMoveFrom): void;
838
+ moveToStart(sourceIndex: number): void;
839
+ moveToStart(sourceIndex: number, source: TMoveFrom): void;
840
+ removeAt(index: number): void;
841
+ removeRange(start?: number, end?: number): void;
842
+ values(): IterableIterator<T>;
843
+ }
844
+
845
+ // @public @sealed
846
+ export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAllowedTypes>> extends TreeArrayNodeBase<TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>, TreeArrayNode> {
847
+ }
848
+
849
+ // @beta @sealed
850
+ export const TreeBeta: {
851
+ readonly on: <K extends keyof TreeChangeEventsBeta<TNode>, TNode extends TreeNode>(node: TNode, eventName: K, listener: NoInfer<TreeChangeEventsBeta<TNode>[K]>) => () => void;
852
+ };
853
+
854
+ // @public @sealed
855
+ export interface TreeChangeEvents {
856
+ nodeChanged(unstable?: unknown): void;
857
+ treeChanged(): void;
858
+ }
859
+
860
+ // @beta @sealed
861
+ export interface TreeChangeEventsBeta<TNode extends TreeNode = TreeNode> extends TreeChangeEvents {
862
+ nodeChanged: (data: NodeChangedData<TNode> & (TNode extends WithType<string, NodeKind.Map | NodeKind.Object> ? Required<Pick<NodeChangedData<TNode>, "changedProperties">> : unknown)) => void;
863
+ }
864
+
865
+ // @public
866
+ export type TreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypes<Types>, Kind, false> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : unknown;
867
+
868
+ // @public
869
+ type TreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, false> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypesUnsafe<TSchema> : unknown;
870
+
871
+ // @public
872
+ export type TreeLeafValue = number | string | boolean | IFluidHandle | null;
873
+
874
+ // @public @sealed
875
+ export interface TreeMapNode<T extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends ReadonlyMap<string, TreeNodeFromImplicitAllowedTypes<T>>, TreeNode {
876
+ delete(key: string): void;
877
+ entries(): IterableIterator<[string, TreeNodeFromImplicitAllowedTypes<T>]>;
878
+ forEach(callbackfn: (value: TreeNodeFromImplicitAllowedTypes<T>, key: string, map: ReadonlyMap<string, TreeNodeFromImplicitAllowedTypes<T>>) => void, thisArg?: any): void;
879
+ keys(): IterableIterator<string>;
880
+ set(key: string, value: InsertableTreeNodeFromImplicitAllowedTypes<T> | undefined): void;
881
+ values(): IterableIterator<TreeNodeFromImplicitAllowedTypes<T>>;
882
+ }
883
+
884
+ // @public @sealed
885
+ export interface TreeMapNodeUnsafe<T extends Unenforced<ImplicitAllowedTypes>> extends ReadonlyMapInlined<string, T>, TreeNode {
886
+ delete(key: string): void;
887
+ set(key: string, value: InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T> | undefined): void;
888
+ }
889
+
890
+ // @public @sealed
891
+ export abstract class TreeNode implements WithType {
892
+ static [Symbol.hasInstance](value: unknown): value is TreeNode;
893
+ static [Symbol.hasInstance]<TSchema extends abstract new (...args: any[]) => TreeNode>(this: TSchema, value: unknown): value is InstanceType<TSchema>;
894
+ // @deprecated
895
+ abstract get [typeNameSymbol](): string;
896
+ abstract get [typeSchemaSymbol](): TreeNodeSchemaClass;
897
+ protected constructor(token: unknown);
898
+ }
899
+
900
+ // @public @sealed
901
+ export interface TreeNodeApi {
902
+ is<TSchema extends ImplicitAllowedTypes>(value: unknown, schema: TSchema): value is TreeNodeFromImplicitAllowedTypes<TSchema>;
903
+ key(node: TreeNode): string | number;
904
+ on<K extends keyof TreeChangeEvents>(node: TreeNode, eventName: K, listener: TreeChangeEvents[K]): () => void;
905
+ parent(node: TreeNode): TreeNode | undefined;
906
+ schema(node: TreeNode | TreeLeafValue): TreeNodeSchema;
907
+ shortId(node: TreeNode): number | string | undefined;
908
+ status(node: TreeNode): TreeStatus;
909
+ }
910
+
911
+ // @public
912
+ export type TreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
913
+
914
+ // @public
915
+ type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
916
+
917
+ // @public @sealed
918
+ export type TreeNodeSchema<Name extends string = string, Kind extends NodeKind = NodeKind, TNode = unknown, TBuild = never, ImplicitlyConstructable extends boolean = boolean, Info = unknown> = TreeNodeSchemaClass<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info> | TreeNodeSchemaNonClass<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info>;
919
+
920
+ // @public @sealed
921
+ export interface TreeNodeSchemaClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode = unknown, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
922
+ // @sealed
923
+ new (data: TInsertable | InternalTreeNode): Unhydrated<TNode>;
924
+ }
925
+
926
+ // @public @sealed
927
+ export interface TreeNodeSchemaCore<out Name extends string, out Kind extends NodeKind, out ImplicitlyConstructable extends boolean, out Info = unknown> {
928
+ readonly identifier: Name;
929
+ readonly implicitlyConstructable: ImplicitlyConstructable;
930
+ readonly info: Info;
931
+ // (undocumented)
932
+ readonly kind: Kind;
933
+ }
934
+
935
+ // @public @sealed
936
+ interface TreeNodeSchemaNonClass<out Name extends string = string, out Kind extends NodeKind = NodeKind, out TNode = unknown, in TInsertable = never, out ImplicitlyConstructable extends boolean = boolean, out Info = unknown> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
937
+ // (undocumented)
938
+ create(data: TInsertable): TNode;
939
+ }
940
+
941
+ // @public
942
+ export type TreeObjectNode<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
943
+
944
+ // @public
945
+ export type TreeObjectNodeUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>, TypeName extends string = string> = TreeNode & ObjectFromSchemaRecordUnsafe<T> & WithType<TypeName, NodeKind.Object>;
946
+
947
+ // @public
948
+ export enum TreeStatus {
949
+ Deleted = 2,
950
+ InDocument = 0,
951
+ New = 3,
952
+ Removed = 1
953
+ }
954
+
955
+ // @public @sealed
956
+ export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposable {
957
+ readonly compatibility: SchemaCompatibilityStatus;
958
+ readonly events: Listenable<TreeViewEvents>;
959
+ initialize(content: InsertableTreeFieldFromImplicitField<TSchema>): void;
960
+ get root(): TreeFieldFromImplicitField<TSchema>;
961
+ set root(newRoot: InsertableTreeFieldFromImplicitField<TSchema>);
962
+ upgradeSchema(): void;
963
+ }
964
+
965
+ // @public @sealed
966
+ export class TreeViewConfiguration<TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> implements Required<ITreeViewConfiguration<TSchema>> {
967
+ constructor(props: ITreeViewConfiguration<TSchema>);
968
+ readonly enableSchemaValidation: boolean;
969
+ readonly preventAmbiguity: boolean;
970
+ readonly schema: TSchema;
971
+ // (undocumented)
972
+ protected _typeCheck: MakeNominal;
973
+ }
974
+
975
+ // @public @sealed
976
+ export interface TreeViewEvents {
977
+ commitApplied(data: CommitMetadata, getRevertible?: RevertibleFactory): void;
978
+ rootChanged(): void;
979
+ schemaChanged(): void;
980
+ }
981
+
982
+ // @public @deprecated
983
+ const typeNameSymbol: unique symbol;
984
+
985
+ // @public
986
+ export const typeSchemaSymbol: unique symbol;
987
+
988
+ // @public
989
+ export type Unenforced<_DesiredExtendsConstraint> = unknown;
990
+
991
+ // @public
992
+ export type Unhydrated<T> = T;
993
+
994
+ // @public
995
+ export type ValidateRecursiveSchema<T extends TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object, TreeNode & WithType<T["identifier"], T["kind"]>, {
996
+ [NodeKind.Object]: T["info"] extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
997
+ [NodeKind.Array]: T["info"] extends ImplicitAllowedTypes ? Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>> : unknown;
998
+ [NodeKind.Map]: T["info"] extends ImplicitAllowedTypes ? Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>]> : unknown;
999
+ }[T["kind"]], false, {
1000
+ [NodeKind.Object]: RestrictiveReadonlyRecord<string, ImplicitFieldSchema>;
1001
+ [NodeKind.Array]: ImplicitAllowedTypes;
1002
+ [NodeKind.Map]: ImplicitAllowedTypes;
1003
+ }[T["kind"]]>> = true;
1004
+
1005
+ // @public @sealed
1006
+ export interface WithType<out TName extends string = string, out TKind extends NodeKind = NodeKind, out TInfo = unknown> {
1007
+ // @deprecated
1008
+ get [typeNameSymbol](): TName;
1009
+ get [typeSchemaSymbol](): TreeNodeSchemaClass<TName, TKind, unknown, never, boolean, TInfo>;
1010
+ }
1011
+
1012
+ ```