// @flow /* eslint-disable no-redeclare, no-unused-vars */ import type { Node, AbstractComponent } from 'react'; export type Dependency = Function; declare export class DiProvider extends React$Component< { children?: Node, target?: AbstractComponent | AbstractComponent[], use: Dependency[], }, { getDependencies: ( deps: Dependency[], target: AbstractComponent | AbstractComponent[] ) => Dependency[], } > {} declare export function withDi>( component: T, dependencies: Dependency[], target?: AbstractComponent | AbstractComponent[] ): T; /** @deprecated use injectable instead */ declare export function mock(original: T, mock: T): T; declare export function injectable( from: T, implementation: T ): T; function di(...dependencies: Dependency[]) { /** @deprecated use injectable instead */ di.mock = mock; } declare export { di };