import '../../assert/js/assert.js';
import '../../globals.js';
export default class EventTimer {
    private readonly eventModel;
    private readonly eventCallback;
    private period;
    private timeBeforeNextEvent;
    constructor(eventModel: {
        getPeriodBeforeNextEvent: () => number;
    }, eventCallback: (timeElapsed: number) => void);
    /**
     * Steps the timer forward by a certain amount of time. This may cause 0 or more events to actually occur.
     */
    step(dt: number): void;
    /**
     * Returns how far we are to the next event firing (where 0 is an event "just" fired, and 1 is the next event
     * firing).
     *
     * @returns In the range [0,1). Is inclusive for 0, but exclusive for 1.
     */
    getRatio(): number;
}
export declare class ConstantEventModel {
    private readonly rate;
    constructor(rate: number);
    getPeriodBeforeNextEvent(): number;
}
export declare class UniformEventModel {
    private readonly rate;
    private readonly pseudoRandomNumberSource;
    constructor(rate: number, pseudoRandomNumberSource: () => number);
    getPeriodBeforeNextEvent(): number;
}
export declare class PoissonEventModel {
    private readonly rate;
    private readonly pseudoRandomNumberSource;
    constructor(rate: number, pseudoRandomNumberSource: () => number);
    getPeriodBeforeNextEvent(): number;
}
//# sourceMappingURL=EventTimer.d.ts.map