import { BlurType } from "../enums/SDKBlurType";
import { BorderPosition } from "../enums/SDKBorderPosition";
import { BorderStyle } from "../enums/SDKBorderStyle";
import { GradientType } from "../enums/SDKGradientType";
import { ShadowType } from "../enums/SDKShadowType";
import { TokenType } from "../enums/SDKTokenType";
import { LineHeightUnit, MsUnit, PxUnit, RawUnit, SizeUnit, Unit } from "../enums/SDKUnit";
import { TokenOrigin } from "../support/SDKTokenOrigin";
import { BlurToken } from "./SDKBlurToken";
import { BorderToken } from "./SDKBorderToken";
import { ColorToken } from "./SDKColorToken";
import { AnyDimensionToken } from "./SDKDimensionToken";
import { GradientToken } from "./SDKGradientToken";
import { ShadowToken } from "./SDKShadowToken";
import { AnyStringToken } from "./SDKStringToken";
import { TextCaseToken } from "./SDKTextCaseToken";
import { TextDecorationToken } from "./SDKTextDecorationToken";
import { Token } from "./SDKToken";
import { TypographyToken } from "./SDKTypographyToken";
import { VisibilityToken } from "./SDKVisibilityToken";
export type TokenValue = {
    id: string;
    name: string;
    description: string;
    tokenType: TokenType;
    origin: TokenOrigin | null;
};
export type ColorTokenValue = {
    color: ColorValue;
    opacity: OpacityTokenValue;
    referencedTokenId: string | null;
};
export type ColorValue = {
    r: number;
    g: number;
    b: number;
    referencedTokenId: string | null;
};
export type TypographyTokenValueTypes = FontFamilyTokenValue | FontWeightTokenValue | FontSizeTokenValue | TextDecorationTokenValue | TextCaseTokenValue | LetterSpacingTokenValue | LineHeightTokenValue | ParagraphSpacingTokenValue;
export type TypographyTokenValue = {
    fontFamily: FontFamilyTokenValue;
    fontWeight: FontWeightTokenValue;
    fontSize: FontSizeTokenValue;
    textDecoration: TextDecorationTokenValue;
    textCase: TextCaseTokenValue;
    letterSpacing: LetterSpacingTokenValue;
    lineHeight: LineHeightTokenValue | null;
    paragraphIndent: ParagraphSpacingTokenValue;
    paragraphSpacing: ParagraphSpacingTokenValue;
    referencedTokenId: string | null;
};
export type ShadowTokenValue = {
    color: ColorTokenValue;
    x: number;
    y: number;
    radius: number;
    spread: number;
    opacity?: OpacityTokenValue;
    type: ShadowType;
    referencedTokenId: string | null;
};
export type DimensionTokenValue = {
    unit: Unit;
    measure: number;
    referencedTokenId: string | null;
};
export type SizeTokenValue = {
    unit: SizeUnit;
    measure: number;
    referencedTokenId: string | null;
};
export type SpaceTokenValue = {
    unit: SizeUnit;
    measure: number;
    referencedTokenId: string | null;
};
export type OpacityTokenValue = {
    unit: RawUnit;
    measure: number;
    referencedTokenId: string | null;
};
export type FontSizeTokenValue = {
    unit: SizeUnit;
    measure: number;
    referencedTokenId: string | null;
};
export type LineHeightTokenValue = {
    unit: LineHeightUnit;
    measure: number;
    referencedTokenId: string | null;
};
export type LetterSpacingTokenValue = {
    unit: SizeUnit;
    measure: number;
    referencedTokenId: string | null;
};
export type ParagraphSpacingTokenValue = {
    unit: SizeUnit;
    measure: number;
    referencedTokenId: string | null;
};
export type BorderWidthTokenValue = {
    unit: PxUnit;
    measure: number;
    referencedTokenId: string | null;
};
export type RadiusTokenValue = {
    unit: PxUnit;
    measure: number;
    referencedTokenId: string | null;
};
export type DurationTokenValue = {
    unit: MsUnit;
    measure: number;
    referencedTokenId: string | null;
};
export type ZIndexTokenValue = {
    unit: RawUnit;
    measure: number;
    referencedTokenId: string | null;
};
export type AnyDimensionTokenValue = DimensionTokenValue | SizeTokenValue | SpaceTokenValue | OpacityTokenValue | FontSizeTokenValue | LineHeightTokenValue | LetterSpacingTokenValue | ParagraphSpacingTokenValue | BorderWidthTokenValue | RadiusTokenValue | DurationTokenValue | ZIndexTokenValue;
export type BorderTokenValue = {
    color: ColorTokenValue;
    width: BorderWidthTokenValue;
    position: BorderPosition;
    style: BorderStyle;
    referencedTokenId: string | null;
};
export type GradientTokenValue = {
    to: {
        x: number;
        y: number;
    };
    from: {
        x: number;
        y: number;
    };
    type: GradientType;
    aspectRatio: number;
    stops: Array<GradientStopValue>;
    referencedTokenId: string | null;
};
export type GradientStopValue = {
    position: number;
    color: ColorTokenValue;
};
export type StringTokenValue = {
    text: string;
    referencedTokenId: string | null;
};
export type ProductCopyTokenValue = {
    text: string;
    referencedTokenId: string | null;
};
export type FontFamilyTokenValue = {
    text: string;
    referencedTokenId: string | null;
};
export type FontWeightTokenValue = {
    text: string;
    referencedTokenId: string | null;
};
export type AnyStringTokenValue = StringTokenValue | ProductCopyTokenValue | FontFamilyTokenValue | FontWeightTokenValue;
export type TextCaseTokenValue = {
    value: string;
    options?: string[];
    referencedTokenId: string | null;
};
export type TextDecorationTokenValue = {
    value: string;
    options?: string[];
    referencedTokenId: string | null;
};
export type VisibilityTokenValue = {
    value: string;
    options?: string[];
    referencedTokenId: string | null;
};
export type AnyOptionTokenValue = TextCaseTokenValue | TextDecorationTokenValue | VisibilityTokenValue;
export type AnyOptionToken = TextCaseToken | TextDecorationToken | VisibilityToken;
export type BlurTokenValue = {
    type: BlurType;
    radius: DimensionTokenValue;
    referencedTokenId: string | null;
};
export type AnyTokenValue = ColorTokenValue | AnyStringTokenValue | TypographyTokenValue | ShadowTokenValue[] | AnyDimensionTokenValue | BorderTokenValue | GradientTokenValue[] | BlurTokenValue | AnyOptionTokenValue;
export type AnyToken = ColorToken | AnyStringToken | TypographyToken | ShadowToken | AnyDimensionToken | BorderToken | GradientToken | BlurToken | AnyOptionToken;
export type AnySingleLayerToken = Exclude<AnyToken, ShadowToken | GradientToken>;
export type AnyMultiLayerToken = ShadowToken | GradientToken;
export type AnyMultiLayerTokenValue = ShadowTokenValue | GradientTokenValue;
export type AnyPlainTokenValue = Exclude<AnyTokenValue, ShadowTokenValue[] | GradientTokenValue[]> | ShadowTokenValue | GradientTokenValue;
export type RawValue<T extends {
    referencedTokenId: string;
}> = Omit<T, "referencedTokenId">;
export declare const getReferencedTokens: (token: AnyToken, allTokens: Map<string, Token>) => Token[];
export declare const getSingleReferencedTokenId: (token: AnyToken, allTokens: Map<string, Token>) => string | undefined;
export declare const checkSingleReferencedTokenById: (token: AnyToken, candidateId: string, allTokens: Map<string, Token>) => boolean;
export declare const replaceReferencedTokenIds: (token: AnyToken, currentId: string, newId: string, allTokens: Map<string, Token>) => void;
export declare const replaceReferencedTokenByIds: (token: Token, existingTokenId: string, newTokenId: string) => void;
export declare const replaceOriginReferencePersistentIdByIds: (token: Token, existingTokenId: string, newTokenId: string) => void;
export declare const replaceReferencedToken: (token: Token, existingToken: AnyToken, newToken: AnyToken) => void;
