// chrome/content/zotero/xpcom/data/dataObject.js declare interface _ZoteroDataObject { objectType: string; id: number; libraryID: number; library: _ZoteroLibrary; key: string; libraryKey: string; parentKey: string; parentID: number; itemTypeID: number; parentItem: _ZoteroItem; getRelations: () => object; getRelationsByPredicate: (predicate: string) => string[]; addRelation: (predicate: string, object: object) => boolean; hasRelation: (predicate: string, object: object) => boolean; removeRelation: (predicate: string, object: object) => boolean; setRelations: (newRelations: object) => boolean; hasChanged: () => boolean; isEditable: (_op: string = "edit") => boolean; save: (options?: any) => Promise; saveTx: (options?: any) => Promise; eraseTx: (options?: any) => Promise; erase: (options?: any) => Promise; _version: number; _synced: boolean; } declare interface _ZoteroDataObjectConstructable { new (): _ZoteroDataObject; } // chrome/content/zotero/xpcom/data/item.js declare interface _ZoteroItem extends _ZoteroDataObject { isRegularItem: () => boolean; isAttachment: () => boolean; isAnnotation: () => boolean; isPDFAttachment: () => boolean; getTags: () => { tag: string; type: number }[]; addTag: (name: string, type: number) => boolean; removeTag: (tag: string) => boolean; // Only regular item addToCollection: (id: number) => void; getNotes: () => _ZoteroItem[]; getCollections: () => number[]; getAttachments: () => _ZoteroItem[]; getField: ( name: string, unformatted?: boolean, includeBaseMapped?: boolean ) => any; setField: (name: string, value: string | number) => void; getCreators: () => { firstName?: string; lastName: string; fieldMode: number; creatorTypeID: number; }[]; getCreatorsJSON: () => { firstName?: string; lastName?: string; name?: string; creatorType: string; }[]; // Only image annotation & attachment item getFilePathAsync: () => string; // Only notes isNote: () => boolean; getNote: () => string; setNote: (content: string) => void; getNoteTitle: () => string; // Only Annotation annotationType: string; annotationComment: string; annotationText: string; annotationPosition: string; } declare interface _ZoteroItemConstructable { new (itemTypeOrID?: string): _ZoteroItem; } // chrome/content/zotero/xpcom/data/items.js declare class _ZoteroItems { [attr: string]: any; get: ( ids: number | number[] | string | string[] ) => _ZoteroItem | _ZoteroItem[]; getAll: ( libraryID: number, onlyTopLevel: boolean = false, includeDeleted: boolean = false, asIDs: boolean = false ) => Promise>; getAPIData: (libraryID, apiPath) => string; // item data in web API format apiDataGenerator: (params: object) => Promise; copyChildItems: (fromItem: _ZoteroItem, toItem: _ZoteroItem) => Promise; moveChildItems: ( fromItem: _ZoteroItem, toItem: _ZoteroItem, includeTrashed: boolean = false ) => Promise; merge: (item: _ZoteroItem, otherItems: _ZoteroItem[]) => Promise; trash: (ids: number[]) => Promise; trashTx: (ids: number[]) => Promise; emptyTrash: (libraryID: number, options: object = {}) => Promise; // return deleted items count addToPublications: ( items: _ZoteroItem[], options: object = {} ) => Promise; removeFromPublications: (items: _ZoteroItem[]) => Promise; purge: () => Promise; // Purge unused data values getFirstCreatorFromJSON: (json: JSON) => any; getFirstCreatorFromData: (itemTypeID: number, creatorsData: object) => string; keepParents: (items: _ZoteroItem[]) => _ZoteroItem[]; // Returns an array of items with children of selected parents removed getSortTitle: (title: string | number) => string; } // chrome/content/zotero/xpcom/data/collection.js declare interface _ZoteroCollection extends _ZoteroDataObject { name: string; version: number; synced: boolean; treeViewID: string; treeViewImage: string; loadFromRow: (row: object[]) => void; hasChildCollections: (includeTrashed: boolean = false) => boolean; hasChildItems: () => boolean; getChildCollections: (asIDs: boolean) => _ZoteroCollection[] | number[]; getChildItems: ( asIDs: boolean, includeDeleted: boolean ) => _ZoteroItem[] | number[]; addItem: (itemID: number, options: object = {}) => Promise; // do not require save addItems: (itemIDs: number[], options: object = {}) => Promise; // do not require save removeItem: (itemID: number, options: object = {}) => Promise; removeItems: (itemIDs: number[], options: object = {}) => Promise; hasItem: (item: number | _ZoteroItem) => boolean; hasDescendent: (type: string, id: number) => boolean; diff: (collection: _ZoteroCollection, includeMatches: boolean) => Array; clone: (libraryID: number) => _ZoteroCollection; // not saved isCollection: () => true; serialize: (nested: boolean) => { primary: { collectionID: number; libraryID: number; key: string; }; fields: { name: string; parentKey: string; }; childCollections: _ZoteroCollection[]; childItems: _ZoteroItem[]; descendents: object[]; }; fromJSON: (json: JSON, options: object = {}) => void; toJSON: (options: object = {}) => JSON; getDescendents: ( nested: boolean, type: string, includeDeletedItems: boolean = false, level: number = 1 ) => object[]; getLinkedCollection: ( libraryID: number, bidrectional: boolean ) => Promise<_ZoteroCollection>; addLinkedCollection: (collection: _ZoteroCollection) => Promise; } declare interface _ZoteroCollectionConstructable { new (params: object = {}): _ZoteroCollection; } // chrome/content/zotero/xpcom/data/collections.js declare class _ZoteroCollections { getName: () => string; getChildItems: (arg1: boolean, arg2: boolean) => Array<_ZoteroItem>; getByLibrary: ( libraryID: number, recursive: boolean = false ) => _ZoteroCollection[]; getByParent: ( parentCollectionID: number, recursive: boolean = false ) => _ZoteroCollection[]; getCollectionsContainingItems: ( itemIDs: number[], asIDs: boolean = false ) => _ZoteroItem[] | number[]; registerChildCollection: ( collectionID: number, childCollectionID: number ) => void; unregisterChildCollection: ( collectionID: number, childCollectionID: number ) => void; registerChildItem: (collectionID: number, itemID: number) => void; unregisterChildItem: (collectionID: number, itemID: number) => void; } // chrome/content/zotero/xpcom/data/library.js declare interface _ZoteroLibrary { libraryID: number; id: number; libraryType: "user" | "group"; libraryTypeID: number; isGroup: boolean; libraryVersion: number; syncable: boolean; lastSync: string; name: string; treeViewID: string; treeViewImage: string; hasTrash: boolean; allowsLinkedFiles: boolean; editable: boolean; filesEditable: boolean; storageVersion: number; archived: boolean; storageDownloadNeeded: boolean; loadAllDataTypes: () => Promise; getDataLoaded: (objectType: string) => boolean; setDataLoading: (objectType: string) => void; getDataLoadedPromise: (objectType: string) => Promise; setDataLoaded: (objectType: string) => void; waitForDataLoad: (objectType: string) => Promise; isChildObjectAllowed: (type: string) => boolean; updateLastSyncTime: () => void; save: (options?: any) => Promise; saveTx: (options?: any) => Promise; eraseTx: (options?: any) => Promise; erase: (options?: any) => Promise; hasCollections: () => boolean; updateCollections: () => Promise; hasSearches: () => boolean; updateSearches: () => Promise; hasItems: () => Promise; hasItem: (item: _ZoteroItem) => boolean; } declare interface _ZoteroLibraryConstructable { new (params: object = {}): _ZoteroLibrary; } // chrome/content/zotero/xpcom/data/libraries.js declare class _ZoteroLibraries { [attr: string]: any; userLibraryID: number = 1; userLibrary: _ZoteroLibrary; register: (library: _ZoteroLibrary) => void; unregister: (libraryID: number) => void; init: () => void; exists: (libraryID: number) => boolean; getAll: () => _ZoteroLibrary[]; get: (libraryID: number) => _ZoteroLibrary; }