import { type IManagedObject, type IManagedResourceNode, IPointer, PointerDebugMetadata } from "../../lifecycle/manged-resources.js";
import { IDebugProtectedViewFactory } from "../../debug/i-debug-protected-view-factory.js";
import type { ILifecycleStrategy } from "./i-lifecycle-strategy.js";
/**
 * @public
 * The recommended lifecycle strategy. This strategy only adds debug checks for leaking objects; you must unlink
 * objects from their owners once they are finished with them.
 */
export declare class ReferenceCountedStrategy implements ILifecycleStrategy {
    createNode(owner: IManagedResourceNode | null): IManagedResourceNode;
    onSharedPointerCreated(sharedPtr: IManagedObject & IPointer, metadata: PointerDebugMetadata, protectedView: IDebugProtectedViewFactory | null): void;
    onManagedObjectCreated(object: IManagedObject): void;
    private wrapper;
}
//# sourceMappingURL=reference-counted-strategy.d.ts.map