import { ValueConverter } from "@odata2ts/converter-api";
import { FlexibleConversionModel } from "../QueryObjectModel";
import { QParamModel } from "./QParamModel";
import { UrlParamValueFormatter, UrlParamValueParser } from "./UrlParamModel";
export type PrimitiveParamType = string | number | boolean;
export declare abstract class QParam<Type extends PrimitiveParamType, ConvertedType> implements QParamModel<Type, ConvertedType> {
    protected name: string;
    protected mappedName?: string | undefined;
    protected readonly converter: ValueConverter<Type, ConvertedType>;
    constructor(name: string, mappedName?: string | undefined, converter?: ValueConverter<Type, ConvertedType>);
    getName(): string;
    getMappedName(): string;
    getConverter(): ValueConverter<Type, ConvertedType>;
    protected abstract getUrlConformValue: UrlParamValueFormatter<Type>;
    protected abstract parseValueFromUrl: UrlParamValueParser<Type>;
    convertFrom(value: FlexibleConversionModel<Type>): FlexibleConversionModel<ConvertedType>;
    convertTo(value: FlexibleConversionModel<ConvertedType>): FlexibleConversionModel<Type>;
    formatUrlValue(value: FlexibleConversionModel<ConvertedType>): string | undefined;
    parseUrlValue(value: string | undefined): FlexibleConversionModel<ConvertedType>;
}
