import type { Entity, EntitySendableAction } from '../../../entity/entity.js';
import { EntityAction } from '../../../entity/index.js';
import { EntityActionInspector } from './actionInspector.js';
import { EntityActionStub } from './actionStub.js';
import { $mocks, $sentActions } from './constants.js';
export declare class EntitySpy<ENTITY extends Entity = Entity> extends EntityAction<ENTITY> {
    static actionName: 'spy';
    [$mocks]: Record<string, (...args: any[]) => any>;
    [$sentActions]: Record<string, any[]>;
    constructor(entity: ENTITY);
    reset(): EntitySpy<ENTITY>;
    on<ACTION extends EntitySendableAction<ENTITY> = EntitySendableAction<ENTITY>>(Action: new (entity: ENTITY) => ACTION): EntityActionStub<ENTITY, ACTION>;
    sent<ACTION extends EntitySendableAction<ENTITY> = EntitySendableAction<ENTITY>>(Action: new (entity: ENTITY) => ACTION): EntityActionInspector<ENTITY, ACTION>;
    restore(): void;
}
