import { Simulation, IMovePath } from './simulation';
import { Queue } from './queue';
import { RandomVar } from './random';
import { IPoint } from './util';
export interface IAnimationPosition {
    position: IPoint;
    angle: number;
}
export declare class Entity<S extends Simulation = Simulation> {
    _sim: S | null;
    _queues: Map<any, any>;
    private _serial;
    private _prty;
    private _str;
    private static _serial;
    constructor(options?: any);
    get simulation(): S;
    get serial(): number;
    get priority(): number;
    set priority(value: number);
    delay(delay: number, path?: IMovePath, signal?: any): Promise<number>;
    enterQueue(queue: Queue, units?: number): Promise<number>;
    enterQueueImmediately(queue: Queue, units?: number): void;
    canEnterQueue(q: Queue, units?: number): boolean;
    seize(resource: Queue, delay: number, waitingQueues?: Queue[] | Queue | null, preemptSignal?: any, units?: number): Promise<void>;
    leaveQueue(q: Queue): void;
    waitSignal(signal: any): Promise<number>;
    sendSignal(signal: any, releaseMax?: number): number;
    getAnimationPosition(q: Queue, start: IPoint, end: IPoint): IAnimationPosition;
    dispose(): void;
    toString(): string;
    script(): Promise<void>;
}
export declare class EntityGenerator extends Entity {
    private _type;
    private _interval;
    private _max;
    private _tmStart;
    private _tmEnd;
    constructor(entityType: any, interval?: RandomVar | number, max?: number, timeStart?: number, timeEnd?: number);
    script(): Promise<void>;
}
