import { BasePlugin } from '@cool-midway/plugin-cli';
interface TemplateDataItem {
  value: string;
  color?: string;
}
interface TemplateData {
  [key: string]: TemplateDataItem;
}
interface MiniProgramParams {
  appid?: string;
  pagepath?: string;
}
interface SendTemplateMessageParams {
  touser: string;
  template_id: string;
  url?: string;
  miniprogram?: MiniProgramParams;
  data: TemplateData;
  client_msg_id?: string;
}
interface SendResult {
  msgid: number;
  errcode: number;
  errmsg: string;
}
interface MassSendFilter {
  is_to_all?: boolean;
  tag_id?: string;
}
interface MassSendByOpenIdParams {
  touser: string[];
  msgtype: string;
  mpnews?: {
    media_id: string;
  };
  text?: {
    content: string;
  };
  voice?: {
    media_id: string;
  };
  image?: {
    media_ids: string[];
    recommend?: string;
    title?: string;
    need_open_comment?: number;
    only_fans_can_comment?: number;
  };
  mpvideo?: {
    media_id: string;
    title?: string;
    description?: string;
  };
  wxcard?: {
    card_id: string;
  };
  send_ignore_reprint?: number;
  clientmsgid?: string;
}
interface MassSendByTagParams {
  filter: MassSendFilter;
  msgtype: string;
  mpnews?: {
    media_id: string;
  };
  text?: {
    content: string;
  };
  voice?: {
    media_id: string;
  };
  image?: {
    media_ids: string[];
    recommend?: string;
    title?: string;
    need_open_comment?: number;
    only_fans_can_comment?: number;
  };
  mpvideo?: {
    media_id: string;
    title?: string;
    description?: string;
  };
  wxcard?: {
    card_id: string;
  };
  clientmsgid?: string;
}
interface MassSendResult {
  type: string;
  msg_id: number;
  msg_data_id: number;
  errcode: number;
  errmsg: string;
}
interface SubscribeDataItem {
  value: string;
}
interface SubscribeData {
  [key: string]: SubscribeDataItem;
}
interface SendSubscribeMsgParams {
  template_id: string;
  touser: string;
  page?: string;
  data: SubscribeData;
  miniprogram_state: string;
  lang?: string;
}
interface SubscribeResult {
  errcode: number;
  errmsg: string;
}
interface OneTimeMiniProgram {
  appid: string;
  pagepath: string;
}
interface OneTimeMsgData {
  content: {
    value: string;
    color?: string;
  };
}
interface SendOneTimeSubscribeParams {
  touser: string;
  template_id: string;
  url?: string;
  miniprogram?: OneTimeMiniProgram;
  scene: string;
  title: string;
  data: OneTimeMsgData;
}
interface OneTimeSubscribeResult {
  errcode: number;
  errmsg: string;
}
export declare class CoolPlugin extends BasePlugin {
  private getAccessToken;
  private handleApiError;
  private validateMassSendParams;
  massSendByOpenId(params: MassSendByOpenIdParams): Promise<MassSendResult>;
  massSendByTag(params: MassSendByTagParams): Promise<MassSendResult>;
  sendTemplateMessage(params: SendTemplateMessageParams): Promise<SendResult>;
  batchSendTemplateMessage(
    paramsList: SendTemplateMessageParams[],
  ): Promise<SendResult[]>;
  sendSubscribeMsg(params: SendSubscribeMsgParams): Promise<SubscribeResult>;
  sendOneTimeSubscribeMsg(
    params: SendOneTimeSubscribeParams,
  ): Promise<OneTimeSubscribeResult>;
}
export declare const Plugin: typeof CoolPlugin;
export {};
