import { WechatyInterface, type WechatyOptions } from './wechaty/mod.js';
interface BuilderInterface {
    build(options?: WechatyOptions): WechatyInterface;
}
declare class WechatyBuilder implements BuilderInterface {
    private static _instance?;
    static valid(target: any): target is WechatyInterface;
    /**
     * Create an instance of Wechaty
     *
     * @param {WechatyOptions} [options={}]
     *
     * @example <caption>The World's Shortest ChatBot Code: 6 lines of JavaScript</caption>
     * import { WechatyBuilder } from 'wechaty'
     *
     * WechatyBuilder.build(options) // instance() for singleton mode
     *  .on('scan', (url, status) => console.log(`Scan QR Code to login: ${status}\n${url}`))
     *  .on('login',       user => console.log(`User ${user} logged in`))
     *  .on('message',  message => console.log(`Message: ${message}`))
     *  .start()
     */
    static build(options?: WechatyOptions): WechatyInterface;
    /**
     * @param options is a `WechatyOptions` object, it can only be set once
     */
    static singleton(options?: WechatyOptions): WechatyInterface;
    protected static new(): WechatyBuilder;
    protected constructor();
    protected _singleton: boolean;
    protected _options: WechatyOptions;
    protected singleton(): WechatyBuilder;
    protected options(options?: WechatyOptions): WechatyBuilder;
    build(): WechatyInterface;
    protected singletonInstance(): WechatyInterface;
    protected newInstance(): WechatyInterface;
}
export { type WechatyOptions, type BuilderInterface, WechatyBuilder, };
//# sourceMappingURL=wechaty-builder.d.ts.map