import { FC, HTMLProps } from 'react';
import { Universe, UniverseState, ParticleForce, Vector, Array2D, timing } from '../universe';
import { RGBA } from '../utils';
import { Dimensions, ImageState } from '../types';
export declare type PixelOptions = {
x: number;
y: number;
image: Array2D;
};
export interface ParticleOptions {
filter?: (options: PixelOptions) => boolean;
radius?: (options: PixelOptions) => number;
mass?: (options: PixelOptions) => number;
color?: (options: PixelOptions) => string;
friction?: (options: PixelOptions) => number;
initialPosition?: (options: PixelOptions & {
finalPosition: Vector;
canvasDimensions: Dimensions;
}) => Vector;
initialVelocity?: (options: PixelOptions) => Vector;
}
export interface ParticleImageProps extends HTMLProps {
src: string;
height?: number;
width?: number;
scale?: number;
maxParticles?: number;
entropy?: number;
backgroundColor?: string;
particleOptions?: ParticleOptions;
mouseMoveForce?: (x: number, y: number) => ParticleForce;
mouseMoveForceDuration?: number;
touchMoveForce?: (x: number, y: number) => ParticleForce;
touchMoveForceDuration?: number;
mouseDownForce?: (x: number, y: number) => ParticleForce;
mouseDownForceDuration?: number;
creationDuration?: number;
deathDuration?: number;
creationTimingFn?: timing.TimingFunction;
deathTimingFn?: timing.TimingFunction;
onUniverseStateChange?: (state: UniverseState, universe: Universe) => void;
onImageStateChange?: (state: ImageState) => void;
}
declare const ParticleImage: FC;
export default ParticleImage;