import { ExtractSuccessResponseMessage, RequestMessage, TransactionsHandlers, UnknownRequestMessage, UnknownResponseMessage, UnknownTransaction } from "./types.cjs";

//#region src/channel/ChannelNetwork.d.ts
type PostRequestOptions = {
  timeout?: number;
};
type ChannelNetworkOptions = {
  debug: boolean;
  maximumRequestConcurrency: number;
  defaultTimeout: number;
  requestIDPrefix: string;
};
declare abstract class ChannelNetwork<TPartnerTransactions extends Record<string, UnknownTransaction> = Record<string, never>, TOptions extends Record<string, unknown> = Record<string, unknown>> {
  requestHandlers: TransactionsHandlers<TPartnerTransactions>;
  options: ChannelNetworkOptions & TOptions;
  private _port;
  protected get port(): MessagePort;
  protected set port(port: MessagePort | null);
  private _pendingRequests;
  constructor(requestHandlers: TransactionsHandlers<TPartnerTransactions>, options: Partial<ChannelNetworkOptions> & TOptions);
  createRequestMessage<TType extends string = string, TData = undefined>(type: TType, data: TData): RequestMessage<TType, TData>;
  protected onMessage(event: MessageEvent<unknown>): Promise<void>;
  protected postRequest<TRequest extends UnknownRequestMessage, TResponse extends UnknownResponseMessage>(request: TRequest, postMessage?: (request: TRequest) => void, options?: PostRequestOptions): Promise<ExtractSuccessResponseMessage<TResponse>>;
  protected postResponse<TResponse extends UnknownResponseMessage>(response: TResponse, postMessage?: (response: TResponse) => void): TResponse;
}
//#endregion
export { ChannelNetwork, ChannelNetworkOptions, PostRequestOptions };
//# sourceMappingURL=ChannelNetwork.d.cts.map