import puppeteer, { Browser, ConnectOptions, ElementHandle, GoToOptions, Page } from 'puppeteer-core';
import { Context, Schema, Service } from 'koishi';
import { SVG, SVGOptions } from './svg';
export * from './svg';
declare module 'koishi' {
    interface Context {
        puppeteer: Puppeteer;
    }
}
type RenderCallback = (page: Page, next: (handle?: ElementHandle) => Promise<string>) => Promise<string>;
declare class Puppeteer extends Service {
    config: Puppeteer.Config;
    static [Service.provide]: string;
    static inject: string[];
    browser: Browser;
    executable: string;
    private browserWSEndpoint;
    constructor(ctx: Context, config: Puppeteer.Config);
    private registerHtmlComponent;
    start(): Promise<void>;
    private startBrowser;
    stop(): Promise<void>;
    private stopBrowser;
    private ensureConnected;
    page: (options?: Puppeteer.PageOptions) => Promise<any>;
    svg: (options?: SVGOptions) => Promise<SVG>;
    render: (content: string, callback?: RenderCallback, families?: string[]) => Promise<string>;
}
declare namespace Puppeteer {
    export interface PageOptions {
        beforeGotoPage?: (page: Page) => Promise<void>;
        url: string;
        gotoOptions?: GoToOptions;
        content?: string;
        families?: string[];
    }
    export const filter = false;
    export const usage = "\n---\n\n\u672C\u63D2\u4EF6\u63D0\u4F9B\u6D4F\u89C8\u5668 API \u670D\u52A1\uFF0C\u4E3B\u8981\u7528\u4E8E\u7F51\u9875\u622A\u56FE\u3001\u751F\u6210\u56FE\u7247\u7B49\u529F\u80FD\u3002\n\n**\u91CD\u8981\u63D0\u793A\uFF1A**\n\n1.  **\u6D4F\u89C8\u5668\u73AF\u5883\u8981\u6C42\uFF1A** \u4E3A\u786E\u4FDD\u63D2\u4EF6\u6B63\u5E38\u8FD0\u884C\uFF0C\u8BF7\u786E\u4FDD\u60A8\u7684\u7CFB\u7EDF\u5DF2\u5B89\u88C5 Chromium \u6D4F\u89C8\u5668\uFF0C\u6216\u5DF2\u914D\u7F6E\u8FDC\u7A0B\u6D4F\u89C8\u5668\u670D\u52A1\u3002\n2.  **\u7248\u672C\u5339\u914D\uFF1A** \u5EFA\u8BAE\u4FDD\u6301 Chromium/Chrome \u6D4F\u89C8\u5668\u4E0E\u672C\u63D2\u4EF6\u540C\u6B65\u66F4\u65B0\uFF0C\u4EE5\u907F\u514D\u56E0\u7248\u672C\u4E0D\u5339\u914D\u5BFC\u81F4\u7684\u529F\u80FD\u5F02\u5E38\u3002\n3.  **Windows \u7CFB\u7EDF\u517C\u5BB9\u6027\uFF1A** \u5982\u679C\u60A8\u5728 Windows \u670D\u52A1\u5668\u4E0A\u8FD0\u884C\uFF0C\u4E3A\u652F\u6301\u6700\u65B0\u7248 Puppeteer \u53CA\u5176\u6346\u7ED1\u7684 Chromium\uFF0C\u60A8\u7684\u64CD\u4F5C\u7CFB\u7EDF\u81F3\u5C11\u9700\u8981\u662F **Windows Server 2016 \u6216\u66F4\u9AD8\u7248\u672C**\u3002\n\n\u6CE8\u610F\uFF1A Windows Server 2012 R2 \u53CA\u66F4\u65E9\u7248\u672C\u5DF2\u65E0\u6CD5\u6EE1\u8DB3\u6700\u65B0 Chrome \u7684\u8FD0\u884C\u8981\u6C42\u3002\n\n---\n\n\n**\u670D\u52A1\u4F9D\u8D56\uFF1A**\n\n- **\u5FC5\u9700\u670D\u52A1\uFF1A** http\uFF08\u81EA\u5E26\u670D\u52A1\uFF0C\u65E0\u9700\u989D\u5916\u5B89\u88C5\uFF09\n- **\u53EF\u9009\u670D\u52A1\uFF1A** [fonts](/market?keyword=font+email:shigma10826@gmail.com+email:saarchaffee@qq.com)\n\n---\n\n<p>\u27A3 <a href=\"https://github.com/shangxueink/koishi-plugin-puppeteer-without-canvas\" target=\"_blank\">\u70B9\u6211\u524D\u5F80\u9879\u76EE\u5730\u5740</a></p>\n\n---\n  ";
    type LaunchOptions = Parameters<typeof puppeteer.launch>[0] & {};
    export type ImageType = 'png' | 'jpeg' | 'webp';
    export interface Config extends LaunchOptions, ConnectOptions {
        enablePuppeteer?: boolean;
        enableCanvas?: boolean;
        enableRestartCommand?: boolean;
        remote?: boolean;
        endpoint?: string;
        headers?: Record<string, string>;
        enableReconnect?: boolean;
        reconnectInterval?: number;
        maxReconnectRetries?: number;
        render?: {
            type?: ImageType;
            quality?: number;
        };
    }
    export const Config: Schema<Config>;
    export {};
}
export default Puppeteer;
