import { Core, Breadcrumb } from '@heimdallr-sdk/core';
import { BaseOptionsType, IAnyObject, voidFun } from '@heimdallr-sdk/types';

interface WxOptionsType extends BaseOptionsType {
    reqOption?: (rs: (value: WechatMiniprogram.GeneralCallbackResult | PromiseLike<WechatMiniprogram.GeneralCallbackResult>) => void, rj: (reason?: any) => void) => WechatMiniprogram.RequestOption;
    userStoreKey?: string;
}
type WxTrackTypes = 'show' | 'hide';
interface WxContextType {
    sid?: string;
    url?: string;
    ui?: IAnyObject | string;
}

declare class WxClient extends Core<WxOptionsType> {
    private wxContext;
    private wxSettings;
    private diff;
    private requestTasks;
    readonly breadcrumb: Breadcrumb<WxOptionsType>;
    constructor(options: WxOptionsType);
    setWxContext(context: WxContextType): void;
    clearWxContext(): void;
    getWxContext(): WxContextType;
    initAPP(): Promise<any>;
    getWxSettings(): Promise<void>;
    isRightEnv(): boolean;
    report(url: string, data: IAnyObject): Promise<WechatMiniprogram.GeneralCallbackResult>;
    transform(data: IAnyObject): IAnyObject;
    nextTick(cb: Function, ctx: Object, ...args: any[]): void;
    setDiff(date: string): void;
    getTime(): number;
    lifecycleReport(data: IAnyObject): void;
    handleOnShow(route: string): void;
    handleOnHide(route: string): void;
    cusOnShow(): (original: (query: Record<string, string>) => void | Promise<void>) => (e: any) => void;
    cusOnHide(): (original: () => void | Promise<void>) => voidFun;
}
declare const init: (options: WxOptionsType) => {
    heimdallrPage: (pageOptions: WechatMiniprogram.Page.Options<WechatMiniprogram.Page.DataOption, WechatMiniprogram.Page.CustomOption>) => void;
    track: (type: WxTrackTypes, path: string) => void;
};

export { WxClient, init as default };
