import { Observable } from "rxjs";
import { BackpressureStrategy } from "../../api/rsocket.api";
import { DecodedPayload, EncodingRSocket, RSocketEncoderRequestOptions } from "../encoding-rsocket-client";
import { EncodingRSocketResponder } from "../encoding-rsocket-responder";
interface RouteMapping {
    route: string;
}
export declare class RequestResponseMapping implements RouteMapping {
    readonly route: string;
    readonly handler: (payload: DecodedPayload) => Observable<DecodedPayload> | DecodedPayload;
    readonly options?: RSocketEncoderRequestOptions;
    constructor(route: string, handler: (payload: DecodedPayload) => Observable<DecodedPayload> | DecodedPayload, options?: RSocketEncoderRequestOptions);
}
export declare class RequestStreamMapping implements RouteMapping {
    readonly route: string;
    readonly handler: (payload: DecodedPayload) => Observable<DecodedPayload> | DecodedPayload;
    readonly options?: RSocketEncoderRequestOptions;
    readonly backpressureStrategy: BackpressureStrategy;
    constructor(route: string, handler: (payload: DecodedPayload) => Observable<DecodedPayload> | DecodedPayload, options?: RSocketEncoderRequestOptions, backpressureStrategy?: BackpressureStrategy);
}
export declare class RequestFNFMapping implements RouteMapping {
    readonly route: string;
    readonly handler: (payload: DecodedPayload) => void;
    readonly options?: RSocketEncoderRequestOptions;
    constructor(route: string, handler: (payload: DecodedPayload) => void, options?: RSocketEncoderRequestOptions);
}
export declare class RSocketRoutingResponder extends EncodingRSocketResponder {
    readonly encodingRSocket: EncodingRSocket;
    private _requestResponseMappers;
    private _requestStreamMappers;
    private _requestFNFMappers;
    constructor(encodingRSocket: EncodingRSocket);
    removeHandler(route: string): void;
    addRequestResponseHandler(route: string, handler: (payload: DecodedPayload) => Observable<any> | any, options?: RSocketEncoderRequestOptions): void;
    addRequestStreamHandler(route: string, handler: (payload: DecodedPayload) => Observable<any> | any, options?: RSocketEncoderRequestOptions, backpressureStrategy?: BackpressureStrategy): void;
    addRequestFNFHandler(route: string, handler: (payload: DecodedPayload) => void, options?: RSocketEncoderRequestOptions): void;
    private addMapping;
    handleDecodedRequestStream(payload: DecodedPayload<any, any>): {
        stream: Observable<DecodedPayload<any, any>>;
        backpressureStrategy: BackpressureStrategy;
    };
    handleDecodedRequestResponse(payload: DecodedPayload<any, any>): Observable<DecodedPayload<any, any>>;
    handleDecodedFireAndForget(payload: DecodedPayload<any, any>): void;
    private getMapping;
    private getTopic;
}
export {};
