import IDB from "./idb";
interface IDBStoreObject<T extends Record<string, any>> {
    value: T;
    getItem: <K extends Extract<keyof T, string>>(id: K) => Promise<T[K]>;
    setItem: <K extends Extract<keyof T, string>>(id: K, val: T[K]) => Promise<void>;
    removeItem: <K extends Extract<keyof T, string>>(id: K) => Promise<void>;
    clear: () => Promise<void>;
}
interface OptionsObject<T> {
    name: string;
    version?: number;
    initialValue?: T;
    onLoad?: () => void;
    onCreate?: () => void;
}
export declare class IDBObject<T extends Record<string, any>> extends IDB<T, Extract<keyof T, string>> {
    get: () => Promise<T>;
    set: (val: T) => Promise<T>;
    getItem: <K extends Extract<keyof T, string>>(id: K) => Promise<T[K]>;
    setItem: <K extends Extract<keyof T, string>>(id: K, val: T[K]) => Promise<T>;
    removeItem: (id: Extract<keyof T, string>) => Promise<T>;
    clear: () => Promise<T>;
}
declare const _default: <T extends Record<string, any>>({ name, version, initialValue, onLoad, onCreate }: OptionsObject<T>) => IDBStoreObject<T>;
export default _default;
