/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { type ITreeCursorSynchronous, type TreeNodeSchemaIdentifier } from "../../../core/index.js";
import type { Counter, DeduplicationTable } from "./chunkCodecUtilities.js";
import { type BufferFormat, Shape } from "./chunkEncodingGeneric.js";
import { type EncoderCache, type FieldEncoder, type KeyedFieldEncoder, type NodeEncoder } from "./compressedEncode.js";
import type { EncodedChunkShape, EncodedFieldShape, EncodedValueShape } from "./format.js";
export declare class NodeShape extends Shape<EncodedChunkShape> implements NodeEncoder {
    readonly type: undefined | TreeNodeSchemaIdentifier;
    readonly value: EncodedValueShape;
    readonly fields: readonly KeyedFieldEncoder[];
    readonly extraLocal: undefined | FieldEncoder;
    private readonly explicitKeys;
    constructor(type: undefined | TreeNodeSchemaIdentifier, value: EncodedValueShape, fields: readonly KeyedFieldEncoder[], extraLocal: undefined | FieldEncoder);
    private getValueToEncode;
    encodeNode(cursor: ITreeCursorSynchronous, cache: EncoderCache, outputBuffer: BufferFormat<EncodedChunkShape>): void;
    encodeShape(identifiers: DeduplicationTable<string>, shapes: DeduplicationTable<Shape<EncodedChunkShape>>): EncodedChunkShape;
    count(identifiers: Counter<string>, shapes: (shape: Shape<EncodedChunkShape>) => void): void;
    get shape(): NodeShape;
}
export declare function encodeFieldShapes(fields: readonly KeyedFieldEncoder[], identifiers: DeduplicationTable<string>, shapes: DeduplicationTable<Shape<EncodedChunkShape>>): EncodedFieldShape[] | undefined;
//# sourceMappingURL=nodeShape.d.ts.map