import { n as ThreadWorkerType } from "./worker-type-DYQIrwCV.mjs";
import { PerformanceTimeEntry } from "@awesome-ecs/abstract/utils";

//#region src/abstract/worker-instance.d.ts
type WorkerUid = string;
type WorkerMessageUid = string;
interface WorkerInstanceResponse<TResponseData> {
  data: TResponseData;
  metrics?: PerformanceTimeEntry[];
  transfer?: ArrayBufferLike[];
}
interface WorkerInstance<TRequestData, TResponseData> {
  handle(message: TRequestData): WorkerInstanceResponse<TResponseData>;
}
//#endregion
//#region src/abstract/worker-message.d.ts
declare enum WorkerMessageType {
  health = "health",
  data = "data"
}
interface WorkerRequestMessage<TRequestData> {
  workerType: ThreadWorkerType;
  messageType: WorkerMessageType;
  messageUid: WorkerMessageUid;
  request: TRequestData;
}
interface WorkerResponseMessage<TResponseData> {
  workerType: ThreadWorkerType;
  workerUid?: WorkerUid;
  messageType: WorkerMessageType;
  messageUid: WorkerMessageUid;
  data: TResponseData;
  transfer?: ArrayBufferLike[];
  metrics?: PerformanceTimeEntry[];
}
//#endregion
export { WorkerInstanceResponse as a, WorkerInstance as i, WorkerRequestMessage as n, WorkerMessageUid as o, WorkerResponseMessage as r, WorkerUid as s, WorkerMessageType as t };
//# sourceMappingURL=worker-message-b803N7ST.d.mts.map