import type { PeerNextResponse, Peer, PeerRequest } from '../peer';
import type { PeerChunkBlockForce } from '../chunk';
export interface IRfpServiceData<T> {
    moduleName: string;
    commandName: string;
    data?: T;
}
export interface IRfpServiceRequest<T> extends PeerRequest {
    serviceData?: T;
}
export declare type RfpServiceMiddlewareReceive<StoreState = any> = (request: IRfpServiceRequest<StoreState>, next: PeerNextResponse) => any;
export declare class ServiceChannel {
    private _peer;
    constructor(peer: Peer);
    get peer(): Peer;
    send<InputData, OutputData>(moduleName: string, commandName: string, data?: InputData, options?: PeerChunkBlockForce): Promise<IRfpServiceData<Partial<OutputData>>>;
    receive<InputData>(moduleName: string, commandName: string, listener: RfpServiceMiddlewareReceive<InputData>): string;
    unreceive(receiveHash: string): void;
}
//# sourceMappingURL=serviceChannel.d.ts.map