interface ShareConfig {
    title?: string;
    desc?: string;
    link?: string;
    imgUrl?: string;
    success?: () => void;
    fail?: (err: any) => void;
    cancel?: () => void;
}
interface SignConfig {
    appId: string;
    timestamp: string;
    nonceStr: string;
    signature: string;
}
interface SignConfigResponse {
    data: SignConfig;
}
interface SignConfigOptions {
    url?: string;
    customFetch?: (url: string) => Promise<SignConfigResponse>;
}
declare class WxShareUtil {
    private static instance;
    private isInit;
    private isDebug;
    private signConfig;
    private defaultConfig;
    private defaultApiUrl;
    private customFetch?;
    private shareOptions;
    private constructor();
    static getInstance(): WxShareUtil;
    /**
     * 设置调试模式
     * @param debug 是否开启调试模式
     * @returns 当前实例，支持链式调用
     */
    setDebug(debug: boolean): WxShareUtil;
    /**
     * 获取当前页面URL（包含hash）
     */
    getCurrentUrl(): string;
    private isWeixinBrowser;
    /**
     * 设置分享信息
     * @param config 分享配置
     * @param useDefault 是否使用默认配置合并（默认false）
     * @returns 当前实例，支持链式调用
     */
    setShareInfo(config: ShareConfig, useDefault?: boolean): WxShareUtil;
    /**
     * 快速分享（自动初始化并设置分享信息）
     * @param signConfig 签名配置
     * @param config 分享配置
     * @param useDefault 是否使用默认配置合并（默认false）
     * @returns Promise<boolean>
     */
    share(signConfig: SignConfig, config: ShareConfig, useDefault?: boolean): Promise<boolean>;
    /**
     * 初始化微信分享配置
     * @param signConfig 签名配置
     * @returns Promise<boolean> 初始化是否成功
     */
    initWithConfig(signConfig: SignConfig): Promise<boolean>;
    /**
     * 设置分享配置
     * @param options 分享配置
     * @returns 当前实例，支持链式调用
     */
    setShareOptions(options: ShareConfig): WxShareUtil;
    /**
     * 从API获取签名配置并初始化分享
     * @param options 配置选项
     * @returns Promise<WxShareUtil>
     */
    fetchSignConfigAndShare(options?: SignConfigOptions): Promise<WxShareUtil>;
    /**
     * 设置自定义的签名配置获取方法
     * @param customFetch 自定义的fetch方法
     * @returns 当前实例，支持链式调用
     */
    setCustomFetch(customFetch: (url: string) => Promise<SignConfigResponse>): WxShareUtil;
}
declare const createWxShare: () => WxShareUtil;

export { type ShareConfig, type SignConfig, type SignConfigOptions, type SignConfigResponse, createWxShare };
