/**
 * Ownership tracking for a token that writes into consumer-visible state.
 *
 * Most of the token layer is read-only: a value is resolved for one render and
 * thrown away, so nothing can be confused about where it came from. Some tokens
 * are not like that. When a resolved token is written somewhere the consumer can
 * also write (a config field, an inline custom property on their own element),
 * the value we wrote becomes indistinguishable from a value they set, and the
 * guard that protects explicit configuration then refuses every later update:
 * an OS light/dark flip, or a host swapping its design system, leaves the chart
 * painted in the previous theme.
 *
 * The fix is to remember what we wrote and treat the value as ours (and so
 * replaceable) only while it still matches. An explicit value still wins
 * outright, and when the token disappears entirely the slot is released rather
 * than frozen at the colour of a design system that is no longer applied.
 *
 * @example
 * ```ts
 * const background = new OwnedToken();
 * // first render, nothing set by the user
 * background.resolve('', tokens.surface);      // → '#101820'
 * // the host swaps design systems and the token changes
 * background.resolve('#101820', '#fdfdfd');    // → '#fdfdfd'  (ours, replaced)
 * // a user-set value is never touched
 * background.resolve('#ff0000', '#fdfdfd');    // → '#ff0000'
 * // the token goes away entirely
 * background.resolve('#fdfdfd', undefined);    // → ''         (released)
 * ```
 */
export declare class OwnedToken {
    private applied;
    /**
     * Resolve the slot's next value.
     *
     * @param current The value the slot holds right now, as the consumer would
     *   see it. Empty means unset.
     * @param token The token's current value, or `undefined` when the token is
     *   not defined at all.
     * @returns What the slot should hold. Write it back only if it differs.
     */
    resolve(current: string | undefined, token: string | undefined): string;
    /** The value this slot last wrote, or `undefined` if it owns nothing. */
    get owned(): string | undefined;
    /** Forget what was written, e.g. when the chart is re-created from scratch. */
    release(): void;
}
//# sourceMappingURL=ownedToken.d.ts.map