import { DesignSystemCollection } from "../../model/base/SDKDesignSystemCollection";
import { ElementDataView } from "../../model/elements/SDKElementDataView";
import { ElementProperty } from "../../model/elements/SDKElementProperty";
import { ElementPropertyValue } from "../../model/elements/values/SDKElementPropertyValue";
import { DimensionTokenType, OptionTokenType, PureTokenType, StringTokenType, TokenType } from "../../model/enums/SDKTokenType";
import { TokenGroup } from "../../model/groups/SDKTokenGroup";
import { Source } from "../../model/support/SDKSource";
import { TokenOrigin } from "../../model/support/SDKTokenOrigin";
import { TokenTheme, TokenThemeRemoteModel } from "../../model/themes/SDKTokenTheme";
import { TokenThemeOverrideRemoteModel } from "../../model/themes/SDKTokenThemeOverride";
import { BlurToken } from "../../model/tokens/SDKBlurToken";
import { BorderToken } from "../../model/tokens/SDKBorderToken";
import { ColorToken } from "../../model/tokens/SDKColorToken";
import { AnyDimensionToken } from "../../model/tokens/SDKDimensionToken";
import { GradientToken } from "../../model/tokens/SDKGradientToken";
import { ShadowToken } from "../../model/tokens/SDKShadowToken";
import { AnyStringToken } from "../../model/tokens/SDKStringToken";
import { Token } from "../../model/tokens/SDKToken";
import { AnyOptionToken, AnyOptionTokenValue, AnyStringTokenValue, BlurTokenValue, BorderTokenValue, BorderWidthTokenValue, ColorTokenValue, DimensionTokenValue, DurationTokenValue, FontSizeTokenValue, GradientStopValue, GradientTokenValue, LetterSpacingTokenValue, LineHeightTokenValue, OpacityTokenValue, ParagraphSpacingTokenValue, RadiusTokenValue, ShadowTokenValue, SizeTokenValue, SpaceTokenValue, TypographyTokenValue, ZIndexTokenValue } from "../../model/tokens/SDKTokenValue";
import { TypographyToken } from "../../model/tokens/SDKTypographyToken";
import { AnyDimensionTokenRemoteData, AnyOptionTokenRemoteData, AnyOptionTokenRemoteValue, AnyStringTokenRemoteData, BorderWidthTokenRemoteData, ColorTokenRemoteData, GradientTokenRemoteData, ShadowTokenRemoteData } from "../../model/tokens/remote/SDKRemoteTokenData";
import { AnyOptionTokenRemoteModel, BlurTokenRemoteModel, BorderTokenRemoteModel, ColorTokenRemoteModel, DimensionTokenRemoteModel, GradientTokenRemoteModel, ShadowTokenRemoteModel, StringTokenRemoteModel, TokenRemoteModel, TypographyTokenRemoteModel } from "../../model/tokens/remote/SDKRemoteTokenModel";
import { AnyDimensionTokenRemoteValue, BlurTokenRemoteValue, BorderTokenRemoteValue, ColorTokenRemoteValue, GradientStopRemoteValue, GradientTokenRemoteValue, ShadowTokenRemoteValue, StringTokenRemoteValue, TypographyTokenRemoteValue } from "../../model/tokens/remote/SDKRemoteTokenValue";
export declare class TokenResolver {
    hashedTokens: Map<string, TokenRemoteModel>;
    resolvedTokens: Map<string, Token>;
    hashedOverrides: Map<string, TokenThemeOverrideRemoteModel>;
    hashedReconstructedOverrides: Map<string, Token>;
    resolvedOverrides: Map<string, Token>;
    designSystemId: string;
    versionId: string;
    constructor(designSystemId: string, versionId: string);
    resolveTokenData(data: Array<TokenRemoteModel>, tokenGroups: Array<TokenGroup>, elementProperties: Array<ElementProperty>, elementViews: Array<ElementDataView>, elementValues: Array<ElementPropertyValue>, sources: Array<Source>): Array<Token>;
    constructStringValueForReplica(type: StringTokenType, replica: Token, override: TokenThemeOverrideRemoteModel): void;
    constructOptionValueForReplica(type: OptionTokenType, replica: Token, override: TokenThemeOverrideRemoteModel): void;
    constructDimensionValueForReplica(type: DimensionTokenType, replica: Token, override: TokenThemeOverrideRemoteModel): void;
    constructPureValueForReplica(type: PureTokenType, replica: Token, override: TokenThemeOverrideRemoteModel): void;
    resolveThemeData(data: TokenThemeRemoteModel, tokens: Array<Token>, tokenGroups: Array<TokenGroup>, sources: Array<Source>, allThemes?: Array<TokenThemeRemoteModel>, tokenCollections?: Array<DesignSystemCollection>): TokenTheme;
    makeThemedValuelessTokenReplica(token: Token, themeId: string, origin: TokenOrigin | null): Token;
    fixMultilayerShadowTokens(tokens: Array<ShadowToken>, groups: Array<TokenGroup>): void;
    fixMultilayerGradientTokens(tokens: Array<GradientToken>, groups: Array<TokenGroup>): void;
    fixMultilayerBlurTokens(tokens: Array<BlurToken>, groups: Array<TokenGroup>): void;
    findAssociatedTokens<T extends Token>(token: T, tokens: Array<T>, groups: Array<TokenGroup>): Array<T>;
    actualOriginTokenId(id: string | null): string;
    constructReferencedToken(rawData: TokenRemoteModel, properties: Array<ElementProperty>, values: Array<ElementPropertyValue>, path?: Set<unknown>): Token;
    constructReferencedThemedToken(rawData: TokenThemeOverrideRemoteModel, themeId: string, path?: Set<unknown>): Token;
    constructResolvedThemedToken(rawData: TokenThemeOverrideRemoteModel, referencedToken: Token, themeId: string): Token;
    constructResolvedToken(rawData: TokenRemoteModel, referencedToken: Token, properties: Array<ElementProperty>, values: Array<ElementPropertyValue>): Token;
    constructValueToken(rawData: TokenRemoteModel, properties: Array<ElementProperty>, values: Array<ElementPropertyValue>): Token;
    constructThemedValueToken(override: TokenThemeOverrideRemoteModel, themeId: string): Token;
    constructColorToken(rawData: ColorTokenRemoteModel, properties: Array<ElementProperty>, values: Array<ElementPropertyValue>): ColorToken;
    constructColorValue(rawValue: ColorTokenRemoteValue): ColorTokenValue;
    constructResolvedStringToken(rawData: StringTokenRemoteModel, properties: Array<ElementProperty>, values: Array<ElementPropertyValue>, tokenType: StringTokenType, referencedToken: AnyStringToken): AnyStringToken;
    constructStringToken(rawData: StringTokenRemoteModel, properties: Array<ElementProperty>, values: Array<ElementPropertyValue>, tokenType: StringTokenType): AnyStringToken;
    constructResolvedOptionToken(rawData: AnyOptionTokenRemoteModel, properties: Array<ElementProperty>, values: Array<ElementPropertyValue>, tokenType: OptionTokenType, referencedToken: AnyOptionToken): AnyOptionToken;
    constructOptionToken(rawData: AnyOptionTokenRemoteModel, properties: Array<ElementProperty>, values: Array<ElementPropertyValue>, tokenType: OptionTokenType): AnyOptionToken;
    constructTextLikeTokenValue(rawData: StringTokenRemoteValue): AnyStringTokenValue;
    constructOptionLikeTokenValue(rawData: AnyOptionTokenRemoteValue): AnyOptionTokenValue;
    constructResolvedDimensionToken(rawData: DimensionTokenRemoteModel, properties: Array<ElementProperty>, values: Array<ElementPropertyValue>, tokenType: DimensionTokenType, referencedToken: AnyDimensionToken): AnyDimensionToken;
    constructDimensionToken(rawData: DimensionTokenRemoteModel, properties: Array<ElementProperty>, values: Array<ElementPropertyValue>, tokenType: DimensionTokenType): AnyDimensionToken;
    constructDimensionValue(rawData: AnyDimensionTokenRemoteValue, type: TokenType.opacity): OpacityTokenValue;
    constructDimensionValue(rawData: AnyDimensionTokenRemoteValue, type: TokenType.fontSize): FontSizeTokenValue;
    constructDimensionValue(rawData: AnyDimensionTokenRemoteValue, type: TokenType.lineHeight): LineHeightTokenValue;
    constructDimensionValue(rawData: AnyDimensionTokenRemoteValue, type: TokenType.letterSpacing): LetterSpacingTokenValue;
    constructDimensionValue(rawData: AnyDimensionTokenRemoteValue, type: TokenType.paragraphSpacing): ParagraphSpacingTokenValue;
    constructDimensionValue(rawData: AnyDimensionTokenRemoteValue, type: TokenType.borderWidth): BorderWidthTokenValue;
    constructDimensionValue(rawData: AnyDimensionTokenRemoteValue, type: TokenType.radius): RadiusTokenValue;
    constructDimensionValue(rawData: AnyDimensionTokenRemoteValue, type: TokenType.duration): DurationTokenValue;
    constructDimensionValue(rawData: AnyDimensionTokenRemoteValue, type: TokenType.zIndex): ZIndexTokenValue;
    constructDimensionValue(rawData: AnyDimensionTokenRemoteValue, type: TokenType.dimension): DimensionTokenValue;
    constructDimensionValue(rawData: AnyDimensionTokenRemoteValue, type: TokenType.size): SizeTokenValue;
    constructDimensionValue(rawData: AnyDimensionTokenRemoteValue, type: TokenType.space): SpaceTokenValue;
    constructGradientToken(rawData: GradientTokenRemoteModel, properties: Array<ElementProperty>, values: Array<ElementPropertyValue>): GradientToken;
    constructGradientTokenValues(rawData: GradientTokenRemoteValue | GradientTokenRemoteData[]): GradientTokenValue[];
    constructGradientTokenValue(rawData: GradientTokenRemoteValue): GradientTokenValue;
    constructGradientStops(rawData: Array<GradientStopRemoteValue>): Array<GradientStopValue>;
    constructShadowToken(rawData: ShadowTokenRemoteModel, properties: Array<ElementProperty>, values: Array<ElementPropertyValue>): ShadowToken;
    constructShadowTokenValues(rawData: ShadowTokenRemoteValue | ShadowTokenRemoteData[]): ShadowTokenValue[];
    constructShadowTokenValue(rawData: ShadowTokenRemoteValue): ShadowTokenValue;
    constructBorderToken(rawData: BorderTokenRemoteModel, properties: Array<ElementProperty>, values: Array<ElementPropertyValue>): BorderToken;
    constructBorderTokenValue(rawData: BorderTokenRemoteValue): BorderTokenValue;
    constructTypographyToken(rawData: TypographyTokenRemoteModel, properties: Array<ElementProperty>, values: Array<ElementPropertyValue>): TypographyToken;
    constructTypographyTokenValue(rawData: TypographyTokenRemoteValue): TypographyTokenValue;
    constructBlurToken(rawData: BlurTokenRemoteModel, properties: Array<ElementProperty>, values: Array<ElementPropertyValue>): BlurToken;
    constructBlurTokenValue(rawData: BlurTokenRemoteValue): BlurTokenValue;
    /** Resolve token color value - meaning we are not creating new tokens, and require raw tokens to be already present */
    resolveReferencedColorTokenValue(token: ColorTokenRemoteData): ColorTokenValue;
    /** Resolve token dimension value - meaning we are not creating new tokens, and require raw tokens to be already present */
    resolveReferencedBorderWidthTokenValue(token: BorderWidthTokenRemoteData): BorderWidthTokenValue;
    resolveReferencedDimensionTokenValue(token: AnyDimensionTokenRemoteData, type: TokenType.opacity): OpacityTokenValue;
    resolveReferencedDimensionTokenValue(token: AnyDimensionTokenRemoteData, type: TokenType.fontSize): FontSizeTokenValue;
    resolveReferencedDimensionTokenValue(token: AnyDimensionTokenRemoteData, type: TokenType.lineHeight): LineHeightTokenValue;
    resolveReferencedDimensionTokenValue(token: AnyDimensionTokenRemoteData, type: TokenType.letterSpacing): LetterSpacingTokenValue;
    resolveReferencedDimensionTokenValue(token: AnyDimensionTokenRemoteData, type: TokenType.paragraphSpacing): ParagraphSpacingTokenValue;
    resolveReferencedDimensionTokenValue(token: AnyDimensionTokenRemoteData, type: TokenType.borderWidth): BorderWidthTokenValue;
    resolveReferencedDimensionTokenValue(token: AnyDimensionTokenRemoteData, type: TokenType.radius): RadiusTokenValue;
    resolveReferencedDimensionTokenValue(token: AnyDimensionTokenRemoteData, type: TokenType.duration): DurationTokenValue;
    resolveReferencedDimensionTokenValue(token: AnyDimensionTokenRemoteData, type: TokenType.zIndex): ZIndexTokenValue;
    resolveReferencedDimensionTokenValue(token: AnyDimensionTokenRemoteData, type: TokenType.dimension): DimensionTokenValue;
    resolveReferencedDimensionTokenValue(token: AnyDimensionTokenRemoteData, type: TokenType.size): SizeTokenValue;
    resolveReferencedDimensionTokenValue(token: AnyDimensionTokenRemoteData, type: TokenType.space): SpaceTokenValue;
    resolveReferencedStringTokenValue(token: AnyStringTokenRemoteData): AnyStringTokenValue;
    resolveReferencedGradientTokenValue(token: GradientTokenRemoteData): GradientTokenValue | GradientTokenValue[];
    resolveReferencedShadowTokenValue(token: ShadowTokenRemoteData): ShadowTokenValue | ShadowTokenValue[];
    resolveReferencedOptionTokenValue(token: AnyOptionTokenRemoteData): AnyOptionTokenValue;
}
