/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { AllowedTypes } from "../feature-libraries";
import { type ImplicitAllowedTypes, type TreeNodeFromImplicitAllowedTypes, type InsertableTreeNodeFromImplicitAllowedTypes } from "../class-tree";
import { InsertableTreeNodeUnion } from "./insertable";
import { TreeListNodeBase, TreeNodeUnion } from "./types";
/**
 * A {@link TreeNode} which implements 'readonly T[]' and the list mutation APIs.
 */
export interface TreeListNodeOld<out TTypes extends AllowedTypes = AllowedTypes> extends TreeListNodeBase<TreeNodeUnion<TTypes>, InsertableTreeNodeUnion<TTypes>, TreeListNodeOld> {
}
/**
 * A {@link NodeBase} which implements 'readonly T[]' and the list mutation APIs.
 * @beta
 */
export interface TreeListNode<T extends ImplicitAllowedTypes = ImplicitAllowedTypes> extends TreeListNodeBase<TreeNodeFromImplicitAllowedTypes<T>, InsertableTreeNodeFromImplicitAllowedTypes<T>, TreeListNode> {
}
/**
 * A {@link NodeBase} which implements 'readonly T[]' and the list mutation APIs.
 * @beta
 */
export declare const TreeListNode: {
    /**
     * Wrap an iterable of items to inserted as consecutive items in a list.
     * @remarks
     * The object returned by this function can be inserted into a {@link (TreeListNode:interface)}.
     * Its contents will be inserted consecutively in the corresponding location in the list.
     * @example
     * ```ts
     * list.insertAtEnd(TreeListNode.inline(iterable))
     * ```
     */
    inline: <T>(content: Iterable<T>) => IterableTreeListContent<T>;
};
/**
 * Non-exported symbol used to make IterableTreeListContent constructable only from within this file.
 */
declare const create: unique symbol;
/**
 * Used to insert iterable content into a {@link (TreeListNode:interface)}.
 * Use {@link (TreeListNode:variable).inline} to create an instance of this type.
 * @beta
 */
export declare class IterableTreeListContent<T> implements Iterable<T> {
    private readonly content;
    private constructor();
    /**
     * Package internal construction API.
     * Use {@link (TreeListNode:variable).inline} to create an instance of this type instead.
     */
    static [create]<T>(content: Iterable<T>): IterableTreeListContent<T>;
    /**
     * Iterates over content for nodes to insert.
     */
    [Symbol.iterator](): Iterator<T>;
}
export {};
//# sourceMappingURL=treeListNode.d.ts.map