import type { Collection } from "./collection_model.js";
export declare const maxSafeJSONInt: number;
export declare const FieldNameId = "id";
export declare const FieldNameCollectionId = "collectionId";
export declare const FieldNameCollectionName = "collectionName";
export declare const FieldNameExpand = "expand";
export declare const FieldNameEmail = "email";
export declare const FieldNameEmailVisibility = "emailVisibility";
export declare const FieldNameVerified = "verified";
export declare const FieldNameTokenKey = "tokenKey";
export declare const FieldNamePassword = "password";
export declare const SystemDynamicFieldNames: string[];
export declare const InterceptorActionValidate = "validate";
export declare const InterceptorActionDelete = "delete";
export declare const InterceptorActionDeleteExecute = "deleteExecute";
export declare const InterceptorActionAfterDelete = "afterDelete";
export declare const InterceptorActionAfterDeleteError = "afterDeleteError";
export declare const InterceptorActionCreate = "create";
export declare const InterceptorActionCreateExecute = "createExecute";
export declare const InterceptorActionAfterCreate = "afterCreate";
export declare const InterceptorActionAfterCreateError = "afterCreateFailure";
export declare const InterceptorActionUpdate = "update";
export declare const InterceptorActionUpdateExecute = "updateExecute";
export declare const InterceptorActionAfterUpdate = "afterUpdate";
export declare const InterceptorActionAfterUpdateError = "afterUpdateError";
export declare const ErrUnknownField: import("../internal/compat/validation.js").ValidationError;
export declare const ErrInvalidFieldValue: import("../internal/compat/validation.js").ValidationError;
export declare const ErrMustBeSystemAndHidden: import("../internal/compat/validation.js").ValidationError;
export declare const ErrMustBeSystem: import("../internal/compat/validation.js").ValidationError;
export type FieldFactoryFunc = () => Field;
export declare const Fields: Record<string, FieldFactoryFunc>;
export interface Field {
    GetId(): string;
    SetId(id: string): void;
    GetName(): string;
    SetName(name: string): void;
    GetSystem(): boolean;
    SetSystem(system: boolean): void;
    GetHidden(): boolean;
    SetHidden(hidden: boolean): void;
    Type(): string;
    ColumnType(app: unknown): string;
    PrepareValue(record: RecordLike, raw: unknown): unknown;
    ValidateValue(ctx: unknown, app: unknown, record: RecordLike): Error | null;
    ValidateSettings(ctx: unknown, app: unknown, collection: Collection): Error | null;
}
export interface AsyncFieldValueValidator {
    ValidateValueAsync(ctx: unknown, app: unknown, record: RecordLike): Error | null | Promise<Error | null>;
}
export interface AsyncValidationRequirement {
    RequiresAsyncValidation: boolean | (() => boolean);
}
export interface MaxBodySizeCalculator {
    CalculateMaxBodySize(): number;
}
export type SetterFunc = (record: RecordLike, raw: unknown) => void;
export type GetterFunc = (record: RecordLike) => unknown;
export interface SetterFinder {
    FindSetter(key: string): SetterFunc | null;
}
export interface GetterFinder {
    FindGetter(key: string): GetterFunc | null;
}
export interface DriverValuer {
    DriverValue(record: RecordLike): [unknown, Error | null];
}
export interface MultiValuer {
    IsMultiple(): boolean;
}
export interface RecordInterceptor {
    Intercept(ctx: unknown, app: unknown, record: RecordLike, actionName: string, actionFunc: () => Error | null | Promise<Error | null>): Error | null | Promise<Error | null>;
    CanInterceptAction?(actionName: string): boolean;
}
export type RecordLike = {
    GetRaw: (field: string) => unknown;
    SetRaw: (field: string, value: unknown) => void;
    IsNew: () => boolean;
    LastSavedPK: () => string;
    TableName: () => string;
    GetDateTime?: (field: string) => {
        IsZero: () => boolean;
        Equal: (other: unknown) => boolean;
    };
    Original?: () => RecordLike;
};
export declare function defaultFieldHelpValidationRule(value: unknown): Error | null;
export declare function defaultFieldIdValidationRule(value: unknown): Error | null;
export declare function defaultFieldNameValidationRule(value: unknown): Error | null;
export declare function noopSetter(_record: RecordLike, _raw: unknown): void;
