/**
 * Generic dictionary interface keyed by string
 */
export interface IDictionary<T> {
    /**
     * Gets the number of items in the dictionary
     */
    readonly count: number;
    /**
     * Gets an array of string keys in the dictionary
     */
    readonly keys: string[];
    /**
     * Gets the array of values in the dictionary
     */
    readonly values: T[];
    /**
     * Adds a key-value pair to the dictionary
     * @param key The string key
     * @param value The object value
     */
    add(key: string, value: T): void;
    /**
     * Checks if the dictionary contains an item key
     * @param key
     */
    containsKey(key: string): boolean;
    /**
     * Gets the item by string key
     * @param key
     */
    item(key: string): T;
    /**
     * Removes an item by string key
     * @param key
     */
    remove(key: string): T;
}
/**
 * Generic dictionary class keyed by string
 */
export declare class Dictionary<T> implements IDictionary<T> {
    private items;
    private countProperty;
    /**
     * @inheritDoc
     */
    containsKey(key: string): boolean;
    /**
     * @inheritDoc
     */
    get count(): number;
    /**
     * @inheritDoc
     */
    add(key: string, value: T): void;
    /**
     * @inheritDoc
     */
    remove(key: string): T;
    /**
     * @inheritDoc
     */
    item(key: string): T;
    /**
     * @inheritDoc
     */
    get keys(): string[];
    /**
     * @inheritDoc
     */
    get values(): T[];
    /**
     * Clears the dictionary
     */
    clear(): void;
}
