import type { IConstruct } from 'constructs';
import type { InjectionContext, IPropertyInjector } from './prop-injectors';
/**
 * This symbol is needed to identify PropertyInjectors.
 */
export declare const PROPERTY_INJECTORS_SYMBOL: unique symbol;
/**
 * This is called by the constructor to find and apply the PropertyInjector for that Construct.
 * @param uniqueId - uniqueId of the Construct
 * @param originalProps - original constructor properties
 * @param context - context of the injection
 * @returns a new props with default values.
 */
export declare function applyInjectors(uniqueId: string, originalProps: any, context: InjectionContext): any;
/**
 * This function finds the PropertyInjectors in the scope by walking up the scope tree.
 * It then returns the Injector associated with uniqueId, or undefined if it is not found.
 * Borrowed logic from Stack.of.
 */
export declare function findInjectorFromConstruct(scope: IConstruct, uniqueId: string): IPropertyInjector | undefined;
