import { GetTokenSilentlyVerboseResponse } from './global'; export type ResponseHeaders = Record | [string, string][] | { get(name: string): string | null | undefined; }; export type CustomFetchMinimalOutput = { status: number; headers: ResponseHeaders; }; export type CustomFetchImpl = (req: Request) => Promise; export type AuthParams = { scope?: string[]; audience?: string; }; type AccessTokenFactory = (authParams?: AuthParams) => Promise; export type FetcherConfig = { getAccessToken?: AccessTokenFactory; baseUrl?: string; fetch?: CustomFetchImpl; dpopNonceId?: string; }; export type FetcherHooks = { isDpopEnabled: () => boolean; getAccessToken: AccessTokenFactory; getDpopNonce: () => Promise; setDpopNonce: (nonce: string) => Promise; generateDpopProof: (params: { url: string; method: string; nonce?: string; accessToken: string; }) => Promise; }; export type FetchWithAuthCallbacks = { onUseDpopNonceError?(): Promise; }; export declare class Fetcher { protected readonly config: Omit, 'fetch'> & Required, 'fetch'>>; protected readonly hooks: FetcherHooks; constructor(config: FetcherConfig, hooks: FetcherHooks); protected isAbsoluteUrl(url: string): boolean; protected buildUrl(baseUrl: string | undefined, url: string | undefined): string; protected getAccessToken(authParams?: AuthParams): Promise; protected extractUrl(info: RequestInfo | URL): string; protected buildBaseRequest(info: RequestInfo | URL, init: RequestInit | undefined): Request; protected setAuthorizationHeader(request: Request, accessToken: string, tokenType?: string): void; protected setDpopProofHeader(request: Request, accessToken: string): Promise; protected prepareRequest(request: Request, authParams?: AuthParams): Promise; protected getHeader(headers: ResponseHeaders, name: string): string; protected hasUseDpopNonceError(response: TOutput): boolean; protected handleResponse(response: TOutput, callbacks: FetchWithAuthCallbacks): Promise; protected internalFetchWithAuth(info: RequestInfo | URL, init: RequestInit | undefined, callbacks: FetchWithAuthCallbacks, authParams?: AuthParams): Promise; fetchWithAuth(info: RequestInfo | URL, init?: RequestInit, authParams?: AuthParams): Promise; } export {};