import { CodemaoWork } from "./codemao/work/codemao-work";
import { KittenCloudOnlineUserNumber } from "./module/kitten-cloud-online-user-number";
import { KittenCloudWebSocket } from "./module/network/web-socket/kitten-cloud-web-socket";
import { Signal } from "./utils/signal";
import { WebSocketProxy } from "./utils/web-socket-proxy";
import { KittenCloudFunctionConfigLayer } from "./module/kitten-cloud-function-config-layer";
import { KittenCloudPublicVariableGroup } from "./module/cloud-data/group/kitten-cloud-public-variable-group";
import { KittenCloudSendMessageType } from "./module/network/kitten-cloud-send-message-type";
import { KittenCloudData } from "./module/cloud-data/kitten-cloud-data";
import { KittenCloudPrivateVariableGroup } from "./module/cloud-data/group/kitten-cloud-private-variable-group";
import { CodemaoUser } from "./codemao/user/codemao-user";
import { None } from "./utils/other";
import { KittenCloudListGroup } from "./module/cloud-data/group/kitten-cloud-list-group";
export declare let __diff: typeof import("diff") | None;
/**
 * 源码云功能主类，用于管理源码云的连接、数据、事件等。
 */
export declare class KittenCloudFunction extends KittenCloudFunctionConfigLayer {
    private static __caughtInstance;
    private static __caught?;
    /**
     * 当从全局 WebSocket 中捕获到源码云的连接，会将其转换为 KittenCloudFunction 实例并通过该信号通知。
     *
     * 该功能会污染全局 WebSocket，仅在该信号被访问时才会启用。
     *
     * 仅在浏览器中可用。
     */
    static get caught(): Signal<KittenCloudFunction>;
    private static startCatch;
    /**
     * 当前连接的作品。
     */
    readonly work: CodemaoWork;
    private readonly socket;
    /**
     * 源码云连接打开时触发该信号。
     *
     * 源码云连接打开是指 WebSocket 连接成功，并且源码云功能完成了云功能初始化操作，这意味着在此之后可以正常使用云功能。
     */
    readonly opened: Signal<void>;
    /**
     * 源码云连接断开时触发该信号。
     *
     * 源码云连接断开是指 WebSocket 连接断开，如果不是客户端主动断开且配置了自动重连，会自动重新连接。
     */
    readonly disconnected: Signal<void>;
    /**
     * 源码云连接关闭时触发该信号。
     *
     * 源码云连接关闭是指 WebSocket 连接断开且之后不会再自动重连。
     */
    readonly closed: Signal<void>;
    /**
     * 源码云连接发生错误时触发该信号。
     */
    readonly errored: Signal<unknown>;
    /**
     * 该 Promise 实例会在源码云连接成功时被 resolve，并提供一个 {@link KittenCloudOnlineUserNumber} 实例作为参数。
     *
     * 如果源码云连接失败，则该 Promise 实例会被 reject。
     */
    onlineUserNumber: Promise<KittenCloudOnlineUserNumber>;
    private onlineUserNumberResolve?;
    private onlineUserNumberReject?;
    /** 用于管理云私有变量。*/ privateVariable: KittenCloudPrivateVariableGroup;
    /** 用于管理云公有变量。*/ publicVariable: KittenCloudPublicVariableGroup;
    /** 用于管理云列表。*/ list: KittenCloudListGroup;
    /**
     * 创建一个新的 KittenCloudFunction 实例，当实例被创建时，会自动连接到源码云。
     *
     * @param work 一个数字，表示要连接的作品的 ID。
     */
    constructor(workID: number);
    /**
     * 创建一个新的 KittenCloudFunction 实例，当实例被创建时，会自动连接到源码云。
     *
     * @param work 一个 {@link CodemaoWork} 实例，表示要连接的作品。
     */
    constructor(work: CodemaoWork);
    constructor(argument: CodemaoWork | KittenCloudWebSocket | WebSocketProxy | WebSocket);
    /**
     * 等待连接打开，如果连接打开时出错则抛出异常。
     */
    waitOpen(this: this): Promise<void>;
    /**
     * 关闭该连接。
     */
    close(this: this): void;
    send(this: this, type: KittenCloudSendMessageType, message: unknown): void;
    private handleReceived;
    /**
     * 获取云数据实例。
     *
     * @param index 该数据的名称或 cvid
     * @returns 对应云数据实例
     * @throws 如果不存在该云数据实例，则抛出异常
     */
    get(this: this, index: string): Promise<KittenCloudData>;
    getAll(this: this): Promise<KittenCloudData[]>;
    private static _user;
    /**
     * 当前用户。
     *
     * @returns CodemaoUser
     */
    static get user(): CodemaoUser;
}
