/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { type Static, type TSchema } from "@sinclair/typebox";
import type { FieldBatchFormatVersion } from "./versions.js";
/**
 * Identifier OR Index of an identifier in the identifier list.
 */
export declare const IdentifierOrIndex: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber]>;
export type IdentifierOrIndex = Static<typeof IdentifierOrIndex>;
/**
 * Reference to a shape, by index.
 *
 * Shapes use a dictionary encoding where they are referenced by their index in a shape array.
 */
export declare const ShapeIndex: import("@sinclair/typebox").TNumber;
export type ShapeIndex = Static<typeof ShapeIndex>;
export declare const Count: import("@sinclair/typebox").TNumber;
declare const EncodedFieldBatchBase: import("@sinclair/typebox").TObject<{
    identifiers: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
    /**
     * Top level array is list of field from batch.
     * Inner are TreeValues mixed with indexes into "shapes" and nested arrays where lengths are needed.
     */
    data: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TAny>>;
}>;
/**
 * Format for encoding a tree chunk.
 * @param version - format version.
 * Must be changed if the previously existing decode logic will not correctly handle the new encoding.
 * If adding a new encoding version which does not use this format,
 * this parameter should be retyped to be a union of the subset of FieldBatchFormatVersion values which this supports.
 * @param shape - schema for union of shape format, see {@link DiscriminatedUnionDispatcher}.
 */
export declare const EncodedFieldBatchGeneric: <TShapeSchema extends TSchema>(version: FieldBatchFormatVersion, shape: TShapeSchema) => import("@sinclair/typebox").TObject<{
    data: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TAny>>;
    identifiers: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
    version: import("@sinclair/typebox").TLiteral<FieldBatchFormatVersion>;
    shapes: import("@sinclair/typebox").TArray<TShapeSchema>;
}>;
export interface EncodedFieldBatchGeneric<TEncodedShape> extends Static<typeof EncodedFieldBatchBase> {
    shapes: TEncodedShape[];
    version: FieldBatchFormatVersion;
}
export {};
//# sourceMappingURL=formatGeneric.d.ts.map