import { DVCVariable as Variable, DVCVariableValue } from './types';
import type { EvalReason, VariableTypeAlias } from '@devcycle/types';
export interface DVCVariableOptions<T> {
    key: string;
    defaultValue: T;
    value?: VariableTypeAlias<T>;
    eval?: EvalReason;
    _feature?: string | null;
}
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 eval?: EvalReason;
    readonly _feature: string | null;
    constructor(variable: DVCVariableOptions<T>);
    onUpdate(callback: (value: VariableTypeAlias<T>) => void): DVCVariable<T>;
}
