abstract class Client {
  
  
  public abstract init(): Promise<void>;
  
  public abstract request(params: RequestParams, topic: string): Promise<{ uri, id }>;
  
  public abstract respond(params: RespondParams, iss: string): Promise<boolean>;
  
  public abstract getPendingRequests(): Promise<Record<number, PendingRequest>>;
  
  public abstract formatMessage(payload: PayloadParams, iss: string): Promise<string>;
  
  
  public abstract on("auth_response", (response: Response) => {}): void;
  
  public abstract on("auth_request", (id: number, pairingTopic: String, payload: PayloadParams, verifyContext: VerifyContext) => {}): void;
}