import { SupportedMessagePort } from '@orpc/client/message-port'; import { Value, Promisable, MaybeOptionalOptions } from '@orpc/shared'; import { DecodedResponseMessage } from '@orpc/standard-server-peer'; import { C as Context, R as Router } from '../../shared/server.qKsRrdxW.js'; import { f as StandardHandler } from '../../shared/server.7cEtMB30.js'; import { HandleStandardServerPeerMessageOptions } from '../standard-peer/index.js'; import { S as StandardRPCHandlerOptions } from '../../shared/server.yoEB3Fx4.js'; import '@orpc/client'; import '@orpc/contract'; import '@orpc/standard-server'; import '../../shared/server.EfTOZ2Q7.js'; import '@orpc/client/standard'; import '../../shared/server.ChyoA9XY.js'; interface MessagePortHandlerOptions<_T extends Context> { /** * By default, oRPC serializes request/response messages to string/binary data before sending over message port. * If needed, you can define the this option to utilize full power of [MessagePort: postMessage() method](https://developer.mozilla.org/en-US/docs/Web/API/MessagePort/postMessage), * such as transferring ownership of objects to the other side or support unserializable objects like `OffscreenCanvas`. * * @remarks * - return null | undefined to disable this feature * * @warning Make sure your message port supports `transfer` before using this feature. * @example * ```ts * experimental_transfer: (message, port) => { * const transfer = deepFindTransferableObjects(message) // implement your own logic * return transfer.length ? transfer : null // only enable when needed * } * ``` * * @see {@link https://orpc.dev/docs/adapters/message-port#transfer Message Port Transfer Docs} */ experimental_transfer?: Value, [message: DecodedResponseMessage, port: SupportedMessagePort]>; } declare class MessagePortHandler { private readonly standardHandler; private readonly transfer; constructor(standardHandler: StandardHandler, options?: NoInfer>); upgrade(port: SupportedMessagePort, ...rest: MaybeOptionalOptions>): void; } interface RPCHandlerOptions extends StandardRPCHandlerOptions, MessagePortHandlerOptions { } /** * RPC Handler for common message port implementations. * * @see {@link https://orpc.dev/docs/rpc-handler RPC Handler Docs} * @see {@link https://orpc.dev/docs/adapters/message-port Message Port Adapter Docs} */ declare class RPCHandler extends MessagePortHandler { constructor(router: Router, options?: NoInfer>); } export { MessagePortHandler, RPCHandler }; export type { MessagePortHandlerOptions, RPCHandlerOptions };