import { ElementProperty } from "../elements/SDKElementProperty";
import { ElementPropertyValue } from "../elements/values/SDKElementPropertyValue";
import { TokenType } from "../enums/SDKTokenType";
import { TokenOrigin } from "../support/SDKTokenOrigin";
import { TokenRemoteModel } from "./remote/SDKRemoteTokenModel";
import { TokenValue } from "./SDKTokenValue";
export type TokenResolutionState = "default" | "fallthrough" | "override";
export declare class Token implements TokenValue {
    /** Persistent id of the token. This id never changes across versions */
    id: string;
    /** Version id of the token. This id changes whenever a new version is created, and each version of the token in version has different id */
    idInVersion: string;
    /** Persistent id of the brand. This id never changes as tokens can't be moved across the brands */
    brandId: string;
    themeId: string | null;
    designSystemVersionId: string;
    collectionId: string | null;
    name: string;
    description: string;
    tokenType: TokenType;
    origin: TokenOrigin | null;
    parentGroupId: string;
    tokenPath: Array<string> | null;
    sortOrder: number;
    properties: Array<ElementProperty>;
    propertyValues: Record<string, string | boolean | number>;
    createdAt: Date | null;
    updatedAt: Date | null;
    resolutionState: TokenResolutionState;
    constructor(model: TokenRemoteModel, versionId: string, properties: Array<ElementProperty>, propertyValues: Array<ElementPropertyValue>, empty?: boolean);
    setParentGroupId(parentGroupId: string | null): void;
    setTokenPath(tokenPath: Array<string>): void;
    setSortOrder(order: number): void;
    toBaseWriteObject(): TokenRemoteModel;
    toWriteObject(): TokenRemoteModel;
    copyWith<K extends "parentGroupId">(key: K, value: this[K]): this;
}
