/**
 * Represents version information for a tool
 */
interface VersionInfo {
  cycle: string;
  eol: string;
  latest: string;
}

/**
 * Represents tool information with minimum and recommended versions
 */
interface ToolInfo {
  label: string;
  source: string;
  sync: string;
  min: VersionInfo;
  recommended: VersionInfo;
}

/**
 * Represents the reference object containing tool information
 */
interface Reference {
  tag: string;
  tools: ToolInfo[];
}

/**
 * Fetches reference information for specified tools
 * @param skipRemote - If true, skips remote fetching and only uses local data
 * @param tools - Array of tool names to fetch information for
 * @returns Promise that resolves to a Reference object
 */
export function getReference(skipRemote?: boolean, tools?: string[]): Promise<Reference>;
export function getRemoteEol(tools: string[]): Promise<VersionInfo[]>;