import { IDIDDocumentFull } from '@ew-did-registry/did-document';
import { IJWT } from '@ew-did-registry/jwt';
import { IDidStore } from '@ew-did-registry/did-store-interface';
import { IDIDDocument } from '@ew-did-registry/did-resolver-interface';
import { EwSigner } from '@ew-did-registry/did-ethr-resolver';
import { IClaims, IPublicClaim, IPrivateClaim, VerificationPurpose } from '../models';
/**
 * @class
 * Base class for extending by other claims classes
 */
export declare class Claims implements IClaims {
    protected document: IDIDDocumentFull;
    protected store: IDidStore;
    jwt: IJWT;
    keys: {
        privateKey?: string;
        publicKey: string;
    };
    did: string;
    /**
     * @constructor
     *
     * @param { IKeys } keys
     * @param document
     * @param store
     */
    constructor(owner: EwSigner, document: IDIDDocumentFull, store: IDidStore);
    /**
     * Verifies issuance and publishing of claim at `claimUrl`.
     * On success returns claim.
     * Verification takes into account purpose on which claim was issued.
     *
     * @param claimUrl: Url of claim to be verified. This method will retrieve
     * the claim using the didStore configured for the class
     * @param params.hashFns: The function used to determine the of hash of the claim
     * token used in the DID document. Used to verify that the DID document service endpoint
     * matches the retrieved claim.
     * @param params.issuerDoc: Document with verification methods to verify claim issuance with
     * @param params.holderDoc: Document with service endpoints to verify claim publishing with
     * @param params.verificationPurpose: Specifies which verification methods to use.
     * `VerificationPurpose.Authenticate` is used to verify claim issued to authenticate identity
     * `VerificationPurpose.Assertion` is used to assert issuer approval.
     * By default verification asserts claim approval.
     *
     */
    verify(claimUrl: string, { hashFns, issuerDoc, holderDoc, verificationPurpose, }?: {
        hashFns?: {
            [alg: string]: (data: string) => string;
        };
        issuerDoc?: IDIDDocument;
        holderDoc?: IDIDDocument;
        verificationPurpose?: VerificationPurpose;
    }): Promise<IPublicClaim | IPrivateClaim>;
    /**
     * @description Verifies that token stored at `claimUrl` is one of the services of `holderDoc`.
     *
     * @param claimUrl: url of the published claim
     * @param params.hashFns: The function used to determine the of hash of the claim
     * token used in the DID document. Used to verify that the DID document service endpoint
     * matches the retrieved claim.
     * @param params.holderDoc: Document in which to search for service endpoint.
     */
    validateServiceEndpointToken(claimUrl: string, { hashFns, holderDoc, }: {
        hashFns?: {
            [alg: string]: (data: string) => string;
        };
        holderDoc: IDIDDocument;
    }): Promise<void>;
}
