import type IHashTableSeparateChaining from './IHashTableSeparateChaining';
import type IHashTableSeparateChainingData from './IHashTableSeparateChainingData';
import type IHashTableSeparateChainingInputs from './IHashTableSeparateChainingInputs';
import HashTableSeparateChainingElement from './HashTableSeparateChainingElement';
export default class HashTableSeparateChaining<T = number> implements IHashTableSeparateChaining<T> {
    private _data;
    readonly maxSize: number;
    constructor(inputs?: Readonly<IHashTableSeparateChainingInputs<T>>, { maxSize }?: {
        maxSize: number;
    });
    get data(): IHashTableSeparateChainingData<T>;
    get size(): number;
    put(key: string, value: T): T;
    get(key: string): HashTableSeparateChainingElement<T> | null;
    remove(key: string): HashTableSeparateChainingElement<T> | null;
    private _getLinkedListByKey;
    private _hashCode;
    private [Symbol.toPrimitive];
}
