/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import { AdaptedViewSchema, type Adapters, type TreeStoredSchema } from "../../core/index.js";
import { type FullSchemaPolicy } from "../../feature-libraries/index.js";
import type { FieldSchema } from "../schemaTypes.js";
import type { SchemaCompatibilityStatus } from "./tree.js";
/**
 * A collection of View information for schema, including policy.
 * @remarks
 * This contains everything needed to determine compatibility with a given stored schema.
 */
export declare class SchemaCompatibilityTester {
    readonly policy: FullSchemaPolicy;
    readonly adapters: Adapters;
    /**
     * Cached conversion of the view schema in the stored schema format.
     */
    readonly viewSchemaAsStored: TreeStoredSchema;
    /**
     * @param viewSchemaRoot - Schema for the root field.
     */
    constructor(policy: FullSchemaPolicy, adapters: Adapters, viewSchemaRoot: FieldSchema);
    /**
     * Determines the compatibility of a stored document
     * (based on its stored schema) with a viewer (based on its view schema).
     *
     * Adapters can be provided to handle differences between the two schema.
     * Adapters should only use to types in the `view` SchemaRepository.
     *
     * TODO: this API violates the parse don't validate design philosophy.
     * It should be wrapped with (or replaced by) a parse style API.
     */
    checkCompatibility(stored: TreeStoredSchema): Omit<SchemaCompatibilityStatus, "canInitialize">;
    /**
     * Compute a schema that `original` could be viewed as using adapters as needed.
     *
     * TODO: have a way for callers to get invalidated on schema updates.
     */
    adaptRepo(stored: TreeStoredSchema): AdaptedViewSchema;
    /**
     * Adapt original such that it allows member types which can be adapted to its specified types.
     */
    private adaptField;
    private adaptTree;
}
//# sourceMappingURL=schemaCompatibilityTester.d.ts.map