We want our engagement streams to waterfall, so that when one stream becomes exhausted, members are transitioned to the next stream. The problem is there is no trigger for exhausted.
The only thing I can think of to use is to say "sent email" and use the last email in each stream, but for many reasons that is not ideal.
As for a workaround, you can run a batch campaign that runs every day that looks for "member of engagement program: exhausted content: true" and select the specific stream (ex. Stream 1). The flow would then be to change the engagement program stream to the next stream (ex. Stream 2).
Transition rules between streams will not work here as they require a trigger.
Theoretically you could create a smart campaign that is triggered... perhaps the "Email is delivered" trigger and choose the last email in the first stream as the "delivered email". Then in the flow you can change the engagement stream.
I would suggest the same thing as Devraj for this. Do a batch campaign that looks for all exhausted leads and chose the stream you want them to be exhausted in and then move then into the new stream on the flow step. I'd suggest the batch recur the night before your send cadence is set to make sure it pulls from one and into the other in time.
Don't forget to make sure that you do work in a waterfall pattern otherwise you'll end up having leads go round and round in circles.
There is really no need to use triggers in engagement programs. Simply use daily batch smart campaigns that you schedule to run a couple of hours before the cast time. Use a "Member of engagement program" with "Exhausted content" and "stream" constraints: