import { type JsonValue, type PartialWithUndefined } from '@augment-vir/common';
import { ViraJsonType, type ViraJsonSchema } from '../util/vira-json-schema.js';
/**
 * Editing mode for a string field that offers both a fixed set of enum options and free-form text.
 *
 * @category Internal
 */
export declare enum ViraJsonStringMode {
    /** Pick from the schema's enum options via a dropdown. */
    Options = "options",
    /** Enter an arbitrary string via a text input. */
    Custom = "custom"
}
/**
 * An editor for arbitrary JSON values, optionally constrained by a standard JSON Schema
 * ({@link ViraJsonSchema}).
 *
 * @category Elements
 */
export declare const ViraJsonForm: import("element-vir").DeclarativeElementDefinition<"vira-json-form", {
    value: JsonValue;
} & PartialWithUndefined<{
    schema: Readonly<ViraJsonSchema>;
    isDisabled: boolean;
}>, {
    pendingKeys: Readonly<Record<string, string>>;
    pendingTypes: Readonly<Record<string, ViraJsonType>>;
    pendingArrayValues: Readonly<Record<string, JsonValue>>;
    stringModes: Readonly<Record<string, ViraJsonStringMode>>;
    showRaw: boolean;
    rawDraft: string | undefined;
    rawError: string | undefined;
}, {
    valueChange: import("element-vir").DefineEvent<JsonValue>;
}, "vira-json-form-", "vira-json-form-", readonly [], readonly []>;
