import { TokenGroup } from "../../../model/groups/SDKTokenGroup";
import { TokenTheme } from "../../../model/themes/SDKTokenTheme";
import { Token } from "../../../model/tokens/SDKToken";
import { DTProcessedTokenNode } from "./SDKDTJSONConverter";
import { DTPluginPreciseCopyStrategy, DTPluginThemeOverrideStrategy } from "./SDKDTMapLoader";
export type DTThemeMergeDiff = {
    toUpdate: Array<DTProcessedTokenNode>;
    toCreate: Array<DTProcessedTokenNode>;
};
/** Utility allowing merging of two pools of tokens */
export declare class DTThemeMerger {
    private versionId;
    constructor(versionId: string);
    makeTheme(upstreamTokens: Array<Token>, upstreamGroups: Array<TokenGroup>, upstreamTheme: TokenTheme, processedNodes: Array<DTProcessedTokenNode>, preciseCopy?: DTPluginPreciseCopyStrategy, themeOverridesStrategy?: DTPluginThemeOverrideStrategy): TokenTheme;
    inlineTokens(themeReplica: TokenTheme, tokensInThemeButNotInUpstream: Map<string, DTProcessedTokenNode>): void;
    applyThemeOverrideStrategy(idsToRemap: Map<string, string>, themeOverridesStrategy: DTPluginThemeOverrideStrategy, token: Token, incomingThemeOverrideToken?: Token, currentThemeOverride?: Token): {
        keepOverrideDueToAlias: boolean;
        incomingThemeDiffersFromUpstreamThemeAlias: boolean;
    };
}
