import { ScriptProperty } from '../ScriptProperty.js';
export type VariableType = 'bool' | 'int' | 'float' | 'string' | 'global bool' | 'global int' | 'global float' | 'global string';
/**
 * A ScriptProperty for declaring in-game variables for an Entity or globally
 *
 * @extends ScriptProperty
 * @see https://wiki.arx-libertatis.org/Script:Variables
 */
export declare class Variable<T> extends ScriptProperty<T> {
    private propType;
    private propName;
    private startUninitialized;
    constructor(type: 'bool' | 'global bool', name: string, value: boolean extends T ? T : never);
    constructor(type: 'bool' | 'global bool', name: string, value: boolean extends T ? T : never, startUninitialized: boolean);
    constructor(type: 'int' | 'float' | 'global int' | 'global float', name: string, value: number extends T ? T : never);
    constructor(type: 'int' | 'float' | 'global int' | 'global float', name: string, value: number extends T ? T : never, startUninitialized: boolean);
    constructor(type: 'string' | 'global string', name: string, value: T extends string ? T : never);
    constructor(type: 'string' | 'global string', name: string, value: string extends T ? T : never);
    constructor(type: 'string' | 'global string', name: string, value: T extends string ? T : never, startUninitialized: boolean);
    constructor(type: 'string' | 'global string', name: string, value: string extends T ? T : never, startUninitialized: boolean);
    toString(): string;
    get name(): string;
    get scriptValue(): string;
}
