import { Buffer } from 'buffer'; import { Duplex } from 'stream'; import { MaybePromise } from '@httptoolkit/util'; import { RuleParameters } from '../rules/rule-parameters'; import type { ProxySetting, ProxySettingSource, ProxyConfig } from '../rules/proxy-config'; export declare function serialize(obj: T, stream: Duplex): SerializedValue; export declare function deserialize, C extends { new (...args: any): any; deserialize(data: SerializedValue, channel: ClientServerChannel, options: Options): any; }>(data: T, stream: Duplex, options: Options, lookup: { [key: string]: C; }): InstanceType; export type SerializedValue = T & { topicId: string; }; export type Serialized = { [K in keyof T]: T[K] extends string | undefined ? string | undefined : T[K] extends Array ? Array> : SerializedValue; }; export declare abstract class Serializable { abstract type: string; /** * @internal */ serialize(_channel: ClientServerChannel): unknown; /** * @internal */ static deserialize(data: SerializedValue, _channel: ClientServerChannel, _options: unknown): any; dispose(): void; } interface Message { topicId?: string; } export declare class ClientServerChannel extends Duplex { private rawStream; readonly topicId: string; constructor(rawStream: Duplex, topicId?: string); private _onRawStreamError; private _onRawStreamFinish; /** * @internal @hidden */ _write(message: Message, encoding: BufferEncoding, callback: (error?: Error | null) => void): void; _readFromRawStream: (rawData: any) => void; private reading; _read(): void; request(data: T): Promise; request(action: string, data: T): Promise; onRequest(cb: (request: T) => MaybePromise): void; onRequest(actionName: string, cb: (request: T) => MaybePromise): void; dispose(disposeReceived?: boolean): void; } export declare function serializeBuffer(buffer: Buffer): string; export declare function deserializeBuffer(buffer: string): Buffer; declare const SERIALIZED_PARAM_REFERENCE = "__mockttp__param__reference__"; export type SerializedRuleParameterReference = { [SERIALIZED_PARAM_REFERENCE]: string; }; export declare function ensureParamsDeferenced(value: T | SerializedRuleParameterReference, ruleParams: RuleParameters): T; export type SerializedProxyConfig = ProxySetting | string | undefined | SerializedRuleParameterReference | Array; export declare function serializeProxyConfig(proxyConfig: ProxyConfig, channel: ClientServerChannel): SerializedProxyConfig; export declare function deserializeProxyConfig(proxyConfig: SerializedProxyConfig, channel: ClientServerChannel, ruleParams: RuleParameters): ProxySettingSource; export {}; //# sourceMappingURL=serialization.d.ts.map