// src/wx-extend.d.ts
/// <reference types="@tcsas/superapp-miniprogram-types" />

declare namespace WechatMiniprogram {
  interface Wx {
    /**
     * @param opts
     */
    invokeNativePlugin<T = any>(opts: InvokeNativePluginOption<T>): void;
  }

  interface InvokeNativePluginOption<T = any> {
    api_name: string;

    success?: (res: InvokeNativePluginSuccessCallbackResult<T>) => void;

    fail?: (res: GeneralCallbackResult) => void;

    complete?: (res: GeneralCallbackResult) => void;

    data?: Record<string, any>;
  }

  interface InvokeNativePluginSuccessCallbackResult<T = any> {
    errcode: number;
    errmsg?: string;
    data?: T;
  }

  interface GeneralCallbackResult {
    errMsg?: string;
  }
}
