import type { Static } from "../core/utils";
import { Field } from "../data";
import * as tbbox from "@sinclair/typebox";
export declare const mediaFieldConfigSchema: tbbox.TObject<{
    entity: tbbox.TString;
    min_items: tbbox.TOptional<tbbox.TNumber>;
    max_items: tbbox.TOptional<tbbox.TNumber>;
    mime_types: tbbox.TOptional<tbbox.TArray<tbbox.TString>>;
    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 MediaFieldConfig = 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(): tbbox.TObject<{
        entity: tbbox.TString;
        min_items: tbbox.TOptional<tbbox.TNumber>;
        max_items: tbbox.TOptional<tbbox.TNumber>;
        mime_types: tbbox.TOptional<tbbox.TArray<tbbox.TString>>;
        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>;
    }>;
    getMaxItems(): number | undefined;
    getMinItems(): number | undefined;
    schema(): undefined;
    toJsonSchema(): any;
}
