import * as PIXI from "pixi.js";
import { BaseEffect } from "./BaseEffect";
import { BaseEmitterCore } from "./core/BaseEmitterCore";
import { IEmitterSettings, IEmitterSpawn, IParticleEmitterParent } from "./FX";
import { Particle } from "./Particle";
import { FXSignal } from "./util/FXSignal";
export interface IParticleEmitterSignals {
    started: FXSignal;
    completed: FXSignal;
    exhausted: FXSignal;
    particleSpawned: FXSignal;
    particleBounced: FXSignal;
    particleDied: FXSignal;
    particleUpdated: FXSignal;
}
export declare class ParticleEmitter extends BaseEffect implements IParticleEmitterParent {
    infinite: boolean;
    target: PIXI.Container;
    targetOffset: number;
    core: BaseEmitterCore;
    settings: IEmitterSettings | undefined;
    autoRecycleOnComplete: boolean;
    private _particles;
    private _particleCount;
    private _spawnOnComplete;
    private _childEmitters;
    private _hasChildEmitters;
    private _xPosIntialized;
    private _yPosIntialized;
    private _nextSpawnTime;
    private _scaleMod;
    private _paused;
    __parent: IParticleEmitterParent | undefined;
    __adoptRotation: boolean;
    __on: IParticleEmitterSignals;
    constructor(componentId: string);
    init(container: PIXI.Container, autoStart?: boolean, scaleMod?: number): ParticleEmitter;
    start(): ParticleEmitter;
    stop(waitForParticles?: boolean): void;
    update(dt: number): ParticleEmitter;
    spawn(): ParticleEmitter;
    recycle(): void;
    dispose(): void;
    get x(): number;
    set x(value: number);
    get y(): number;
    set y(value: number);
    set rotation(value: number);
    get rotation(): number;
    get paused(): boolean;
    set paused(value: boolean);
    get on(): IParticleEmitterSignals;
    private recycleParticles;
    private stopChildEmitters;
    __removeParticle(particle: Particle): void;
    __removeChildEmitter(emitter: any): void;
    __subSpawn(particle: Particle, list: IEmitterSpawn[]): void;
    __applySettings(value: IEmitterSettings): void;
    __setCore(type: string): void;
}
