import { TableAction } from '../../../table/index.js';
import type { Table, TableSendableAction } from '../../../table/table.js';
import { TableActionInspector } from './actionInspector.js';
import { TableActionStub } from './actionStub.js';
import { $mocks, $sentActions } from './constants.js';
export declare class TableSpy<TABLE extends Table = Table> extends TableAction<TABLE> {
    static actionName: 'spy';
    [$mocks]: Record<string, (...args: any[]) => any>;
    [$sentActions]: Record<string, any[]>;
    constructor(table: TABLE);
    reset(): TableSpy<TABLE>;
    on<ACTION extends TableSendableAction<TABLE> = TableSendableAction<TABLE>>(Action: new (table: TABLE) => ACTION): TableActionStub<TABLE, ACTION>;
    sent<ACTION extends TableSendableAction<TABLE> = TableSendableAction<TABLE>>(Action: new (entity: TABLE) => ACTION): TableActionInspector<TABLE, ACTION>;
    restore(): void;
}
