import * as plugins from './plugins.js';
import { File } from './classes.file.js';
export declare class MetaData {
    static hasMetaData(optionsArg: {
        file: File;
    }): Promise<boolean>;
    static createForFile(optionsArg: {
        file: File;
    }): Promise<MetaData>;
    /**
     * the file that contains the metadata
     */
    metadataFile: File;
    /**
     * the file that the metadata is for
     */
    fileRef: File;
    getFileType(optionsArg?: {
        useFileExtension?: boolean;
        useMagicBytes?: boolean;
    }): Promise<plugins.smartmime.IFileTypeResult | undefined>;
    /**
     * gets the size of the fileRef
     */
    getSizeInBytes(): Promise<number>;
    private prefixCustomMetaData;
    storeCustomMetaData<T = any>(optionsArg: {
        key: string;
        value: T;
    }): Promise<void>;
    getCustomMetaData<T = any>(optionsArg: {
        key: string;
    }): Promise<T>;
    deleteCustomMetaData(optionsArg: {
        key: string;
    }): Promise<void>;
    /**
     * set a lock on the ref file
     * @param optionsArg
     */
    setLock(optionsArg: {
        lock: string;
        expires: number;
    }): Promise<void>;
    /**
     * remove the lock on the ref file
     * @param optionsArg
     */
    removeLock(optionsArg: {
        force: boolean;
    }): Promise<void>;
    checkLocked(): Promise<boolean>;
    getLockInfo(): Promise<{
        lock: string;
        expires: number;
    }>;
}
