typedef (DOMString or sequence<DOMString>) IDBKeyPath;
[
Conditional=INDEXED_DATABASE,
GenerateIsReachable=Impl,
JSCustomMarkFunction,
SkipVTableValidation,
] interface IDBIndex {
attribute DOMString name;
readonly attribute IDBObjectStore objectStore;
readonly attribute IDBKeyPath? keyPath;
readonly attribute boolean multiEntry;
readonly attribute boolean unique;
[CallWith=ExecState, MayThrowException] IDBRequest openCursor(optional IDBKeyRange? range = null, optional IDBCursorDirection direction = "next");
[CallWith=ExecState, MayThrowException] IDBRequest openCursor(any key, optional IDBCursorDirection direction = "next");
[CallWith=ExecState, MayThrowException] IDBRequest openKeyCursor(optional IDBKeyRange? range = null, optional IDBCursorDirection direction = "next");
[CallWith=ExecState, MayThrowException] IDBRequest openKeyCursor(any key, optional IDBCursorDirection direction = "next");
[CallWith=ExecState, MayThrowException] IDBRequest get(IDBKeyRange? key);
[CallWith=ExecState, MayThrowException] IDBRequest get(any key);
[CallWith=ExecState, MayThrowException] IDBRequest getKey(IDBKeyRange? key);
[CallWith=ExecState, MayThrowException] IDBRequest getKey(any key);
[CallWith=ExecState, MayThrowException] IDBRequest getAll(optional IDBKeyRange? range = null, optional [EnforceRange] unsigned long count);
[CallWith=ExecState, MayThrowException] IDBRequest getAll(any key, optional [EnforceRange] unsigned long count);
[CallWith=ExecState, MayThrowException] IDBRequest getAllKeys(optional IDBKeyRange? range = null, optional [EnforceRange] unsigned long count);
[CallWith=ExecState, MayThrowException] IDBRequest getAllKeys(any key, optional [EnforceRange] unsigned long count);
[CallWith=ExecState, MayThrowException] IDBRequest count(optional IDBKeyRange? range = null);
[CallWith=ExecState, MayThrowException] IDBRequest count(any key);
};