import { SyncHook } from './SyncHook';
import type { PluginSystem } from './PluginSystem';
import type { PerformanceEvent } from './Interface';
export declare function createPerformance<T extends Record<string, unknown>>(
  plSys: PluginSystem<T>,
  defaultCondition: string,
): {
  /**
   * Turn off performance monitoring.
   */
  close(): void;
  /**
   * Add new observation task.
   */
  monitor(
    sk: keyof T,
    ek: keyof T,
    conditions?: Partial<Record<string, string>>,
  ): SyncHook<[PerformanceEvent], null, void>;
  _taskHooks: {
    hs: Set<SyncHook<[PerformanceEvent], null, void>>;
    watch: Set<(hook: SyncHook<[PerformanceEvent]>) => void>;
    add(hook: SyncHook<[PerformanceEvent]>): void;
  };
};
