import { ResponseIncoming, ResponseOutgoing } from "@lodestar/reqresp";
import { AsyncIterableEventBus, IteratorEvent, RequestEvent } from "../../util/asyncIterableToEvents.js";
import { StrictEventEmitterSingleArg } from "../../util/strictEvents.js";
import { EventDirection } from "../../util/workerEvents.js";
import { IncomingRequestArgs, OutgoingRequestArgs } from "../reqresp/types.js";
export declare enum ReqRespBridgeEvent {
    outgoingRequest = "reqresp.outgoingRequest",
    outgoingResponse = "reqresp.outgoingResponse",
    incomingRequest = "reqresp.incomingRequest",
    incomingResponse = "reqresp.incomingResponse"
}
export type ReqRespBridgeEventData = {
    [ReqRespBridgeEvent.outgoingRequest]: RequestEvent<OutgoingRequestArgs>;
    [ReqRespBridgeEvent.outgoingResponse]: IteratorEvent<ResponseOutgoing>;
    [ReqRespBridgeEvent.incomingRequest]: RequestEvent<IncomingRequestArgs>;
    [ReqRespBridgeEvent.incomingResponse]: IteratorEvent<ResponseIncoming>;
};
type IReqRespBridgeEventBus = StrictEventEmitterSingleArg<ReqRespBridgeEventData>;
declare const ReqRespBridgeEventBus_base: {
    new (): IReqRespBridgeEventBus;
};
export declare class ReqRespBridgeEventBus extends ReqRespBridgeEventBus_base {
}
export declare const reqRespBridgeEventDirection: Record<ReqRespBridgeEvent, EventDirection>;
export declare function getReqRespBridgeReqEvents(events: IReqRespBridgeEventBus): AsyncIterableEventBus<OutgoingRequestArgs, ResponseIncoming>;
export declare function getReqRespBridgeRespEvents(events: IReqRespBridgeEventBus): AsyncIterableEventBus<IncomingRequestArgs, ResponseOutgoing>;
export declare enum NetworkWorkerThreadEventType {
    networkEvent = "networkEvent",
    reqRespBridgeEvents = "reqRespBridgeEvents"
}
export {};
//# sourceMappingURL=events.d.ts.map