#ifndef CHROME_BROWSER_EXTENSIONS_API_IDENTITY_IDENTITY_GET_AUTH_TOKEN_FUNCTION_H_
#define CHROME_BROWSER_EXTENSIONS_API_IDENTITY_IDENTITY_GET_AUTH_TOKEN_FUNCTION_H_
#include <memory>
#include <optional>
#include <set>
#include <string>
#include "base/callback_list.h"
#include "base/feature_list.h"
#include "base/gtest_prod_util.h"
#include "base/memory/weak_ptr.h"
#include "base/scoped_observation.h"
#include "base/time/time.h"
#include "build/chromeos_buildflags.h"
#include "chrome/browser/extensions/api/identity/gaia_remote_consent_flow.h"
#include "chrome/browser/extensions/api/identity/identity_mint_queue.h"
#include "chrome/common/extensions/api/identity.h"
#include "components/signin/public/identity_manager/identity_manager.h"
#include "extensions/browser/extension_function.h"
#include "extensions/browser/extension_function_histogram_value.h"
#include "google_apis/gaia/google_service_auth_error.h"
#include "google_apis/gaia/oauth2_mint_token_flow.h"
#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "chrome/browser/ash/crosapi/device_oauth2_token_service_ash.h"
#endif
#if BUILDFLAG(IS_CHROMEOS_LACROS)
#include "chrome/browser/lacros/device_oauth2_token_service_lacros.h"
#endif
namespace signin {
class AccessTokenFetcher;
struct AccessTokenInfo;
}
namespace extensions {
class IdentityGetAuthTokenError;
inline constexpr base::TimeDelta kGetAuthTokenInactivityTime = …;
class IdentityGetAuthTokenFunction : public ExtensionFunction,
public GaiaRemoteConsentFlow::Delegate,
public IdentityMintRequestQueue::Request,
public signin::IdentityManager::Observer,
public OAuth2MintTokenFlow::Delegate { … };
}
#endif