import type { IElementController, IElementOptions, ICommonApiResponse, IPaymentApiResponse, PaymentMountOptions, SubmitFuncParams, EventDataMap } from '../type';
import { EVENTNAME } from '../type';
/**
 * ModernElementController 使用 opensdk-core 的 HostBridge 实现新架构通信。
 *
 * Mount 流程（正确）:
 * 1. setup() — 解析 sessionData 获取 metaData，准备 HANDSHAKE 配置
 * 2. 创建 iframe（先不设置 src，避免提前触发加载）
 * 3. 先注册所有事件监听，再设置 iframe.src 和 appendChild 触发加载
 * 4. setup() 与 waitForReadyHandshake() 并行执行
 * 5. 两者都完成后，sendHandshake() 发送 HANDSHAKE 配置
 * 6. 等待 HANDSHAKE_ACK → 设置 status = 'ready'
 * 7. ready 后发送缓存的消息
 */
export declare class ModernElementController implements IElementController {
    private options;
    private bridge;
    private iframe;
    private status;
    private cachedSend;
    private modalBridge;
    private modalDestroy;
    private _closeConfirmResolve;
    private notRedirectAfterComplete;
    constructor(options: IElementOptions);
    mount(renderOptions: PaymentMountOptions, sdkSelector: string): Promise<ICommonApiResponse>;
    /**
     * setup() — 解析 sessionData 获取 metaData，发起 sdkQuery 获取渲染数据，准备 HANDSHAKE 配置
     *
     * 完整实现：
     * 1. 解析 sessionData 获取 paymentSessionConfig
     * 2. 初始化 request 全局配置（hostSign, env, sdkVersion）
     * 3. 调用 sdkQuery 获取 renderData
     * 4. 处理请求错误，将错误信息放入 renderDataError（不阻塞 mount 流程）
     * 5. 从 renderData 中提取 preferredLocale
     */
    private setup;
    /**
     * 校验 renderData 数据格式，参照老逻辑 isLoadErrorPage 的三个校验维度：
     * 1. success 字段 — 接口是否返回业务成功
     * 2. 支付方式 — paymentMethods 或 savedPaymentMethods 必须存在且为非空数组
     * 3. 金额视图 — orderAmountView 和 paymentAmountView 必须同时存在
     *
     * 当数据结构异常时，构造 ERR_DATA_STRUCT_UNRECOGNIZED 错误
     */
    private validateRenderData;
    /**
     * 注册所有 bridge 事件监听（必须在 iframe 加载前调用，避免丢失早期消息）
     */
    private bindBridgeEvents;
    /**
     * 处理 webapp 委托的 Apple Pay token 请求。
     * Chrome 等非 Safari 浏览器内 iframe 无法拉起 Apple 二维码 modal（jsapi 注入需父域），
     * 改由 SDK 域 new ApplePaySdk().startPay() 拉起 Apple modal，结果通过 bridge 回传。
     */
    private handleGetApplePayToken;
    /**
     * 处理 webapp 委托的 skipRenderPaymentMethod 拉起请求(fire-and-forget)。
     * 走 plugin/applepay 标准链路:ApplePayBusSubscriber.onCreateComponent 自动注入
     * onEventCallback,通过 BusManager.publish(SDKCallbackActionEnum.onEventCallback)
     * 通知商户。SDK 端不需要 reply 给 webapp。
     */
    private handleHandlePayment;
    /**
     * 等待 webapp 发送 READY_HANDSHAKE（表示 iframe 已加载并准备好握手），
     * 收到后设置 bridge target 和安全源
     */
    private waitForReadyHandshake;
    /**
     * 发送 HANDSHAKE 配置给 webapp（setup 和 READY_HANDSHAKE 都完成后调用）
     */
    private sendHandshake;
    /**
     * 等待 webapp 返回 HANDSHAKE_ACK（确认握手完成）
     */
    private waitForHandshakeAck;
    submitPayment(params: SubmitFuncParams): Promise<IPaymentApiResponse>;
    validateFields(): Promise<{
        isValid: boolean;
    }>;
    updatePayment(paymentSessionData: string): Promise<boolean>;
    on<T extends EVENTNAME>(event: T, callback: (data: EventDataMap[T]) => void): void;
    destroy(): void;
    private cleanup;
    /**
     * 带缓存的消息发送：当 status 不是 ready 时，缓存消息；ready 后由 flushCachedMessages 批量发送
     */
    private send;
    /**
     * 批量发送缓存的消息
     */
    private flushCachedMessages;
    /**
     * 处理 webapp 请求打开 modal 弹窗
     *
     * 流程（参照 BaseFactory 桥接流程）：
     * 1. 调用 openModal 工具函数创建 modal DOM（overlay + modal + iframe + 动画 + close icon + loading）
     * 2. 为 modal 创建独立的 HostBridge 用于通信
     * 3. iframe 加载后 setTarget 到 modal iframe 的 contentWindow
     * 4. 监听 modal 的 READY_HANDSHAKE → 发送配置消息
     * 5. 如果 payload 有 appearance，通过 TRANSFER_MODAL_APPEARANCE 消息发送
     * 6. 如果 payload 有 closeConfirm，创建 MessageChannel port 用于确认关闭
     */
    private handleOpenModal;
    /**
     * 销毁 modal bridge、调用 openModal 返回的 destroy 方法清理 modal DOM
     */
    private handleCloseModal;
    private buildIframeUrl;
}
