import type { Token } from '../../../../domain/type/index';
export declare class ResolutionEngine {
    private readonly ASSERT_KEY;
    private readonly ENSURE_ACTIVE;
    private readonly ENSURE_NOT_DISPOSING;
    private readonly GET_SCOPE_ID;
    private readonly NOTIFY_ON_ERROR;
    private readonly NOTIFY_ON_START;
    private readonly NOTIFY_ON_SUCCESS;
    private readonly ON_ASYNC_RESOLUTION_END;
    private readonly ON_ASYNC_RESOLUTION_START;
    private readonly RESOLVE_ALL_ASYNC_INTERNAL;
    private readonly RESOLVE_ALL_SYNC_INTERNAL;
    private readonly RESOLVE_ASYNC_INTERNAL;
    private readonly RESOLVE_SYNC_INTERNAL;
    constructor(options: {
        assertKey: <T>(dependencyKey: Token<T>) => symbol;
        ensureActive: () => void;
        ensureNotDisposing: () => void;
        getScopeId: () => string;
        notifyOnError: (tokenSymbol: symbol, isAsync: boolean, isResolveAll: boolean, isOptional: boolean, scopeId: string, error: Error) => void;
        notifyOnStart: (tokenSymbol: symbol, isAsync: boolean, isResolveAll: boolean, isOptional: boolean, scopeId: string) => void;
        notifyOnSuccess: (tokenSymbol: symbol, isAsync: boolean, isResolveAll: boolean, isOptional: boolean, scopeId: string, result?: unknown) => void;
        onAsyncResolutionEnd: () => void;
        onAsyncResolutionStart: () => void;
        resolveAllAsyncInternal: (tokenSymbol: symbol, path: Array<symbol>, visitedTokens: ReadonlySet<symbol>) => Promise<Array<unknown>>;
        resolveAllSyncInternal: (tokenSymbol: symbol, path: Array<symbol>, visitedTokens: ReadonlySet<symbol>) => Array<unknown>;
        resolveAsyncInternal: (tokenSymbol: symbol, path: Array<symbol>, visitedTokens: ReadonlySet<symbol>) => Promise<unknown>;
        resolveSyncInternal: (tokenSymbol: symbol, path: Array<symbol>, visitedTokens: ReadonlySet<symbol>) => unknown;
    });
    resolve<T>(dependencyKey: Token<T>): T;
    resolveAll<T>(dependencyKey: Token<T>): Array<T>;
    resolveAllAsync<T>(dependencyKey: Token<T>): Promise<Array<T>>;
    resolveAsync<T>(dependencyKey: Token<T>): Promise<T>;
    resolveOptional<T>(dependencyKey: Token<T>, hasRegistration: (dependencyKeySymbol: symbol) => boolean): T | undefined;
    resolveOptionalAsync<T>(dependencyKey: Token<T>, hasRegistration: (dependencyKeySymbol: symbol) => boolean): Promise<T | undefined>;
}
//# sourceMappingURL=resolution.class.d.ts.map