import { Field } from "./Field";
import { s } from "bknd/utils";
export declare const virtualFieldConfigSchema: s.ObjectSchema<{
    readonly label: s.Schema<s.ISchemaOptions, string | undefined, string | undefined>;
    readonly description: s.Schema<s.ISchemaOptions, string | undefined, string | undefined>;
    readonly required: s.Schema<s.ISchemaOptions, boolean | undefined, boolean | undefined>;
    readonly fillable: s.Schema<s.ISchemaOptions, boolean | ("create" | "read" | "update" | "delete")[] | undefined, boolean | ("create" | "read" | "update" | "delete")[] | undefined>;
    readonly hidden: s.Schema<s.ISchemaOptions, boolean | ("table" | "create" | "read" | "update" | "delete" | "form" | "submit")[] | undefined, boolean | ("table" | "create" | "read" | "update" | "delete" | "form" | "submit")[] | undefined>;
    readonly virtual: s.Schema<s.ISchemaOptions, boolean | undefined, boolean | undefined>;
    readonly default_value: s.Schema<s.ISchemaOptions, any, any>;
}, s.Merge<s.IObjectOptions & {
    additionalProperties: false;
}>>;
export type VirtualFieldConfig = s.Static<typeof virtualFieldConfigSchema>;
export declare class VirtualField extends Field<VirtualFieldConfig> {
    readonly type = "virtual";
    constructor(name: string, config?: Partial<VirtualFieldConfig>);
    protected getSchema(): s.ObjectSchema<{
        readonly label: s.Schema<s.ISchemaOptions, string | undefined, string | undefined>;
        readonly description: s.Schema<s.ISchemaOptions, string | undefined, string | undefined>;
        readonly required: s.Schema<s.ISchemaOptions, boolean | undefined, boolean | undefined>;
        readonly fillable: s.Schema<s.ISchemaOptions, boolean | ("create" | "read" | "update" | "delete")[] | undefined, boolean | ("create" | "read" | "update" | "delete")[] | undefined>;
        readonly hidden: s.Schema<s.ISchemaOptions, boolean | ("table" | "create" | "read" | "update" | "delete" | "form" | "submit")[] | undefined, boolean | ("table" | "create" | "read" | "update" | "delete" | "form" | "submit")[] | undefined>;
        readonly virtual: s.Schema<s.ISchemaOptions, boolean | undefined, boolean | undefined>;
        readonly default_value: s.Schema<s.ISchemaOptions, any, any>;
    }, s.Merge<s.IObjectOptions & {
        additionalProperties: false;
    }>>;
    schema(): undefined;
    toJsonSchema(): s.Schema<{
        readonly default: any;
        readonly readOnly: true;
    }, any, any> & {
        readonly default: any;
        readonly readOnly: true;
    };
}
