fluid-framework 2.3.0-288113 → 2.4.0-294316

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