import { InjectMetadata } from '../inject-metadata';
import { InjectState } from '../inject-state';
import { Optional } from '../optional';
import { TypeArgument } from '../type-argument';
import { TypeMetadata } from '../type-metadata';
/**
 * Represents unresolved inject state.
 *
 * @type {ResolvedInjectState<TDeclaringObject, TObject>}
 */
export declare class UnresolvedInjectState<TDeclaringObject, TObject> implements InjectState<TDeclaringObject, TObject> {
    /**
     * Inject metadata for which state is defined.
     *
     * @type {InjectMetadata<TDeclaringObject, TObject>}
     */
    readonly injectMetadata: InjectMetadata<TDeclaringObject, TObject>;
    /**
     * Resolved inject state.
     *
     * @type {ResolvedInjectState<TDeclaringObject, TObject>}
     */
    private resolvedInjectState?;
    /**
     * Constructor.
     *
     * @param {InjectMetadata<TDeclaringObject, TObject>} injectMetadata Inject metadata for which state is defined.
     */
    constructor(injectMetadata: InjectMetadata<TDeclaringObject, TObject>);
    /**
     * Gets parameter key to inject within a type context.
     *
     * @returns {Optional<string>} Key.
     */
    get key(): Optional<string>;
    /**
     * Gets type argument of the injection.
     *
     * @type {TypeArgument<TObject>} Type argument.
     */
    get typeArgument(): TypeArgument<TObject>;
    /**
     * Gets type metadata of the injection.
     *
     * @type {TypeMetadata<TObject>} Type metadata.
     */
    get typeMetadata(): TypeMetadata<TObject>;
}
//# sourceMappingURL=unresolved-inject-state.d.ts.map