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

// This file was generated by:
//   ./tools/json_schema_compiler/compiler.py.

/** @fileoverview Interface for quickUnlockPrivate that can be overriden. */

assertNotReached('Interface file for Closure Compiler should not be executed.');

/** @interface */
function QuickUnlockPrivate() {}

QuickUnlockPrivate.prototype = {
  /**
   * Returns a token that can be used for future operations and the number of
   * seconds until the token expires.
   * @param {string} accountPassword The account password for the logged in
   *     user.
   * @param {function(!chrome.quickUnlockPrivate.TokenInfo):void} onComplete
   * @see https://developer.chrome.com/extensions/quickUnlockPrivate#method-getAuthToken
   */
  getAuthToken: assertNotReached,

  /**
   * Sets the lock screen enabled state. NOTE: The lock enabled state is
   * reflected in the settings.enable_screen_lock pref, which can be read but
   * not written using the settings_private API (which also provides policy
   * information). This API must be used to change the pref.
   * @param {string} token The token returned by $(ref:getAuthToken).
   * @param {boolean} enabled
   * @param {function():void=} onComplete
   * @see https://developer.chrome.com/extensions/quickUnlockPrivate#method-setLockScreenEnabled
   */
  setLockScreenEnabled: assertNotReached,

  /**
   * Returns the set of quick unlock modes that are available for the user to
   * use. Some quick unlock modes may be disabled by policy.
   * @param {function(!Array<!chrome.quickUnlockPrivate.QuickUnlockMode>):void}
   *     onComplete
   * @see https://developer.chrome.com/extensions/quickUnlockPrivate#method-getAvailableModes
   */
  getAvailableModes: assertNotReached,

  /**
   * Returns the quick unlock modes that are currently enabled and usable on the
   * lock screen.
   * @param {function(!Array<!chrome.quickUnlockPrivate.QuickUnlockMode>):void}
   *     onComplete
   * @see https://developer.chrome.com/extensions/quickUnlockPrivate#method-getActiveModes
   */
  getActiveModes: assertNotReached,

  /**
   * Checks if the given credential can be used for the given unlock mode.
   * Enterprise policy can change credential requirements.
   * @param {!chrome.quickUnlockPrivate.QuickUnlockMode} mode The quick unlock
   *     mode that is used.
   * @param {string} credential The given credential.
   * @param {function(!chrome.quickUnlockPrivate.CredentialCheck):void}
   *     onComplete Called with a list of warnings and errors the given
   *     |credential| has (or an empty list if there are none).
   * @see https://developer.chrome.com/extensions/quickUnlockPrivate#method-checkCredential
   */
  checkCredential: assertNotReached,

  /**
   * Gets the credential requirements for the given unlock mode.
   * @param {!chrome.quickUnlockPrivate.QuickUnlockMode} mode The quick unlock
   *     mode that is used.
   * @param {function(!chrome.quickUnlockPrivate.CredentialRequirements):void}
   *     onComplete Called with the credential requirements of the given
   *     |mode|.
   * @see https://developer.chrome.com/extensions/quickUnlockPrivate#method-getCredentialRequirements
   */
  getCredentialRequirements: assertNotReached,

  /**
   * Update the set of quick unlock modes that are currently active/enabled.
   * @param {string} token The token returned by $(ref:getAuthToken).
   * @param {!Array<!chrome.quickUnlockPrivate.QuickUnlockMode>} modes The quick
   *     unlock modes that should be active.
   * @param {!Array<string>} credentials The associated credential for each
   *     mode. To keep the     credential the same for the associated mode, pass
   *     an empty string.
   * @param {function():void} onComplete Called with true if the quick unlock
   *     state was updated,     false otherwise. The update is treated as a
   *     single atomic operation.
   * @see https://developer.chrome.com/extensions/quickUnlockPrivate#method-setModes
   */
  setModes: assertNotReached,
};

/**
 * Called after the active set of quick unlock modes has changed.
 * @type {!ChromeEvent}
 * @see https://developer.chrome.com/extensions/quickUnlockPrivate#event-onActiveModesChanged
 */
QuickUnlockPrivate.prototype.onActiveModesChanged;
