#ifndef COMPONENTS_COMPOSE_CORE_BROWSER_COMPOSE_CLIENT_H_
#define COMPONENTS_COMPOSE_CORE_BROWSER_COMPOSE_CLIENT_H_
#include <string>
#include "base/functional/callback.h"
#include "components/autofill/core/browser/foundations/autofill_client.h"
#include "components/autofill/core/browser/integrators/compose/autofill_compose_delegate.h"
#include "components/autofill/core/common/form_field_data.h"
#include "components/compose/core/browser/compose_metrics.h"
namespace compose {
class ComposeManager;
class ComposeClient {
public:
using FieldIdentifier =
std::pair<autofill::FieldGlobalId, autofill::FormGlobalId>;
using ComposeCallback = base::OnceCallback<void(const std::u16string&)>;
virtual ~ComposeClient() = default;
virtual ComposeManager& GetManager() = 0;
virtual bool HasSession(const autofill::FieldGlobalId& trigger_field_id) = 0;
virtual void ShowComposeDialog(
autofill::AutofillComposeDelegate::UiEntryPoint ui_entry_point,
const autofill::FormFieldData& trigger_field,
std::optional<autofill::AutofillClient::PopupScreenLocation>
popup_screen_location,
ComposeCallback callback) = 0;
virtual bool ShouldTriggerPopup(
const autofill::FormData& form_data,
const autofill::FormFieldData& trigger_field,
autofill::AutofillSuggestionTriggerSource trigger_source) = 0;
virtual PageUkmTracker* GetPageUkmTracker() = 0;
virtual void DisableProactiveNudge() = 0;
virtual void OpenProactiveNudgeSettings() = 0;
virtual void AddSiteToNeverPromptList(const url::Origin& origin) = 0;
};
}
#endif