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

library fuchsia.fuzzer;

using zx;

/// See |Controller.GetCorpusWriter| and |Controller.GetCorpusReader|.
type Corpus = flexible enum : uint8 {
    /// Indicates a set of fixed, immutable inputs typically provided at start-up. These inputs are
    /// never discarded when merging.
    SEED = 1;

    /// Indicates a set of inputs generated by the fuzzer. These may be modified and/or discarded
    /// when merging and minimizing the corpus.
    LIVE = 2;
};

/// Receives a sequence of test inputs belonging to a fuzzer's corpus.
/// Returns an error if the transfer fails.
protocol CorpusReader {
    Next(resource struct {
        test_input Input;
    }) -> (struct {
        result zx.status;
    });
};
