/**
 *   Wechaty - https://github.com/chatie/wechaty
 *
 *   @copyright 2016-2018 Huan LI <zixia@zixia.net>
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *   limitations under the License.
 *
 */
import * as PUPPET from 'wechaty-puppet';
import { FileBox, FileBoxInterface } from 'file-box';
import { OfficialAccountOptions, OfficialAccount } from './official-account/official-account.js';
import type { OAContactPayload, OAMessagePayload } from './official-account/schema.js';
export type PuppetOAOptions = PUPPET.PuppetOptions & Partial<OfficialAccountOptions>;
declare class PuppetOA extends PUPPET.Puppet {
    messageLocation(_messageId: string): Promise<PUPPET.payloads.Location>;
    messageSendLocation(_conversationId: string, _locationPayload: PUPPET.payloads.Location): Promise<string | void>;
    contactPhone(contactId: string, phoneList: string[]): Promise<void>;
    contactCorporationRemark(contactId: string, corporationRemark: string | null): Promise<void>;
    contactDescription(contactId: string, description: string | null): Promise<void>;
    static readonly VERSION: string;
    protected appId: string;
    protected appSecret: string;
    protected port?: number;
    protected token: string;
    protected webhookProxyUrl?: string;
    protected personalMode?: boolean;
    protected accessTokenProxyUrl?: string;
    protected oa?: OfficialAccount;
    private _heartBeatTimer?;
    constructor(options?: PuppetOAOptions);
    version(): string;
    onStart(): Promise<void>;
    private _startPuppetHeart;
    private _stopPuppetHeart;
    protected bridgeEvents(oa: OfficialAccount): void;
    onStop(): Promise<void>;
    ding(data?: string): void;
    /**
     *
     * ContactSelf
     *
     *
     */
    contactSelfQRCode(): Promise<string>;
    contactSelfName(name: string): Promise<void>;
    contactSelfSignature(signature: string): Promise<void>;
    /**
     *
     * Contact
     *
     */
    contactAlias(contactId: string): Promise<string>;
    contactAlias(contactId: string, alias: string | null): Promise<void>;
    contactList(): Promise<string[]>;
    contactAvatar(contactId: string): Promise<FileBoxInterface>;
    contactAvatar(contactId: string, file: FileBoxInterface): Promise<void>;
    contactRawPayloadParser(oaPayload: OAContactPayload): Promise<PUPPET.payloads.Contact>;
    contactRawPayload(id: string): Promise<OAContactPayload>;
    /**
     *
     * Message
     *
     */
    messageContact(messageId: string): Promise<string>;
    messageImage(messageId: string, imageType: PUPPET.types.Image): Promise<FileBoxInterface>;
    messageRecall(messageId: string): Promise<boolean>;
    messageFile(id: string): Promise<FileBoxInterface>;
    messageUrl(messageId: string): Promise<PUPPET.payloads.UrlLink>;
    messageMiniProgram(messageId: string): Promise<PUPPET.payloads.MiniProgram>;
    messageRawPayloadParser(rawPayload: OAMessagePayload): Promise<PUPPET.payloads.Message>;
    messageRawPayload(id: string): Promise<OAMessagePayload>;
    private _messageSend;
    messageSendText(conversationId: string, text: string): Promise<string>;
    messageSendFile(conversationId: string, file: FileBox): Promise<string>;
    messageSendContact(conversationId: string, contactId: string): Promise<void>;
    messageSendUrl(conversationId: string, urlLinkPayload: PUPPET.payloads.UrlLink): Promise<string>;
    messageSendMiniProgram(conversationId: string, miniProgramPayload: PUPPET.payloads.MiniProgram): Promise<string>;
    messageForward(conversationId: string, messageId: string): Promise<void>;
    conversationReadMark(conversationId: string, hasRead?: boolean): Promise<void | boolean>;
    /**
     *
     * Room
     *
     */
    roomRawPayloadParser(payload: PUPPET.payloads.Room): Promise<PUPPET.payloads.Room>;
    roomRawPayload(id: string): Promise<PUPPET.payloads.Room>;
    roomList(): Promise<string[]>;
    roomDel(roomId: string, contactId: string): Promise<void>;
    roomAvatar(roomId: string): Promise<FileBoxInterface>;
    roomAdd(roomId: string, contactId: string): Promise<void>;
    roomTopic(roomId: string): Promise<string>;
    roomTopic(roomId: string, topic: string): Promise<void>;
    roomCreate(contactIdList: string[], topic: string): Promise<string>;
    roomQuit(roomId: string): Promise<void>;
    roomQRCode(roomId: string): Promise<string>;
    roomMemberList(roomId: string): Promise<string[]>;
    roomMemberRawPayload(roomId: string, contactId: string): Promise<PUPPET.payloads.RoomMember>;
    roomMemberRawPayloadParser(rawPayload: PUPPET.payloads.RoomMember): Promise<PUPPET.payloads.RoomMember>;
    roomAnnounce(roomId: string): Promise<string>;
    roomAnnounce(roomId: string, text: string): Promise<void>;
    /**
     *
     * Room Invitation
     *
     */
    roomInvitationAccept(roomInvitationId: string): Promise<void>;
    roomInvitationRawPayload(roomInvitationId: string): Promise<any>;
    roomInvitationRawPayloadParser(rawPayload: any): Promise<PUPPET.payloads.RoomInvitation>;
    /**
     *
     * Friendship
     *
     */
    friendshipRawPayload(id: string): Promise<any>;
    friendshipRawPayloadParser(rawPayload: any): Promise<PUPPET.payloads.Friendship>;
    friendshipSearchPhone(phone: string): Promise<null | string>;
    friendshipSearchWeixin(weixin: string): Promise<null | string>;
    friendshipAdd(contactId: string, hello: string): Promise<void>;
    friendshipAccept(friendshipId: string): Promise<void>;
    /**
     *
     * Tag
     *
     */
    tagContactAdd(tagId: string, contactId: string): Promise<void>;
    tagContactRemove(tagId: string, contactId: string): Promise<void>;
    tagContactDelete(tagId: string): Promise<void>;
    tagContactList(contactId?: string): Promise<string[]>;
}
export { PuppetOA };
export default PuppetOA;
//# sourceMappingURL=puppet-oa.d.ts.map