import type { App } from "./app.js";
import type { Collection } from "./collection_model.js";
import { JSONArray } from "../tools/types/json_array.js";
import { type Field, type MultiValuer, type DriverValuer, type RecordLike, type SetterFinder, type SetterFunc } from "./field.js";
export declare const FieldTypeRelation = "relation";
export declare class RelationField implements Field, MultiValuer, DriverValuer, SetterFinder {
    Name: string;
    Id: string;
    System: boolean;
    Hidden: boolean;
    Presentable: boolean;
    Help: string;
    CollectionId: string;
    CascadeDelete: boolean;
    MinSelect: number;
    MaxSelect: number;
    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: unknown, raw: unknown): unknown;
    DriverValue(record: RecordLike): [string | JSONArray<string>, Error | null];
    ValidateValue(_ctx: unknown, app: App, record: RecordLike): Error | null;
    ValidateSettings(_ctx: unknown, app: App, collection: Collection): Error | null;
    FindSetter(key: string): SetterFunc | null;
    private normalizeValue;
    private checkCollectionId;
}
