import { type IBaseObjectsManager, type IBaseObjectsManagerOptions } from "../../common/baseObject/IBaseObjectsManager";
import { type AltVBaseObject } from "./AltVBaseObject";
import { AltVBaseObjectsIterator } from "./AltVBaseObjectsIterator";
import BaseObject = AltVServer.BaseObject;
export interface IAltVBaseObjectsManagerOptions extends IBaseObjectsManagerOptions {
}
export declare abstract class AltVBaseObjectsManager<T extends AltVBaseObject<BaseObject>> implements IBaseObjectsManager<T> {
    private readonly _baseObjects;
    private readonly _baseObjectsType;
    protected readonly _iterator: AltVBaseObjectsIterator<T>;
    protected get baseObjects(): ReadonlyMap<number, T>;
    get iterator(): AltVBaseObjectsIterator<T>;
    protected constructor(options: IAltVBaseObjectsManagerOptions);
    getByID(id: number): T;
    findByID(id: number): T | null;
    protected registerBaseObject(baseObject: T): void;
    protected unregisterBaseObject(baseObject: T): void;
}
