import type ServletContext from '../../http/ServletContext';
import MethodParameter from '../MethodParameter';
import HandlerMethodArgumentResolver from '../argument/HandlerMethodArgumentResolver';
import HandlerMethodReturnValueHandler from '../return/HandlerMethodReturnValueHandler';
import MessageConverter from '../../http/converts/MessageConverter';
import ContentNegotiationManager from '../../http/accept/ContentNegotiationManager';
export default abstract class AbstractMessageConverterMethodProcessor implements HandlerMethodArgumentResolver, HandlerMethodReturnValueHandler {
    private readonly messageConverters;
    private readonly contentNegotiationManager;
    constructor(messageConverters: MessageConverter, contentNegotiationManager: ContentNegotiationManager);
    abstract supportsReturnType(returnType: MethodParameter): boolean;
    abstract handleReturnValue(returnValue: any, returnType: MethodParameter, servletContext: ServletContext): Promise<void>;
    abstract supportsParameter(parameter: MethodParameter, servletContext: ServletContext): boolean;
    abstract resolveArgument(parameter: MethodParameter, servletContext: ServletContext): any;
    writeWithMessageConverters<T = any>(data: T, servletContext: ServletContext): Promise<any>;
    readWithMessageConverters(servletContext: ServletContext, dataType: Function): Promise<{}>;
    private getProducibleMediaTypes;
    private getMostSpecifiMediaType;
    private selectMediaType;
}
