import { Container, Token } from 'ditox'; import { Controller } from './controller'; import { Query } from './query'; import { Scope } from './scope'; import { AnyObject } from './utils'; export declare function createController(factory: (scope: Scope) => Service & { destroy?: () => void; }): Controller; export type ControllerFactory = (container: Container) => Controller; declare type DependencyProps = { [key: string]: unknown; }; declare type TokenProps = { [K in keyof Props]: Token; }; export declare function declareController(tokens: TokenProps, factory: (deps: Dependencies, scope: Scope) => Service): ControllerFactory; export type ViewControllerFactory[]> = (container: Container, ...params: Params) => Controller; export type InferredService = Factory extends ViewControllerFactory ? Service : never; export declare function declareViewController[]>(factory: (scope: Scope, ...params: Params) => Service): ViewControllerFactory; export declare function declareViewController[]>(tokens: TokenProps, factory: (deps: Dependencies, scope: Scope) => ((scope: Scope, ...params: Params) => Service) | Service): ViewControllerFactory; export {};