/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
import type { IFluidDataStoreRuntime, IChannelStorageService } from "@fluidframework/datastore-definitions/internal";
import type { IExperimentalIncrementalSummaryContext, IGarbageCollectionData, ISummaryTreeWithStats, ITelemetryContext } from "@fluidframework/runtime-definitions/internal";
import type { ICodecOptions } from "../../codec/index.js";
import { type MutableTreeStoredSchema, type TreeStoredSchema } from "../../core/index.js";
import type { Summarizable, SummaryElementParser, SummaryElementStringifier } from "../../shared-tree-core/index.js";
import type { JsonCompatible } from "../../util/index.js";
import type { CollabWindow } from "../incrementalSummarizationUtils.js";
/**
 * Provides methods for summarizing and loading a schema repository.
 */
export declare class SchemaSummarizer implements Summarizable {
    private readonly runtime;
    private readonly schema;
    readonly key = "Schema";
    private readonly codec;
    private schemaIndexLastChangedSeq;
    constructor(runtime: IFluidDataStoreRuntime, schema: MutableTreeStoredSchema, options: ICodecOptions, collabWindow: CollabWindow);
    getAttachSummary(stringify: SummaryElementStringifier, fullTree?: boolean, trackState?: boolean, telemetryContext?: ITelemetryContext, incrementalSummaryContext?: IExperimentalIncrementalSummaryContext | undefined): ISummaryTreeWithStats;
    summarize(stringify: SummaryElementStringifier, fullTree?: boolean, trackState?: boolean, telemetryContext?: ITelemetryContext, incrementalSummaryContext?: IExperimentalIncrementalSummaryContext | undefined): Promise<ISummaryTreeWithStats>;
    getGCData(fullGC?: boolean): IGarbageCollectionData;
    load(services: IChannelStorageService, parse: SummaryElementParser): Promise<void>;
}
/**
 * Dumps schema into a deterministic JSON compatible semi-human readable but unspecified format.
 *
 * @remarks
 * This can be used to help inspect schema for debugging, and to save a snapshot of schema to help detect and review changes to an applications schema.
 *
 * This format may change across major versions of this package: such changes are considered breaking.
 * Beyond that, no compatibility guarantee is provided for this format: it should never be relied upon to load data, it should only be used for comparing outputs from this function.
 * @privateRemarks
 * This currently uses the schema summary format, but that could be changed to something more human readable (particularly if the encoded format becomes less human readable).
 * This intentionally does not leak the format types in the API.
 * @internal
 */
export declare function encodeTreeSchema(schema: TreeStoredSchema): JsonCompatible;
//# sourceMappingURL=schemaSummarizer.d.ts.map