import { GdsElement } from '../../gds-element';
/**
 * Options for `@styleExpressionProperty`.
 */
export type StyleExpressionPropertyOptions = {
    /** The DOM-attribute to bind to. Same as the attribute option on Lits @property decorator */
    attribute?: string;
    /** The selector to use for the CSS rule. Defaults to `:host` */
    selector?: string;
    /** The CSS property to set. Defaults to the property key, i.e if the decorator is
     * attached to a property named `padding`, the default name of the CSS property will
     * also be `padding`. This option overrides that. */
    property?: string;
    /** A function that takes a value and returns a string. Defaults to `(value) => 'var(--gds-sys-space-${value})'`
     * This can be used to resolve the values into CSS variables for example. */
    valueTemplate?: (value: string) => string;
    /** A function that takes a property name and an array of values and returns a string. Defaults to
     * `(property, values) => `${property}: ${values.join(' ')};`
     * This can be used to customize the generated CSS. This runs after the `valueTemplate` is executed. */
    styleTemplate?: (property: string, values: string[]) => string;
    /** Set this to something unique if the property suffers from caching issues.
     * This can typically happen if a identically named combo of property and selector is used in multiple
     * components with different style or value templates.
     */
    cacheOverrideKey?: string;
    /**
     * If true, mirror the property value to a DOM attribute (for CSS selectors).
     */
    reflect?: boolean;
};
/**
 * A decorator that can be used to create a Style Expression Property.
 *
 * @param options Options for the decorator.
 */
export declare function styleExpressionProperty(options?: StyleExpressionPropertyOptions): <ElemClass extends GdsElement>(proto: ElemClass, descriptor: PropertyKey) => void;
