///
/// MediaToolkit-Swift-Cxx-Umbrella.hpp
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
/// https://github.com/mrousavy/nitro
/// Copyright © Marc Rousavy @ Margelo
///

#pragma once

// Forward declarations of C++ defined types
// Forward declaration of `CompressImageOptions` to properly resolve imports.
namespace margelo::nitro::mediatoolkit { struct CompressImageOptions; }
// Forward declaration of `CompressVideoOptions` to properly resolve imports.
namespace margelo::nitro::mediatoolkit { struct CompressVideoOptions; }
// Forward declaration of `ConcatResult` to properly resolve imports.
namespace margelo::nitro::mediatoolkit { struct ConcatResult; }
// Forward declaration of `CropOptions` to properly resolve imports.
namespace margelo::nitro::mediatoolkit { struct CropOptions; }
// Forward declaration of `ExtractAudioOptions` to properly resolve imports.
namespace margelo::nitro::mediatoolkit { struct ExtractAudioOptions; }
// Forward declaration of `FlipOptions` to properly resolve imports.
namespace margelo::nitro::mediatoolkit { struct FlipOptions; }
// Forward declaration of `GeneratePreviewOptions` to properly resolve imports.
namespace margelo::nitro::mediatoolkit { struct GeneratePreviewOptions; }
// Forward declaration of `HybridMediaToolkitSpec` to properly resolve imports.
namespace margelo::nitro::mediatoolkit { class HybridMediaToolkitSpec; }
// Forward declaration of `LocationData` to properly resolve imports.
namespace margelo::nitro::mediatoolkit { struct LocationData; }
// Forward declaration of `MediaMetadata` to properly resolve imports.
namespace margelo::nitro::mediatoolkit { struct MediaMetadata; }
// Forward declaration of `MediaResult` to properly resolve imports.
namespace margelo::nitro::mediatoolkit { struct MediaResult; }
// Forward declaration of `ProcessImageOptions` to properly resolve imports.
namespace margelo::nitro::mediatoolkit { struct ProcessImageOptions; }
// Forward declaration of `ProcessVideoOptions` to properly resolve imports.
namespace margelo::nitro::mediatoolkit { struct ProcessVideoOptions; }
// Forward declaration of `RotateOptions` to properly resolve imports.
namespace margelo::nitro::mediatoolkit { struct RotateOptions; }
// Forward declaration of `SpeedOptions` to properly resolve imports.
namespace margelo::nitro::mediatoolkit { struct SpeedOptions; }
// Forward declaration of `SplitImageOptions` to properly resolve imports.
namespace margelo::nitro::mediatoolkit { struct SplitImageOptions; }
// Forward declaration of `ThumbnailOptions` to properly resolve imports.
namespace margelo::nitro::mediatoolkit { struct ThumbnailOptions; }
// Forward declaration of `ThumbnailResult` to properly resolve imports.
namespace margelo::nitro::mediatoolkit { struct ThumbnailResult; }
// Forward declaration of `TrimAndCropOptions` to properly resolve imports.
namespace margelo::nitro::mediatoolkit { struct TrimAndCropOptions; }
// Forward declaration of `TrimOptions` to properly resolve imports.
namespace margelo::nitro::mediatoolkit { struct TrimOptions; }
// Forward declaration of `VideoCropOptions` to properly resolve imports.
namespace margelo::nitro::mediatoolkit { struct VideoCropOptions; }

// Include C++ defined types
#include "CompressImageOptions.hpp"
#include "CompressVideoOptions.hpp"
#include "ConcatResult.hpp"
#include "CropOptions.hpp"
#include "ExtractAudioOptions.hpp"
#include "FlipOptions.hpp"
#include "GeneratePreviewOptions.hpp"
#include "HybridMediaToolkitSpec.hpp"
#include "LocationData.hpp"
#include "MediaMetadata.hpp"
#include "MediaResult.hpp"
#include "ProcessImageOptions.hpp"
#include "ProcessVideoOptions.hpp"
#include "RotateOptions.hpp"
#include "SpeedOptions.hpp"
#include "SplitImageOptions.hpp"
#include "ThumbnailOptions.hpp"
#include "ThumbnailResult.hpp"
#include "TrimAndCropOptions.hpp"
#include "TrimOptions.hpp"
#include "VideoCropOptions.hpp"
#include <NitroModules/Promise.hpp>
#include <NitroModules/Result.hpp>
#include <exception>
#include <memory>
#include <optional>
#include <string>
#include <vector>

// C++ helpers for Swift
#include "MediaToolkit-Swift-Cxx-Bridge.hpp"

// Common C++ types used in Swift
#include <NitroModules/ArrayBufferHolder.hpp>
#include <NitroModules/AnyMapUtils.hpp>
#include <NitroModules/RuntimeError.hpp>
#include <NitroModules/DateToChronoDate.hpp>

// Forward declarations of Swift defined types
// Forward declaration of `HybridMediaToolkitSpec_cxx` to properly resolve imports.
namespace MediaToolkit { class HybridMediaToolkitSpec_cxx; }

// Include Swift defined types
#if __has_include("MediaToolkit-Swift.h")
// This header is generated by Xcode/Swift on every app build.
// If it cannot be found, make sure the Swift module's name (= podspec name) is actually "MediaToolkit".
#include "MediaToolkit-Swift.h"
// Same as above, but used when building with frameworks (`use_frameworks`)
#elif __has_include(<MediaToolkit/MediaToolkit-Swift.h>)
#include <MediaToolkit/MediaToolkit-Swift.h>
#else
#error MediaToolkit's autogenerated Swift header cannot be found! Make sure the Swift module's name (= podspec name) is actually "MediaToolkit", and try building the app first.
#endif
