use super::util::{from_json, into_py_result, to_json};
use crate::python_facade as facade;
use pyo3::prelude::*;
use pyo3::types::PyModule;
use pyo3::wrap_pyfunction;
#[pyfunction]
pub(crate) fn build_dataset_bootstrap_bundle_json(input_json: &str) -> PyResult<String> {
let input: facade::DatasetBootstrapWorkflowInput =
from_json("parse dataset bootstrap workflow input", input_json)?;
let bundle = into_py_result(facade::build_dataset_bootstrap_bundle(input))?;
to_json("serialize dataset bootstrap bundle", &bundle)
}
#[pyfunction]
pub(crate) fn build_dataset_incremental_bundle_json(input_json: &str) -> PyResult<String> {
let input: facade::DatasetIncrementalWorkflowInput =
from_json("parse dataset incremental workflow input", input_json)?;
let bundle = into_py_result(facade::build_dataset_incremental_bundle(input))?;
to_json("serialize dataset incremental bundle", &bundle)
}
#[pyfunction]
pub(crate) fn build_dataset_delivery_proof_package_json(
bundle_json: &str,
range_proof_package_json: &str,
) -> PyResult<String> {
let bundle: facade::DatasetProvenanceBundle =
from_json("parse dataset provenance bundle", bundle_json)?;
let range_proof_package: facade::RangeProofPackage =
from_json("parse range proof package", range_proof_package_json)?;
let package = into_py_result(facade::build_dataset_delivery_proof_package(
&bundle,
&range_proof_package,
))?;
to_json("serialize dataset delivery proof package", &package)
}
pub(crate) fn register_dataset_workflow_bindings(m: &Bound<'_, PyModule>) -> PyResult<()> {
m.add_function(wrap_pyfunction!(build_dataset_bootstrap_bundle_json, m)?)?;
m.add_function(wrap_pyfunction!(build_dataset_incremental_bundle_json, m)?)?;
m.add_function(wrap_pyfunction!(
build_dataset_delivery_proof_package_json,
m
)?)?;
Ok(())
}