import Weapon from './Weapon';
import { Coordinates2D, DestroyerOptions, Sounds } from './types';
export declare class Destroyer {
    currentWeapon: Weapon;
    currentWeaponID: number;
    cursorLayer: HTMLDivElement;
    drawingCTX: CanvasRenderingContext2D | null;
    drawingLayer: HTMLCanvasElement;
    isFiring: boolean;
    mousePos: Coordinates2D;
    onDamage: Function;
    pageHealth: number;
    parent: HTMLElement;
    particleLayer: HTMLDivElement;
    particleLimit: number;
    volume: number;
    volumeChangeDelta: number;
    volumeHasBeenSet: boolean;
    weaponFiring: boolean;
    weaponsList: Weapon[];
    zIndexStart: number;
    constructor(parent: HTMLElement, options?: DestroyerOptions, sounds?: Sounds);
    /** Erase all persisted particles on drawing layer */
    clear(): void;
    /** Inject elements into parent to begin rendering process */
    inject(): void;
    /** Handle hotkeys */
    handleKeyDown(e: KeyboardEvent): void;
    /** Begin firing */
    handleMouseDown(): void;
    /** Cease firing */
    handleMouseUp(interval?: number): void;
    /** Track cursor position when the mouse is moved*/
    handleMouseMove(e: MouseEvent): void;
    /** Explicitly set volume */
    setVolume(vol: number): void;
    /** Increase volume */
    volumeUp(): void;
    /** Decrease volume */
    volumeDown(): void;
    /** Explicitly set weapon  by ID */
    setWeapon(wpn: number): void;
    /** Cycle to next weapon */
    weaponUp(): void;
    /** Cycle to previous weapon */
    weaponDown(): void;
    /** Update currentWeapon information based on currentWeaponID */
    updateCurrentWeapon(): void;
    /** Remove all rendered content from the page, state is maintained behind the scenes and can be re-injected */
    selfDestruct(): void;
    /** Update CSS variables on parent element */
    updateCSS(): void;
}
export default Destroyer;
