import { ComponentInterface } from '../stencil-public-runtime';
declare type ConstructibleStyleDecorator = (target: ComponentInterface, propertyKey: string) => void;
/**
 * Dynamically create a constructible stylesheet which is applied to the component.
 * The stylesheet is then cached for future instances of the component.
 * @usage
As a string:
```
@ConstructableStyle() style = `.bg { background: url('assets/${ this.mode }/bg.png'); }`;
```
As a function:
```
@ConstructableStyle() style = () => `.bg { background: url('assets/${ this.mode }/bg.png'); }`;
```
 * @param opts - optional `cacheKeyProperty` - in case an instance of a component could produce different styles based on variables.
 * @returns `@ConstructableStyle` decorator
 */
export declare function ConstructibleStyle(opts?: ConstructibleStyleOptions): ConstructibleStyleDecorator;
export interface ConstructibleStyleOptions {
    /**
     * Set this in case an instance of a component could produce different styles based on variables.
     * This will ensure that you get new styles for each mode.
     * @example
  ```
  @Prop() mode: string;
  @ConstructableStyle({ cacheKeyProperty: "mode" }) style = `.bg { background: url('assets/${ this.mode }/bg.png'); }`;
  ```
     */
    cacheKeyProperty?: string;
}
export {};
