import ICredential from './ICredential';
import Identifier from '../Identifier';
import CredentialManifest from './CredentialManifest';
import IDataHandler from './IDataHandler';
import 'isomorphic-fetch';
/**
 * Class for obtaining
 * credentials from an issuer.
 */
export default class CredentialIssuer {
    /**
     * The identifier for the issuer.
     */
    readonly identifier: Identifier;
    /**
     * The manifest of the credential being issued
     */
    readonly manifest: CredentialManifest;
    /**
     * Constructs an instance of the credential issuer
     * based on the specified credential manifest.
     * @param identifier for the issuer.
     * @param manifest credential manifest for specific credential.
     */
    constructor(identifier: Identifier, manifest: any);
    /**
     * Constructs an instance of the credential issuer
     * based on the specified credential manifest.
     * @param identifier for the issuer.
     * @param manifest credential manifest object or endpoint string of manifest.
     */
    static create(identifier: Identifier, manifest: CredentialManifest | string): Promise<CredentialIssuer>;
    /**
     * Gets the array of languages supported
     * by the manifest.
     */
    /**
     * Requests a new credential from the issuer,
     * providing a self-issued credential with the inputs
     * specified in the credential manifest.
     * @param inputCredential containing the inputs as specified
     * in the credential manifest.
     */
    requestCredential(inputCredential: ICredential): Promise<ICredential>;
    /**
     * Validate inputCredential with manifest and process and exchange inputCredential wuth Data Handler
     * @param inputCredential The Self-Issued Credential that with required claims.
     * @param _dataHandler Data handler for process and exchanging credentials.
     */
    handleCredentialRequest(inputCredential: ICredential, dataHandler: IDataHandler): Promise<ICredential>;
    /**
     * Validate whether a credential is valid for the manifest.
     * @param _inputCredential the Credential to validate against the credential manifest
     */
    validateCredential(_inputCredential: ICredential): boolean;
}
