import { GameObjectBuilder } from "./hierarchy_object/GameObjectBuilder";
import type { Prefab } from "./hierarchy_object/Prefab";
import type { PrefabConstructor } from "./hierarchy_object/PrefabConstructor";
import type { ReadonlyQuaternion } from "./math/ReadonlyQuaternion";
import type { ReadonlyVector3 } from "./math/ReadonlyVector3";
/**
 * instantiate a game object
 * do not drive this class
 */
export declare class Instantiater {
    private readonly _engineGlobalObject;
    private _instanceNextId;
    private _eventInstanceNextId;
    /**
     * create a new GameObject with the given name by use builder
     * @param name
     * @param localPosition
     * @param localRotation
     * @param localScale
     * @returns
     */
    buildGameObject(name: string, localPosition?: ReadonlyVector3, localRotation?: ReadonlyQuaternion, localScale?: ReadonlyVector3): GameObjectBuilder;
    /**
     * create a new instance of Prefab with the given name by use builder
     * @param name
     * @param localPosition
     * @param localRotation
     * @param localScale
     * @returns
     */
    buildPrefab<T extends Prefab>(name: string, prefabCtor: PrefabConstructor<T>, localPosition?: ReadonlyVector3, localRotation?: ReadonlyQuaternion, localScale?: ReadonlyVector3): T;
}
