import { AppearanceMode } from 'wawa-vfx-vanilla';
import { EaseFunction } from 'wawa-vfx-vanilla';
import { ForwardRefExoticComponent } from 'react';
import { RefAttributes } from 'react';
import { RenderMode } from 'wawa-vfx-vanilla';
import * as THREE from 'three';
import { VFXEmitterSettings } from 'wawa-vfx-vanilla';
import { VFXParticlesSettings } from 'wawa-vfx-vanilla';
import { vfxStore } from 'wawa-vfx-vanilla';

export { AppearanceMode }

export { EaseFunction }

export { RenderMode }

export declare const VFXEmitter: ForwardRefExoticComponent<VFXEmitterProps & RefAttributes<VFXEmitterRef>>;

declare interface VFXEmitterProps {
    debug?: boolean;
    settings: VFXEmitterSettings;
    emitter: string;
    localDirection?: boolean;
    autoStart?: boolean;
}

declare interface VFXEmitterRef extends THREE.Object3D {
    startEmitting: (reset?: boolean) => void;
    stopEmitting: () => void;
    emitAtPos: (position: THREE.Vector3 | null, reset?: boolean) => void;
}

export { VFXEmitterSettings }

export declare const VFXParticles: React.FC<VFXParticlesProps>;

declare interface VFXParticlesProps {
    name: string;
    settings?: VFXParticlesSettings;
    alphaMap?: THREE.Texture;
    geometry?: React.ReactElement;
}

export { VFXParticlesSettings }

export { vfxStore }

export { }
