import { BufferGeometry } from "three";
import Primitive from "./Primitive";
import { CircleParams, releaseCircleGeometry, requestCircleGeometry } from "../../pools/circleGeometryPool";
import { ConeParams, releaseConeGeometry, requestConeGeometry } from "../../pools/coneGeometryPool";
import { CylinderParams, releaseCylinderGeometry, requestCylinderGeometry } from "../../pools/cylinderGeometryPool";
import { TorusParams, releaseTorusGeometry, requestTorusGeometry } from "../../pools/torusGeometryPool";
export default abstract class PooledPrimitve extends Primitive {
    $releaseGeometry: typeof releaseCircleGeometry | typeof releaseConeGeometry | typeof releaseCylinderGeometry | typeof releaseTorusGeometry;
    $requestGeometry: typeof requestCircleGeometry | typeof requestConeGeometry | typeof requestCylinderGeometry | typeof requestTorusGeometry;
    constructor(geometry: BufferGeometry, $releaseGeometry: typeof releaseCircleGeometry | typeof releaseConeGeometry | typeof releaseCylinderGeometry | typeof releaseTorusGeometry, $requestGeometry: typeof requestCircleGeometry | typeof requestConeGeometry | typeof requestCylinderGeometry | typeof requestTorusGeometry);
    abstract $getParams(): CircleParams | ConeParams | CylinderParams | TorusParams;
}
