/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { ITreeCursorSynchronous, TreeNodeSchemaIdentifier } from "../../../core";
import { BufferFormat, Shape } from "./chunkEncodingGeneric";
import { Counter, DeduplicationTable } from "./chunkCodecUtilities";
import { EncodedChunkShape, EncodedFieldShape, EncodedValueShape } from "./format";
import { NodeEncoder, KeyedFieldEncoder, FieldEncoder, EncoderCache } from "./compressedEncode";
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);
    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(): this;
}
export declare function encodeFieldShapes(fields: readonly KeyedFieldEncoder[], identifiers: DeduplicationTable<string>, shapes: DeduplicationTable<Shape<EncodedChunkShape>>): EncodedFieldShape[];
//# sourceMappingURL=nodeShape.d.ts.map