import type { WorkflowStepDto, WorkflowTriggerBindingDto } from '@/services/api/communicationsApi';
import type { WorkflowMetadata } from '@/components/platform/administration/workflows/builder/WorkflowInspectorPanel';
/**
 * Diff predicates used by the Workflow Builder's save cascade to decide whether
 * a server roundtrip is needed for each entity. Exported as pure functions so they
 * are trivially unit-testable without spinning up the page.
 */
export declare function metadataChanged(a: WorkflowMetadata, b: WorkflowMetadata): boolean;
export declare function bindingChanged(a: WorkflowTriggerBindingDto, b: WorkflowTriggerBindingDto): boolean;
export declare function stepChanged(a: WorkflowStepDto, b: WorkflowStepDto): boolean;
export declare function stepOrderChanged(initialSteps: readonly WorkflowStepDto[], currentSteps: readonly WorkflowStepDto[]): boolean;
export interface WorkflowSnapshot {
    readonly metadata: WorkflowMetadata;
    readonly bindings: readonly WorkflowTriggerBindingDto[];
    readonly steps: readonly WorkflowStepDto[];
}
/**
 * Compares a current builder state to a frozen initial snapshot and returns a
 * boolean for "anything changed?". When `initial` is null (i.e. brand-new
 * workflow not yet persisted), any non-empty input counts as dirty.
 */
export declare function useWorkflowDirty(initial: WorkflowSnapshot | null, current: WorkflowSnapshot): boolean;
//# sourceMappingURL=useWorkflowDirty.d.ts.map