#ifndef CONTENT_SERVICES_AUCTION_WORKLET_PRIVATE_MODEL_TRAINING_BINDINGS_H_
#define CONTENT_SERVICES_AUCTION_WORKLET_PRIVATE_MODEL_TRAINING_BINDINGS_H_
#include <optional>
#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "content/services/auction_worklet/auction_v8_helper.h"
#include "content/services/auction_worklet/context_recycler.h"
#include "v8/include/v8-forward.h"
namespace auction_worklet {
class PrivateModelTrainingBindings : public Bindings {
public:
explicit PrivateModelTrainingBindings(AuctionV8Helper* v8_helper);
PrivateModelTrainingBindings(const PrivateModelTrainingBindings&) = delete;
PrivateModelTrainingBindings& operator=(const PrivateModelTrainingBindings&) =
delete;
~PrivateModelTrainingBindings() override;
void AttachToContext(v8::Local<v8::Context> context) override;
void Reset() override;
const std::optional<mojo_base::BigBuffer>& payload() const {
return payload_;
}
std::optional<mojo_base::BigBuffer> TakePayload() {
return std::move(payload_);
}
private:
static void SendEncryptedTo(const v8::FunctionCallbackInfo<v8::Value>& args);
const raw_ptr<AuctionV8Helper> v8_helper_;
std::optional<mojo_base::BigBuffer> payload_ = std::nullopt;
bool already_called_ = false;
};
}
#endif