export declare enum IPCType { Host = "host", Client = "client" } export declare enum IPCMessageType { message = "message", request = "request" } export declare enum SubNamespace { Reply = "reply" } export type IPCConfiguration = { type: IPCMessageType.message; consumer: IPCType; data: Record; response: never; } | { type: IPCMessageType.request; consumer: IPCType; data: Record; response: Record | null | void; }; type Opposite = T extends IPCType.Host ? IPCType.Client : IPCType.Host; export type OnlyMessage, U extends IPCType> = { [K in keyof T]: T[K] extends { consumer: Opposite; } ? T[K] extends { type: IPCMessageType.message; } ? K : never : never; }; export type OnlyRequest, U extends IPCType> = { [K in keyof T]: T[K] extends { consumer: Opposite; } ? T[K] extends { type: IPCMessageType.request; } ? K : never : never; }; export declare class IPC, U extends IPCType> { type: U; namespace: string; protected constructor(type: U, namespace: string); protected getEventName(key: keyof T, sub?: SubNamespace): string; } export {};