/**
 * @license
 * Copyright 2025 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import type { ExtensionInstallMetadata, GeminiCLIExtension } from '@vybestack/llxprt-code-core';
import { ExtensionUpdateState } from '../../ui/state/extensions.js';
/**
 * Clones a Git repository to a specified local path.
 * @param installMetadata The metadata for the extension to install.
 * @param destination The destination path to clone the repository to.
 */
export declare function cloneFromGit(installMetadata: ExtensionInstallMetadata, destination: string): Promise<void>;
export declare function parseGitHubRepoForReleases(source: string): {
    owner: string;
    repo: string;
};
/**
 * Checks if a GitHub repository has any releases.
 * @param owner The repository owner.
 * @param repo The repository name.
 * @returns true if releases exist, false otherwise.
 */
export declare function checkGitHubReleasesExist(owner: string, repo: string): Promise<boolean>;
export declare function checkForExtensionUpdate(extension: GeminiCLIExtension, setExtensionUpdateState: (updateState: ExtensionUpdateState) => void, cwd?: string): Promise<void>;
export interface GitHubDownloadResult {
    tagName: string;
    type: 'git' | 'github-release';
}
export declare function downloadFromGitHubRelease(installMetadata: ExtensionInstallMetadata, destination: string): Promise<GitHubDownloadResult>;
interface Asset {
    name: string;
    browser_download_url: string;
}
export declare function findReleaseAsset(assets: Asset[]): Asset | undefined;
export declare function extractFile(file: string, dest: string): Promise<void>;
export {};
