/**
 * 网络状态，混合了 web 和小游戏环境。
 * @since 1.0.9
 * @example
 * ```ts
 * import { getNetworkType, type NetworkType } from 'minigame-std';
 *
 * const networkType: NetworkType = await getNetworkType();
 * if (networkType === 'wifi') {
 *     console.log('当前使用 WiFi 网络');
 * }
 * ```
 */
type NetworkType = 'wifi' | 'slow-2g' | '2g' | '3g' | '4g' | '5g' | 'unknown' | 'none';

/**
 * 获取网络状态。
 * @returns 根据浏览器支持情况不同，返回值可能为 `wifi` | `none` | `unknown` | `slow-2g` | `2g` | `3g` | `4g`
 * @since 1.0.9
 * @example
 * ```ts
 * const networkType = await getNetworkType();
 * console.log('当前网络类型:', networkType);
 * if (networkType === 'none') {
 *     console.log('当前无网络连接');
 * }
 * ```
 */
declare function getNetworkType(): Promise<NetworkType>;
/**
 * 监听网络状态变化。
 * @param listener - 网络状态变化的回调函数。
 * @returns 返回一个函数，调用该函数可以移除监听器。
 * @since 1.0.9
 * @example
 * ```ts
 * const removeListener = addNetworkChangeListener((type) => {
 *     console.log('网络状态变化:', type);
 *     if (type === 'none') {
 *         console.log('网络已断开');
 *     }
 * });
 *
 * // 移除监听器
 * removeListener();
 * ```
 */
declare function addNetworkChangeListener(listener: (type: NetworkType) => void): () => void;

export { addNetworkChangeListener, getNetworkType };
export type { NetworkType };
