export interface WxMpUserMessage {
    ToUserName: string;
    FromUserName: string;
    CreateTime: string;
    MsgId: string;
    /**消息的数据ID（消息如果来自文章时才有）*/
    MsgDataId?: string;
    /** 多图文时第几篇文章，从1开始（消息如果来自文章时才有）*/
    Idx?: string;
}
export interface WxMpEventMessage {
    ToUserName: string;
    FromUserName: string;
    CreateTime: string;
    MsgId: string;
    MsgType: 'event';
}
export interface WxMpMessages {
    text: WxMpUserMessage & {
        MsgType: 'text';
        Content: string;
    };
    image: WxMpUserMessage & {
        MsgType: 'image';
        PicUrl: string;
        MediaId: string;
    };
    voice: WxMpUserMessage & {
        MsgType: 'voice';
        Format: string;
        MediaId: string;
    };
    video: WxMpUserMessage & {
        MsgType: 'video';
        ThumbMediaId: string;
        MediaId: string;
    };
    shortvideo: WxMpUserMessage & {
        MsgType: 'shortvideo';
        ThumbMediaId: string;
        MediaId: string;
    };
    location: WxMpUserMessage & {
        MsgType: 'location';
        Location_X: string;
        Location_Y: string;
        Scale: string;
        Label: string;
    };
    link: WxMpUserMessage & {
        MsgType: 'link';
        Title: string;
        Description?: string;
        Url: string;
    };
    subscribe: WxMpEventMessage & {
        Event: 'event';
        EventKey?: string;
        Ticket?: string;
    };
    unsubscribe: WxMpEventMessage & {
        Event: 'unsubscribe';
    };
    SCAN: WxMpEventMessage & {
        Event: 'SCAN';
        EventKey: string;
        Ticket: string;
    };
    LOCATION: WxMpEventMessage & {
        Event: 'LOCATION';
        Latitude: string;
        Longitude: string;
        Precision: string;
    };
    CLICK: WxMpEventMessage & {
        Event: 'CLICK';
        EventKey: string;
    };
    VIEW: WxMpEventMessage & {
        Event: 'VIEW';
        EventKey: string;
    };
    /**成功: status =success , 失败: failed:user block   failed: system failed*/
    TEMPLATESENDJOBFINISH: WxMpEventMessage & {
        Event: 'TEMPLATESENDJOBFINISH';
        Status: string;
    };
}
export declare class WxMpCrypto {
    private readonly wxCrypto;
    constructor(config: {
        token: string;
        encodingAESKey: string;
        appid: string;
    });
    decrypt(params: {
        msg_signature: string;
        timestamp: string;
        nonce: string;
    }, encrypt: string): Promise<{
        errMessage: string;
        message?: undefined;
    } | {
        errMessage: undefined;
        message: string;
    }>;
    private formatXmlObj;
    decryptMessageXML(params: {
        msg_signature: string;
        timestamp: string;
        nonce: string;
    }, xmlStr: string): Promise<{
        errMessage: string;
    } | {
        errMessage: undefined;
        Decrypt: WxMpMessages[keyof WxMpMessages];
    }>;
    decryptXML<T>(params: {
        msg_signature: string;
        timestamp: string;
        nonce: string;
    }, xmlStr: string): Promise<{
        errMessage: string;
        message?: undefined;
    } | {
        errMessage: undefined;
        Decrypt: T;
    }>;
}
