import { ICoordinates } from "./ICoordinates";
import { Particle } from "../Particle";
import { ClickMode } from "../../Enums";
import { RecursivePartial } from "../../Types";
import { IOptions } from "../../Options/Interfaces/IOptions";
import { IDelta } from "./IDelta";
import { OutModeDirection } from "../../Enums/Directions/OutModeDirection";
export interface IContainerPlugin {
    clickPositionValid?: (position: ICoordinates) => boolean;
    draw?: (context: CanvasRenderingContext2D, delta: IDelta) => void;
    handleClickMode?: (mode: ClickMode | string) => void;
    init?: (options?: RecursivePartial<IOptions>) => void;
    initAsync?: (options?: RecursivePartial<IOptions>) => Promise<void>;
    play?: () => void;
    pause?: () => void;
    particleBounce?: (particle: Particle, delta: IDelta, direction: OutModeDirection) => boolean;
    particleDestroyed?: (particle: Particle, override?: boolean) => void;
    particlePosition?: (position?: ICoordinates, particle?: Particle) => ICoordinates | undefined;
    particleUpdate?: (particle: Particle, delta: IDelta) => void;
    particlesInitialization?: () => boolean;
    reset?: () => void;
    resize?: () => void;
    start?: () => void;
    startAsync?: () => Promise<void>;
    stop?: () => void;
    update?: (delta: IDelta) => void;
}
