diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 0000000..7290789 --- /dev/null +++ b/index.d.ts @@ -0,0 +1,30 @@ +export type Change = [S, Effect?]; + +export interface Effect { + (dispatch: Dispatch): void; +} + +export interface Update { + (message: M, state: S): Change; +} + +export interface View { + (state: S, dispatch: Dispatch): V; +} + +export interface Dispatch { + (message: M): void; +} + +export interface Done { + (state: S): void; +} + +export interface Program { + readonly init: Change; + readonly update: Update; + readonly view: View; + readonly done?: Done; +} + +export function runtime(program: Program): void; diff --git a/package.json b/package.json index f4e5fcf..ad2f3e7 100644 --- a/package.json +++ b/package.json @@ -29,5 +29,6 @@ "scripts": { "lint": "fixpack && prettier index.js test/**/*.js --write && standard --fix", "test": "npm run lint && ava" - } + }, + "types": "index.d.ts" }