import { TTLCache } from "@isaacs/ttlcache"; import { Client, JsonAdapter } from "redis-extension"; import { Client as Client$1, TokenCreator } from "@authup/core-http-kit"; import { OAuth2TokenPayload, OAuth2TokenPermission } from "@authup/specs"; //#region src/verifier/types.d.ts interface ITokenVerifier { verify(token: string): Promise; } type TokenVerifierContext = { baseURL: string; creator?: TokenCreator; cache?: ITokenVerifierCache; /** * Maximum TTL (in seconds) for caching remote introspection results. * Limits how long a revoked token can remain cached as valid. * If not set, the remaining token lifetime is used. */ maxRemoteCacheTTL?: number; }; type TokenVerificationData = OAuth2TokenPayload & { permissions: OAuth2TokenPermission[]; }; type TokenVerificationDataInput = OAuth2TokenPayload & { permissions?: OAuth2TokenPermission[]; }; //#endregion //#region src/verifier/cache/types.d.ts interface ITokenVerifierCache { get(token: string): Promise; set(token: string, data: TokenVerificationData, seconds: number): Promise; } //#endregion //#region src/verifier/cache/memory.d.ts declare class MemoryTokenVerifierCache implements ITokenVerifierCache { protected driver: TTLCache; constructor(); get(token: string): Promise; set(token: string, data: TokenVerificationData, seconds: number): Promise; } //#endregion //#region src/verifier/cache/redis.d.ts declare class RedisTokenVerifierCache implements ITokenVerifierCache { protected instance: JsonAdapter; constructor(input?: Client | string); get(token: string): Promise; set(token: string, data: TokenVerificationData, seconds: number): Promise; protected buildKey(token: string): string; } //#endregion //#region src/verifier/module.d.ts declare class TokenVerifier implements ITokenVerifier { protected interceptorMounted: boolean | undefined; protected client: Client$1; protected cache: ITokenVerifierCache | undefined; protected maxRemoteCacheTTL: number | undefined; constructor(ctx: TokenVerifierContext); verify(token: string): Promise; verifyLocal(token: string): Promise; verifyRemote(token: string): Promise; /** * Return remaining seconds until token expires. * Throw error if token is already expired. * * @param payload * @protected */ protected getTokenExpiresIn(payload: OAuth2TokenPayload): number; protected transform(input: TokenVerificationDataInput): TokenVerificationData; } //#endregion export { ITokenVerifier, ITokenVerifierCache, MemoryTokenVerifierCache, RedisTokenVerifierCache, TokenVerificationData, TokenVerificationDataInput, TokenVerifier, TokenVerifierContext }; //# sourceMappingURL=index.d.mts.map