import { IMap, IEqualityComparer, ISet, IEnumerator } from "./Util.js";
import { int32 } from "./Int32.js";
import { Option } from "./Option.js";
import { TypeInfo } from "./Reflection.js";
export declare class HashSet<T> implements ISet<T>, Iterable<T>, Iterable<T> {
    readonly comparer: IEqualityComparer<T>;
    readonly hashMap: IMap<int32, T[]>;
    "init@9": int32;
    constructor(items: Iterable<T>, comparer: IEqualityComparer<T>);
    get [Symbol.toStringTag](): string;
    toJSON(): any;
    "System.Collections.IEnumerable.GetEnumerator"(): IEnumerator<any>;
    GetEnumerator(): IEnumerator<T>;
    [Symbol.iterator](): Iterator<T>;
    "System.Collections.Generic.ICollection`1.Add2B595"(item: T): void;
    "System.Collections.Generic.ICollection`1.Clear"(): void;
    "System.Collections.Generic.ICollection`1.Contains2B595"(item: T): boolean;
    "System.Collections.Generic.ICollection`1.CopyToZ3B4C077E"(array: T[], arrayIndex: int32): void;
    "System.Collections.Generic.ICollection`1.get_Count"(): int32;
    "System.Collections.Generic.ICollection`1.get_IsReadOnly"(): boolean;
    "System.Collections.Generic.ICollection`1.Remove2B595"(item: T): boolean;
    get size(): int32;
    add(k: T): ISet<T>;
    clear(): void;
    delete(k: T): boolean;
    has(k: T): boolean;
    keys(): Iterable<T>;
    values(): Iterable<T>;
    entries(): Iterable<[T, T]>;
    forEach(f: ((arg0: T, arg1: T, arg2: ISet<T>) => void), thisArg?: Option<any>): void;
}
export declare function HashSet_$reflection(gen0: TypeInfo): TypeInfo;
export declare function HashSet_$ctor_Z6150332D<T>(items: Iterable<T>, comparer: IEqualityComparer<T>): HashSet<T>;
export declare function HashSet__get_Comparer<T>(this$: HashSet<T>): IEqualityComparer<T>;
export declare function HashSet__Clear<T>(this$: HashSet<T>): void;
export declare function HashSet__get_Count<T>(this$: HashSet<T>): int32;
export declare function HashSet__Add_2B595<T>(this$: HashSet<T>, k: T): boolean;
export declare function HashSet__Contains_2B595<T>(this$: HashSet<T>, k: T): boolean;
export declare function HashSet__Remove_2B595<T>(this$: HashSet<T>, k: T): boolean;
