import { DVCVariable as Variable, DVCVariableValue } from './types';
import type { VariableTypeAlias } from '@devcycle/types';
export interface DVCVariableOptions<T> {
    key: string;
    defaultValue: T;
    value?: VariableTypeAlias<T>;
    evalReason?: any;
}
export declare class DVCVariable<T extends DVCVariableValue> implements Variable<T> {
    key: string;
    value: VariableTypeAlias<T>;
    callback?: (value: VariableTypeAlias<T>) => void;
    readonly defaultValue: T;
    isDefaulted: boolean;
    readonly evalReason: any;
    constructor(variable: DVCVariableOptions<T>);
    onUpdate(callback: (value: VariableTypeAlias<T>) => void): DVCVariable<T>;
}
