import type { PluginListenerHandle } from '@capacitor/core';
export interface AiffWebViewPlugin {
    /**
     * 在新的 WebView 对话框中打开 URL
     * @param options 配置选项
     * @returns Promise<void>
     */
    openWebView(options: OpenWebViewOptions): Promise<void>;
    /**
     * 向 WebView 注入并执行 JavaScript 代码
     * @param options 包含要执行的代码
     * @returns Promise<void>
     */
    executeScript(options: {
        code: string;
    }): Promise<void>;
    /**
     * 向 WebView 发送消息
     * @param options 消息数据
     * @returns Promise<void>
     */
    postMessage(options: {
        detail: Record<string, any>;
    }): Promise<void>;
    /**
     * 设置 WebView 的 URL
     * @param options URL 配置
     * @returns Promise<void>
     */
    setUrl(options: {
        url: string;
    }): Promise<void>;
    /**
     * 重新加载当前页面
     * @returns Promise<void>
     */
    reload(): Promise<void>;
    /**
     * 监听 URL 变化事件
     */
    addListener(eventName: 'urlChangeEvent', listenerFunc: UrlChangeListener): Promise<PluginListenerHandle>;
    /**
     * 监听 WebView 关闭事件
     */
    addListener(eventName: 'closeEvent', listenerFunc: CloseListener): Promise<PluginListenerHandle>;
    /**
     * 监听来自 WebView 的消息
     */
    addListener(eventName: 'messageFromWebview', listenerFunc: MessageFromWebviewListener): Promise<PluginListenerHandle>;
    /**
     * 监听页面加载完成事件
     */
    addListener(eventName: 'browserPageLoaded', listenerFunc: () => void): Promise<PluginListenerHandle>;
    /**
     * 监听页面加载错误事件
     */
    addListener(eventName: 'pageLoadError', listenerFunc: () => void): Promise<PluginListenerHandle>;
}
export interface OpenWebViewOptions {
    /**
     * 要加载的目标 URL 地址 (必需)
     */
    url: string;
    /**
     * 自定义 HTTP 请求头
     */
    headers?: Record<string, string>;
    /**
     * HTTP Basic 认证凭据
     */
    credentials?: Credentials;
    /**
     * 工具栏类型
     * @default ''
     */
    toolbarType?: ToolBarType;
    /**
     * WebView 对话框标题
     * @default '新窗口'
     */
    title?: string;
    /**
     * 是否显示重新加载按钮
     * @default false
     */
    showReloadButton?: boolean;
    /**
     * 关闭时是否显示确认对话框
     * @default false
     */
    closeModal?: boolean;
    /**
     * 关闭确认框标题 (iOS)
     * @default '关闭'
     */
    closeModalTitle?: string;
    /**
     * 关闭确认框描述文本 (iOS)
     * @default '您确定要关闭此窗口吗？'
     */
    closeModalDescription?: string;
    /**
     * 关闭确认框确定按钮文本 (iOS)
     * @default '关闭'
     */
    closeModalOk?: string;
    /**
     * 关闭确认框取消按钮文本 (iOS)
     * @default '取消'
     */
    closeModalCancel?: string;
    /**
     * 工具栏背景颜色 (十六进制)
     * @default '#ffffff'
     */
    toolbarColor?: string;
    /**
     * 是否显示网站标题
     * @default true
     */
    visibleTitle?: boolean;
    /**
     * 是否显示箭头作为关闭图标
     * @default false
     */
    showArrow?: boolean;
    /**
     * 在页面显示前执行的 JavaScript 脚本
     */
    preShowScript?: string;
    /**
     * 是否在页面加载完成后再显示 WebView
     * @default false
     */
    isPresentAfterPageLoad?: boolean;
    /**
     * 是否忽略不受信任的 SSL 证书错误
     * @default false
     */
    ignoreUntrustedSSLError?: boolean;
    /**
     * 是否允许 Safari 开发者工具调试 (仅 iOS)
     * @default false
     */
    isInspectable?: boolean;
    /**
     * 是否带动画效果打开 WebView (仅 iOS)
     * @default true
     */
    isAnimated?: boolean;
    /**
     * 是否激活原生导航功能 (仅 Android)
     * @default false
     */
    activeNativeNavigationForWebview?: boolean;
    /**
     * 是否禁用返回原生应用 (仅 Android)
     * @default false
     */
    disableGoBackOnNativeApplication?: boolean;
    /**
     * 自定义近关闭按钮配置
     */
    buttonNearDone?: ButtonNearDoneOptions;
    /**
     * iframe sandbox 属性配置 (仅 Web)
     */
    iframeSandbox?: string[];
    /**
     * 是否允许弹窗 (仅 Web)
     * @default false
     */
    allowPopups?: boolean;
    /**
     * 内容安全策略 (仅 Web)
     */
    cspPolicy?: string;
    /**
     * 主题配置 (仅 Web)
     * @default 'auto'
     */
    theme?: 'light' | 'dark' | 'auto';
}
export interface Credentials {
    username: string;
    password: string;
}
export interface ButtonNearDoneOptions {
    /**
     * 按钮图标 (base64 编码或系统图标名称)
     */
    icon?: string;
    /**
     * 按钮标题文本
     */
    title?: string;
    /**
     * 按钮是否可见
     * @default false
     */
    visible?: boolean;
}
export declare enum ToolBarType {
    ACTIVITY = "activity",
    NAVIGATION = "navigation",
    BLANK = "blank",
    DEFAULT = ""
}
export type UrlChangeListener = (event: {
    url: string;
}) => void;
export type CloseListener = (event: {
    url: string;
}) => void;
export type MessageFromWebviewListener = (event: {
    detail: Record<string, any>;
    rawMessage?: string;
}) => void;
export type AiffWebViewEvents = 'urlChangeEvent' | 'closeEvent' | 'messageFromWebview' | 'browserPageLoaded' | 'pageLoadError';
export interface AiffWebViewEventMap {
    urlChangeEvent: {
        url: string;
    };
    closeEvent: {
        url: string;
    };
    messageFromWebview: {
        detail: Record<string, any>;
        rawMessage?: string;
    };
    browserPageLoaded: void;
    pageLoadError: void;
}
