import type { EngineGlobalObject } from "../EngineGlobalObject";
import type { Instantiater } from "../Instantiater";
import type { ReadonlyQuaternion } from "../math/ReadonlyQuaternion";
import type { ReadonlyVector3 } from "../math/ReadonlyVector3";
import { GameObjectBuilder } from "./GameObjectBuilder";
/**
 * this class is used to define a prefab
 * do not override constructor it's break the engine
 */
export declare abstract class Prefab {
    private readonly _instantiater;
    private readonly _gameObjectBuilder;
    constructor(engineGlobalObject: EngineGlobalObject, name: string, localPosition?: ReadonlyVector3, localRotation?: ReadonlyQuaternion, localScale?: ReadonlyVector3);
    /**
     * make a builder for game object
     */
    abstract make(): GameObjectBuilder;
    /**
     * get global engine object
     */
    protected get instantiater(): Instantiater;
    /**
     * get game object builder
     */
    protected get gameObjectBuilder(): GameObjectBuilder;
}
