import { JSONSchema6, JSONSchema6Definition, JSONSchema7, JSONSchema7Definition } from "json-schema";
import DynamicObject from "./DynamicObject";
type JsonSchema2020Draft = {
    $defs: Definition[];
};
export type JsonSchema = (JSONSchema7 | JSONSchema6) & JsonSchema2020Draft;
export type HierarchyEntry = {
    key: string;
    title?: string;
    isArrayItem?: boolean;
    schemaKey?: string;
};
export type Hierarchy = HierarchyEntry[];
export type KeyedDefinition = [string, Definition];
export type Definition = JSONSchema7 | JSONSchema6;
export type FullDefinition = Definition | boolean;
export type Property = [string, Definition];
export type Context = {
    hierarchy: Hierarchy;
    required: Map<string, boolean>;
    references: KeyedDefinition[];
    size?: "default" | "small";
};
export type OneOfType = number | "uichoice" | "object" | "array" | "string" | "number";
export type Reference = [string, Definition];
export declare function getValueByHierarchy(object: DynamicObject, hierarchy: Hierarchy): any;
export declare const updateObjectByHierarchy: (object: DynamicObject, value: unknown, hierarchy: Hierarchy) => void;
export declare function insertIntoObjectByHierarchy(object: DynamicObject, value: unknown, hierarchy: Hierarchy): void;
export declare const minimize: (input: object | unknown[]) => unknown[] | DynamicObject;
export declare function arrayToLookup<TValue>(arr: TValue[]): Map<TValue, boolean>;
export declare function expandContext(context: Context, options?: {
    entry?: HierarchyEntry;
    required?: string[];
}): Context;
export declare const getFullKey: (hierarchy: Hierarchy, limit?: number) => string;
export declare const resolveProperty: (property: Property, context: Context) => Property;
export declare const resolveReferences: (definition: FullDefinition, references: Reference[]) => {
    definition: Definition;
    schemaKey: any;
    oneOfs: Definition[];
};
export declare const resolveDefinition: (definition: FullDefinition, references: Reference[], oneOfChoice?: number) => {
    schemaKey: any;
    definition: Definition;
};
export declare function findBestOneOf(oneOfs: JSONSchema7Definition[] | JSONSchema6Definition[] | undefined, references: Reference[], parent?: Definition): {
    schemaKey: any;
    definition: Definition;
};
export declare function isSchemaDefinition(definition: FullDefinition): definition is Definition;
export declare function resolveReferenceFromPath(referencePath: string, references: Reference[]): {
    schemaKey: any;
    definition: Definition;
};
export declare function pickBestOneOf(oneOfs: Definition[]): Definition;
export {};
