import { Container } from "./Container";
import { IParticleValueAnimation } from "./Interfaces/IParticleValueAnimation";
import { ICoordinates } from "./Interfaces/ICoordinates";
import { IParticleImage } from "./Interfaces/IParticleImage";
import { Updater } from "./Particle/Updater";
import { IHsl, IRgb } from "./Interfaces/Colors";
import { IShapeValues } from "../Options/Interfaces/Particles/Shape/IShapeValues";
import { IBubbleParticleData } from "./Interfaces/IBubbleParticleData";
import { IParticle } from "./Interfaces/IParticle";
import { IParticles } from "../Options/Interfaces/Particles/IParticles";
import { ParticlesOptions } from "../Options/Classes/Particles/ParticlesOptions";
import { MoveDirection, MoveDirectionAlt, ShapeType } from "../Enums";
import { RecursivePartial } from "../Types";
import { Infecter } from "./Particle/Infecter";
import { IDelta } from "./Interfaces/IDelta";
import { Mover } from "./Particle/Mover";
import { ILink } from "./Interfaces/ILink";
import { IParticleHslAnimation } from "./Interfaces/IParticleHslAnimation";
import { Stroke } from "../Options/Classes/Particles/Stroke";
import { IParticleLoops } from "./Interfaces/IParticleLoops";
import { Vector } from "./Particle/Vector";
export declare class Particle implements IParticle {
    readonly id: number;
    private readonly container;
    destroyed: boolean;
    lastPathTime: number;
    lifeDelay: number;
    lifeDelayTime: number;
    lifeDuration: number;
    lifeTime: number;
    livesRemaining: number;
    misplaced: boolean;
    spawning: boolean;
    splitCount: number;
    unbreakable: boolean;
    readonly pathDelay: number;
    readonly updater: Updater;
    readonly infecter: Infecter;
    readonly mover: Mover;
    readonly sides: number;
    readonly strokeWidth: number;
    readonly options: ParticlesOptions;
    readonly loops: IParticleLoops;
    links: ILink[];
    randomIndexData?: number;
    linksDistance?: number;
    linksWidth?: number;
    maxDistance?: number;
    moveDrift?: number;
    moveSpeed?: number;
    sizeAnimationSpeed?: number;
    readonly close: boolean;
    readonly direction: MoveDirection | keyof typeof MoveDirection | MoveDirectionAlt;
    readonly fill: boolean;
    readonly stroke: Stroke;
    readonly position: Vector;
    readonly offset: Vector;
    readonly shadowColor: IRgb | undefined;
    readonly color?: IParticleHslAnimation;
    readonly opacity: IParticleValueAnimation<number>;
    readonly rotate: IParticleValueAnimation<number>;
    readonly size: IParticleValueAnimation<number>;
    readonly strokeColor?: IParticleHslAnimation;
    readonly velocity: Vector;
    readonly shape: ShapeType | string;
    readonly image?: IParticleImage;
    readonly initialPosition: Vector;
    readonly initialVelocity: Vector;
    readonly shapeData?: IShapeValues;
    readonly bubble: IBubbleParticleData;
    constructor(id: number, container: Container, position?: ICoordinates, overrideOptions?: RecursivePartial<IParticles>);
    move(delta: IDelta): void;
    update(delta: IDelta): void;
    draw(delta: IDelta): void;
    getPosition(): ICoordinates;
    getRadius(): number;
    getMass(): number;
    getFillColor(): IHsl | undefined;
    getStrokeColor(): IHsl | undefined;
    destroy(override?: boolean): void;
    reset(): void;
    private split;
    private setColorAnimation;
    private calcPosition;
    private checkOverlap;
    private calculateVelocity;
    private loadImageShape;
}
