import type { JWTPayload, JWTVerifyOptions } from 'jose';
/**
 * Verifies JWTs using a JWKS endpoint to resolve signing keys on demand.
 */
export declare class JwtVerifier {
    private readonly options;
    private remoteJwkSet?;
    constructor(options: JwtVerifierOptions);
    verify<T extends JWTPayload>(token: string, options?: JWTVerifyOptions): Promise<T>;
    private resolveJwkSet;
}
/**
 * Options that configure how the verifier fetches and caches JWKS signing keys.
 */
export interface JwtVerifierOptions {
    jwksUri: string;
    rateLimit?: boolean;
    cache?: boolean;
    cacheMaxEntries?: number;
    cacheMaxAge?: number;
    jwksRequestsPerMinute?: number;
    proxy?: string;
    requestHeaders?: Headers;
    timeoutMs?: number;
    fetcher?(jwksUri: string): Promise<{
        keys: unknown;
    }>;
    getKeysInterceptor?(): Promise<JwtKey[]>;
}
type Headers = Record<string, string>;
export interface JwtKey {
    kty: string;
    kid: string;
    alg: string;
    [key: string]: unknown;
}
export {};
//# sourceMappingURL=verifier.d.ts.map