/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import type { Static } from "@sinclair/typebox";
import { type Values } from "../../../../util/index.js";
import { EncodedChunkShapeV1 } from "./formatV1.js";
import { EncodedChunkShapeV2 } from "./formatV2.js";
/**
 * The format version for the field batch.
 */
export type FieldBatchFormatVersion = Values<typeof FieldBatchFormatVersion>;
export declare const FieldBatchFormatVersion: {
    readonly v1: import("../../../../util/brand.js").Brand<1, "FieldBatchFormatVersion">;
    readonly v2: import("../../../../util/brand.js").Brand<2, "FieldBatchFormatVersion">;
};
/**
 * Whether the given format version supports incremental chunk encoding.
 *
 * @remarks
 * This helper should be used for comparison since experimental versions
 * can be a string.
 */
export declare function supportsIncrementalEncoding(version: FieldBatchFormatVersion): boolean;
/**
 * Encoded {@link FieldBatch} using V1 format.
 * @remarks
 * Does not support {@link EncodedIncrementalChunkShape}.
 */
export type EncodedFieldBatchV1 = Static<typeof EncodedFieldBatchV1>;
export declare const EncodedFieldBatchV1: 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<import("@sinclair/typebox").TObject<{
        e: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNever>;
        a: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
        b: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
            length: import("@sinclair/typebox").TNumber;
            shape: import("@sinclair/typebox").TNumber;
        }>>;
        c: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
            type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber]>>;
            value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TAny>, import("@sinclair/typebox").TEnum<typeof import("./formatV1.js").SpecialField>]>>;
            fields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber]>, import("@sinclair/typebox").TNumber]>>>;
            extraFields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
        }>>;
        d: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TLiteral<0>>;
    }>>;
}>;
/**
 * Encoded {@link FieldBatch} using V2 format.
 * @remarks
 * Adds support for {@link EncodedIncrementalChunkShape}.
 */
export type EncodedFieldBatchV2 = Static<typeof EncodedFieldBatchV2>;
export declare const EncodedFieldBatchV2: 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<import("@sinclair/typebox").TObject<{
        e: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TLiteral<0>>;
        a: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
        b: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
            length: import("@sinclair/typebox").TNumber;
            shape: import("@sinclair/typebox").TNumber;
        }>>;
        c: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
            type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber]>>;
            value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TAny>, import("@sinclair/typebox").TEnum<typeof import("./formatV1.js").SpecialField>]>>;
            fields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTuple<[import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNumber]>, import("@sinclair/typebox").TNumber]>>>;
            extraFields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
        }>>;
        d: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TLiteral<0>>;
    }>>;
}>;
/**
 * Encoded {@link FieldBatch}, which might use V2 features, but might also have been from a V1 encoder.
 * @remarks
 * Type wise, equivalent to V2, as that is a superset of V1.
 * Used instead of just V2 for clarity.
 */
export type EncodedFieldBatchV1OrV2 = EncodedFieldBatchV1 | EncodedFieldBatchV2;
/**
 * Encoded data, compatible with both V1 and V2 formats.
 * @remarks
 * This is the intersection of the two versions, which is possible because V2 is a non-breaking extension of V1.
 * This type can be used when the code is compatible with both versions and does not need to distinguish between them.
 *
 * Type wise, equivalent to V1, as that is a subset of V2.
 * Used instead of just V1 for clarity.
 */
export type EncodedFieldBatchV1AndV2 = EncodedFieldBatchV1 & EncodedFieldBatchV2;
/**
 * Encoded chunk shape, which might use V2 features, but might also have been from a V1 encoder.
 * @remarks
 * Type wise, equivalent to V2, as that is a superset of V1.
 * Used instead of just V2 for clarity.
 */
export type EncodedChunkShapeV1OrV2 = EncodedChunkShapeV1 | EncodedChunkShapeV2;
//# sourceMappingURL=versions.d.ts.map