import { Buffer } from "node:buffer"; import { type ReleaseFilter, type ReleaseInfo } from "./release-tags.js"; export type { ReleaseFilter, ReleaseInfo } from "./release-tags.js"; export { releaseTags, releaseRows, sortReleaseTags } from "./release-tags.js"; export declare const TOOLCHAINS: string[]; export declare let tryDownloadFile: (url: string) => Promise; export declare let downloadAndExtract: (url: string, destDir: string, destFileName?: string) => Promise; export declare let installVersion: (destDir: string, { label, isComplete, populate, }: { /** ` `, for the wait message. */ label: string; isComplete: () => boolean; /** Fills the empty staging dir that becomes `destDir` on success. */ populate: (stagingDir: string) => Promise; }) => Promise; export type ReleaseTagOptions = ReleaseFilter & { /** Fetch every release page instead of the first page only. */ all?: boolean; }; export type ReleaseTagsResult = { tags: string[]; /** True when only the first page was fetched and GitHub may have more. */ truncated: boolean; /** * First tag in GitHub publish order, matching `getLatestReleaseTag`. Modules * that filter `tags` further must drop it too, or the two disagree. */ publishedLatest?: string; }; /** Release tags, newest first. Default: first GitHub page only. */ export declare let getReleaseTags: (repo: string, { all, prerelease, exclude }?: ReleaseTagOptions) => Promise; export declare let getLatestReleaseTag: (repo: string, { prerelease, exclude }?: ReleaseTagOptions) => Promise; /** * Recent release rows, newest first, for prompts and the `info` preview. * Drafts and prereleases are excluded unless asked for explicitly. */ export declare let getReleases: (repo: string, { prerelease, exclude }?: ReleaseTagOptions) => Promise;