import { EngineObject } from "./index";
import { Color, Vector2 } from "./index";
/**
 * Particle Emitter - Spawns particles with the given settings
 */
export declare class ParticleEmitter extends EngineObject {
    additive: any;
    angleSpeed: any;
    colorEndA: any;
    colorEndB: any;
    colorStartA: any;
    colorStartB: any;
    emitConeAngle: any;
    emitRate: any;
    emitSize: any;
    emitTime: any;
    emitTimeBuffer: any;
    fadeRate: any;
    particleConeAngle: any;
    particleCreateCallback: any;
    particleDestroyCallback: any;
    particleTime: any;
    randomColorLinear: any;
    randomness: any;
    sizeEnd: any;
    sizeStart: any;
    speed: any;
    trailScale: any;
    /**
     * Create a particle system with the given settings
     * @param {Vector2} position          - World space position of the emitter
     * @param {Number}  [emitSize=0]       - World space size of the emitter (float for circle diameter, vec2 for rect)
     * @param {Number}  [emitTime=0]       - How long to stay alive (0 is forever)
     * @param {Number}  [emitRate=100]     - How many particles per second to spawn
     * @param {Number}  [emitConeAngle=PI] - Local angle to apply velocity to particles from emitter
     * @param {Number}  [tileIndex=-1]     - Index into tile sheet, if <0 no texture is applied
     * @param {Number}  [tileSize=defaultTileSize]    - Tile size for particles
     * @param {Color}   [colorStartA=new Color(1,1,1)] - Color at start of life 1, randomized between start colors
     * @param {Color}   [colorStartB=new Color(1,1,1)] - Color at start of life 2, randomized between start colors
     * @param {Color}   [colorEndA=new Color(1,1,1,0)] - Color at end of life 1, randomized between end colors
     * @param {Color}   [colorEndB=new Color(1,1,1,0)] - Color at end of life 2, randomized between end colors
     * @param {Number}  [particleTime=.5]      - How long particles live
     * @param {Number}  [sizeStart=.1]         - How big are particles at start
     * @param {Number}  [sizeEnd=1]            - How big are particles at end
     * @param {Number}  [speed=.1]             - How fast are particles when spawned
     * @param {Number}  [angleSpeed=.05]       - How fast are particles rotating
     * @param {Number}  [damping=1]            - How much to dampen particle speed
     * @param {Number}  [angleDamping=1]       - How much to dampen particle angular speed
     * @param {Number}  [gravityScale=0]       - How much does gravity effect particles
     * @param {Number}  [particleConeAngle=PI] - Cone for start particle angle
     * @param {Number}  [fadeRate=.1]          - How quick to fade in particles at start/end in percent of life
     * @param {Number}  [randomness=.2]        - Apply extra randomness percent
     * @param {Boolean} [collideTiles=0]      - Do particles collide against tiles
     * @param {Boolean} [additive=0]          - Should particles use addtive blend
     * @param {Boolean} [randomColorLinear=0] - Should color be randomized linearly or across each component
     * @param {Number}  [renderOrder=0]        - Render order for particles (additive is above other stuff by default)
     */
    constructor(pos: any, emitSize: number | undefined, emitTime: number | undefined, emitRate: number | undefined, emitConeAngle: number | undefined, tileIndex: number | undefined, tileSize: Vector2 | undefined, colorStartA: Color | undefined, colorStartB: Color | undefined, colorEndA: Color | undefined, colorEndB: Color | undefined, particleTime: number | undefined, sizeStart: number | undefined, sizeEnd: number | undefined, speed: number | undefined, angleSpeed: number | undefined, damping: number | undefined, angleDamping: number | undefined, gravityScale: number | undefined, particleConeAngle: number | undefined, fadeRate: number | undefined, randomness: number | undefined, collideTiles: any, additive: any, randomColorLinear?: number, renderOrder?: number);
    /** Update the emitter to spawn particles, called automatically by engine once each frame */
    update(): void;
    /** Spawn one particle
     *  @return {Particle} */
    emitParticle(): Particle;
    render(): void;
}
/**
 * Particle Object - Created automatically by Particle Emitters
 */
declare class Particle extends EngineObject {
    additive: any;
    colorEndDelta: any;
    colorStart: any;
    destroyCallback: any;
    fadeRate: any;
    lifeTime: any;
    sizeEndDelta: any;
    sizeStart: any;
    trailScale: any;
    /**
     * Create a particle with the given settings
     * @param {Vector2} position                   - World space position of the particle
     * @param {Number}  [tileIndex=-1]              - Tile to use to render, untextured if -1
     * @param {Vector2} [tileSize=defaultTileSize] - Size of tile in source pixels
     * @param {Number}  [angle=0]                   - Angle to rotate the particle
     */
    constructor(pos: any, tileIndex: any, tileSize: any, angle: any);
    /** Render the particle, automatically called each frame, sorted by renderOrder */
    render(): void;
}
export {};
