import { AuthenticationProvider } from "./AuthenticationProvider";
import { AuthMaterial } from "./material";
import { Session } from "../Session";
export declare abstract class AbstractAuthenticationProvider implements AuthenticationProvider {
    private static readonly LOGIN_PATH;
    private static readonly REFRESH_PATH;
    private authMaterial;
    private updating;
    private readonly initialAuthMaterial;
    private session?;
    constructor(authMaterial: AuthMaterial, resumeAuthMaterial?: AuthMaterial);
    getSession(): Session | undefined;
    getInitialAuthMaterial(): AuthMaterial;
    protected getAuthMaterial(): AuthMaterial;
    protected setAuthMaterial(authMaterial: AuthMaterial): void;
    refresh(session: Session): Promise<AuthMaterial>;
    protected login(session: Session): Promise<AuthMaterial>;
    provide(session: Session): Promise<AuthMaterial>;
}
