import { TokenType } from "../../../model/enums/SDKTokenType";
import { TokenGroup } from "../../../model/groups/SDKTokenGroup";
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 { AnyDimensionTokenValue, AnyOptionToken, AnyOptionTokenValue, AnyStringTokenValue, BorderTokenValue, ColorTokenValue, GradientTokenValue, ShadowTokenValue, TypographyTokenValue } from "../../../model/tokens/SDKTokenValue";
import { TypographyToken } from "../../../model/tokens/SDKTypographyToken";
import { JSONBuilderNamingOption, TokenJSONBuilderOptionsInternal } from "../SDKToolsJSONBuilder";
/** Token transformer that allow generic transform of tokens to different destinations, like Style Dictionary or Figma Tokens representation */
export declare class TokenJSONElementTransformer {
    /** Represent a singular token as SD object */
    representToken(token: Token, allTokens: Map<string, Token>, allGroups: Array<TokenGroup>, options: TokenJSONBuilderOptionsInternal): object;
    /** Represent full color token, including wrapping meta-information such as user description */
    representColorToken(token: ColorToken, allTokens: Map<string, Token>, allGroups: Array<TokenGroup>, options: TokenJSONBuilderOptionsInternal): object;
    /** Represent full border token, including wrapping meta-information such as user description */
    representBorderToken(token: BorderToken, allTokens: Map<string, Token>, allGroups: Array<TokenGroup>, options: TokenJSONBuilderOptionsInternal): object;
    /** Represent full gradient token, including wrapping meta-information such as user description */
    representGradientToken(token: GradientToken, allTokens: Map<string, Token>, allGroups: Array<TokenGroup>, options: TokenJSONBuilderOptionsInternal): object;
    /** Represent full dimension token, including wrapping meta-information such as user description */
    representDimensionToken(token: AnyDimensionToken, allTokens: Map<string, Token>, allGroups: Array<TokenGroup>, options: TokenJSONBuilderOptionsInternal): object;
    /** Represent full shadow token, including wrapping meta-information such as user description */
    representShadowToken(token: ShadowToken, allTokens: Map<string, Token>, allGroups: Array<TokenGroup>, options: TokenJSONBuilderOptionsInternal): object;
    /** Represent full text token, including wrapping meta-information such as user description */
    representStringToken(token: AnyStringToken, allTokens: Map<string, Token>, allGroups: Array<TokenGroup>, options: TokenJSONBuilderOptionsInternal): object;
    representOptionToken(token: AnyOptionToken, allTokens: Map<string, Token>, allGroups: Array<TokenGroup>, options: TokenJSONBuilderOptionsInternal): object;
    /** Represent full typography token, including wrapping meta-information such as user description */
    representTypographyToken(token: TypographyToken, allTokens: Map<string, Token>, allGroups: Array<TokenGroup>, options: TokenJSONBuilderOptionsInternal): object;
    /** Represent color token value either as reference or as plain representation */
    representColorTokenValue(value: ColorTokenValue, allTokens: Map<string, Token>, allGroups: Array<TokenGroup>, options: TokenJSONBuilderOptionsInternal): void;
    /** Represent dimension token value either as reference or as plain representation */
    representDimensionTokenValue(value: AnyDimensionTokenValue, allTokens: Map<string, Token>, allGroups: Array<TokenGroup>, options: TokenJSONBuilderOptionsInternal): void;
    /** Represent text token value either as reference or as plain representation */
    representStringTokenValue(value: AnyStringTokenValue, allTokens: Map<string, Token>, allGroups: Array<TokenGroup>, options: TokenJSONBuilderOptionsInternal): void;
    representOptionTokenValue(value: AnyOptionTokenValue, allTokens: Map<string, Token>, allGroups: Array<TokenGroup>, options: TokenJSONBuilderOptionsInternal): void;
    /** Represent typography token value either as reference or as plain representation */
    representTypographyTokenValue(value: TypographyTokenValue, allTokens: Map<string, Token>, allGroups: Array<TokenGroup>, options: TokenJSONBuilderOptionsInternal): void;
    /** Represent border token value either as reference or as plain representation */
    representBorderTokenValue(value: BorderTokenValue, allTokens: Map<string, Token>, allGroups: Array<TokenGroup>, options: TokenJSONBuilderOptionsInternal): void;
    /** Represent shadow token value either as reference or as plain representation */
    representShadowTokenValue(values: ShadowTokenValue[], allTokens: Map<string, Token>, allGroups: Array<TokenGroup>, options: TokenJSONBuilderOptionsInternal): void;
    /** Represent gradient token value either as reference or as plain representation */
    representGradientTokenValue(value: GradientTokenValue[], allTokens: Map<string, Token>, allGroups: Array<TokenGroup>, options: TokenJSONBuilderOptionsInternal): void;
    /** Retrieve wrapper to certain token (referenced by name) pointing to token value */
    referenceWrapper(reference: string, options: TokenJSONBuilderOptionsInternal): void;
    /** Retrieve token wrapper containing its metadata and value information (used as container for each defined token) */
    tokenWrapper(token: Token, value: any, options: TokenJSONBuilderOptionsInternal, groups: Array<TokenGroup>): object;
    /** Create full reference name representing token. Such name can, for example, look like: [g1].[g2].[g3].[g4].[token-name] */
    referenceName(referenceId: string, allTokens: Map<string, Token>, allGroups: Array<TokenGroup>, options: TokenJSONBuilderOptionsInternal): string;
    /** Retrieve safe token name made out of normal token name
     * This replace spaces with dashes, also change anything non-alphanumeric char to it as well.
     * For example, ST&RK Industries will be changed to st-rk-industries
     */
    safeTokenName(token: Token, naming: JSONBuilderNamingOption): string;
    /** Retrieve safe group name made out of normal group name
     * This replace spaces with dashes, also change anything non-alphanumeric char to it as well.
     * For example, ST&RK Industries will be changed to st-rk-industries
     */
    safeGroupName(group: TokenGroup): string;
    processedName(name: string, naming: JSONBuilderNamingOption): string;
    /** Retrieve human-readable token type in unified fashion, used both as token type and as token master group */
    typeLabel(type: TokenType): "border" | "color" | "gradient" | "measure" | "shadow" | "text" | "textCase" | "textDecoration" | "visibility" | "typography";
    /** Retrieve chain of groups up to a specified group, ordered from parent to children */
    referenceGroupChain(containingGroup: TokenGroup, allGroups: Array<TokenGroup>): Array<TokenGroup>;
}
