import type { Collection } from "./collection_model.js";
import { type App } from "./app.js";
import { type DriverValuer, type AsyncFieldValueValidator, type Field, type GetterFinder, type GetterFunc, type MaxBodySizeCalculator, type MultiValuer, type RecordInterceptor, type RecordLike, type SetterFinder, type SetterFunc } from "./field.js";
export declare const FieldTypeFile = "file";
export declare const DefaultFileFieldMaxSize: number;
export declare class FileField implements Field, AsyncFieldValueValidator, MultiValuer, DriverValuer, GetterFinder, SetterFinder, RecordInterceptor, MaxBodySizeCalculator {
    Name: string;
    Id: string;
    System: boolean;
    Hidden: boolean;
    Presentable: boolean;
    Help: string;
    MaxSize: number;
    MaxSelect: number;
    MimeTypes: string[] | null;
    Thumbs: string[] | null;
    Protected: boolean;
    Required: boolean;
    Type(): string;
    GetId(): string;
    SetId(id: string): void;
    GetName(): string;
    SetName(name: string): void;
    GetSystem(): boolean;
    SetSystem(system: boolean): void;
    GetHidden(): boolean;
    SetHidden(hidden: boolean): void;
    IsMultiple(): boolean;
    ColumnType(_app: App): string;
    PrepareValue(_record: RecordLike, raw: unknown): unknown;
    DriverValue(record: RecordLike): [unknown, Error | null];
    ValidateSettings(_ctx: unknown, _app: App, _collection: Collection): Error | null;
    ValidateValue(_ctx: unknown, app: App, record: RecordLike): Error | null;
    ValidateValueAsync(_ctx: unknown, app: App, record: RecordLike): Promise<Error | null>;
    CalculateMaxBodySize(): number;
    CanInterceptAction(actionName: string): boolean;
    Intercept(ctx: unknown, app: App, record: RecordLike, actionName: string, actionFunc: () => Error | null | Promise<Error | null>): Promise<Error | null>;
    FindGetter(key: string): GetterFunc | null;
    FindSetter(key: string): SetterFunc | null;
    private setValue;
    private prependValue;
    private appendValue;
    private subtractValue;
    private normalizeValue;
    private toSliceValue;
    private uniqueFiles;
    private extractPlainStrings;
    private extractUploadableFiles;
    private excludeFiles;
    private getFileName;
    private effectiveMaxSize;
    private effectiveMaxSelect;
    private getLatestOldValue;
    private afterRecordExecuteSuccess;
    private afterRecordExecuteFailure;
    private deleteEmptyRecordDir;
    private processFilesToDelete;
    private rememberFilesToDelete;
    private processFilesToUpload;
    private deleteNewlyUploadedFiles;
    private deleteFilesByNamesList;
}
