import 'reflect-metadata';
import { type ClassToken, type InjectionToken, type ProvideOptions } from './metadata';
/**
 * 注册为可注入的 Provider。
 *
 * @param idOrOptions - 可省略；或自定义 id；或 `{ id, scope }`（作用域只在这里配置）
 *
 * @example
 * ```ts
 * @Provide()
 * export class AdminAuthService {}
 *
 * @Provide('base.auth.service')
 * export class AdminAuthService {}
 *
 * @Provide({ id: 'base.auth.service', scope: ScopeEnum.Request })
 * export class OrderContext {}
 * ```
 */
export declare function Provide(idOrOptions?: string | symbol | ProvideOptions): (target: ClassToken) => void;
/**
 * 属性注入。
 *
 * @param token - 类、字符串 id 或 symbol；省略则用属性 TS 类型
 *
 * @example
 * ```ts
 * @Inject()
 * auth: AdminAuthService
 *
 * @Inject('base.auth.service')
 * auth: AdminAuthService
 * ```
 */
export declare function Inject(token?: InjectionToken): (target: object, propertyKey: string | symbol) => void;
