import * as Soap from "@soapjs/soap"; import { TokenAuthStrategyConfig } from "../types"; import { BaseAuthStrategy } from "./base-auth.strategy"; import { SessionHandler } from "../session/session-handler"; export declare abstract class TokenAuthStrategy extends BaseAuthStrategy { protected config: TokenAuthStrategyConfig; protected session?: SessionHandler; protected logger?: Soap.Logger; constructor(config: TokenAuthStrategyConfig, session?: SessionHandler, logger?: Soap.Logger); protected abstract extractAccessToken(context: TContext): string | undefined; protected abstract extractRefreshToken(context: TContext): string | undefined; protected abstract verifyAccessToken(token: string): Promise; protected abstract verifyRefreshToken(token: string): Promise; protected abstract generateAccessToken(data: TUser, context: TContext): Promise; protected abstract generateRefreshToken(data: TUser, context: TContext): Promise; protected abstract storeAccessToken(token: string, context?: TContext): Promise; protected abstract storeRefreshToken(token: string, context?: TContext): Promise; protected abstract invalidateAccessToken(token: string, context?: TContext): Promise; protected abstract invalidateRefreshToken(token: string, context?: TContext): Promise; protected abstract embedAccessToken(token: string, context: TContext): void; protected abstract embedRefreshToken(token: string, context: TContext): void; protected fetchUser(payload: unknown): Promise; authenticate(context: TContext): Promise | null>; private verifyAndFetchUser; refreshTokens(context: TContext, existingUser?: TUser): Promise>; issueTokens(user: TUser, context: TContext, rotate?: boolean): Promise<{ accessToken: string; refreshToken: any; }>; protected rotateToken(refreshToken: string, user: TUser, context: TContext): Promise; logout(context: TContext): Promise; }