import { DTTokenReferenceResolver } from "../../tools/design-tokens/utilities/SDKDTTokenReferenceResolver";
import { TokenClassTypeMapToken } from "../../utils/TokenUtils";
import { ElementProperty } from "../elements/SDKElementProperty";
import { ElementPropertyValue } from "../elements/values/SDKElementPropertyValue";
import { DimensionTokenType, TokenType } from "../enums/SDKTokenType";
import { Unit } from "../enums/SDKUnit";
import { DimensionTokenRemoteModel, TokenRemoteModel } from "./remote/SDKRemoteTokenModel";
import { AnyDimensionTokenRemoteValue } from "./remote/SDKRemoteTokenValue";
import { Token } from "./SDKToken";
import { AnyDimensionTokenValue, BorderWidthTokenValue, DimensionTokenValue, DurationTokenValue, FontSizeTokenValue, LetterSpacingTokenValue, LineHeightTokenValue, OpacityTokenValue, ParagraphSpacingTokenValue, RadiusTokenValue, SizeTokenValue, SpaceTokenValue, ZIndexTokenValue } from "./SDKTokenValue";
export declare class DimensionCategoryToken<T extends AnyDimensionTokenValue> extends Token {
    value: T;
    constructor(versionId: string, baseToken: TokenRemoteModel, value: T, alias: DimensionCategoryToken<T> | null, properties: Array<ElementProperty>, propertyValues: Array<ElementPropertyValue>);
    static create<TValue extends AnyDimensionTokenValue, TToken extends DimensionCategoryToken<TValue>>(this: new (...args: any[]) => TToken, type: DimensionTokenType, versionId: string, brandId: string, name: string, description: string, value: string | number, alias: TToken | null, properties: Array<ElementProperty>, propertyValues: Array<ElementPropertyValue>): TToken;
    static getCompatibleUnit(unit: Unit, type: DimensionTokenType): Unit;
    static getCompatibleMeasure(unit: Unit, type: DimensionTokenType, measure: number): number;
    static getDefaultUnit(type: DimensionTokenType, parsedDefinition?: number): Unit.pixels | Unit.ms | Unit.raw;
    static dimensionValueFromDefinition(definition: string | number, type: DimensionTokenType): OpacityTokenValue;
    static parseDimension(definition: string, type: DimensionTokenType): {
        measure: number;
        unit: Unit;
    };
    static dimensionValueFromDefinitionOrReference(definition: any, referenceResolver: DTTokenReferenceResolver, tokenType: DimensionTokenType): BorderWidthTokenValue;
    toString(): string;
    static valueToString(value: AnyDimensionTokenValue, options?: {
        maxNumberOfDecimals?: number;
        clipTrailingZeroes?: boolean;
    }): string;
    static numberToString(value: number, options?: {
        maxNumberOfDecimals?: number;
        clipTrailingZeroes?: boolean;
    }): string;
    static unitToString(unit: Unit): string;
    toWriteObject(): DimensionTokenRemoteModel;
    static valueToWriteObject(value: AnyDimensionTokenValue): {
        aliasTo: string | undefined;
        value: AnyDimensionTokenRemoteValue;
    };
    static valueToInternalWriteObject(value: AnyDimensionTokenValue | null): AnyDimensionTokenValue | null;
}
export declare class DimensionToken extends DimensionCategoryToken<DimensionTokenValue> {
    tokenType: TokenType.dimension;
}
export declare class SizeToken extends DimensionCategoryToken<SizeTokenValue> {
    tokenType: TokenType.size;
}
export declare class SpaceToken extends DimensionCategoryToken<SpaceTokenValue> {
    tokenType: TokenType.space;
}
export declare class OpacityToken extends DimensionCategoryToken<OpacityTokenValue> {
    tokenType: TokenType.opacity;
}
export declare class FontSizeToken extends DimensionCategoryToken<FontSizeTokenValue> {
    tokenType: TokenType.fontSize;
}
export declare class LineHeightToken extends DimensionCategoryToken<LineHeightTokenValue> {
    tokenType: TokenType.lineHeight;
}
export declare class LetterSpacingToken extends DimensionCategoryToken<LetterSpacingTokenValue> {
    tokenType: TokenType.letterSpacing;
}
export declare class ParagraphSpacingToken extends DimensionCategoryToken<ParagraphSpacingTokenValue> {
    tokenType: TokenType.paragraphSpacing;
}
export declare class BorderWidthToken extends DimensionCategoryToken<BorderWidthTokenValue> {
    tokenType: TokenType.borderWidth;
}
export declare class RadiusToken extends DimensionCategoryToken<RadiusTokenValue> {
    tokenType: TokenType.radius;
}
export declare class DurationToken extends DimensionCategoryToken<DurationTokenValue> {
    tokenType: TokenType.duration;
}
export declare class ZIndexToken extends DimensionCategoryToken<ZIndexTokenValue> {
    tokenType: TokenType.zIndex;
}
export type AnyDimensionToken = DimensionToken | SizeToken | SpaceToken | OpacityToken | FontSizeToken | LineHeightToken | LetterSpacingToken | ParagraphSpacingToken | BorderWidthToken | RadiusToken | DurationToken | ZIndexToken;
export declare const resolveDimension: <TK extends DimensionTokenType>(type: TK) => TokenClassTypeMapToken[TK];
