import { Part } from './part.js';
import { PartComponent } from './component.js';
/**
 * Automatically registers the type and name for a given part
 * Example:
 * ```ts
 * @part('my-part')
 * class MyPart extends Part{}
 * ```
 * @param type Type of the part
 * @param name Label for the part
 */
export declare function part(type: string): (constructor: typeof Part) => void;
/**
 * Automatically register the component and bind them to the Part property
 * Example:
 * ```ts
 * class MyPart extends Part {
 *     @component(Transform)
 *     public transform : Transform;
 * }
 * ```
 * @param comp Component class for a given property
 */
export declare function component(comp: typeof PartComponent): (this: any, target: any, key: string) => void;
interface IPropertiesOptions {
    type: any;
    value: any;
    noReset?: boolean;
}
/**
 * Automatically register the component and bind them to the Part property
 * Example:
 * ```ts
 * class MyComponent extends Component {
 *     @property(Number)
 *     public x : number;
 * }
 * ```
 * @param comp Component class for a given property
 */
export declare function property(propOptions: IPropertiesOptions): (this: any, target: any, key: string) => void;
export {};
