#ifndef CHROME_BROWSER_EXTENSIONS_API_AUTOFILL_PRIVATE_AUTOFILL_UTIL_H_
#define CHROME_BROWSER_EXTENSIONS_API_AUTOFILL_PRIVATE_AUTOFILL_UTIL_H_
#include <map>
#include <memory>
#include <optional>
#include "base/functional/callback_forward.h"
#include "chrome/common/extensions/api/autofill_private.h"
#include "components/device_reauth/device_authenticator.h"
namespace autofill {
class AddressDataManager;
class CreditCard;
class PaymentsDataManager;
}
namespace extensions::autofill_util {
using AddressEntryList = std::vector<api::autofill_private::AddressEntry>;
using CountryEntryList = std::vector<api::autofill_private::CountryEntry>;
using CreditCardEntryList = std::vector<api::autofill_private::CreditCardEntry>;
using IbanEntryList = std::vector<api::autofill_private::IbanEntry>;
using PayOverTimeIssuerEntryList =
std::vector<api::autofill_private::PayOverTimeIssuerEntry>;
using CallbackAfterSuccessfulUserAuth = base::OnceCallback<void(bool)>;
AddressEntryList GenerateAddressList(const autofill::AddressDataManager& adm);
CountryEntryList GenerateCountryList();
CreditCardEntryList GenerateCreditCardList(
const autofill::PaymentsDataManager& paydm);
IbanEntryList GenerateIbanList(const autofill::PaymentsDataManager& paydm);
PayOverTimeIssuerEntryList GeneratePayOverTimeIssuerList(
const autofill::PaymentsDataManager& paydm);
std::optional<api::autofill_private::AccountInfo> GetAccountInfo(
const autofill::AddressDataManager& adm);
api::autofill_private::CreditCardEntry CreditCardToCreditCardEntry(
const autofill::CreditCard& credit_card,
const autofill::PaymentsDataManager& paydm,
bool mask_local_cards);
}
#endif