import IComparer from "./IComparer";
import IQueryCollection from "./IQueryCollection";
import IQueryParameter from "./IQueryParameter";
import IQueryParameterFactory from "./IQueryParameterFactory";
import ReadCollection from "./ReadCollection";
export default class QueryCollection extends ReadCollection<IQueryParameter> implements IQueryCollection {
    private readonly _changeHandler;
    private readonly _keyComparer;
    private readonly _parameterFactory;
    private static readonly _parameterSeparator;
    private static readonly _questionMark;
    constructor(keyComparer: IComparer<string>, parameterFactory: IQueryParameterFactory, changeHandler?: {
        (): void;
    }, query?: string);
    protected get changeHandler(): {
        (): void;
    };
    protected get keyComparer(): IComparer<string>;
    protected get parameterFactory(): IQueryParameterFactory;
    add(key: string, values: any | any[]): number;
    protected addInternal(key: string, values: any | any[]): number;
    clear(): void;
    get(key: string): IQueryParameter | null;
    remove(key: string, values?: any | any[]): number;
    protected removeInternal(key: string, values?: any | any[]): [boolean, number];
    set(key: string, values: any | any[]): number;
    toString(): string;
    toUrlString(encode?: boolean): string;
}
