import Anki from "ankisync";
import { R2rLocal } from ".";
import { ICondOptions, IEntry, IPagedOutput, IRender, ISortedData, IProgress } from "./util";
export interface IMedia {
    name: string;
    h: string;
    data: ArrayBuffer;
}
export declare abstract class R2rFormat {
    abstract build(): Promise<this>;
    abstract close(): Promise<this>;
    abstract reset(): Promise<this>;
    abstract parseCond(q: string, options: ICondOptions<IEntry>): Promise<IPagedOutput<Partial<IEntry>>>;
    abstract insertMany(entries: IEntry[]): Promise<string[]>;
    abstract updateMany(ids: string[], u: Partial<IEntry>): Promise<void>;
    abstract addTags(ids: string[], tags: string[]): Promise<void>;
    abstract removeTags(ids: string[], tags: string[]): Promise<void>;
    abstract deleteMany(ids: string[]): Promise<void>;
    abstract render(cardId: string): Promise<IRender>;
    abstract fromR2r(r2r: R2rLocal, options?: {
        filename?: string;
        callback?: (p: IProgress) => void;
    }): Promise<void>;
    abstract export(r2r: R2rLocal, q: string, options?: {
        callback?: (p: IProgress) => void;
    }): Promise<void>;
    abstract fromAnki(anki: Anki, options?: {
        filename?: string;
        callback?: (p: IProgress) => void;
    }): Promise<void>;
    abstract getMedia(h: string): Promise<IMedia | null>;
    abstract allMedia(): Promise<IMedia[]>;
    abstract createMedia(m: {
        name: string;
        data: ArrayBuffer;
    }): Promise<string>;
    abstract deleteMedia(h: string): Promise<boolean>;
    protected abstract updateSrsLevel(dSrsLevel: number, cardId: string): Promise<void>;
    protected abstract transformCreateOrUpdate(cardId: string | null, u: Partial<IEntry>, timestamp: Date): Promise<Partial<IEntry>>;
    protected abstract getData(cardId: string): Promise<ISortedData | null>;
    protected abstract getFront(cardId: string): Promise<string>;
    markRight(cardId: string): Promise<void>;
    markWrong(cardId: string): Promise<void>;
    getTemplateKey(t: any): string;
    getNoteKey(data: Record<string, any>): string;
}
//# sourceMappingURL=format.d.ts.map