import { ChannelStrategy } from '../strategy'; type OverlapsOnlyIfMatching = { [K in Extract]: U[K] extends T[K] ? U[K] : T[K] extends U[K] ? T[K] : never; }; type OnlyIfCompatible> = D extends Record ? keyof D extends never ? A | B : never : A | B; export default class CombinedStrategy implements ChannelStrategy> { private primary; private secondary; static combine(a: ChannelStrategy, b: ChannelStrategy): OnlyIfCompatible extends never ? never : CombinedStrategy; private constructor(); onEndpointDisconnect(endpointId: string, listener: () => void): void; isValidEndpointPayload(payload: unknown): payload is OnlyIfCompatible; closeEndpoint(endpointId: string): Promise; isEndpointConnected(endpoint: string): boolean; addEndpoint(endpoint: string, payload: OnlyIfCompatible): Promise; receive(listener: (action: string, payload: any, identity: any) => Promise): void; send(endpointId: string, action: string, payload: any): Promise; close(): Promise; } export {};