import { ISignal } from "ste-signals";
import { Vim } from "./vim";
export interface IReadonlyVimCollection {
    getFromHandle(handle: number): Vim | undefined;
    getAll(): ReadonlyArray<Vim>;
    getAt(index: number): Vim | undefined;
    count: number;
    onChanged: ISignal;
}
export declare class VimCollection implements IReadonlyVimCollection {
    private _vims;
    private _onChanged;
    get onChanged(): ISignal;
    constructor();
    get count(): number;
    /**
     * Adds a Vim instance to the collection.
     * @param vim - The Vim instance to add.
     */
    add(vim: Vim): void;
    /**
     * Removes a Vim instance from the collection.
     * @param vim - The Vim instance to remove.
     */
    remove(vim: Vim): void;
    /**
     * Gets a Vim instance by its handle.
     * @param handle - The handle of the Vim instance.
     * @returns The Vim instance or undefined if not found.
     */
    getFromHandle(handle: number): Vim | undefined;
    /**
     * Gets a Vim instance at a specific index.
     * @param index - The index of the Vim instance.
     * @returns The Vim instance or undefined if the index is out of bounds.
     */
    getAt(index: number): Vim | undefined;
    /**
     * Gets all Vim instances.
     * @returns An array of Vim instances.
     */
    getAll(): ReadonlyArray<Vim>;
    /**
     * Clears all Vim instances from the collection.
     */
    clear(): void;
}
