import { Content, ExtensionData, StructureNode } from '@/types/index';
/**
 * object diff
 * @param base
 * @param current
 * @returns
 */
export declare const objectDiff: <T extends Record<string, any>>(base: T, current: T) => T | undefined;
/**
 * structure node diff
 * @param base
 * @param current
 * @returns
 */
export declare const nodeDiff: <T extends StructureNode<Record<string, any>>>(base: T, current: T) => T | null;
declare type DiffComponentStructure = StructureNode & {
    childIds: string[];
};
/**
 * schema diff
 * @param base
 * @param current
 * @returns
 */
export declare const schemaDiff: <T extends StructureNode<Record<string, any>>[]>(base: T, current: T) => DiffComponentStructure[];
/**
 * relation diff
 * @param base
 * @param current
 * @returns
 */
export declare const relationDiff: <T extends import("@/types/index").Relation>(base: T, current: T) => {};
/**
 * dsl diff
 * Because inserting the inheritance function midway is very cumbersome and prone to problems, the inheritance function is implemented through dsl diff.
 * Even if the inheritance function is added, the original operation remains unchanged. In the end, only the content of the subclass can be generated, so it is realized by dsl diff.
 * @param baseContent base(parent) content
 * @param current current content
 * @returns differed
 */
export declare const differ: (extension: ExtensionData, current: Content) => Content;
export {};
