declare const ref: <T, M>(resolver: (module: M) => T) => (module: M) => () => T;

declare const proxy: {
    <T extends { [key in never]: unknown; }, M extends object>(resolver: (module: M) => T, dummyTarget?: T): (module: M) => T;
    fn<T extends (...args: never[]) => unknown, M extends object>(resolver: (module: M) => T): (module: M) => T;
    constructor<T extends new (...args: never[]) => unknown, M extends object>(resolver: (module: M) => T): (module: M) => T;
};

export { proxy, ref };
