@namespace("keybase.1")

protocol track {
  import idl "common.avdl";
  import idl "identify_common.avdl";

  /**
    This will perform identify and track.
    If forceRemoteCheck is true, we force all remote proofs to be checked
    (otherwise a cache is used).
    */
  void track(int sessionID, string userAssertion, TrackOptions options, boolean forceRemoteCheck);

  /**
    Track with token returned from identify.
    */
  void trackWithToken(int sessionID, TrackToken trackToken, TrackOptions options);

  /**
    Called by the UI when the user decides *not* to track, to e.g. dismiss gregor items.
    */
  void dismissWithToken(int sessionID, TrackToken trackToken);

  void untrack(int sessionID, string username);

  void checkTracking(int sessionID);

  void fakeTrackingChanged(int sessionID, string username, boolean isTracking);
}

