/** For the Wonderland Engine `Object3D` you can omit the callbacks (like `myCloneCallback`), since they are already handled directly as a speciale case */ export declare class ObjectPoolParams { myInitialPoolSize: number; /** If all the objects are busy, this amount will be added to the pool */ myAmountToAddWhenEmpty: number; /** If all the objects are busy, this percentage of the current pool size will be added to the pool */ myPercentageToAddWhenEmpty: number; myCloneParams: Readonly | null; /** For the Wonderland Engine `Object3D` you can omit this, since it's already handled directly as a speciale case */ myCloneCallback: ((object: Readonly, cloneParams?: Readonly) => PoolObjectType) | null; /** For the Wonderland Engine `Object3D` you can omit this, since it's already handled directly as a speciale case */ mySetActiveCallback: ((object: PoolObjectType, active: boolean) => void) | null; /** For the Wonderland Engine `Object3D` you can omit this, since it's already handled directly as a speciale case */ myEqualCallback: ((first: Readonly, second: Readonly) => boolean) | null; /** For the Wonderland Engine `Object3D` you can omit this, since it's already handled directly as a speciale case */ myDestroyCallback: ((object: PoolObjectType) => void) | null; /** For the Wonderland Engine `Object3D` you can omit this, since it's already handled directly as a speciale case */ myOptimizeObjectsAllocationCallback: ((object: Readonly, numberOfObjectsToAllocate: number) => void) | null; myLogEnabled: boolean; } export interface BaseObjectPool { get(): unknown | null; has(object: unknown): boolean; isBusy(object: unknown): boolean; isAvailable(object: unknown): boolean; release(object: unknown): void; releaseAll(): void; increase(amount: number): void; increasePercentage(percentage: number): void; getObjects(): Readonly; getSize(): number; getAvailableObjects(): Readonly; getAvailableSize(): number; getBusyObjects(): Readonly; getBusySize(): number; destroy(): void; } export declare class ObjectPool implements BaseObjectPool { private readonly _myObjectPrototype; private readonly _myObjectPoolParams; private readonly _myAvailableObjects; private readonly _myBusyObjects; private _myDestroyed; private _myIsObject3D; private _myIsObject3DCloneParams; constructor(objectPrototype: Readonly, objectPoolParams: Readonly>); get(): PoolObjectType | null; has(object: Readonly): boolean; isBusy(object: Readonly): boolean; isAvailable(object: Readonly): boolean; release(object: Readonly): void; releaseAll(): void; increase(amount: number): void; increasePercentage(percentage: number): void; getObjects(): Readonly; getSize(): number; getAvailableObjects(): Readonly; getAvailableSize(): number; getBusyObjects(): Readonly; getBusySize(): number; private _addToPool; private _clonePrototype; private _setActive; private _equals; destroy(): void; isDestroyed(): boolean; private _destroyObject; }