import { Forge, RenderState, Handler } from './forge'; interface BaseEffect { type: string; } export interface InitializeEffect extends BaseEffect { type: 'initialize'; } export declare const isInitializeEffect: (effect: Effect) => effect is InitializeEffect; export interface EventEffect extends BaseEffect { type: 'event'; handler: Handler; args: any[]; } export declare const isEventEffect: (effect: Effect) => effect is EventEffect; export interface ActionEffect extends BaseEffect { type: 'action'; hookIndex: number; componentKey: string; payload?: any; } export declare const isActionEffect: (effect: Effect) => effect is ActionEffect; export interface RenderEffect extends BaseEffect { type: 'render'; aux: Forge; state: RenderState; } export declare const isRenderEffect: (effect: Effect) => effect is RenderEffect; export declare type BackendEffect = InitializeEffect | ActionEffect | EventEffect; export declare function isBackendEffect(effect: Effect): effect is BackendEffect; export declare type ClientEffect = RenderEffect; export declare type Effect = BackendEffect | ClientEffect; export interface BackendRuntimePayload { context: Record; effects: BackendEffect[]; state: RenderState; } export declare type ForgeEffectsInvoker = (backendRuntimePayload: BackendRuntimePayload) => Promise; export declare type EffectsDispatcher = (effects: Effect | Effect[]) => Promise; export {};