chromium/tools/typescript/definitions/bookmarks.d.ts

// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

/** @fileoverview Definitions for chrome.bookmarks API. */
// TODO(crbug.com/40179454): Auto-generate this file.

import {ChromeEvent} from './chrome_event.js';

declare global {
  export namespace chrome {
    export namespace bookmarks {
      export enum BookmarkTreeNodeUnmodifiable {
        MANAGED = 'managed',
      }

      export interface BookmarkTreeNode {
        id: string;
        parentId?: string;
        index?: number;
        url?: string;
        title: string;
        dateAdded?: number;
        dateLastUsed?: number;
        dateGroupModified?: number;
        unmodifiable?: BookmarkTreeNodeUnmodifiable;
        children?: BookmarkTreeNode[];
      }

      export interface CreateDetails {
        parentId?: string|null;
        index?: number;
        title?: string;
        url?: string;
      }

      export const MAX_WRITE_OPERATIONS_PER_HOUR: number;
      export const MAX_SUSTAINED_WRITE_OPERATIONS_PER_MINUTE: number;

      export function get(idOrIdList: string|
                          string[]): Promise<BookmarkTreeNode[]>;

      export function getChildren(id: string): Promise<BookmarkTreeNode[]>;

      export function getRecent(numberOfItems: number):
          Promise<BookmarkTreeNode[]>;

      export function getTree(): Promise<BookmarkTreeNode[]>;

      export function getSubTree(id: string): Promise<BookmarkTreeNode[]>;

      export function search(query: string|{
        query?: string,
        url?: string,
        title?: string,
      }): Promise<BookmarkTreeNode[]>;

      export function create(bookmark: CreateDetails):
          Promise<BookmarkTreeNode>;

      export function move(id: string, destination: {
        parentId?: string,
        index?: number,
      }): Promise<BookmarkTreeNode>;

      export function update(id: string, changes: {
        title?: string,
        url?: string,
      }): Promise<BookmarkTreeNode>;

      export function remove(id: string): Promise<void>;
      export function removeTree(id: string): Promise<void>;

      export const onCreated:
          ChromeEvent<(id: string, bookmark: BookmarkTreeNode) => void>;

      export interface ChangeInfo {
        title: string;
        url?: string;
      }

      export const onChanged:
          ChromeEvent<(id: string, changeInfo: ChangeInfo) => void>;

      export interface ReorderInfo {
        childIds: string[];
      }

      export const onChildrenReordered:
          ChromeEvent<(id: string, reorderInfo: ReorderInfo) => void>;

      export interface RemoveInfo {
        index: number;
        node: BookmarkTreeNode;
        parentId: string;
      }

      export const onRemoved:
          ChromeEvent<(id: string, removeInfo: RemoveInfo) => void>;

      export interface MoveInfo {
        index: number;
        oldIndex: number;
        oldParentId: string;
        parentId: string;
      }

      export const onMoved:
          ChromeEvent<(id: string, moveInfo: MoveInfo) => void>;

      export const onImportEnded: ChromeEvent<() => void>;
      export const onImportBegan: ChromeEvent<() => void>;
    }
  }
}