import { App } from "../../../../main/electron";
export type StorageConfig = {
    app: App;
    namespace: string;
};
export type Filter = {
    extensions?: string[];
} | "*";
export type StorageListHandle<Metadata extends Record<string, any>, Content extends Record<string, any>> = {
    name: string;
    json: () => Promise<Content>;
    meta: () => Promise<Metadata>;
};
export declare class Storage<Metadata extends Record<string, any>, Content extends Record<string, any>> {
    readonly config: StorageConfig;
    constructor(config: StorageConfig);
    prepareDir(): Promise<void>;
    read(name: string): Promise<Content>;
    readMetadata(name: string): Promise<Metadata>;
    write(name: string, metadata: Metadata, data: Content): Promise<void>;
    list(filter: Filter[] | Filter): Promise<StorageListHandle<Metadata, Content>[]>;
    private filter;
    private resolve;
    private getRoot;
}
