export type OperationType = | "create_group" | "update_group" | "delete_group" | "create_setup_key" | "delete_setup_key" | "rename_peer" | "update_peer_groups" | "update_peer" | "delete_peer" | "create_policy" | "update_policy" | "delete_policy" | "create_route" | "update_route" | "delete_route" | "create_dns" | "update_dns" | "delete_dns" | "create_posture_check" | "update_posture_check" | "delete_posture_check" | "create_network" | "update_network" | "delete_network" | "create_network_resource" | "update_network_resource" | "delete_network_resource" | "create_network_router" | "update_network_router" | "delete_network_router" | "create_user" | "update_user" | "delete_user"; export interface FieldChange { field: string; from: unknown; to: unknown; } export interface Operation { type: OperationType; name: string; details?: Record; changes?: FieldChange[]; } export interface OperationResult extends Operation { status: "success" | "failed" | "skipped"; error?: string; } /** Order in which operation types must be executed */ export const EXECUTION_ORDER: OperationType[] = [ // Creates: dependencies first "create_posture_check", "update_posture_check", "create_group", "update_group", "create_setup_key", "rename_peer", "update_peer_groups", "update_peer", "create_network", "update_network", "create_network_resource", "update_network_resource", "create_network_router", "update_network_router", "create_user", "update_user", "create_policy", "update_policy", "create_route", "update_route", "create_dns", "update_dns", // Deletions in reverse dependency order "delete_dns", "delete_route", "delete_policy", "delete_user", "delete_network_router", "delete_network_resource", "delete_network", "delete_peer", "delete_setup_key", "delete_posture_check", "delete_group", ];