import { Logger } from '../utils/logging';
import TokenGeneratorInterface, { TokenBodyReturn } from './TokenGeneratorInterface';
import { Token, TokenResponse } from './types';
interface UrlConfig {
    scheme: string;
    path: string;
    port?: string;
}
declare abstract class AbstractTokenGenerator<T extends Token, C> implements TokenGeneratorInterface<T> {
    readonly tokenGeneratorConfig: C;
    protected logger?: Logger;
    constructor(tokenGeneratorConfig: C, logger?: Logger);
    abstract generateToken(parameters: unknown): Promise<TokenBodyReturn<T> | TokenResponse<T>>;
    abstract refreshToken(accessToken: null | T): Promise<TokenBodyReturn<T> | TokenResponse<T>>;
    abstract checkTokenGeneratorConfig(config: C): void;
    /** @deprecated */
    protected _manageOauthError(response: Response): Promise<never>;
    protected generateUrlFromConfig(config: UrlConfig): string;
}
export default AbstractTokenGenerator;
