import { KittenCloudFunction } from "../../kitten-cloud-function";
import { Signal } from "../../utils/signal";
import { KittenCloudVariableGroup } from "./group/kitten-cloud-variable-group";
import { KittenCloudData } from "./kitten-cloud-data";
import { KittenCloudDataUpdateSource } from "./update/kitten-cloud-data-update-source";
/**
 * 云变量的值的类型。
 */
export type KittenCloudVariableValue = number | string;
/**
 * 云变量变化消息的类型，当云变量的值被改变时会收到此消息，详见{@link KittenCloudVariable.changed}。
 */
export type KittenCloudVariableChangeMessageObject = {
    source: KittenCloudDataUpdateSource;
    originalValue: KittenCloudVariableValue;
    newValue: KittenCloudVariableValue;
};
/**
 * 云变量
 */
export declare abstract class KittenCloudVariable extends KittenCloudData {
    readonly group: KittenCloudVariableGroup;
    value: KittenCloudVariableValue;
    /**
     * 云变量的值改变信号，当云变量的值发生改变时触发此信号。
     *
     * 变化消息类型详见{@link KittenCloudVariableChangeMessageObject}。
     */
    readonly changed: Signal<KittenCloudVariableChangeMessageObject>;
    constructor(connection: KittenCloudFunction, group: KittenCloudVariableGroup, cvid: string, name: string, value: KittenCloudVariableValue);
    abstract set(value: KittenCloudVariableValue): Promise<void>;
    /**
     * 获取云变量的值。
     *
     * @returns 云变量的值
     */
    get(this: this): KittenCloudVariableValue;
}
