import State from "./namespaces/state";
import RPCClient from "./rpcclient";
import Node from "./namespaces/node";
import Auth from "./namespaces/auth";
import Pool from "./namespaces/pool";
import Miner from "./namespaces/miner";
import Net from "./namespaces/net";
import Logger from "./namespaces/logger";
import Ell from "./namespaces/ell";
import RPC from "./namespaces/rpc";
/**
 * Spell provides access to a client
 * RPC functionality.
 *
 * @export
 * @class Spell
 */
export default class Spell {
    /**
     * The RPC client
     *
     * @type {RPCClient}
     * @memberof Spell
     */
    rpcClient: RPCClient;
    /**
     * State module
     *
     * @type {State}
     * @memberof Spell
     */
    state: State;
    /**
     * Node module
     *
     * @type {Node}
     * @memberof Spell
     */
    node: Node;
    /**
     * Authentication module
     *
     * @type {Auth}
     * @memberof Spell
     */
    auth: Auth;
    /**
     * Mempool module
     *
     * @type {Pool}
     * @memberof Spell
     */
    pool: Pool;
    /**
     * Miner module
     *
     * @type {Miner}
     * @memberof Spell
     */
    miner: Miner;
    /**
     * Net Module
     *
     * @type {Net}
     * @memberof Spell
     */
    net: Net;
    ell: Ell;
    /**
     * Logger Module
     *
     * @type {Logger}
     * @memberof Spell
     */
    logger: Logger;
    rpc: RPC;
    /**
     * Creates an instance of Spell.
     * @memberof Spell
     */
    constructor();
    /**
     * provideClient attempts to connect to an
     * Ellcrys JSON-RPC server. If it succeeds,
     * it will use the connection in future RPC
     * method calls.
     */
    provideClient(options: ConnectOptions): Promise<{}>;
    /**
     * Request for a session token from the node.
     *
     * @returns
     * @memberof Spell
     */
    authenticate(username: string, password: string): Promise<{}>;
}
