TransitionRule: {
    code?: string;
    gate?: "and" | "or";
    match: TransitionMatch[];
}