/**
 * The one-line form of the family precedence rule.
 *
 * Every product resolves dozens of colour-ish options the same way, and getting
 * the order right in dozens of places by hand is how orders drift apart. This
 * states it once:
 *
 * ```
 * per-product CSS variable  >  explicit config  >  --apx-* token  >  default
 * ```
 *
 * The two ends are the shipped behaviour and are unchanged. A per-product
 * variable such as `--apex-tree-node-bg` is the most specific instruction
 * anybody can give, and it has always outranked the JS option; the built-in
 * default has always been last. The token slots into the gap in between, which
 * is the only additive place it can go: above a value nobody chose, below a
 * value somebody did.
 *
 * "Explicit" is recognised by comparing the resolved option against its
 * built-in default, exactly as the charts do. The known limitation is that
 * setting an option to a value equal to its default is indistinguishable from
 * leaving it alone, and the token then wins. That is accepted: the alternative
 * is threading the raw partial options through every render path, and the
 * failure mode is a token being honoured for a value the caller was happy with
 * anyway.
 */
export interface TokenPrecedenceInput {
    /** Value of the product's own CSS variable, or `''` when it is not set. */
    cssVar?: string;
    /** The option value in force, after defaults were merged in. */
    option?: string;
    /** The built-in default for that option, used to recognise an explicit value. */
    fallback?: string;
    /** The `--apx-*` token for this role, if any. */
    token?: string;
}
/**
 * Resolve one option through the family precedence chain.
 *
 * @returns The winning value, or `''` when every layer is empty.
 */
export declare function pickToken({ cssVar, fallback, option, token }: TokenPrecedenceInput): string;
//# sourceMappingURL=precedence.d.ts.map