functor (Event : Map.OrderedType) ->
sig
type event = Event.t
type +'a t
val empty : 'a t
val add : event list -> 'a -> 'a t -> 'a t
val remove : event list -> 'a t -> 'a t
val fold : (event list -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val bindings : 'a t -> (event list * 'a) list
type 'a resolver
type 'a pack
val pack : ('a -> 'b) -> 'a t -> 'b pack
val resolver : 'a pack list -> 'a resolver
type 'a result = Accepted of 'a | Continue of 'a resolver | Rejected
val resolve : event -> 'a resolver -> 'a result
end