/** * WeChat MP HTTP API adapter layer * * Provides unified HTTP client for WeChat MP API calls with: * - Token injection and refresh on expiry * - Error code handling and retry logic * - Type-safe request/response handling */ import type { ResolvedWechatMpAccount } from "./types.js"; export interface WechatMpApiResponse { errcode?: number; errmsg?: string; data?: T; } export interface WechatMpApiError extends Error { errcode: number; errmsg: string; accountId: string; } export declare class WechatMpApiErrorImpl extends Error implements WechatMpApiError { errcode: number; errmsg: string; accountId: string; constructor(message: string, errcode: number, errmsg: string, accountId: string); } interface RequestConfig { method: "GET" | "POST"; path: string; params?: Record; body?: unknown; requireToken?: boolean; } /** * Make API call with error handling * @throws WechatMpApiError if API returns an error */ export declare function callWechatMpApi(account: ResolvedWechatMpAccount, config: RequestConfig): Promise; export interface SendMessageParams { touser: string; msgtype: "text" | "image" | "voice" | "video" | "music" | "news" | "mpnews" | "msgmenu"; text?: { content: string; }; image?: { media_id: string; }; voice?: { media_id: string; }; video?: { media_id: string; thumb_media_id: string; title?: string; description?: string; }; } export interface SendMessageResult { errcode: number; errmsg: string; msgid?: number; } /** * Send customer service message (active send) */ export declare function sendWechatMpMessage(account: ResolvedWechatMpAccount, params: SendMessageParams): Promise; export interface UploadMediaResult { type: string; media_id: string; created_at: number; } /** * Upload temporary media */ export declare function uploadWechatMpMedia(account: ResolvedWechatMpAccount, type: "image" | "voice" | "video" | "thumb", media: Buffer, filename?: string): Promise; /** * Download temporary media (voice, image, video) * Returns the media content as Buffer */ export declare function downloadWechatMpMedia(account: ResolvedWechatMpAccount, mediaId: string): Promise; export interface MenuButton { type: "click" | "view" | "scancode_push" | "scancode_waitmsg" | "pic_sysphoto" | "pic_photo_or_album" | "pic_weixin" | "location_select" | "media_id" | "view_limited"; name: string; key?: string; url?: string; media_id?: string; sub_button?: MenuButton[]; } export interface MenuConfig { button: MenuButton[]; } /** * Create custom menu */ export declare function createWechatMpMenu(account: ResolvedWechatMpAccount, menu: MenuConfig): Promise<{ errcode: number; errmsg: string; }>; /** * Delete custom menu */ export declare function deleteWechatMpMenu(account: ResolvedWechatMpAccount): Promise<{ errcode: number; errmsg: string; }>; export interface TemplateMessageParams { touser: string; template_id: string; url?: string; miniprogram?: { appid: string; pagepath?: string; }; data: Record; } export interface TemplateMessageResult { errcode: number; errmsg: string; msgid?: number; } /** * Send template message * https://developers.weixin.qq.com/doc/offiaccount/Message_management/Template_message_interface.html */ export declare function sendTemplateMessage(account: ResolvedWechatMpAccount, params: TemplateMessageParams): Promise; export {}; //# sourceMappingURL=api.d.ts.map