/**
 * Client is the interface that {@link https://github.com/webpack/webpack-dev-server/blob/48f56d57775dc4cf78bfcf51c3761adf852b0310/client-src/socket.js#L30 | `webpack-dev-server`} uses for a websocket client.
 *
 * @public
 */
export interface Client {
    /** Register a open callback */
    onOpen(callback: () => void): void;
    /** Register a close callback */
    onClose(callback: () => void): void;
    /** Register a message callback */
    onMessage(callback: (message: string) => void): void;
}
export type ClientClass = new (url: string) => Client;
/**
 * LynxTransportClient is the client transport implementation for webpack-dev-server.
 * It can be used in the
 * {@link https://webpack.js.org/configuration/dev-server/#websockettransport | `devServer.client.webSocketTransport`}
 * configuration of webpack.
 * It should be used with `LynxTransportServer`.
 *
 * @example
 * ```js
 * // webpack.config.js
 * import { createRequire } from 'node:module'
 * import { LynxTransportServer } from '@lynx-js/webpack-dev-transport'
 *
 * const require = createRequire(import.meta.url)
 * export default {
 *   devServer: {
 *     client: {
 *       webSocketTransport: require.resolve('@lynx-js/webpack-dev-transport/client')
 *     },
 *     allowedHosts: 'all',
 *     webSocketServer: LynxTransportServer
 *   }
 * }
 * ```
 *
 * @public
 */
export declare class LynxTransportClient implements Client {
    /** {@inheritdoc Client.onOpen} */
    onOpen(callback: () => void): void;
    /** {@inheritdoc Client.onClose} */
    onClose(_callback: () => void): void;
    /** {@inheritdoc Client.onMessage} */
    onMessage(callback: (message: string) => void): void;
}
