/**
 * @file A Unique Identifier Generator for Node
 * @author Adam Mill <hismajesty@theroyalwhee.com>
 * @copyright Copyright 2021-2022 Adam Mill
 * @license Apache-2.0
 */
/// <reference types="node" />
import { SequenceOptions } from '@theroyalwhee0/snowman';
/**
 * Ident options.
 */
export declare type IdentOptions = {
    signKey: string;
    node?: number;
    verifyKey?: string;
    idOptions?: SequenceOptions;
    getRandomBytes?: (size: number) => Buffer;
};
/**
 * identGenerator
 * @generator
 * @function identGenerator
 * @param {object} options Options.
 * @param {number} options.node The numeric ID of the node (0-1023).
 * @param {string} options.signKey The key to use for signing check.
 * @param {string} options.verifyKey The key to use for verify check.
 * @param {string} options.getRandomBytes Function to provide random bytes.
 * @param {object} options.idOptions Options passed to snowman.
 * @yields {string} The created ident.
 */
export declare function identGenerator(options: IdentOptions): Generator<string, void, unknown>;
/**
 * Low-level validation factory.
 * Use validationVerifyFactory, validationSignFactory, or
 * validationBothFactory instead.
 * @param {object} options Options.
 * @param {string} options.signKey The key to use for signing check.
 * @param {string} options.verifyKey The key to use for verify check.
 * @returns True if valid, false if not.
 */
export declare function validationFactory(options?: IdentOptions): (value: string) => boolean;
/**
 * Validation factory requring a signKey.
 * @param {object} options Options.
 * @param {string} options.signKey The key to use for signing check.
 * @returns {boolean} True if valid, false if not.
 */
export declare function validationSignFactory(options?: IdentOptions): (value: string) => boolean;
/**
 * Validation factory requring a verifyKey.
 * @param {object} options Options.
 * @param {string} options.verifyKey The key to use for verify check.
 * @returns {boolean} True if valid, false if not.
 */
export declare function validationVerifyFactory(options?: IdentOptions): (value: string) => boolean;
/**
 * Validation factory requring both keys.
 * @param {object} options Options.
 * @param {string} options.signKey The key to use for signing check.
 * @param {string} options.verifyKey The key to use for verify check.
 * @returns {boolean} True if valid, false if not.
 */
export declare function validationBothFactory(options?: IdentOptions): (value: string) => boolean;
