/**
* Return a default shape (polygon) for the given dimensions,
* or the existing shapes if already defined in settings.
* @param {object} settings - TMX object settings
* @returns {Polygon|object[]} shape(s) for the object body
* @ignore
*/
export function getDefaultShape(settings: object): Polygon | object[];
/**
* Detect the object type from its TMX settings.
* The detection order is:
* 1. TMXLayer instances → "layer" (passthrough)
* 2. Object class matching a registered factory → class name
* 3. Object name matching a registered factory → name
* 4. Object with text data → "text"
* 5. Object with tile/gid data → "tile"
* 6. Everything else → "shape"
* @param {object} settings - TMX object settings
* @returns {string} the factory type key
* @ignore
*/
export function detectObjectType(settings: object): string;
/**
* Register a factory function for a given Tiled object type.
* When a Tiled map is loaded, objects are matched to factories using the following
* priority: object class → object name → structural type ("text", "tile", "shape").
*
* Built-in structural types are: `"text"`, `"tile"`, `"shape"`.
* Custom types are matched against the object's Tiled `class` or `name` property.
*
* For simple cases where you just want to map a Tiled class to a constructor,
* use {@link registerTiledObjectClass} instead.
* @category Tilemap
* @param {string} type - the object type key (built-in type or Tiled class/name)
* @param {Function} factory - factory function with signature `(settings, map) => Renderable`
* @example
* // register a custom factory for "Spine" objects in Tiled
* // (set the object class to "Spine" in Tiled, and add atlasFile/jsonFile custom properties)
* registerTiledObjectFactory("Spine", (settings, map) => {
* const obj = new Spine(settings.x, settings.y, settings);
* obj.pos.z = settings.z;
* return obj;
* });
*
* @example
* // override the built-in "shape" factory to add custom behavior
* registerTiledObjectFactory("shape", (settings, map) => {
* const obj = new Renderable(settings.x, settings.y, settings.width, settings.height);
* obj.pos.z = settings.z;
* // add custom initialization...
* return obj;
* });
*/
export function registerTiledObjectFactory(type: string, factory: Function): void;
/**
* Register a class constructor as a Tiled object factory.
* When an object with a matching `class` or `name` is found in a Tiled map,
* an instance of the given constructor will be created with `new Constructor(x, y, settings)`.
*
* This is a convenience wrapper around {@link registerTiledObjectFactory}.
* If the same class is registered twice with the same constructor, the call is silently ignored.
* If a different constructor is registered for the same name, an error is thrown.
*
* Note: classes registered via {@link pool.register} are also automatically registered
* as Tiled object factories (unless {@link pool.autoRegisterTiled} is set to `false`).
* @category Tilemap
* @param {string} name - the Tiled class or object name to match
* @param {Function} Constructor - class constructor with signature `(x, y, settings)`
* @example
* // register a custom enemy class for use in Tiled maps
* // In Tiled: set the object class to "Enemy" and add custom properties
* registerTiledObjectClass("Enemy", Enemy);
*
* @example
* // equivalent to pool.register (which auto-registers for Tiled too)
* pool.register("CoinEntity", CoinEntity, true);
* // CoinEntity is now available both in the pool AND as a Tiled object factory
*/
export function registerTiledObjectClass(name: string, Constructor: Function): void;
/**
* Queue a class for registration as a Tiled object factory.
* Registrations are applied when initFactories() runs (on first
* createTMXObject call), avoiding circular import issues at module load time.
* @param {string} name - the Tiled class or name to match
* @param {Function} Constructor - class constructor with signature (x, y, settings)
* @ignore
*/
export function registerBuiltinTiledClass(name: string, Constructor: Function): void;
/**
* Instantiate a TMX object based on its settings, using the registered factory
* for its detected type.
* @param {object} settings - TMX object settings
* @param {TMXTileMap} map - the parent tile map
* @returns {Renderable} the instantiated object
* @ignore
*/
export function createTMXObject(settings: object, map: TMXTileMap): Renderable;
//# sourceMappingURL=TMXObjectFactory.d.ts.map