export type TokenRetrieveType = "header" | "form"; /** * Client Credential OAuth Client * * Will automatically process the token refresh logic * * refresh policy: half expire-in * * @example * ```js * // please remember share client instance for a same OAuth server * const client = new ClientCredentialsOAuthClient( * "http://example/oauth/token", * "client_id", * "client_secret" * ) * const response = await client.fetch("http://protected.by.token/resource", { * method: "GET", * }) * ``` * * */ declare class ClientCredentialsOAuthClient { private readonly tokenUrl; private readonly clientId; private readonly clientSecret; private readonly scope; private readonly mut; private token; private expiresAt; private tokenRetrieveType; /** * a very simple oauth client credential client * * @param tokenUrl oauth token url * @param clientId oauth client id * @param clientSecret oauth client secret * @param retrieveType the clientId and clientSecret is put into header or form body * @param scope oauth scope */ constructor(tokenUrl: string, clientId: string, clientSecret: string, retrieveType?: TokenRetrieveType, scope?: string); /** * fetch token directly * @private * @returns {Promise} */ private fetchOAuthResponse; /** * get header pair */ getHeader(): Promise<{ Authorization: string; }>; /** * get current valid oauth token * * @returns {Promise} */ getToken(): Promise; /** * send requests with oauth token * */ fetch(...args: Parameters): Promise; } export { ClientCredentialsOAuthClient };