import { ProcessType } from '../../types'; import { Observable } from 'rxjs'; export { ProcessType }; export declare type IpcHandlerRef = { type: IpcMessage['type']; clients: IpcIdentifier[]; }; export declare type IpcHandlerRefs = { [key: string]: IpcHandlerRef; }; export declare type IpcGlobalMainRefs = { _ipcRefs: { client?: IpcClient; handlers: IpcHandlerRefs; }; }; export declare type IpcMessageType = string; export declare type IpcPayload = object; export declare type IpcMessage = { type: string; payload: { [key: string]: any; }; }; export declare type IpcIdentifier = { id: number; process: ProcessType; }; export declare type IpcEvent = { eid: string; type: M['type']; payload: M['payload']; sender: IpcIdentifier; targets: number[]; }; export declare type IpcEventObservable = Observable>; export declare type IpcFilter = (e: IpcEvent, index: number) => boolean; export declare type IpcClient = { readonly MAIN: number; readonly process: ProcessType; readonly events$: IpcEventObservable; readonly id: number; dispose: () => void; filter: (criteria: IpcFilter | T['type']) => IpcEventObservable; on: (type: T['type']) => IpcEventObservable; send: (type: T['type'], payload: T['payload'], options?: IpcClientSendOptions) => IpcSend; handle: (type: T['type'], handler: IpcEventHandler) => IpcClient; }; export declare type IpcClientSendOptions = { target?: number | number[]; timeout?: number; }; export declare type IpcSend = { eid: string; type: M['type']; results$: Observable>; timeout$: Observable<{}>; cancel$: Observable<{}>; results: Array<{ sender: IpcIdentifier; data?: D; }>; cancel: () => IpcSend; isCancelled: boolean; }; export declare type ISendResponse = { elapsed: number; data: D; type: M['type']; sender: IpcIdentifier; }; export declare type IpcEventHandlerArgs = IpcEvent & {}; export declare type IpcEventHandler = (e: IpcEventHandlerArgs) => Promise; export declare type IpcHandlerResponseEvent = { type: './SYS/IPC/handler/response'; payload: { eid: string; data?: any; }; }; export declare type IpcRegisterHandlerEvent = { type: './SYS/IPC/register-handler'; payload: { type: IpcMessage['type']; stage: 'CREATE' | 'DISPOSE'; }; };