import { listenerKey, originalListensMapKey, requestsMapKey, listensMapKey, senderKey, timeoutKey, prefixKey, produceKey, listenKey, serializerKey, logKey, verboseKey, beforeEmitKey, beforeEmitResolveKey } from './constant';
import type { EmitOptions, Request, Response, TransportOptions, BaseInteraction } from './interface';
export declare const getAction: (prefix: string, name: string) => string;
/**
 * Create a base transport
 */
export declare abstract class Transport<T extends BaseInteraction = any> {
    private [listenerKey];
    private [listenKey];
    private [senderKey];
    private [timeoutKey];
    private [prefixKey];
    private [serializerKey];
    private [requestsMapKey];
    private [listensMapKey];
    private [originalListensMapKey];
    private [logKey]?;
    private [verboseKey];
    protected [beforeEmitKey]?: Promise<void>;
    protected [beforeEmitResolveKey]?: () => void;
    /**
     * dispose transport
     */
    dispose: () => any;
    constructor({ listener, sender, timeout, verbose, prefix, listenKeys, checkListen, serializer, logger, }: TransportOptions);
    private [produceKey];
    /**
     * Listen an event that transport data.
     *
     * @param name A transport action as listen message data action type
     * @param fn A transport listener
     */
    listen<K extends keyof T['listen']>(name: K, fn: T['listen'][K]): () => void;
    id: string;
    /**
     * Emit an event that transport data.
     *
     * @param emitOptions A option for the transport data
     * @param request A request data
     *
     * @returns Return a response for the request.
     */
    emit<K extends keyof T['emit']>(options: EmitOptions<K>, ...request: Request<T['emit'][K]>): Promise<Response<T['emit'][K]>>;
}
//# sourceMappingURL=transport.d.ts.map