FutureLogEntry:
    | [op: "startGeneration", generation: number]
    | [op: "doFulfill", vow: HostVow, fulfillment: Host]
    | [op: "doReject", vow: HostVow, reason: Host]
    | [op: "doCall", target: Host, optVerb: PropertyKey | undefined, args: Host[], callIndex: number]
    | [op: "doSendOnly", target: Host, optVerb: PropertyKey | undefined, args: Host[], callIndex: number]
    | [op: "doSend", target: Host, optVerb: PropertyKey | undefined, args: Host[], callIndex: number]
    | [op: "doReturn", callIndex: number, result: Host]
    | [op: "doThrow", callIndex: number, problem: Host]
    | [op: "checkFulfill", vow: HostVow, fulfillment: Host]
    | [op: "checkReject", vow: HostVow, reason: Host]
    | [op: "checkCall", target: Host, optVerb: PropertyKey | undefined, args: Host[], callIndex: number]
    | [op: "checkSendOnly", target: Host, optVerb: PropertyKey | undefined, args: Host[], callIndex: number]
    | [op: "checkSend", target: Host, optVerb: PropertyKey | undefined, args: Host[], callIndex: number]
    | [op: "checkReturn", callIndex: number, result: Host]
    | [op: "checkThrow", callIndex: number, problem: Host]

This would be the type alias for the full membrane log, if we supported:

  • the guest sending guest-promises and guest-remotables to the host
  • the guest using E to eventual-send to guest wrappers of the host vows and remotables.