export declare const ALGORITHM_RS256: "RS256";
export type Dictionary = {
    [key: string]: any;
};
type PublicKeys = {
    [key: string]: string;
};
export type DecodedToken = {
    header: Dictionary;
    payload: Dictionary;
};
export interface SignatureVerifier {
    verify(token: string): Promise<void>;
}
interface KeyFetcher {
    fetchPublicKeys(): Promise<PublicKeys>;
}
export declare class NextCachedUrlKeyFetcher implements KeyFetcher {
    private clientCertUrl;
    private cache;
    constructor(clientCertUrl: string);
    private fetchPublicKeysResponse;
    private fetchAndCachePublicKeys;
    fetchPublicKeys(): Promise<PublicKeys>;
}
export declare class PublicKeySignatureVerifier implements SignatureVerifier {
    private keyFetcher;
    constructor(keyFetcher: KeyFetcher);
    static withCertificateUrl(clientCertUrl: string): PublicKeySignatureVerifier;
    verify(token: string): Promise<void>;
    private verifyWithoutKid;
    private verifyWithAllKeys;
}
export declare class EmulatorSignatureVerifier implements SignatureVerifier {
    verify(token: string): Promise<void>;
}
export declare function verifyJwtSignature(token: string, secretOrPublicKey: string): Promise<void>;
export declare function decodeJwt(jwtToken: string): Promise<DecodedToken>;
export {};
