abstract class PairingClient {
public abstract init(params: { metadata: Metadata}): Promise<void>;
public abstract pair(params: { uri: string }): Promise<Sequence>;
public abstract create(): Promise<{ uri: string }>;
public abstract activate(params: { topic: string }): Promise<void>;
public abstract register(params: { methods: string[], type: ProtocolType }): Promise<void>;
public abstract updateExpiry(params: { topic: string, expiry: number }): Promise<void>;
public abstract updateMetadata(params: { topic: string, metadata: Metadata }): Promise<void>;
public abstract getPairings(): Promise<Array<Pairing>>;
public abstract ping(params: { topic: string; }): Promise<void>;
public abstract disconnect(params: { topic: string }): Promise<void>;
public abstract onRequest(${registered_request}, (topic: string, request: Request) => {}): void;