import type { DesignToken, DesignTokens, PreprocessedTokens } from './DesignToken.js'; import type { Filter } from './Filter.js'; import type { FileHeader, File, FormattingOverrides } from './File.js'; import type { Parser } from './Parser.js'; import type { Preprocessor } from './Preprocessor.js'; import type { Transform } from './Transform.js'; import type { Format, OutputReferences } from './Format.js'; import type { Action } from './Action.js'; import { logBrokenReferenceLevels, logWarningLevels, logVerbosityLevels } from '../lib/enums/index.js'; type logWarningLevels = typeof logWarningLevels; type logVerbosityLevels = typeof logVerbosityLevels; type logBrokenReferenceLevels = typeof logBrokenReferenceLevels; export interface Hooks { parsers?: Record>; preprocessors?: Record; transformGroups?: Record; transforms?: Record>; formats?: Record; fileHeaders?: Record; filters?: Record; actions?: Record>; } export interface LocalOptions { showFileHeader?: boolean; fileHeader?: string | FileHeader; outputReferences?: OutputReferences; outputReferenceFallbacks?: boolean; formatting?: FormattingOverrides; [key: string]: any; } export interface GetReferencesOptions { usesDtcg?: boolean; unfilteredTokens?: PreprocessedTokens; warnImmediately?: boolean; } export interface ResolveReferencesOptions { usesDtcg?: boolean; warnImmediately?: boolean; } export interface ResolveReferencesOptionsInternal extends ResolveReferencesOptions { ignorePaths?: Set; current_context?: string; stack?: string[]; foundCirc?: Record; firstIteration?: boolean; objectsOnly?: boolean; } export interface ResolveReferencesOptionsInternalOld extends ResolveReferencesOptions { ignorePaths?: string[]; current_context?: string[]; stack?: string[]; foundCirc?: Record; firstIteration?: boolean; } export interface LogConfig { warnings?: logWarningLevels[keyof logWarningLevels]; verbosity?: logVerbosityLevels[keyof logVerbosityLevels]; errors?: { brokenReferences?: logBrokenReferenceLevels[keyof logBrokenReferenceLevels]; }; } export type ExpandFilter = (token: DesignToken, options: Config, platform?: PlatformConfig) => boolean; export interface Expand { typesMap?: Record | string>; include?: string[] | ExpandFilter; exclude?: string[] | ExpandFilter; } export type ExpandConfig = Expand | boolean | ExpandFilter; export interface PlatformConfig { log?: LogConfig; transformGroup?: string; transforms?: string[] | Transform[]; expand?: ExpandConfig; preprocessors?: string[]; prefix?: string; buildPath?: string; files?: File[]; actions?: string[] | Omit[]; options?: LocalOptions; [key: string]: any; } export interface Config { log?: LogConfig; source?: string[]; include?: string[]; tokens?: DesignTokens; hooks?: Hooks; expand?: ExpandConfig; platforms?: Record; parsers?: string[]; preprocessors?: string[]; usesDtcg?: boolean; } export {};