import Identifier from '../Identifier';
import IdentifierDocument from '../IdentifierDocument';
import RegistrarCryptoOptions from './RegistrarCryptoOptions';
/**
 * Interface defining methods and properties to
 * be implemented by specific registration methods.
 */
export default interface IRegistrar {
    /**
     * Registrar crypto options
     */
    registrarCryptoOptions: RegistrarCryptoOptions;
    /**
     * Registers the identifier document on the ledger
     * returning the identifier generated by the registrar.
     * @param identifierDocument to register.
     * @param keyReference Reference to the identifier for the signing key.
     */
    register(identifierDocument: IdentifierDocument, keyReference: string): Promise<Identifier>;
    /**
     * Uses the specified input for generating
     * an identifier reference, but does not register
     * with a ledger.
     * @param input generating the identifier.
     */
    generateIdentifier(input: any): Promise<Identifier>;
}
