diff --git a/ui/src/pages/Alerts/RuleEditor/condition-forms/ExchangeMatchForm.tsx b/ui/src/pages/Alerts/RuleEditor/condition-forms/ExchangeMatchForm.tsx
index 2100a8b4..52fd4f29 100644
--- a/ui/src/pages/Alerts/RuleEditor/condition-forms/ExchangeMatchForm.tsx
+++ b/ui/src/pages/Alerts/RuleEditor/condition-forms/ExchangeMatchForm.tsx
@@ -1,6 +1,7 @@
import { FormField, Input, Select } from '@cameleer/design-system';
import type { FormState } from '../form-state';
-import { EXCHANGE_FIRE_MODE_OPTIONS } from '../../enums';
+import { applyFireModeChange } from '../form-state';
+import { EXCHANGE_FIRE_MODE_OPTIONS, type ExchangeFireMode } from '../../enums';
// ExchangeFilter.status is typed as `String` on the backend (no @Schema
// allowableValues yet) so options stay hand-typed. Follow-up: annotate the
@@ -23,7 +24,7 @@ export function ExchangeMatchForm({ form, setForm }: { form: FormState; setForm:
diff --git a/ui/src/pages/Alerts/RuleEditor/form-state.ts b/ui/src/pages/Alerts/RuleEditor/form-state.ts
index 0924a452..8e2879e2 100644
--- a/ui/src/pages/Alerts/RuleEditor/form-state.ts
+++ b/ui/src/pages/Alerts/RuleEditor/form-state.ts
@@ -3,7 +3,7 @@ import type {
AlertRuleResponse,
AlertCondition,
} from '../../../api/queries/alertRules';
-import type { ConditionKind, Severity, TargetKind } from '../enums';
+import type { ConditionKind, ExchangeFireMode, Severity, TargetKind } from '../enums';
export type WizardStep = 'scope' | 'condition' | 'trigger' | 'notify' | 'review';
export const WIZARD_STEPS: WizardStep[] = ['scope', 'condition', 'trigger', 'notify', 'review'];
@@ -137,6 +137,38 @@ export function toRequest(f: FormState): AlertRuleRequest {
} as AlertRuleRequest;
}
+/**
+ * Pure helper for the ExchangeMatchForm's Fire-mode