import * as util from "util";
export declare class FlatfileRecord<T extends Record<string, any> = Record<string, any>> {
    data: Readonly<Partial<T>>;
    private _changes;
    private _errs;
    private _deleted;
    private _tempId?;
    constructor(data: Readonly<Partial<T>>, dirty?: boolean);
    get id(): string | NonNullable<Partial<T>[string]> | undefined;
    get slug(): Partial<T>[string];
    get sheetId(): Partial<T>[string];
    set(key: string, value: any): this | undefined;
    flag(key: string): void;
    unflag(key: string): void;
    get(key: string): any;
    has(key: string): boolean;
    hasAny(...keys: string[]): boolean;
    hasAll(...keys: string[]): boolean;
    isEmpty(key: string): boolean;
    keys(options?: {
        omit?: string[];
        pick?: string[];
    }): string[];
    keysWithData(props?: {
        exclude?: Array<string | string[]>;
    }): string[];
    intersects(item: FlatfileRecord, keys: string[]): boolean;
    hash(...keys: string[]): string;
    isDirty(key?: string): boolean;
    eachOfKeysPresent(keys: string[], callback: (key: string, value: any) => void): void;
    isDeleted(): boolean;
    delete(): void;
    str(key: string): string | null;
    defStr(key: string): string;
    bool(key: string): boolean;
    date(key: string): Date | null;
    pick(...keys: string[]): Record<string, any>;
    err(key: string, msg: string): this;
    values(): any;
    entries(): any[][];
    merge(item: FlatfileRecord, props?: {
        overwrite?: boolean;
    }): this;
    hasConflict(b: FlatfileRecord, keys?: string[]): boolean;
    toJSON(): Readonly<Partial<T>> & {
        [k: string]: any;
    };
    [util.inspect.custom](): string;
    copy(props?: {
        mixin?: FlatfileRecord;
        select?: string[];
        slug?: string;
        sheetId?: string;
    }): FlatfileRecord<Record<string, any>>;
    commit(): void;
    changeset(): {
        [k: string]: any;
    };
}
