#pragma once

#include "HybridAesSpec.hpp"
#include <NitroModules/ArrayBuffer.hpp>

namespace margelo::nitro::nitrokryptom {

class HybridAes: public HybridAesSpec {
public:
    HybridAes(): HybridObject(TAG) { }
    
public:
    std::shared_ptr<Promise<std::shared_ptr<ArrayBuffer>>> encrypt(const std::shared_ptr<ArrayBuffer>& data, const std::shared_ptr<ArrayBuffer>& key, const std::optional<std::shared_ptr<ArrayBuffer>>& iv) override;
    std::shared_ptr<Promise<std::shared_ptr<ArrayBuffer>>> decrypt(const std::shared_ptr<ArrayBuffer>& ivAndEncryptedData, const std::shared_ptr<ArrayBuffer>& key) override;
};

}

