// Copyright 2020 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.

// Datatypes and interfaces of grammar checker API.

// NOTE: This mojom exists in two places and must be kept in sync:
//       Chromium:  //chromeos/services/machine_learning/public/mojom/
//       Chrome OS: src/platform2/ml/mojom/
//       Note: Other repos downstream of Chromium might also use this mojom.
// Example: A backwards-compatible mojom change (and corresponding
// implementation change) can be made in Chrome OS first, then replicated to the
// clients (Chromium, other downstream repos) later.
// Use //chromeos/services/machine_learning/public/mojom/roll_mojom.sh to help
// replicate Chrome OS-side changes over to Chromium.

module chromeos.machine_learning.mojom;

// Defines a grammar check query.
struct GrammarCheckerQuery {
  // Required: Text to be checked. This is expected to be a full sentence.
  string text;

  // Required: Language of the text to be checked, in BCP-47 format.
  string language;
};

// One possible candidate returned from the grammar checker model.
struct GrammarCheckerCandidate {
  // Corrected text.
  string text;

  // Score of the text. Log of conditional probability.
  float score;
};

// The grammar check response.
struct GrammarCheckerResult {
  // Status of the response.
  enum Status {
    // Grammar check succeeded.
    OK = 0,
    // Grammar check failed. In this case, candidates will be empty.
    ERROR = 1,
  };
  Status status;

  // Candidates of corrected text and their scores, sorted by higher score
  // first.
  array<GrammarCheckerCandidate> candidates;
};

// The mojom interface for performing the grammar check.
interface GrammarChecker {
  // Performs grammar check on a piece of text, and returns a set of
  // candidates of corrected text and their scores.
  Check(GrammarCheckerQuery query) => (GrammarCheckerResult result);
};
