#ifndef SMO_SUBCONSCIOUS_THREAD_H
#define SMO_SUBCONSCIOUS_THREAD_H

#include <boost/asio/io_context.hpp>
#include <spinscale/co/invokers.h>
#include <spinscale/co/postingPromise.h>

namespace smo {

struct SubconsciousThreadTag
{
	static boost::asio::io_context &io_context();
};

template <typename T>
using SubconsciousPostingPromise =
	sscl::co::TaggedPostingPromise<T, SubconsciousThreadTag>;

template <typename T>
using SubconsciousViralPostingInvoker =
	sscl::co::ViralPostingInvoker<SubconsciousPostingPromise, T>;

} // namespace smo

#endif // SMO_SUBCONSCIOUS_THREAD_H
