import { Req, Sub } from "./services"; import { Subscription } from "./signal"; export declare const program: (options: Program.Options) => Program; /** Internals */ export declare class Program { private readonly state$; private readonly message$; private readonly services; constructor(options: Program.Options); readonly state: State; update: (message: Message) => void; observe: (observer: (state: State) => void) => Subscription; } /** Types */ export declare namespace Program { interface Options { readonly env?: Record; init(): Next; update(state: State, message: Message): Next; subscriptions?(state: State): ReadonlyArray>; } } export interface Next { state: State; requests?: ReadonlyArray>; } export declare type Dispatch = (message: Message) => void; //# sourceMappingURL=program.d.ts.map