[Exposed=(Window,Worker)]
interface IDBDatabase : EventTarget {
    readonly attribute DOMString name;
    readonly attribute unsigned long long version;
    readonly attribute DOMStringList objectStoreNames;

    [NewObject] IDBTransaction transaction((DOMString or sequence<DOMString>) storeNames, optional IDBTransactionMode mode = "readonly", optional IDBTransactionOptions options = {});
    undefined close();
    [NewObject] IDBObjectStore createObjectStore(DOMString name, optional IDBObjectStoreParameters options = {});
    undefined deleteObjectStore(DOMString name);

    // Event handlers:
    attribute EventHandler onabort;
    attribute EventHandler onclose;
    attribute EventHandler onerror;
    attribute EventHandler onversionchange;
};

enum IDBTransactionDurability { "default", "strict", "relaxed" };

dictionary IDBTransactionOptions {
    IDBTransactionDurability durability = "default";
};

dictionary IDBObjectStoreParameters {
    (DOMString or sequence<DOMString>)? keyPath = null;
    boolean autoIncrement = false;
};
