import { Module } from './module' import { Injector, Injectable, Injected, InjectableAsync, defaultInjector } from './injector'; declare var $$defaultInjector; if (!global['$$defaultInjector']) global['$$defaultInjector'] = defaultInjector; export function resolve(name: string): T { return defaultInjector.resolve(name); } export function unregister(name: string) { return defaultInjector.unregister(name); } export function merge(i: Injector) { return defaultInjector.merge(i); } export function inspect() { return defaultInjector.inspect(); } export function inject(injectable: Injectable): Injected export function inject(...toInject: string[]): (b: TypedPropertyDescriptor) => void export function inject(a: string | Injectable, ...b: string[]) { return defaultInjector.inject(a, ...b); } export function exec(...toInject: string[]): (f: Injectable) => T { return defaultInjector.exec(...toInject); } export function injectNew(a: Injectable) { return defaultInjector.injectNew(a); } export function injectWithName(toInject: string[], a: Injectable) { return defaultInjector.injectWithName(toInject, a); } export function injectNewWithName(toInject: string[], a: Function) { return defaultInjector.injectNewWithName(toInject, a); } export function resolveAsync(name: string) { return defaultInjector.resolveAsync(name) } export function onResolve(name: string) { return defaultInjector.onResolve(name) } export function injectWithNameAsync(toInject: string[], a: InjectableAsync | Injectable) { return defaultInjector.injectWithNameAsync(toInject, a); } export function register(name: string, value: T, override?: boolean) { return defaultInjector.register(name, value, override); } export function registerFactory(name: string, value: () => T, override?: boolean) { return defaultInjector.registerFactory(name, value, override); }