import { Application, Registry } from '@tego/server';
import { StorageEngine } from 'multer';
export interface StorageModel {
    title: string;
    type: string;
    name: string;
    baseUrl: string;
    options: {
        [key: string]: string;
    };
    deleteFileOnDestroy?: boolean;
}
export interface AttachmentModel {
    title: string;
    filename: string;
    path: string;
}
export interface IStorage {
    filenameKey?: string;
    middleware?(app: Application): void;
    getFileData?(file: {
        [key: string]: any;
    }): {
        [key: string]: any;
    };
    make(storage: StorageModel): StorageEngine;
    defaults(): StorageModel;
    delete(storage: StorageModel, records: AttachmentModel[]): Promise<[number, AttachmentModel[]]>;
}
declare const storageTypes: Registry<IStorage>;
export declare function getStorageConfig(key: string): IStorage;
export default storageTypes;
