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

#ifndef SRC_STORAGE_VOLUME_IMAGE_ADAPTER_BLOBFS_PARTITION_H_
#define SRC_STORAGE_VOLUME_IMAGE_ADAPTER_BLOBFS_PARTITION_H_

#include <lib/fit/result.h>

#include <string>

#include "src/storage/volume_image/adapter/adapter_options.h"
#include "src/storage/volume_image/fvm/options.h"
#include "src/storage/volume_image/partition.h"
#include "src/storage/volume_image/utils/reader.h"

namespace storage::volume_image {

// Returns a Partition to be incorporated into a FVM image, containing blobfs.
//
// Note: Eventually as blobfs host tool gets cleaned up, it should generate the volume and address
// descriptor for blobfs, in the meantime we generate them on the fly.
fit::result<Partition, std::string> CreateBlobfsFvmPartition(
    std::unique_ptr<Reader> source_image, const PartitionOptions& partition_options,
    const FvmOptions& fvm_options);

}  // namespace storage::volume_image

#endif  // SRC_STORAGE_VOLUME_IMAGE_ADAPTER_BLOBFS_PARTITION_H_
