import type { Field } from "./field.js";
import type { FileField } from "./field_file.js";
import { GeoPoint } from "../tools/types/index.js";
import { Collection } from "./collection_model.js";
import "./record_model_auth.js";
export type RecordData = {
    [key: string]: unknown;
};
export type RecordExportOptions = {
    includeHidden?: boolean;
    ignoreEmailVisibility?: boolean;
};
export declare const FieldNameId = "id";
export declare const FieldNamePassword = "password";
export declare const FieldNameTokenKey = "tokenKey";
export declare const FieldNameEmailVisibility = "emailVisibility";
export declare const FieldNameEmail = "email";
export declare const FieldNameVerified = "verified";
export declare const FieldNameCollectionId = "collectionId";
export declare const FieldNameCollectionName = "collectionName";
export declare const FieldNameExpand = "expand";
export declare const RecordModelTypeHookTag = "__pb_record_model__";
export declare const internalCustomFieldKeyPrefix = "@pbInternal";
export declare class Record {
    #private;
    id: string;
    static fromRow(collection: Collection, row: RecordData): Record;
    constructor(collection: Collection, data?: RecordData, isNew?: boolean);
    collection(): Collection;
    get Id(): string;
    set Id(value: string);
    getRawDataValue(field: string): unknown;
    getRawDataBool(field: string): boolean;
    GetRaw(field: string): unknown;
    getRaw(field: string): unknown;
    SetRaw(field: string, value: unknown): void;
    setRaw(field: string, value: unknown): void;
    IsNew(): boolean;
    markNew(value?: boolean): void;
    PostScan(): Error | null;
    Get(field: string): unknown;
    get(field: string): unknown;
    GetBool(field: string): boolean;
    getBool(field: string): boolean;
    GetString(field: string): string;
    getString(field: string): string;
    GetInt(field: string): number;
    getInt(field: string): number;
    GetFloat(field: string): number;
    getFloat(field: string): number;
    GetDateTime(field: string): import("../tools/types/datetime.js").DateTime;
    getDateTime(field: string): import("../tools/types/datetime.js").DateTime;
    GetGeoPoint(field: string): GeoPoint;
    getGeoPoint(field: string): GeoPoint;
    GetStringSlice(field: string): string[];
    getStringSlice(field: string): string[];
    GetUnsavedFiles(key: string): unknown[];
    getUnsavedFiles(key: string): unknown[];
    GetUploadedFiles(key: string): unknown[];
    getUploadedFiles(key: string): unknown[];
    UnmarshalJSONField(key: string, result: unknown): Error | null;
    unmarshalJSONField(key: string, result: unknown): void;
    Set(field: string, value: unknown): void;
    set(field: string, value: unknown): void;
    Load(data: RecordData): void;
    LastSavedPK(): string;
    PK(): string;
    MarkAsNew(): void;
    MarkAsNotNew(): void;
    Original(): Record;
    Fresh(): Record;
    Clone(): Record;
    FieldsData(): RecordData;
    CustomData(): RecordData;
    Expand(): RecordData;
    HasExpand(): boolean;
    SetExpand(expand: RecordData | null): void;
    MergeExpand(expand: RecordData): void;
    ExpandedOne(relField: string): Record | null;
    expandedOne(relField: string): Record | null;
    ExpandedAll(relField: string): Record[];
    expandedAll(relField: string): Record[];
    FindFileFieldByFile(filename: string): FileField | null;
    Hide(...fieldNames: string[]): this;
    Unhide(...fieldNames: string[]): this;
    WithCustomData(state: boolean): this;
    IgnoreEmailVisibility(state: boolean): this;
    ignoreUnchangedFields(state: boolean): this;
    IgnoreUnchangedFields(state: boolean): this;
    SetIfFieldExists(key: string, value: unknown): Field | null;
    ReplaceModifiers(data: RecordData): RecordData;
    TableName(): string;
    HookTags(): string[];
    BaseFilesPath(): string;
    callFieldInterceptors(ctx: unknown, app: unknown, actionName: string, actionFunc: () => Error | null | Promise<Error | null>): Error | null | Promise<Error | null>;
    callFieldInterceptorsSync(ctx: unknown, app: unknown, actionName: string, actionFunc: () => Error | null): Error | null;
    DBExport(): RecordData;
    tokenKey(): string;
    isSuperuser(): boolean;
    IsSuperuser(): boolean;
    export(options?: RecordExportOptions): RecordData;
    publicExport(): RecordData;
    PublicExport(): RecordData;
    toJSON(): RecordData;
    MarshalJSON(): string;
    marshalJSON(): string;
    UnmarshalJSON(data: string | Uint8Array): Error | null;
    unmarshalJSON(data: string | Uint8Array): void;
}
export declare function NewRecord(collection: Collection, data?: RecordData): Record;
