/** @packageDocumentation
 * @module Properties
 */
import { PropertyDescription } from "./Description";
import { PropertyValue } from "./Value";
/** Properties for the [[PropertyRecord]] with link info supplied
 * @public
 */
export interface LinkElementsInfo {
    /** Callback to link click event */
    onClick: (text: string) => void;
    /**
     * Function that specifies which parts of display value need to be clickable.
     *
     * Letters will be picked from __start__ index to __end__ index. __end__ index is not included.
     * For a string _"example"_ and a match ```{ start: 1, end: 3 }```, _"xa"_ will be clickable.
     */
    matcher?: (displayValue: string) => Array<{
        start: number;
        end: number;
    }>;
}
/**
 * PropertyRecord contains instance information about a Property, including a
 * value that can be edited using a PropertyEditor and converted using a TypeConverter.
 * @public
 */
export declare class PropertyRecord {
    /** Value for the property */
    readonly value: PropertyValue;
    /** The property description containing metadata for the property */
    readonly property: PropertyDescription;
    /** Description for the property */
    description?: string;
    /** Indicates if the property is read-only */
    isReadonly?: boolean;
    /** Indicates if the property is disabled */
    isDisabled?: boolean;
    /** Indicates if the property record represents merged properties */
    isMerged?: boolean;
    /** Indicates if the property should be automatically expanded */
    autoExpand?: boolean;
    /** Map containing any additional data */
    extendedData?: {
        [key: string]: any;
    };
    /** Properties for link logic */
    links?: LinkElementsInfo;
    /** Constructs a PropertyRecord instance */
    constructor(value: PropertyValue, property: PropertyDescription);
    /** Creates a copy of this PropertyRecord with a new value and optionally a new PropertyDescription */
    copyWithNewValue(newValue: PropertyValue, newDescription?: PropertyDescription): PropertyRecord;
    /** Gets this property record value children records */
    getChildrenRecords(): PropertyRecord[];
    /** Creates a PropertyRecord based on a value string and an optional property description or name */
    static fromString(value: string, descriptionOrName?: PropertyDescription | string): PropertyRecord;
}
//# sourceMappingURL=Record.d.ts.map