export interface ParameterInfo {
  name: string;
  type: string;
}

export interface PropertyInfo {
  name: string;
  type: string;
  hasGetter: boolean;
  hasSetter: boolean;
}

export interface MethodSummary {
  id: number;
  className: string;
  name: string;
  returnType: string;
  parameters: ParameterInfo[];
  isOverride: boolean;
  isVirtual: boolean;
  callsGump: boolean;
  gumpClass: string | null;
}

export interface ClassSummary {
  name: string;
  namespace: string;
  filePath: string;
  baseClass: string | null;
  interfaces: string[];
  isGump: boolean;
  isMobile: boolean;
  isItem: boolean;
}

export interface ClassDetail {
  class: ClassSummary;
  methods: MethodSummary[];
}

export interface NamespaceTree {
  namespace: string;
  classes: ClassSummary[];
}

export interface FlowNode {
  id: string;
  type: 'method_call' | 'condition' | 'branch_true' | 'branch_false' | 'branch_case'
      | 'gump_send' | 'return' | 'property_access';
  label: string;
  children: FlowNode[];
  fakeInputKey?: string;
  resolvedGump?: string;
  assetRef?: number;
}

// Well-known ServUO hooks surfaced as quick-launch entry points
export const WELL_KNOWN_HOOKS: { method: string; label: string }[] = [
  { method: 'OnDoubleClick', label: 'OnDoubleClick' },
  { method: 'OnSingleClick', label: 'OnSingleClick' },
  { method: 'OnDeath', label: 'OnDeath' },
  { method: 'OnDamage', label: 'OnDamage' },
  { method: 'OnDelete', label: 'OnDelete' },
  { method: 'OnMoveOver', label: 'OnMoveOver' },
  { method: 'OnGainedLevel', label: 'OnGainedLevel' },
  { method: 'OnSkillUse', label: 'OnSkillUse' },
  { method: 'OnHit', label: 'OnHit' },
  { method: 'OnMiss', label: 'OnMiss' },
];
