/**
 * Copyright (c) Trimble Inc.
 */
import { ClaimsetProvider } from '../interfaces/ClaimsetProvider';
import { KeysetProvider } from '../interfaces/KeysetProvider';
import { Claimset } from '../interfaces/Claimset';
/**
 * Provides validated claimset for a JSON web token
 */
export default class ValidatedClaimsetProvider implements ClaimsetProvider {
    private readonly _keysetProvider;
    private _keyset;
    private _clockSkewInSeconds;
    private _tokenValidationRequired;
    /**
     * Public constructor for ValidatedClaimsetProvider class
     *
     * @param keysetProvider - A provider for the keyset used to validate the JWT claimset.
     * It can be OpenIdKeysetProvider/FixedKeysetProvider
     */
    constructor(keysetProvider: KeysetProvider);
    /**
     * Fluent extension for setting clock skew/grace period while validating the token.
     *
     * @param clockSkewInSeconds - is the acceptable time difference between signer and verifier in seconds.
     */
    WithClockSkew(clockSkewInSeconds: number): ValidatedClaimsetProvider;
    /**
     * Fluent extension for allowing token validation.
     *
     * @param tokenValidationRequired - is validated before retrieving claims if tokenValidationRequired is set to true.
     */
    WithTokenValidation(tokenValidationRequired: boolean): ValidatedClaimsetProvider;
    /**
     * Retrieves a validated claimset from a given JSON web token
     *
     * @param token - The JWT token to extract claimset from
     * @returns A Promise that resolves to the claimset on completion
     * @throws Thrown when the keyset provider does not provide the named key
     * @throws Thrown when the JSON web token is invalid
     */
    RetrieveClaimset(token: string): Promise<Claimset>;
    private _retrieveKeyset;
    private _findMatchingKey;
    private _validateToken;
}
