/*!
 * @author electricessence / https://github.com/electricessence/
 * Licensing: MIT https://github.com/electricessence/TypeScript.NET-Core/blob/master/LICENSE.md
 */
import SetBase from "./SetBase";
import { ILinkedNodeWithValue } from "./ILinkedListNode";
import { EqualityComparison, HashSelector } from "../FunctionTypes";
import FiniteEnumerableOrArrayLike from "./FiniteEnumerableOrArrayLike";
export declare class HashSet<T> extends SetBase<T> {
    private readonly _hashGenerator;
    private readonly _comparer;
    constructor(hashGenerator?: HashSelector<T>, comparer?: EqualityComparison<T>);
    constructor(source: FiniteEnumerableOrArrayLike<T> | undefined, keyGenerator?: HashSelector<T> | EqualityComparison<T>, comparer?: EqualityComparison<T>);
    protected newUsing(source?: FiniteEnumerableOrArrayLike<T>): HashSet<T>;
    private _registry;
    protected _addInternal(item: T): boolean;
    protected _clearInternal(): number;
    protected _onDispose(): void;
    protected _getNode(item: T): ILinkedNodeWithValue<T> | undefined;
    protected _removeInternal(item: T, max?: number): number;
}
export default HashSet;
