import { ResourceMeta } from "../resource-meta";
import { WithId } from "../../../../fd-toolbox-core/types/resource-with-id";
import { ResourceDescriptionCase } from "./resource-description-case";
/**
 * Defines how a resource should be represented as text in the Ui.
 * Supports three modes: using a single property as description (default),
 * conditionally selecting properties based on another property's value,
 * or concatenating multiple properties together.
 *
 * Can be configured using the @{@link descriptionProperty}, @{@link descriptionBasedOnPropertyValue},
 * and @{@link concatDescription} decorators.
 */
export interface ResourceDescription {
    /** Defines how the resource description will be generated */
    type: ResourceDescriptionType;
    /**
     * Name of the property to use as the description when type is default.
     * Set using the @{@link descriptionProperty} decorator.
     */
    resourceDescriptionProperty?: string;
    /**
     * Property whose value will be checked to determine which case to use
     * when type is {@link resourceDescriptionTypes.basedOnPropertyValue}.
     */
    propertyToCheck?: string;
    /**
     * Array of different description cases, used when type is {@link resourceDescriptionTypes.basedOnPropertyValue}
     * or {@link resourceDescriptionTypes.concat}.
     */
    cases?: ResourceDescriptionCase[];
    /**
     * When true, indicates that the resource has a property used to store
     * the resource's image, which should be displayed alongside the description.
     * Typically, this property is named 'imageUrl'.
     */
    useImage?: boolean;
}
/**
 * Defines how to generate resource descriptions in the Ui.
 */
export declare const resourceDescriptionTypes: {
    /** Uses a single property as description. Set with @{@link descriptionProperty} */
    default: number;
    /** Changes description based on another property's value. Set with @{@link descriptionBasedOnPropertyValue} */
    basedOnPropertyValue: number;
    /** Combines multiple properties into one description. Set with @{@link concatDescription} */
    concat: number;
};
/**
 * Type for {@link resourceDescriptionTypes} enum.
 */
export type ResourceDescriptionType = (typeof resourceDescriptionTypes)[keyof typeof resourceDescriptionTypes];
export declare function getResourceImageDescription(resourceMeta: ResourceMeta, resource: WithId): Promise<import("../../../../../generated/npm-package/undocumented").ResourceImageDescription>;
export declare function getResourceDescriptionValue(resourceMeta: ResourceMeta, resource: WithId): Promise<string>;
export declare function getResourceDescriptionImageUrl(resourceMeta: ResourceMeta, resource: WithId): Promise<string>;
/** @internal */
export declare function getEmptyResourceDescription(): ResourceDescription;
