// Copyright (c) Microsoft. All rights reserved.
using System;
namespace Microsoft.Agents.AI.Workflows.Checkpointing;
///
/// Defines methods for marshalling and unmarshalling objects to and from a wire format.
///
///
public interface IWireMarshaller
{
///
/// Marshals the specified value of the given type into a wire format container.
///
///
///
///
TWireContainer Marshal(object value, Type type);
///
/// Marshals the specified value into a wire format container.
///
///
///
///
TWireContainer Marshal(TValue value);
///
/// Unmarshals the specified wire format container into an object of the given type.
///
///
///
///
TValue Marshal(TWireContainer data);
///
/// Unmarshals the specified wire format container into an object of the specified target type.
///
///
///
///
object Marshal(Type targetType, TWireContainer data);
}