/*
This file is part of Telegram Desktop,
the official desktop application for the Telegram messaging service.

For license and copyright information please follow this link:
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#pragma once

namespace Ui {
class RpWidget;
class SeparatePanel;
} // namespace Ui

namespace Passport {

class PanelController;

class Panel {
public:
	Panel(not_null<PanelController*> controller);

	int hideAndDestroyGetDuration();

	void showAskPassword();
	void showNoPassword();
	void showForm();
	void showCriticalError(const QString &error);
	void showEditValue(object_ptr<Ui::RpWidget> form);
	void showBox(
		object_ptr<BoxContent> box,
		LayerOptions options,
		anim::type animated);
	void showToast(const QString &text);

	rpl::producer<> backRequests() const;
	void setBackAllowed(bool allowed);

	not_null<Ui::RpWidget*> widget() const;

	~Panel();

private:
	not_null<PanelController*> _controller;
	std::unique_ptr<Ui::SeparatePanel> _widget;

};

} // namespace Passport