"use strict";
/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.treeStatus = exports.on = exports.contextSymbol = exports.parentField = exports.getField = exports.typeSymbol = void 0;
const contextuallyTyped_1 = require("./contextuallyTyped");
/**
 * This file provides an API for working with trees which is type safe even when schema is not known.
 * This means no editing is allowed.
 *
 * Schema aware APIs for working with trees should superset this, while sub-setting EditableTree.
 *
 * TODO:
 * This API should replace EditableTree as the default public API for tree access.
 * SchemaAware builds on this, adding editing and type safe APIs which can be accessed via SchematizeView.
 * Once this is finished, the unsafe EditableTree types can be removed (or converted to package internal documentation for the proxies).
 */
/**
 * A symbol to get the type of {@link EditableTree} in contexts where string keys are already in use for fields.
 * @public
 */
exports.typeSymbol = Symbol("editable-tree:type");
/**
 * A symbol to get the function, which returns the field of {@link EditableTree} without unwrapping,
 * in contexts where string keys are already in use for fields.
 * @public
 */
exports.getField = Symbol("editable-tree:getField()");
/**
 * A symbol to get information about where an {@link EditableTree} is parented
 * in contexts where string keys are already in use for fields.
 * @public
 */
exports.parentField = Symbol("editable-tree:parentField()");
/**
 * A symbol to get a common context of a "forest" of EditableTrees
 * in contexts where string keys are already in use for fields.
 * @public
 */
exports.contextSymbol = Symbol("editable-tree:context");
/**
 * A symbol for subscribing to events.
 * @public
 */
exports.on = Symbol("editable-tree:on");
/**
 * A symbol to get the function, which gets the {@link TreeStatus} of {@link EditableTree}
 * @public
 */
exports.treeStatus = Symbol("editable-tree:treeStatus()");
//# sourceMappingURL=untypedTree.js.map