// package: wechaty
// file: puppet.proto

import * as puppet_pb from "./puppet_pb";
import * as puppet_base_pb from "./puppet/base_pb";
import * as puppet_contact_pb from "./puppet/contact_pb";
import * as puppet_event_pb from "./puppet/event_pb";
import * as puppet_friendship_pb from "./puppet/friendship_pb";
import * as puppet_message_pb from "./puppet/message_pb";
import * as puppet_room_pb from "./puppet/room_pb";
import * as puppet_room_invitation_pb from "./puppet/room_invitation_pb";
import * as puppet_room_member_pb from "./puppet/room_member_pb";
import * as puppet_tag_pb from "./puppet/tag_pb";
import {grpc} from "@improbable-eng/grpc-web";

type PuppetStart = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_base_pb.StartRequest;
  readonly responseType: typeof puppet_base_pb.StartResponse;
};

type PuppetStop = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_base_pb.StopRequest;
  readonly responseType: typeof puppet_base_pb.StopResponse;
};

type PuppetLogout = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_base_pb.LogoutRequest;
  readonly responseType: typeof puppet_base_pb.LogoutResponse;
};

type PuppetDing = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_base_pb.DingRequest;
  readonly responseType: typeof puppet_base_pb.DingResponse;
};

type PuppetVersion = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_base_pb.VersionRequest;
  readonly responseType: typeof puppet_base_pb.VersionResponse;
};

type PuppetEvent = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: true;
  readonly requestType: typeof puppet_event_pb.EventRequest;
  readonly responseType: typeof puppet_event_pb.EventResponse;
};

type PuppetContactSelfQRCode = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_contact_pb.ContactSelfQRCodeRequest;
  readonly responseType: typeof puppet_contact_pb.ContactSelfQRCodeResponse;
};

type PuppetContactSelfName = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_contact_pb.ContactSelfNameRequest;
  readonly responseType: typeof puppet_contact_pb.ContactSelfNameResponse;
};

type PuppetContactSelfSignature = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_contact_pb.ContactSelfSignatureRequest;
  readonly responseType: typeof puppet_contact_pb.ContactSelfSignatureResponse;
};

type PuppetContactPayload = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_contact_pb.ContactPayloadRequest;
  readonly responseType: typeof puppet_contact_pb.ContactPayloadResponse;
};

type PuppetContactAlias = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_contact_pb.ContactAliasRequest;
  readonly responseType: typeof puppet_contact_pb.ContactAliasResponse;
};

type PuppetContactAvatar = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_contact_pb.ContactAvatarRequest;
  readonly responseType: typeof puppet_contact_pb.ContactAvatarResponse;
};

type PuppetContactList = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_contact_pb.ContactListRequest;
  readonly responseType: typeof puppet_contact_pb.ContactListResponse;
};

type PuppetFriendshipPayload = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_friendship_pb.FriendshipPayloadRequest;
  readonly responseType: typeof puppet_friendship_pb.FriendshipPayloadResponse;
};

type PuppetFriendshipSearchPhone = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_friendship_pb.FriendshipSearchPhoneRequest;
  readonly responseType: typeof puppet_friendship_pb.FriendshipSearchPhoneResponse;
};

type PuppetFriendshipSearchWeixin = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_friendship_pb.FriendshipSearchWeixinRequest;
  readonly responseType: typeof puppet_friendship_pb.FriendshipSearchWeixinResponse;
};

type PuppetFriendshipAdd = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_friendship_pb.FriendshipAddRequest;
  readonly responseType: typeof puppet_friendship_pb.FriendshipAddResponse;
};

type PuppetFriendshipAccept = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_friendship_pb.FriendshipAcceptRequest;
  readonly responseType: typeof puppet_friendship_pb.FriendshipAcceptResponse;
};

type PuppetMessagePayload = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_message_pb.MessagePayloadRequest;
  readonly responseType: typeof puppet_message_pb.MessagePayloadResponse;
};

type PuppetMessageContact = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_message_pb.MessageContactRequest;
  readonly responseType: typeof puppet_message_pb.MessageContactResponse;
};

type PuppetMessageFile = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_message_pb.MessageFileRequest;
  readonly responseType: typeof puppet_message_pb.MessageFileResponse;
};

type PuppetMessageImage = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_message_pb.MessageImageRequest;
  readonly responseType: typeof puppet_message_pb.MessageImageResponse;
};

type PuppetMessageMiniProgram = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_message_pb.MessageMiniProgramRequest;
  readonly responseType: typeof puppet_message_pb.MessageMiniProgramResponse;
};

type PuppetMessageUrl = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_message_pb.MessageUrlRequest;
  readonly responseType: typeof puppet_message_pb.MessageUrlResponse;
};

type PuppetMessageSendContact = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_message_pb.MessageSendContactRequest;
  readonly responseType: typeof puppet_message_pb.MessageSendContactResponse;
};

type PuppetMessageSendFile = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_message_pb.MessageSendFileRequest;
  readonly responseType: typeof puppet_message_pb.MessageSendFileResponse;
};

type PuppetMessageSendText = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_message_pb.MessageSendTextRequest;
  readonly responseType: typeof puppet_message_pb.MessageSendTextResponse;
};

type PuppetMessageSendMiniProgram = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_message_pb.MessageSendMiniProgramRequest;
  readonly responseType: typeof puppet_message_pb.MessageSendMiniProgramResponse;
};

type PuppetMessageSendUrl = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_message_pb.MessageSendUrlRequest;
  readonly responseType: typeof puppet_message_pb.MessageSendUrlResponse;
};

type PuppetMessageRecall = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_message_pb.MessageRecallRequest;
  readonly responseType: typeof puppet_message_pb.MessageRecallResponse;
};

type PuppetRoomPayload = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_room_pb.RoomPayloadRequest;
  readonly responseType: typeof puppet_room_pb.RoomPayloadResponse;
};

type PuppetRoomList = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_room_pb.RoomListRequest;
  readonly responseType: typeof puppet_room_pb.RoomListResponse;
};

type PuppetRoomAdd = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_room_pb.RoomAddRequest;
  readonly responseType: typeof puppet_room_pb.RoomAddResponse;
};

type PuppetRoomAvatar = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_room_pb.RoomAvatarRequest;
  readonly responseType: typeof puppet_room_pb.RoomAvatarResponse;
};

type PuppetRoomCreate = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_room_pb.RoomCreateRequest;
  readonly responseType: typeof puppet_room_pb.RoomCreateResponse;
};

type PuppetRoomDel = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_room_pb.RoomDelRequest;
  readonly responseType: typeof puppet_room_pb.RoomDelResponse;
};

type PuppetRoomQuit = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_room_pb.RoomQuitRequest;
  readonly responseType: typeof puppet_room_pb.RoomQuitResponse;
};

type PuppetRoomTopic = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_room_pb.RoomTopicRequest;
  readonly responseType: typeof puppet_room_pb.RoomTopicResponse;
};

type PuppetRoomQRCode = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_room_pb.RoomQRCodeRequest;
  readonly responseType: typeof puppet_room_pb.RoomQRCodeResponse;
};

type PuppetRoomAnnounce = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_room_pb.RoomAnnounceRequest;
  readonly responseType: typeof puppet_room_pb.RoomAnnounceResponse;
};

type PuppetRoomMemberPayload = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_room_member_pb.RoomMemberPayloadRequest;
  readonly responseType: typeof puppet_room_member_pb.RoomMemberPayloadResponse;
};

type PuppetRoomMemberList = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_room_member_pb.RoomMemberListRequest;
  readonly responseType: typeof puppet_room_member_pb.RoomMemberListResponse;
};

type PuppetRoomInvitationPayload = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_room_invitation_pb.RoomInvitationPayloadRequest;
  readonly responseType: typeof puppet_room_invitation_pb.RoomInvitationPayloadResponse;
};

type PuppetRoomInvitationAccept = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_room_invitation_pb.RoomInvitationAcceptRequest;
  readonly responseType: typeof puppet_room_invitation_pb.RoomInvitationAcceptResponse;
};

type PuppetTagContactAdd = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_tag_pb.TagContactAddRequest;
  readonly responseType: typeof puppet_tag_pb.TagContactAddResponse;
};

type PuppetTagContactRemove = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_tag_pb.TagContactRemoveRequest;
  readonly responseType: typeof puppet_tag_pb.TagContactRemoveResponse;
};

type PuppetTagContactDelete = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_tag_pb.TagContactDeleteRequest;
  readonly responseType: typeof puppet_tag_pb.TagContactDeleteResponse;
};

type PuppetTagContactList = {
  readonly methodName: string;
  readonly service: typeof Puppet;
  readonly requestStream: false;
  readonly responseStream: false;
  readonly requestType: typeof puppet_tag_pb.TagContactListRequest;
  readonly responseType: typeof puppet_tag_pb.TagContactListResponse;
};

export class Puppet {
  static readonly serviceName: string;
  static readonly Start: PuppetStart;
  static readonly Stop: PuppetStop;
  static readonly Logout: PuppetLogout;
  static readonly Ding: PuppetDing;
  static readonly Version: PuppetVersion;
  static readonly Event: PuppetEvent;
  static readonly ContactSelfQRCode: PuppetContactSelfQRCode;
  static readonly ContactSelfName: PuppetContactSelfName;
  static readonly ContactSelfSignature: PuppetContactSelfSignature;
  static readonly ContactPayload: PuppetContactPayload;
  static readonly ContactAlias: PuppetContactAlias;
  static readonly ContactAvatar: PuppetContactAvatar;
  static readonly ContactList: PuppetContactList;
  static readonly FriendshipPayload: PuppetFriendshipPayload;
  static readonly FriendshipSearchPhone: PuppetFriendshipSearchPhone;
  static readonly FriendshipSearchWeixin: PuppetFriendshipSearchWeixin;
  static readonly FriendshipAdd: PuppetFriendshipAdd;
  static readonly FriendshipAccept: PuppetFriendshipAccept;
  static readonly MessagePayload: PuppetMessagePayload;
  static readonly MessageContact: PuppetMessageContact;
  static readonly MessageFile: PuppetMessageFile;
  static readonly MessageImage: PuppetMessageImage;
  static readonly MessageMiniProgram: PuppetMessageMiniProgram;
  static readonly MessageUrl: PuppetMessageUrl;
  static readonly MessageSendContact: PuppetMessageSendContact;
  static readonly MessageSendFile: PuppetMessageSendFile;
  static readonly MessageSendText: PuppetMessageSendText;
  static readonly MessageSendMiniProgram: PuppetMessageSendMiniProgram;
  static readonly MessageSendUrl: PuppetMessageSendUrl;
  static readonly MessageRecall: PuppetMessageRecall;
  static readonly RoomPayload: PuppetRoomPayload;
  static readonly RoomList: PuppetRoomList;
  static readonly RoomAdd: PuppetRoomAdd;
  static readonly RoomAvatar: PuppetRoomAvatar;
  static readonly RoomCreate: PuppetRoomCreate;
  static readonly RoomDel: PuppetRoomDel;
  static readonly RoomQuit: PuppetRoomQuit;
  static readonly RoomTopic: PuppetRoomTopic;
  static readonly RoomQRCode: PuppetRoomQRCode;
  static readonly RoomAnnounce: PuppetRoomAnnounce;
  static readonly RoomMemberPayload: PuppetRoomMemberPayload;
  static readonly RoomMemberList: PuppetRoomMemberList;
  static readonly RoomInvitationPayload: PuppetRoomInvitationPayload;
  static readonly RoomInvitationAccept: PuppetRoomInvitationAccept;
  static readonly TagContactAdd: PuppetTagContactAdd;
  static readonly TagContactRemove: PuppetTagContactRemove;
  static readonly TagContactDelete: PuppetTagContactDelete;
  static readonly TagContactList: PuppetTagContactList;
}

export type ServiceError = { message: string, code: number; metadata: grpc.Metadata }
export type Status = { details: string, code: number; metadata: grpc.Metadata }

interface UnaryResponse {
  cancel(): void;
}
interface ResponseStream<T> {
  cancel(): void;
  on(type: 'data', handler: (message: T) => void): ResponseStream<T>;
  on(type: 'end', handler: (status?: Status) => void): ResponseStream<T>;
  on(type: 'status', handler: (status: Status) => void): ResponseStream<T>;
}
interface RequestStream<T> {
  write(message: T): RequestStream<T>;
  end(): void;
  cancel(): void;
  on(type: 'end', handler: (status?: Status) => void): RequestStream<T>;
  on(type: 'status', handler: (status: Status) => void): RequestStream<T>;
}
interface BidirectionalStream<ReqT, ResT> {
  write(message: ReqT): BidirectionalStream<ReqT, ResT>;
  end(): void;
  cancel(): void;
  on(type: 'data', handler: (message: ResT) => void): BidirectionalStream<ReqT, ResT>;
  on(type: 'end', handler: (status?: Status) => void): BidirectionalStream<ReqT, ResT>;
  on(type: 'status', handler: (status: Status) => void): BidirectionalStream<ReqT, ResT>;
}

export class PuppetClient {
  readonly serviceHost: string;

  constructor(serviceHost: string, options?: grpc.RpcOptions);
  start(
    requestMessage: puppet_base_pb.StartRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_base_pb.StartResponse|null) => void
  ): UnaryResponse;
  start(
    requestMessage: puppet_base_pb.StartRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_base_pb.StartResponse|null) => void
  ): UnaryResponse;
  stop(
    requestMessage: puppet_base_pb.StopRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_base_pb.StopResponse|null) => void
  ): UnaryResponse;
  stop(
    requestMessage: puppet_base_pb.StopRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_base_pb.StopResponse|null) => void
  ): UnaryResponse;
  logout(
    requestMessage: puppet_base_pb.LogoutRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_base_pb.LogoutResponse|null) => void
  ): UnaryResponse;
  logout(
    requestMessage: puppet_base_pb.LogoutRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_base_pb.LogoutResponse|null) => void
  ): UnaryResponse;
  ding(
    requestMessage: puppet_base_pb.DingRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_base_pb.DingResponse|null) => void
  ): UnaryResponse;
  ding(
    requestMessage: puppet_base_pb.DingRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_base_pb.DingResponse|null) => void
  ): UnaryResponse;
  version(
    requestMessage: puppet_base_pb.VersionRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_base_pb.VersionResponse|null) => void
  ): UnaryResponse;
  version(
    requestMessage: puppet_base_pb.VersionRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_base_pb.VersionResponse|null) => void
  ): UnaryResponse;
  event(requestMessage: puppet_event_pb.EventRequest, metadata?: grpc.Metadata): ResponseStream<puppet_event_pb.EventResponse>;
  contactSelfQRCode(
    requestMessage: puppet_contact_pb.ContactSelfQRCodeRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_contact_pb.ContactSelfQRCodeResponse|null) => void
  ): UnaryResponse;
  contactSelfQRCode(
    requestMessage: puppet_contact_pb.ContactSelfQRCodeRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_contact_pb.ContactSelfQRCodeResponse|null) => void
  ): UnaryResponse;
  contactSelfName(
    requestMessage: puppet_contact_pb.ContactSelfNameRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_contact_pb.ContactSelfNameResponse|null) => void
  ): UnaryResponse;
  contactSelfName(
    requestMessage: puppet_contact_pb.ContactSelfNameRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_contact_pb.ContactSelfNameResponse|null) => void
  ): UnaryResponse;
  contactSelfSignature(
    requestMessage: puppet_contact_pb.ContactSelfSignatureRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_contact_pb.ContactSelfSignatureResponse|null) => void
  ): UnaryResponse;
  contactSelfSignature(
    requestMessage: puppet_contact_pb.ContactSelfSignatureRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_contact_pb.ContactSelfSignatureResponse|null) => void
  ): UnaryResponse;
  contactPayload(
    requestMessage: puppet_contact_pb.ContactPayloadRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_contact_pb.ContactPayloadResponse|null) => void
  ): UnaryResponse;
  contactPayload(
    requestMessage: puppet_contact_pb.ContactPayloadRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_contact_pb.ContactPayloadResponse|null) => void
  ): UnaryResponse;
  contactAlias(
    requestMessage: puppet_contact_pb.ContactAliasRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_contact_pb.ContactAliasResponse|null) => void
  ): UnaryResponse;
  contactAlias(
    requestMessage: puppet_contact_pb.ContactAliasRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_contact_pb.ContactAliasResponse|null) => void
  ): UnaryResponse;
  contactAvatar(
    requestMessage: puppet_contact_pb.ContactAvatarRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_contact_pb.ContactAvatarResponse|null) => void
  ): UnaryResponse;
  contactAvatar(
    requestMessage: puppet_contact_pb.ContactAvatarRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_contact_pb.ContactAvatarResponse|null) => void
  ): UnaryResponse;
  contactList(
    requestMessage: puppet_contact_pb.ContactListRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_contact_pb.ContactListResponse|null) => void
  ): UnaryResponse;
  contactList(
    requestMessage: puppet_contact_pb.ContactListRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_contact_pb.ContactListResponse|null) => void
  ): UnaryResponse;
  friendshipPayload(
    requestMessage: puppet_friendship_pb.FriendshipPayloadRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_friendship_pb.FriendshipPayloadResponse|null) => void
  ): UnaryResponse;
  friendshipPayload(
    requestMessage: puppet_friendship_pb.FriendshipPayloadRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_friendship_pb.FriendshipPayloadResponse|null) => void
  ): UnaryResponse;
  friendshipSearchPhone(
    requestMessage: puppet_friendship_pb.FriendshipSearchPhoneRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_friendship_pb.FriendshipSearchPhoneResponse|null) => void
  ): UnaryResponse;
  friendshipSearchPhone(
    requestMessage: puppet_friendship_pb.FriendshipSearchPhoneRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_friendship_pb.FriendshipSearchPhoneResponse|null) => void
  ): UnaryResponse;
  friendshipSearchWeixin(
    requestMessage: puppet_friendship_pb.FriendshipSearchWeixinRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_friendship_pb.FriendshipSearchWeixinResponse|null) => void
  ): UnaryResponse;
  friendshipSearchWeixin(
    requestMessage: puppet_friendship_pb.FriendshipSearchWeixinRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_friendship_pb.FriendshipSearchWeixinResponse|null) => void
  ): UnaryResponse;
  friendshipAdd(
    requestMessage: puppet_friendship_pb.FriendshipAddRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_friendship_pb.FriendshipAddResponse|null) => void
  ): UnaryResponse;
  friendshipAdd(
    requestMessage: puppet_friendship_pb.FriendshipAddRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_friendship_pb.FriendshipAddResponse|null) => void
  ): UnaryResponse;
  friendshipAccept(
    requestMessage: puppet_friendship_pb.FriendshipAcceptRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_friendship_pb.FriendshipAcceptResponse|null) => void
  ): UnaryResponse;
  friendshipAccept(
    requestMessage: puppet_friendship_pb.FriendshipAcceptRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_friendship_pb.FriendshipAcceptResponse|null) => void
  ): UnaryResponse;
  messagePayload(
    requestMessage: puppet_message_pb.MessagePayloadRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessagePayloadResponse|null) => void
  ): UnaryResponse;
  messagePayload(
    requestMessage: puppet_message_pb.MessagePayloadRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessagePayloadResponse|null) => void
  ): UnaryResponse;
  messageContact(
    requestMessage: puppet_message_pb.MessageContactRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageContactResponse|null) => void
  ): UnaryResponse;
  messageContact(
    requestMessage: puppet_message_pb.MessageContactRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageContactResponse|null) => void
  ): UnaryResponse;
  messageFile(
    requestMessage: puppet_message_pb.MessageFileRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageFileResponse|null) => void
  ): UnaryResponse;
  messageFile(
    requestMessage: puppet_message_pb.MessageFileRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageFileResponse|null) => void
  ): UnaryResponse;
  messageImage(
    requestMessage: puppet_message_pb.MessageImageRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageImageResponse|null) => void
  ): UnaryResponse;
  messageImage(
    requestMessage: puppet_message_pb.MessageImageRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageImageResponse|null) => void
  ): UnaryResponse;
  messageMiniProgram(
    requestMessage: puppet_message_pb.MessageMiniProgramRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageMiniProgramResponse|null) => void
  ): UnaryResponse;
  messageMiniProgram(
    requestMessage: puppet_message_pb.MessageMiniProgramRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageMiniProgramResponse|null) => void
  ): UnaryResponse;
  messageUrl(
    requestMessage: puppet_message_pb.MessageUrlRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageUrlResponse|null) => void
  ): UnaryResponse;
  messageUrl(
    requestMessage: puppet_message_pb.MessageUrlRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageUrlResponse|null) => void
  ): UnaryResponse;
  messageSendContact(
    requestMessage: puppet_message_pb.MessageSendContactRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageSendContactResponse|null) => void
  ): UnaryResponse;
  messageSendContact(
    requestMessage: puppet_message_pb.MessageSendContactRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageSendContactResponse|null) => void
  ): UnaryResponse;
  messageSendFile(
    requestMessage: puppet_message_pb.MessageSendFileRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageSendFileResponse|null) => void
  ): UnaryResponse;
  messageSendFile(
    requestMessage: puppet_message_pb.MessageSendFileRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageSendFileResponse|null) => void
  ): UnaryResponse;
  messageSendText(
    requestMessage: puppet_message_pb.MessageSendTextRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageSendTextResponse|null) => void
  ): UnaryResponse;
  messageSendText(
    requestMessage: puppet_message_pb.MessageSendTextRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageSendTextResponse|null) => void
  ): UnaryResponse;
  messageSendMiniProgram(
    requestMessage: puppet_message_pb.MessageSendMiniProgramRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageSendMiniProgramResponse|null) => void
  ): UnaryResponse;
  messageSendMiniProgram(
    requestMessage: puppet_message_pb.MessageSendMiniProgramRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageSendMiniProgramResponse|null) => void
  ): UnaryResponse;
  messageSendUrl(
    requestMessage: puppet_message_pb.MessageSendUrlRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageSendUrlResponse|null) => void
  ): UnaryResponse;
  messageSendUrl(
    requestMessage: puppet_message_pb.MessageSendUrlRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageSendUrlResponse|null) => void
  ): UnaryResponse;
  messageRecall(
    requestMessage: puppet_message_pb.MessageRecallRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageRecallResponse|null) => void
  ): UnaryResponse;
  messageRecall(
    requestMessage: puppet_message_pb.MessageRecallRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_message_pb.MessageRecallResponse|null) => void
  ): UnaryResponse;
  roomPayload(
    requestMessage: puppet_room_pb.RoomPayloadRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_room_pb.RoomPayloadResponse|null) => void
  ): UnaryResponse;
  roomPayload(
    requestMessage: puppet_room_pb.RoomPayloadRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_room_pb.RoomPayloadResponse|null) => void
  ): UnaryResponse;
  roomList(
    requestMessage: puppet_room_pb.RoomListRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_room_pb.RoomListResponse|null) => void
  ): UnaryResponse;
  roomList(
    requestMessage: puppet_room_pb.RoomListRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_room_pb.RoomListResponse|null) => void
  ): UnaryResponse;
  roomAdd(
    requestMessage: puppet_room_pb.RoomAddRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_room_pb.RoomAddResponse|null) => void
  ): UnaryResponse;
  roomAdd(
    requestMessage: puppet_room_pb.RoomAddRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_room_pb.RoomAddResponse|null) => void
  ): UnaryResponse;
  roomAvatar(
    requestMessage: puppet_room_pb.RoomAvatarRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_room_pb.RoomAvatarResponse|null) => void
  ): UnaryResponse;
  roomAvatar(
    requestMessage: puppet_room_pb.RoomAvatarRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_room_pb.RoomAvatarResponse|null) => void
  ): UnaryResponse;
  roomCreate(
    requestMessage: puppet_room_pb.RoomCreateRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_room_pb.RoomCreateResponse|null) => void
  ): UnaryResponse;
  roomCreate(
    requestMessage: puppet_room_pb.RoomCreateRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_room_pb.RoomCreateResponse|null) => void
  ): UnaryResponse;
  roomDel(
    requestMessage: puppet_room_pb.RoomDelRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_room_pb.RoomDelResponse|null) => void
  ): UnaryResponse;
  roomDel(
    requestMessage: puppet_room_pb.RoomDelRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_room_pb.RoomDelResponse|null) => void
  ): UnaryResponse;
  roomQuit(
    requestMessage: puppet_room_pb.RoomQuitRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_room_pb.RoomQuitResponse|null) => void
  ): UnaryResponse;
  roomQuit(
    requestMessage: puppet_room_pb.RoomQuitRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_room_pb.RoomQuitResponse|null) => void
  ): UnaryResponse;
  roomTopic(
    requestMessage: puppet_room_pb.RoomTopicRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_room_pb.RoomTopicResponse|null) => void
  ): UnaryResponse;
  roomTopic(
    requestMessage: puppet_room_pb.RoomTopicRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_room_pb.RoomTopicResponse|null) => void
  ): UnaryResponse;
  roomQRCode(
    requestMessage: puppet_room_pb.RoomQRCodeRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_room_pb.RoomQRCodeResponse|null) => void
  ): UnaryResponse;
  roomQRCode(
    requestMessage: puppet_room_pb.RoomQRCodeRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_room_pb.RoomQRCodeResponse|null) => void
  ): UnaryResponse;
  roomAnnounce(
    requestMessage: puppet_room_pb.RoomAnnounceRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_room_pb.RoomAnnounceResponse|null) => void
  ): UnaryResponse;
  roomAnnounce(
    requestMessage: puppet_room_pb.RoomAnnounceRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_room_pb.RoomAnnounceResponse|null) => void
  ): UnaryResponse;
  roomMemberPayload(
    requestMessage: puppet_room_member_pb.RoomMemberPayloadRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_room_member_pb.RoomMemberPayloadResponse|null) => void
  ): UnaryResponse;
  roomMemberPayload(
    requestMessage: puppet_room_member_pb.RoomMemberPayloadRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_room_member_pb.RoomMemberPayloadResponse|null) => void
  ): UnaryResponse;
  roomMemberList(
    requestMessage: puppet_room_member_pb.RoomMemberListRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_room_member_pb.RoomMemberListResponse|null) => void
  ): UnaryResponse;
  roomMemberList(
    requestMessage: puppet_room_member_pb.RoomMemberListRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_room_member_pb.RoomMemberListResponse|null) => void
  ): UnaryResponse;
  roomInvitationPayload(
    requestMessage: puppet_room_invitation_pb.RoomInvitationPayloadRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_room_invitation_pb.RoomInvitationPayloadResponse|null) => void
  ): UnaryResponse;
  roomInvitationPayload(
    requestMessage: puppet_room_invitation_pb.RoomInvitationPayloadRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_room_invitation_pb.RoomInvitationPayloadResponse|null) => void
  ): UnaryResponse;
  roomInvitationAccept(
    requestMessage: puppet_room_invitation_pb.RoomInvitationAcceptRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_room_invitation_pb.RoomInvitationAcceptResponse|null) => void
  ): UnaryResponse;
  roomInvitationAccept(
    requestMessage: puppet_room_invitation_pb.RoomInvitationAcceptRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_room_invitation_pb.RoomInvitationAcceptResponse|null) => void
  ): UnaryResponse;
  tagContactAdd(
    requestMessage: puppet_tag_pb.TagContactAddRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_tag_pb.TagContactAddResponse|null) => void
  ): UnaryResponse;
  tagContactAdd(
    requestMessage: puppet_tag_pb.TagContactAddRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_tag_pb.TagContactAddResponse|null) => void
  ): UnaryResponse;
  tagContactRemove(
    requestMessage: puppet_tag_pb.TagContactRemoveRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_tag_pb.TagContactRemoveResponse|null) => void
  ): UnaryResponse;
  tagContactRemove(
    requestMessage: puppet_tag_pb.TagContactRemoveRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_tag_pb.TagContactRemoveResponse|null) => void
  ): UnaryResponse;
  tagContactDelete(
    requestMessage: puppet_tag_pb.TagContactDeleteRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_tag_pb.TagContactDeleteResponse|null) => void
  ): UnaryResponse;
  tagContactDelete(
    requestMessage: puppet_tag_pb.TagContactDeleteRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_tag_pb.TagContactDeleteResponse|null) => void
  ): UnaryResponse;
  tagContactList(
    requestMessage: puppet_tag_pb.TagContactListRequest,
    metadata: grpc.Metadata,
    callback: (error: ServiceError|null, responseMessage: puppet_tag_pb.TagContactListResponse|null) => void
  ): UnaryResponse;
  tagContactList(
    requestMessage: puppet_tag_pb.TagContactListRequest,
    callback: (error: ServiceError|null, responseMessage: puppet_tag_pb.TagContactListResponse|null) => void
  ): UnaryResponse;
}

