import * as Effect from "effect/Effect"; import * as Stream from "effect/Stream"; type RpcEffectHandler, Success, Error> = (...args: Args) => Effect.Effect; type RpcWrappedEffectHandler, Success, Error> = (args: Args) => Promise>; type RpcStreamHandler, Success, Error> = (...args: Args) => Stream.Stream; type RpcWrappedStreamHandler, Success, Error> = (args: Args) => RpcSerializedStream; type RpcSerializedStream = ReadableStream; type RpcSerializedExit = { _tag: "Success"; value: Success; } | { _tag: "Failure"; cause: Array>; }; type RpcSerializedCause = { _tag: "Fail"; error: Error; } | { _tag: "Die"; defect: unknown; } | { _tag: "Interrupt"; fiberId: number | undefined; }; export type RpcWrapped = T extends RpcEffectHandler ? RpcWrappedEffectHandler : T extends RpcStreamHandler ? RpcWrappedStreamHandler : T extends Record ? { [K in keyof T]: RpcWrapped; } : T; export type RpcUnwrapped = T extends RpcWrappedEffectHandler ? RpcEffectHandler : T extends RpcWrappedStreamHandler ? RpcStreamHandler : T extends Record ? { [K in keyof T]: RpcUnwrapped; } : T; export declare const wrapRpcHandlers: >(handlers: T, streamKeys?: Array) => RpcWrapped; export declare const unwrapRpcHandlers: >(handlers: RpcWrapped, streamKeys?: Array) => RpcUnwrapped; export {}; //# sourceMappingURL=RpcSerialization.d.ts.map