import type { IInteractivityOptions, InteractivityContainer, InteractivityOptions } from "@tsparticles/plugin-interactivity"; import type { IInfection } from "./Options/Interfaces/IInfection.js"; import type { Infection } from "./Options/Classes/Infection.js"; import type { Particle } from "@tsparticles/engine"; interface IInfecter { startInfection(particle: InfectableParticle, stage: number): void; updateInfection(particle: InfectableParticle, delta: number): void; updateInfectionStage(particle: InfectableParticle, stage: number): void; } export interface IParticleInfection { delay?: number; delayStage?: number; stage?: number; time?: number; } export type InfectableContainer = InteractivityContainer & { actualOptions: InfectionOptions; infecter?: IInfecter; }; export type IInfectionOptions = IInteractivityOptions & { infection: IInfection; }; export type InfectionOptions = InteractivityOptions & { infection?: Infection; }; export type InfectableParticle = Particle & { infection?: IParticleInfection; }; export {};