import { Registration, ClassType, Token } from '@tsdi/ioc'; import { BindingPropMetadata } from './BindingPropMetadata'; export declare type RefChildDectorator = (target: Object, propertyKey: string | symbol) => void; /** * RefChild decorator * * @export * @interface IInjectableDecorator * @extends {IClassDecorator} */ export interface IRefChildDecorator { /** * define RefChild property decorator with binding property name. * * @param {string} bindingName binding property name */ (bindingName?: string): PropertyDecorator; /** * define RefChild property decorator with binding metadata. * * @param {string} bindingName binding property name */ (metadata: BindingPropMetadata): PropertyDecorator; /** * define RefChild property decorator with binding property name and provider. * * @param {(Registration | ClassType)} provider define provider to resolve value to the property. * @param {*} defaultVal default value. */ (provider: Registration | ClassType, defaultVal?: any): PropertyDecorator; /** * define RefChild property decorator with binding property name and provider. * * @param {string} bindingName binding property name * @param {*} defaultVal default value. */ (bindingName: string, defaultVal: any): PropertyDecorator; /** * define RefChild property decorator with binding property name and provider. * * @param {string} bindingName binding property name * @param {Token} provider define provider to resolve value to the property. * @param {*} defaultVal default value. */ (bindingName: string, provider: Token, defaultVal: any): PropertyDecorator; /** * define property decorator. */ (target: object, propertyKey: string | symbol, descriptor?: TypedPropertyDescriptor): void; } /** * RefChild decorator, define for class. use to define the class. it can setting provider to some token, singleton or not. it will execute [`RefChildLifecycle`] * * @RefChild */ export declare const RefChild: IRefChildDecorator;