/// <reference types="wx" />
import { ApiDataError, IApi } from '@etsoo/restclient';
import { DataTypes, IActionResult } from '@etsoo/shared';
import { INotifierContainer } from '../notifier/NotifierContainer';
import { SendEmailRQ } from '../rq/site/SendEmailRQ';
type ScrollActions = {
    backToTopSelector?: string;
    backToTopThreshold?: number;
    stickyTopSelector?: string;
    stickyTopThreshold?: number;
};
type SetupOptions = ScrollActions & {
    drawflowStyle?: string;
    drawVersion?: string;
};
/**
 * Client site
 */
export declare class ClientSite {
    readonly culture: 'en' | 'zh-Hans' | 'zh-Hant' | string;
    /**
     * API
     * 接口调用对象
     */
    readonly api: IApi;
    /**
     * Notifier
     * 通知器
     */
    readonly notifier: INotifierContainer;
    private _isReady;
    /**
     * Is ready
     * 是否准备就绪
     */
    get isReady(): boolean;
    private backToTopDispose?;
    private windowScrollDispose?;
    private formSubmitDispose?;
    /**
     * Constructor
     * 构造函数
     * @param culture Culture, like en, zh-Hans
     * @param apiUrl Headless CMS API Url
     * @param errorHandler Custom error handler
     */
    constructor(culture: 'en' | 'zh-Hans' | 'zh-Hant' | string, apiUrl: string, errorHandler?: (e: ApiDataError) => void);
    /**
     * Dispose
     * 释放资源
     */
    dispose(): void;
    /**
     * Get document meta content
     * 获取文档 Meta 内容
     * @param name Name
     * @returns content
     */
    getMeta(name: string): string | undefined;
    /**
     * Get document Open Graph
     * https://ogp.me/
     * 获取文档 Open Graph 内容
     * @param name Name
     * @returns content
     */
    getOG(name: string): string | undefined;
    /**
     * Get Google reCaptcha token
     * @param action Action
     * @param callback Callback
     */
    grecaptcha(action: string, callback: (token: string) => void): void;
    /**
     * Send email
     * 发送邮件
     * @param rq Request data
     * @param api Function API
     * @returns Result
     */
    sendEmail(rq: SendEmailRQ, api?: string): Promise<IActionResult<{
        successMessage: string;
    }> | undefined>;
    /**
     * Setup
     * @param resources Custom resources
     * @param options Setup options
     */
    setup(resources?: DataTypes.StringRecord, options?: SetupOptions): void;
    /**
     * Setup scroll actions
     * 设置滚动动作
     * @param actions Scroll actions
     */
    setupScrollActions(actions?: ScrollActions): void;
    /**
     * Setup contact form
     * @param selectors Form selectors, default is "form[name='contact-form']"
     * @param recipientField Recipient field name, default is "email"
     * @param templateName Email template name
     */
    setupContactForm(selectors?: string, recipientField?: string, templateName?: string): void;
    /**
     * Setup drawflow viewer
     * 设置 Drawflow 视图
     * @param drawflowStyle Drawflow style
     * @param drawVersion Drawflow version
     */
    setupDrawflowViewer(drawflowStyle?: string, drawVersion?: string): void;
    /**
     * Setup wechat share
     * 设置微信分享
     * @param share Shared data
     * @param api Wechat configuration API
     * @returns Result
     */
    setupWechat(share?: wx.UpdateAppMessageShareDataParams, api?: string): Promise<void>;
}
export {};
