import { Field } from "../data/fields";
import { s } from "bknd/utils";
export declare const mediaFieldConfigSchema: 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>;
    readonly entity: s.Schema<s.ISchemaOptions, string | undefined, string | undefined>;
    readonly min_items: s.Schema<s.ISchemaOptions, number | undefined, number | undefined>;
    readonly max_items: s.Schema<s.ISchemaOptions, number | undefined, number | undefined>;
    readonly mime_types: s.Schema<s.ISchemaOptions, string[] | undefined, string[] | undefined>;
}, s.Merge<s.IObjectOptions & {
    additionalProperties: false;
}>>;
export type MediaFieldConfig = s.Static<typeof mediaFieldConfigSchema>;
export type MediaItem = {
    id: number;
    path: string;
    mime_type: string;
    size: number;
    scope: number;
    etag: string;
    modified_at: Date;
    folder: boolean;
};
export declare class MediaField<Required extends true | false = false, TypeOverride = MediaItem[]> extends Field<MediaFieldConfig, TypeOverride, Required> {
    readonly type = "media";
    constructor(name: string, config: Partial<MediaFieldConfig>);
    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>;
        readonly entity: s.Schema<s.ISchemaOptions, string | undefined, string | undefined>;
        readonly min_items: s.Schema<s.ISchemaOptions, number | undefined, number | undefined>;
        readonly max_items: s.Schema<s.ISchemaOptions, number | undefined, number | undefined>;
        readonly mime_types: s.Schema<s.ISchemaOptions, string[] | undefined, string[] | undefined>;
    }, s.Merge<s.IObjectOptions & {
        additionalProperties: false;
    }>>;
    getMaxItems(): number | undefined;
    getAllowedMimeTypes(): string[] | undefined;
    getMinItems(): number | undefined;
    schema(): undefined;
    toJsonSchema(): any;
}
