export type KsTokenType = 'color' | 'dimension' | 'unknown';
export interface KsDesignTokenAttributes {
    type: KsTokenType;
    /**
     * @deprecated old tokens may have category here.
     */
    category?: string;
}
/** The source of all design tokens, often `knapsack.design-tokens.json` */
export interface KsDesignTokenSrcGroup {
    [key: string]: KsDesignTokenSrcGroup | KsDesignTokenSrc | any;
}
export interface KsDesignTokenDataGroup {
    [key: string]: KsDesignTokenDataGroup | KsDesignTokenData;
}
export type KsDesignTokensState = {
    /** The original un-edited data source for Design Tokens */
    src: KsDesignTokenSrcGroup;
    tokens: Record<KsDesignToken['name'], KsDesignToken>;
    ids: KsDesignToken['name'][];
    prefix?: string;
    isWritable: boolean;
};
/**
 * Backwards compatible alias to `KsDesignToken`
 * @see KsDesignToken
 * @deprecated
 * */
export type KnapsackDesignToken = KsDesignToken;
export type KsTokenValue = string | number | boolean;
export interface KsDesignTokenSrc {
    value: KsTokenValue;
    /**
     * This is the explicitly set type that would be found in the source json file.
     * Use `attributes.type` which this will set but also has an inferred fallback.
     */
    type?: KsTokenType;
    comment?: string;
    tags?: string[];
    [key: string]: any;
}
export interface KsDesignTokenData extends KsDesignTokenSrc {
    /** Serves as `id` */
    name: string;
    attributes: KsDesignTokenAttributes;
    /** The object path of the property.
     *
     * `color: { background: { primary: { value: "#fff" } } }`
     *  will have a path of:
     * `['color', 'background', 'primary']`
     */
    path: string[];
    /**
     * A pristine copy of the original property object.
     *
     * This is to make sure transforms and formats always have the unmodified
     * version of  the original property.
     */
    original: KsDesignTokenSrc;
    /**
     * Legacy "category" = [category, ...tags] = path
     * This and "tags" are leftovers from the old way.
     */
    category?: KsTokenType | string;
}
export interface KsDesignToken extends KsDesignTokenData {
    /**
     * @deprecated Use `attributes.type`
     * @TODO: return to this and clean it up
     */
    /**
     * @deprecated Use `path`, tags was just `path` w/o 1st item in array, which
     * was used to set `category`. Thus `path === [category, ...tags]`.
     */
    /**
     * @deprecated This approach locked one token to one code example. We do no
     * currently have a better replacement solution yet.
     */
    code?: string;
}
//# sourceMappingURL=design-tokens.d.ts.map