import { EventEmitter, EventReturnType } from "./events";
import { RainwayLogLevel } from "./rainway-ffi";
import { RainwayConnection } from "./rainway-connection";
import { LogEvent } from "./events/impls";
import { ConnectOptions } from "./options";
/**
 * Events emitted by {@link RainwaySDK}
 */
export interface RainwaySDKEvents {
    /**
     * Raised when a native log event occurs.
     */
    log: (event: LogEvent) => EventReturnType;
}
/**
 * The Rainway SDK
 */
export declare class RainwaySDK extends EventEmitter<RainwaySDKEvents> {
    /**
     * Internal storage for log level.
     */
    private _logLevel;
    /**
     * Internal storage for the log callback
     */
    private _logCallback;
    /**
     * Indicates if the native library has been initialized.
     */
    readonly isInitialized: boolean;
    /**
     * Get or set the native library log level.
     */
    get logLevel(): RainwayLogLevel;
    set logLevel(level: RainwayLogLevel);
    /** @internal */
    constructor();
    /**
     * Get the native library version.
     * A SemVer (https://semver.org/) string.
     */
    get version(): string;
    /**
     * Connects to the Rainway network, creating a {@link RainwayConnection} if successful.
     * This is the first step required to connect to other {@link Peer}s on the Rainway network, or to allow them to connect to you.
     * @param options - connection options
     * @returns A new connection
     */
    connect(options: ConnectOptions): Promise<RainwayConnection>;
}
/**
 * Entrypoint and native library facilities for the Rainway SDK.
 */
declare const rainway: RainwaySDK;
export default rainway;
