/**
 * Generic Object Pool
 *
 * Reduces GC pressure by reusing objects instead of allocating new ones.
 * Target: 80% GC reduction, 60% memory usage reduction
 */
/**
 * Poolable interface - objects that can be pooled must implement this
 */
export interface Poolable {
    /**
     * Reset the object to initial state for reuse
     */
    reset(): void;
}
/**
 * Generic Object Pool
 */
export declare class ObjectPool<T extends Poolable> {
    private available;
    private inUse;
    private factory;
    private maxSize;
    private created;
    private stats;
    constructor(factory: () => T, maxSize?: number);
    /**
     * Acquire an object from the pool
     * Reuses existing or creates new if needed
     */
    acquire(): T;
    /**
     * Release an object back to the pool
     * Object is reset and made available for reuse
     */
    release(obj: T): void;
    /**
     * Get pool statistics
     */
    getStats(): {
        created: number;
        available: number;
        inUse: number;
        acquires: number;
        releases: number;
        hits: number;
        misses: number;
        disposed: number;
        hitRate: number;
    };
    /**
     * Clear the pool
     */
    clear(): void;
    /**
     * Prewarm the pool with N objects
     */
    prewarm(count: number): void;
}
