/** *
 * @module AbstractHttpMessageConverter
 */
import { JsDataType } from '../../../interface/declare';
import MediaType from '../MediaType';
import ServletContext from '../ServletContext';
import HttpMessageConverter from './HttpMessageConverter';
export default abstract class AbstractHttpMessageConverter<T> implements HttpMessageConverter<T> {
    private supportedMediaTypes;
    constructor(...mediaTypes: Array<MediaType>);
    getSupportedMediaTypes(): MediaType[];
    private matchMediaType;
    canRead(clazz: JsDataType, mediaType: MediaType): boolean;
    canWrite(clazz: JsDataType, mediaType: MediaType): boolean;
    read(servletContext: ServletContext, dataType: Function): Promise<T>;
    write(data: T, servletContext: ServletContext): Promise<void>;
    abstract supports(clazz: Function): boolean;
    abstract readInternal(servletContext: ServletContext, dataType: Function): Promise<T>;
    abstract writeInternal(data: T, servletContext: ServletContext): Promise<void>;
}
