import '../../../assert/js/assert.js';
import '../../../globals.js';
/**
 * Pooled structure to record batched events efficiently. How it calls the callback is based on the type
 * (pointer/mspointer/touch/mouse). There is one BatchedDOMEvent for each DOM Event (not for each touch).
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import Enumeration from '../../../phet-core/js/Enumeration.js';
import EnumerationValue from '../../../phet-core/js/EnumerationValue.js';
import Pool, { TPoolable } from '../../../phet-core/js/Pool.js';
import IntentionalAny from '../../../phet-core/js/types/IntentionalAny.js';
import { EventContext, Input } from '../imports.js';
export type BatchedDOMEventCallback = (...args: IntentionalAny[]) => void;
export declare class BatchedDOMEventType extends EnumerationValue {
    static readonly POINTER_TYPE: BatchedDOMEventType;
    static readonly MS_POINTER_TYPE: BatchedDOMEventType;
    static readonly TOUCH_TYPE: BatchedDOMEventType;
    static readonly MOUSE_TYPE: BatchedDOMEventType;
    static readonly WHEEL_TYPE: BatchedDOMEventType;
    static readonly ALT_TYPE: BatchedDOMEventType;
    static readonly enumeration: Enumeration<BatchedDOMEventType>;
}
export default class BatchedDOMEvent implements TPoolable {
    private eventContext;
    private type;
    private callback;
    constructor(eventContext: EventContext, type: BatchedDOMEventType, callback: BatchedDOMEventCallback);
    initialize(eventContext: EventContext, type: BatchedDOMEventType, callback: BatchedDOMEventCallback): this;
    run(input: Input): void;
    /**
     * Releases references
     */
    dispose(): void;
    freeToPool(): void;
    static readonly pool: Pool<typeof BatchedDOMEvent>;
}
//# sourceMappingURL=BatchedDOMEvent.d.ts.map