import EventEmitter from "events"; import { Filter } from "@welshman/util"; import { Repository } from "./repository.js"; import { RelayMessage, ClientMessage } from "./message.js"; import { Socket } from "./socket.js"; import { Unsubscriber } from "./util.js"; import { NetContext } from "./context.js"; export declare enum AdapterEvent { Receive = "receive" } export type AdapterEvents = { [AdapterEvent.Receive]: (message: RelayMessage, url: string) => void; }; export declare abstract class AbstractAdapter extends EventEmitter { _unsubscribers: Unsubscriber[]; abstract urls: string[]; abstract sockets: Socket[]; abstract send(message: ClientMessage): void; cleanup(): void; } export declare class SocketAdapter extends AbstractAdapter { readonly socket: Socket; constructor(socket: Socket); get sockets(): Socket[]; get urls(): string[]; send(message: ClientMessage): void; } export declare class LocalAdapter extends AbstractAdapter { #private; readonly repository: Repository; subs: Map; constructor(repository: Repository); get sockets(): never[]; get urls(): string[]; send(message: ClientMessage): void; } export declare class MockAdapter extends AbstractAdapter { readonly url: string; readonly send: (message: ClientMessage) => void; constructor(url: string, send: (message: ClientMessage) => void); get sockets(): never[]; get urls(): string[]; receive: (message: RelayMessage) => void; } export type AdapterContext = Partial; export declare const getAdapter: (url: string, adapterContext?: AdapterContext) => any; //# sourceMappingURL=adapter.d.ts.map