import { RouterSource } from './RouterSource';
import { Stream } from 'most';
import { Component } from '@motorcycle/run';
import { RouterInput } from './types';
export interface RouterDefinitions<Sources, Sinks> {
    [key: string]: Component<Sources, Sinks & {
        router: RouterInput;
    }> | RouterDefinitions<Sources, Sinks>;
}
export declare type RouterComponentSources<Sources> = Sources & {
    router: RouterSource;
};
export interface RouterHOC {
    (definitions: RouterDefinitions<any, any>, sources: RouterComponentSources<any>): Stream<any>;
    <Sources, Sinks>(definitions: RouterDefinitions<Sources, Sinks>, sources: RouterComponentSources<Sources>): Stream<Sinks>;
    (definitions: RouterDefinitions<any, any>): (sources: RouterComponentSources<any>) => Stream<any>;
    <Sources, Sinks>(definitions: RouterDefinitions<Sources, Sinks>): (sources: RouterComponentSources<Sources>) => Stream<Sinks>;
}
export declare const RouterComponent: RouterHOC;
