// Jackson Coxson #pragma once #include #include #include #include #include namespace IdeviceFFI { using MobileActivationdPtr = std::unique_ptr>; class MobileActivationd { public: // Factory: connect via Provider static Result connect(Provider& provider); // Ops Result get_state(); Result is_activated(); Result deactivate(); // RAII / moves ~MobileActivationd() noexcept = default; MobileActivationd(MobileActivationd&&) noexcept = default; MobileActivationd& operator=(MobileActivationd&&) noexcept = default; MobileActivationd(const MobileActivationd&) = delete; MobileActivationd& operator=(const MobileActivationd&) = delete; MobileActivationdClientHandle* raw() const noexcept { return handle_.get(); } static MobileActivationd adopt(MobileActivationdClientHandle* h) noexcept { return MobileActivationd(h); } private: explicit MobileActivationd(MobileActivationdClientHandle* h) noexcept : handle_(h) {} MobileActivationdPtr handle_{}; }; } // namespace IdeviceFFI