import { Fetch } from '../types'; import { AuthAgent } from '../auth-agent'; export declare enum OAuth2GrantType { CLIENT_CREDENTIALS = "client_credentials", REFRESH_TOKEN = "refresh_token", AUTHORIZATION_CODE = "authorization_code", PASSWORD = "password" } export interface OAuth2Params { tokenUrl: string; clientId: string; clientSecret?: string; refreshToken?: string | null; accessToken?: string | null; expiresAt?: number | null; minValiditySeconds?: number; fetch?: Fetch; } export declare class OAuth2Agent extends AuthAgent { params: OAuth2Params; constructor(params: OAuth2Params); getHeader(): Promise; createToken(params: OAuth2TokenParams): Promise<{ accessToken: any; accessExpiresIn: any; refreshToken: any; }>; setTokens(tokens: Partial): void; invalidate(): void; getAccessToken(): Promise; protected tryCachedAccessToken(): Promise; protected tryRefreshToken(): Promise; protected tryClientSecret(): Promise; } export interface OAuth2Tokens { accessToken: string; accessExpiresIn: number; refreshToken?: string; } export interface OAuth2TokenParams { grant_type: OAuth2GrantType; refresh_token?: string; client_id?: string; client_secret?: string; redirect_uri?: string; code?: string; username?: string; password?: string; }