import { ElementPropertyOption, ElementPropertyOptionCreationModel, ElementPropertyOptionRemoteModel, ElementPropertyOptionUpdateModel } from "./SDKElementPropertyOption";
export declare enum ElementPropertyType {
    text = "Text",
    number = "Number",
    boolean = "Boolean",
    select = "Select",
    generic = "Generic",
    link = "Link",
    url = "URL"
}
export declare enum ElementPropertyTargetElementType {
    token = "Token",
    component = "Component",
    documentationPage = "DocumentationPage"
}
export declare enum ElementPropertyLinkElementType {
    documentationItem = "DocumentationPage",
    figmaComponent = "FigmaComponent"
}
export type ElementPropertyRemoteModel = {
    id: string;
    persistentId: string;
    designSystemVersionId: string;
    meta: {
        name: string;
        description: string;
    };
    codeName: string;
    isImmutable: boolean;
    type: ElementPropertyType;
    targetElementType: ElementPropertyTargetElementType;
    linkElementType?: ElementPropertyLinkElementType;
    options?: Array<ElementPropertyOptionRemoteModel>;
};
export type ElementPropertyCreationModel = {
    type: ElementPropertyType;
    name: string;
    codeName: string;
    columnWidth: number;
    linkElementType?: ElementPropertyLinkElementType;
    description?: string;
    options?: Array<ElementPropertyOptionCreationModel>;
};
export type ElementPropertyUpdateModel = {
    name: string;
    description: string;
    codeName: string;
    options?: Array<ElementPropertyOptionUpdateModel>;
};
export declare class ElementProperty {
    /** Versioned id of the element property (changes with version) */
    idInVersion: string;
    /** Persistent id of the element property (stays across versions) */
    id: string;
    /** Specific design system version this property is contained in */
    designSystemVersionId: string;
    /** Property name */
    name: string;
    /** Code property name - guaranteed to be present, unique and code-safe */
    codeName: string;
    /** Property description */
    description: string | null;
    /** Whether anything about this definition can be modified.
     * Its respective column can still be re-ordered and resized */
    isImmutable: boolean;
    /** Base type */
    propertyType: ElementPropertyType;
    /** Type of design system object this property is contained in - for example, if this property was configured for DS components, this will be of type `component` */
    targetElementType: ElementPropertyTargetElementType;
    /** Type of design system object this property can be configured with */
    linkElementType: ElementPropertyLinkElementType | null;
    /** Property options, only available for `select` type */
    options: Array<ElementPropertyOption> | null;
    constructor(model: ElementPropertyRemoteModel);
    /** Constructs directly manipulable update object */
    toUpdateObject(): ElementPropertyUpdateModel;
}
