import { type Schema as JsonSchema } from "@cfworker/json-schema";
import { type Static } from "../../core/utils";
import type { EntityManager } from "../../data";
import { Field, type TActionContext, type TRenderContext } from "./Field";
import * as tbbox from "@sinclair/typebox";
import type { TFieldTSType } from "../../data/entities/EntityTypescript";
export declare const jsonSchemaFieldConfigSchema: tbbox.TObject<{
    schema: tbbox.TObject<{}>;
    ui_schema: tbbox.TOptional<tbbox.TObject<{}>>;
    default_from_schema: tbbox.TOptional<tbbox.TBoolean>;
    default_value: tbbox.TOptional<tbbox.TAny>;
    required: tbbox.TOptional<tbbox.TBoolean>;
    description: tbbox.TOptional<tbbox.TString>;
    label: tbbox.TOptional<tbbox.TString>;
    fillable: tbbox.TOptional<tbbox.TUnion<[tbbox.TBoolean, tbbox.TArray<tbbox.TUnsafe<"create" | "read" | "update" | "delete">>]>>;
    hidden: tbbox.TOptional<tbbox.TUnion<[tbbox.TBoolean, tbbox.TArray<tbbox.TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>;
    virtual: tbbox.TOptional<tbbox.TBoolean>;
}>;
export type JsonSchemaFieldConfig = Static<typeof jsonSchemaFieldConfigSchema>;
export declare class JsonSchemaField<Required extends true | false = false, TypeOverride = object> extends Field<JsonSchemaFieldConfig, TypeOverride, Required> {
    readonly type = "jsonschema";
    private validator;
    constructor(name: string, config: Partial<JsonSchemaFieldConfig>);
    protected getSchema(): tbbox.TObject<{
        schema: tbbox.TObject<{}>;
        ui_schema: tbbox.TOptional<tbbox.TObject<{}>>;
        default_from_schema: tbbox.TOptional<tbbox.TBoolean>;
        default_value: tbbox.TOptional<tbbox.TAny>;
        required: tbbox.TOptional<tbbox.TBoolean>;
        description: tbbox.TOptional<tbbox.TString>;
        label: tbbox.TOptional<tbbox.TString>;
        fillable: tbbox.TOptional<tbbox.TUnion<[tbbox.TBoolean, tbbox.TArray<tbbox.TUnsafe<"create" | "read" | "update" | "delete">>]>>;
        hidden: tbbox.TOptional<tbbox.TUnion<[tbbox.TBoolean, tbbox.TArray<tbbox.TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>;
        virtual: tbbox.TOptional<tbbox.TBoolean>;
    }>;
    getJsonSchema(): JsonSchema;
    getJsonUiSchema(): {};
    isValid(value: any, context?: TActionContext): boolean;
    getValue(value: any, context: TRenderContext): any;
    transformRetrieve(value: any): any;
    transformPersist(_value: any, em: EntityManager<any>, context: TActionContext): Promise<string | undefined>;
    toJsonSchema(): tbbox.TUnknown | tbbox.TOptional<tbbox.TUnknown>;
    toType(): TFieldTSType;
}
