import { EthereumAddress } from "./ethereum/ethereumAddress";
import { ProofPointValidateResult } from "./proofPointValidateResult";
import { ProofPointResolver } from "./proofPointResolver";
import { ethers } from "ethers";
import { ProofPointAuthenticator, ProofPointId } from ".";
import { IpfsStorageProviderSettings } from "./ipfs/ipfsStorageProviderSettings";
/**
 * Proof point validator
 * Used to validate proof points.
 */
export declare class ProofPointValidator {
    _resolver: ProofPointResolver;
    _authenticator: ProofPointAuthenticator;
    /**
     * Construct a @ProofPointValidator for production use
     * @param registryRootAddress The Ethereum address of a proof point registry
     * @param ethereumProvider A provider to use for Ethereum interactions
     * @param ipfsSettings Connection settings for an IPFS node to use for storage
     * @param registryAddress Optional, if provided will be used as the registry address, meaning
     * the address will not be looked up in the storage contract, saving one Ethereum call.
     * @returns A ready to use @ProofPointValidator capable of validating all types of proof point.
     */
    static init(registryRootAddress: EthereumAddress, ethereumProvider: ethers.providers.JsonRpcProvider, ipfsSettings: IpfsStorageProviderSettings, registryAddress?: EthereumAddress): Promise<ProofPointValidator>;
    constructor(resolver: ProofPointResolver, authenticator: ProofPointAuthenticator);
    /**
     * Determines the validity of a given proof point
     * @param id the ID of the proof point to validate.
     * @returns a @ProofPointValidateResult representing the validity of the given proof point.
     */
    validate(id: ProofPointId): Promise<ProofPointValidateResult>;
}
