import SafeEventEmitter from '@metamask/safe-event-emitter';
import type { JsonRpcEngine } from '@metamask/json-rpc-engine';
import type { JsonRpcRequest } from '@metamask/utils';
/**
 * Construct an Ethereum provider from the given JSON-RPC engine.
 *
 * @param engine - The JSON-RPC engine to construct a provider from.
 * @returns An Ethereum provider.
 */
export default function providerFromEngine(engine: JsonRpcEngine): SafeEventEmitterProvider;
declare class SafeEventEmitterProvider extends SafeEventEmitter {
    engine: JsonRpcEngine;
    /**
     * Construct a SafeEventEmitterProvider from a JSON-RPC engine.
     *
     * @param options - Options.
     * @param options.engine - The JSON-RPC engine used to process requests.
     */
    constructor({ engine }: {
        engine: JsonRpcEngine;
    });
    request: (req: JsonRpcRequest) => Promise<unknown>;
    /**
     * Send a provider request asynchronously.
     *
     * @param req - The request to send.
     * @param callback - A function that is called upon the success or failure of the request.
     */
    sendAsync: (req: JsonRpcRequest, callback: (error: unknown, providerRes?: any) => void) => void;
    /**
     * Send a provider request asynchronously.
     *
     * This method serves the same purpose as `sendAsync`. It only exists for
     * legacy reasons.
     *
     * @deprecated Use `sendAsync` instead.
     * @param req - The request to send.
     * @param callback - A function that is called upon the success or failure of the request.
     */
    send: (req: JsonRpcRequest, callback: (error: unknown, providerRes?: any) => void) => void;
}
export {};
