import { IContext as ActionContext, ModuleClass, ModuleDefinition, ModuleFunction, Sequence as SignalChain } from 'cerebral'; export { IContext as ActionContext, ModuleDefinition } from 'cerebral'; declare type SignalFunction = (builder: Builder) => SignalChain; export interface SignalsMap { [key: string]: SignalChain | SignalFunction; } export declare type CerebralModule = ModuleDefinition | ModuleClass; export interface CerebralAction { (context: ActionContext): T; } export interface CerebralModules { [name: string]: CerebralModule; } export interface CerebralModulesFunction { (builder: Builder): CerebralModules; } export declare type CerebralChain = SignalChain; interface StringMap { [key: string]: T; } interface BaseBlock { name: string; modules?: CerebralModules | CerebralModulesFunction; hooks?: StringMap; } export interface Builder { blocks: Block[]; hooks(key: string, alt?: string): any[]; resolve(block?: T): T; } export declare type Block = BaseBlock & T; export interface Build extends ModuleFunction { with(...blocks: Block[]): Build; and(...blocks: Block[]): Build; }