import { EntityConstructor, IBasicI18NContract, UnnamedPartial } from "./base"; export declare const COMPONENT_DEFINE = "ambjs::component_define"; export declare const REQUIRE_DEFINE = "ambjs::require_define"; export declare function defineRequire(target: EntityConstructor, metadata: IRequireContract[]): void; export declare function resolveRequire(target: EntityConstructor, defaults?: IRequireContract[]): IRequireContract[]; export declare function defineComponent(target: EntityConstructor, metadata: IComponentContract): void; export declare function resolveComponent(target: EntityConstructor, defaults?: Partial): IComponentContract; export interface IComponentContract extends IBasicI18NContract { name: string | null; version: string | number; displayName: string | null; dependencies: Record; } declare type RequireFields = { [key in keyof Omit]?: T[key] | ((fields: any) => T[key]); }; export declare type IRequireInputsContract = T extends EntityConstructor ? RequireFields & Record : never; export interface IRequireContract { type: string; scopeId?: string | symbol; entity: EntityConstructor; inputs: IRequireInputsContract; } interface IExtend { parent: EntityConstructor | null; } export declare function Component(name: string): ClassDecorator; export declare function Component(params: UnnamedPartial): ClassDecorator; export declare function Require(entity: EntityConstructor): ClassDecorator; export declare function Require(entity: EntityConstructor, scopeId: string | symbol): ClassDecorator; export declare function Require(entity: EntityConstructor, inputs: IRequireInputsContract>): ClassDecorator; export declare function Require(entity: EntityConstructor, scopeId: string | symbol, inputs: IRequireInputsContract>): ClassDecorator; export {};