using Microsoft.CodeAnalysis;
namespace QuestPDF.InteropGenerators;
///
/// Interface for generating interop bindings for QuestPDF public API.
/// Generates both C# native AOT code for C ABI/FFI and Python bindings.
///
public interface ISourceGenerator
{
///
/// Generates C# code for native AOT compilation with C ABI compatibility.
/// This should produce UnmanagedCallersOnly methods for FFI interop.
/// Return empty string if the type doesn't require C interop code (e.g., enums).
///
/// Root namespace symbol to analyze
/// Generated C# interop code or empty string if not applicable
string GenerateCSharpCode(INamespaceSymbol namespaceSymbol);
///
/// Generates Python bindings code using ctypes or similar FFI mechanisms.
/// This creates Python classes and functions that wrap the C ABI interface.
///
/// Root namespace symbol to analyze
/// Generated Python binding code
string GeneratePythonCode(INamespaceSymbol namespaceSymbol);
}