/**
 * 连接状态
 */
export enum ConnectionState {
    Unconnected, // 未连接
    Connecting, // 连接中
    Connected, // 已连接
}

/**
 * 发送数据
 */
export interface SendMessage<T = unknown> {
    data: {
        rspCode: number; // 回调码
        payload: T // 待发送报文
    };
    success?: (res: T) => void; // 成功回调
    fail?: (err: string) => void; // 失败回调
}

/**
 * 信息发送异步任务类
 */
export interface AsyncTask<T> {
    /** 5.0报文直接为流水号；4.0报文为流水号+"_"+大类号（由于服务端行情推送会使用流水号自增） */
    key?: string;
    /** 向服务器发送的数据 */
    sendMessage: SendMessage<T>;
    /** 超时计时器 */
    timeoutId: number;
}

/**
 * 参考https://typescript.bootcss.com/generics.html#在泛型里使用类类型
 */
export type Package<T> = new (contentOrNumber: number | Uint8Array, content?: Uint8Array) => T;