% crochet

singleton novella;
singleton novella-dsl;

type canvas(x);

abstract element;
singleton nvl-empty is element;
type nvl-flow(children is list<element>) is element;
type nvl-stack(children is list<element>) is element;
type nvl-text(x is text) is element;
type nvl-style(child is element, classes is list<text>) is element;
type nvl-role(child is element, role is text) is element;
type nvl-menu(children is list<nvl-button>) is element;
type nvl-button(child is element, reference, value) is element;

abstract image;
type network-image(url is text);

effect novella with
  show(X is element);
  wait-interaction();
  wait-selection(Reference);
end

effect novella-dsl with
  get-state();
end