import { type BuildResolver, type Constructor, type DisposableResolver, type FunctionReturning, asClass, asFunction, asValue, type Resolver as AWResolver } from 'awilix';
export type ResolvableInjectable<T> = Constructor<T> & T & FunctionReturning<T>;
export type ResolvedInjectable<T> = AWResolver<T> | (BuildResolver<T> & DisposableResolver<T>);
type Primitive = typeof asClass | typeof asValue | typeof asFunction;
export declare class Resolver {
    static CLASS: Resolver;
    static VALUE: Resolver;
    static FUNCTION: Resolver;
    private readonly id;
    private readonly primitive;
    private constructor();
    getId(): string;
    isClassOrFunction(): boolean;
    asPrimitive(): Primitive;
    /**
     * Wrap the target component to an awilix resolver.
     * @param {object} target the target component to wrap
     * @returns {any} the awilix resolver
     */
    wrap(target: ResolvableInjectable<any>): ResolvedInjectable<any>;
    /**
     * Lookup a resolver from it name
     * @param {String} name the name of the resolver to lookup
     *
     * @returns {Scope} the {@link Resolver} retrieved from it name
     *
     * @default Scope.SINGLETON
     *
     * @public
     */
    static fromName(name: string): Resolver;
}
export {};
