// This Header is auto generated by BDSLiteLoader Toolchain
#pragma once
#define AUTO_GENERATED
#include "../Global.h"
#include "Bedrock.hpp"

#define BEFORE_EXTRA

#undef BEFORE_EXTRA

class BackgroundTask {

#define AFTER_EXTRA

#undef AFTER_EXTRA
#ifndef DISABLE_CONSTRUCTOR_PREVENTION_BACKGROUNDTASK
public:
    class BackgroundTask& operator=(class BackgroundTask const &) = delete;
    BackgroundTask(class BackgroundTask const &) = delete;
    BackgroundTask() = delete;
#endif

public:
    /*0*/ virtual ~BackgroundTask();
    /*1*/ virtual enum Bedrock::Threading::AsyncStatus getStatus() const;
    /*2*/ virtual class std::error_code getError() const;
    /*3*/ virtual class std::exception_ptr getException() const;
    /*4*/ virtual void cancel();
    /*5*/ virtual void addOnComplete(class std::function<void (class Bedrock::Threading::IAsyncResult<void> const &)>);
    /*6*/ virtual class TaskResult invoke();
#ifdef ENABLE_VIRTUAL_FAKESYMBOL_BACKGROUNDTASK
#endif
    MCAPI BackgroundTask(class gsl::not_null<class ITaskGroup *>, struct TaskStartInfo &, bool, class std::function<class TaskResult (void)>);
    MCAPI enum BackgroundTask::TaskRunResult run(class ITaskExecutionContext const *);
    MCAPI void setNext(class std::shared_ptr<class BackgroundTask>);
    MCAPI static class std::shared_ptr<class BackgroundTask> create(class gsl::not_null<class ITaskGroup *>, struct TaskStartInfo &, bool, class std::function<class TaskResult (void)>);

//private:
    MCAPI void _setPredecessor(class std::shared_ptr<class Bedrock::Threading::IAsyncResult<void>>, bool);
    MCAPI bool _tryTransitionTo(enum BackgroundTask::TaskStatus, bool, bool);

private:

};