import * as momoa from '@humanwhocodes/momoa';
import { type InputSourceWithDocument } from '@terrazzo/json-schema-tools';
import { type GroupNormalized, type TokenNormalized, type TokenNormalizedSet } from '@terrazzo/token-tools';
import type { default as Logger } from '../logger.js';
import type { Config, ReferenceObject, RefMap } from '../types.js';
/** Convert valid DTCG alias to $ref */
export declare function aliasToGroupRef(alias: string): ReferenceObject | undefined;
/** Convert valid DTCG alias to $ref */
export declare function aliasToTokenRef(alias: string, mode?: string): ReferenceObject | undefined;
export interface TokenFromNodeOptions {
    groups: Record<string, GroupNormalized>;
    path: string[];
    source: InputSourceWithDocument;
    ignore: Config['ignore'];
}
/** Generate a TokenNormalized from a Momoa node */
export declare function tokenFromNode(node: momoa.AnyNode, { groups, path, source, ignore }: TokenFromNodeOptions): TokenNormalized | undefined;
export interface TokenRawValues {
    jsonID: string;
    originalValue: any;
    source: TokenNormalized['source'];
    mode: Record<string, {
        originalValue: any;
        source: TokenNormalized['source'];
    }>;
}
/** Generate originalValue and source from node */
export declare function tokenRawValuesFromNode(node: momoa.AnyNode, { filename, path }: {
    filename: string;
    path: string[];
}): TokenRawValues | undefined;
/**
 * Generate a group from a node.
 * This method mutates the groups index as it goes because of group inheritance.
 * As it encounters new groups it may have to update other groups.
 */
export declare function groupFromNode(node: momoa.ObjectNode, { path, groups }: {
    path: string[];
    groups: Record<string, GroupNormalized>;
}): GroupNormalized;
export interface GraphAliasesOptions {
    tokens: TokenNormalizedSet;
    sources: Record<string, InputSourceWithDocument>;
    logger: Logger;
}
/**
 * Link and reverse-link tokens in one pass.
 */
export declare function graphAliases(refMap: RefMap, { tokens, logger, sources }: GraphAliasesOptions): void;
/** Convert valid DTCG alias to $ref Momoa Node */
export declare function aliasToMomoa(alias: string, loc?: momoa.ObjectNode['loc']): momoa.ObjectNode | undefined;
/**
 * Convert Reference Object to token ID.
 * This can then be turned into an alias by surrounding with { … }
 * ⚠️ This is not mode-aware. This will flatten multiple modes into the same root token.
 */
export declare function refToTokenID($ref: ReferenceObject | string): string | undefined;
/**
 * Resolve DTCG aliases, $extends, and $ref
 */
export declare function resolveAliases(tokens: TokenNormalizedSet, { logger, refMap, sources, }: {
    logger: Logger;
    refMap: RefMap;
    sources: Record<string, InputSourceWithDocument>;
}): void;
//# sourceMappingURL=token.d.ts.map