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 { StringTokenType, TokenType } from "../enums/SDKTokenType";
import { StringTokenRemoteModel, TokenRemoteModel } from "./remote/SDKRemoteTokenModel";
import { StringTokenRemoteValue } from "./remote/SDKRemoteTokenValue";
import { Token } from "./SDKToken";
import { AnyStringTokenValue, FontFamilyTokenValue, FontWeightTokenValue, ProductCopyTokenValue, StringTokenValue } from "./SDKTokenValue";
export declare class StringCategoryToken<T extends AnyStringTokenValue> extends Token {
    value: T;
    constructor(versionId: string, baseToken: TokenRemoteModel, value: T, alias: StringCategoryToken<T> | null, properties: Array<ElementProperty>, propertyValues: Array<ElementPropertyValue>);
    static create<TValue extends AnyStringTokenValue, TToken extends StringCategoryToken<TValue>>(this: new (...args: any[]) => TToken, type: StringTokenType, versionId: string, brandId: string, name: string, description: string, value: string | number, alias: TToken | null, properties: Array<ElementProperty>, propertyValues: Array<ElementPropertyValue>): TToken;
    static stringValueFromDefinitionOrReference(definition: any, referenceResolver: DTTokenReferenceResolver, tokenType: StringTokenType): AnyStringTokenValue | undefined;
    static stringValueFromDefinition(definition: string, tokenType: StringTokenType): AnyStringTokenValue;
    toWriteObject(): StringTokenRemoteModel;
    static valueToWriteObject(value: AnyStringTokenValue): {
        aliasTo: string | undefined;
        value: StringTokenRemoteValue;
    };
}
export declare class StringToken extends StringCategoryToken<StringTokenValue> {
    tokenType: TokenType.string;
}
export declare class ProductCopyToken extends StringCategoryToken<ProductCopyTokenValue> {
    tokenType: TokenType.productCopy;
}
export declare class FontFamilyToken extends StringCategoryToken<FontFamilyTokenValue> {
    tokenType: TokenType.fontFamily;
}
export declare class FontWeightToken extends StringCategoryToken<FontWeightTokenValue> {
    tokenType: TokenType.fontWeight;
}
export type AnyStringToken = StringToken | ProductCopyToken | FontFamilyToken | FontWeightToken;
export declare const resolveString: <TK extends StringTokenType>(type: TK) => TokenClassTypeMapToken[TK];
