import IField from "../dataform/IField";
import IFormDefinition, { IFormSample } from "../dataform/IFormDefinition";
import IFolder from "../storage/IFolder";
import ILegacyDocumentationNode from "../minecraft/docs/ILegacyDocumentation";
import IFile from "../storage/IFile";
import { AnnotationCategory } from "../core/ContentIndex";
export interface JsonTypeSummary {
    title: string;
    category: string;
}
export default class MCCatGenerator {
    updateMCCat(folder: IFolder, isPreview?: boolean): Promise<void>;
    static cleanForId(id: string | undefined): string;
    generateFormJson(inputFolder: IFolder, outputFolder: IFolder): Promise<void>;
    generateFormJsonFromFolder(inputFolder: IFolder, outputFolder: IFolder): Promise<void>;
    finalizeJsonForm(formObj: IFormDefinition, outputFile: IFile): Promise<void>;
    mergeOntoForm(targetForm: IFormDefinition, formToMergeOn: IFormDefinition): void;
    getFormFileNameBase(key: string): string;
    private getVersionlessString;
    generateFormNodesFromLegacyDocNode(formJsonFolder: IFolder, node: ILegacyDocumentationNode, prefix?: string): Promise<void>;
    getOriginalFormDefinition(formJsonFolder: IFolder, name: string, categoryName?: string): Promise<IFormDefinition>;
    mergeToFile(formJsonFolder: IFolder, name: string, formDefNode: IFormDefinition, categoryName?: string, isSchema?: boolean): Promise<void>;
    annotateFormJson(formDefNode: IFormDefinition, name: string, prefix?: string, originalNode?: IFormDefinition): Promise<void>;
    distributeSampleValues(samplesNode: {
        [name: string]: IFormSample[];
    }, formDefNode: IFormDefinition, pathTokens: string[], originalNode?: IFormDefinition): Promise<void>;
    addVanillaMatches(formDefNode: IFormDefinition, name: string, annotations: AnnotationCategory[]): Promise<void>;
    addSamplesMatches(formDefNode: IFormDefinition, name: string, annotations: AnnotationCategory[]): Promise<void>;
    appendNodesByName(exampleList: IFormSample[], nodeName: string, source: object, path: string): void;
    static sanitizeTitle(title: string): void;
    getFormFromDocNode(childNode: ILegacyDocumentationNode, name?: string): IFormDefinition;
    getFieldFromDocNode(childNode: ILegacyDocumentationNode): IField;
    getFieldIsDifferentType(fieldA: IField, fieldB: IField): boolean;
    static humanifyId(title: string): string;
    static humanifyText(title: string): string;
    humanifyJsonMinecraftName(title: string): string;
    getFormFileName(name: string, dataVersion?: string): string;
}
