/**
 * Platform Detector for CLIProxyAPI Binary Downloads
 *
 * Detects OS and architecture to determine correct binary asset.
 * Supports 6 platforms: darwin/linux/windows x amd64/arm64
 */
import { PlatformInfo, SupportedArch, CLIProxyBackend } from '../types';
/** Backend configuration */
export declare const BACKEND_CONFIG: {
    readonly original: {
        readonly repo: "router-for-me/CLIProxyAPI";
        readonly binaryPrefix: "CLIProxyAPI";
        readonly executable: "cli-proxy-api";
        readonly fallbackVersion: "6.9.45";
    };
    readonly plus: {
        readonly repo: "kaitranntt/CLIProxyAPIPlus";
        readonly binaryPrefix: "CLIProxyAPIPlus";
        readonly executable: "cli-proxy-api-plus";
        readonly fallbackVersion: "6.9.45-0";
    };
};
/**
 * Default backend
 *
 * Keep 'original' as the stable default. The Plus backend is available as an
 * opt-in community-maintained fork for providers that are not available in the
 * original upstream binary.
 */
export declare const DEFAULT_BACKEND: CLIProxyBackend;
/**
 * CLIProxyAPIPlus fallback version (used when GitHub API unavailable)
 * Auto-update fetches latest from GitHub; this is only a safety net
 * Note: CLIProxyAPIPlus uses v6.6.X-0 suffix pattern
 * @deprecated Use getFallbackVersion() or BACKEND_CONFIG instead
 */
export declare const CLIPROXY_FALLBACK_VERSION: "6.9.45";
/**
 * Maximum stable version cap - prevents auto-update to known unstable releases
 * Currently set high since v89+ are all stable.
 * Only v81-88 have known bugs (see CLIPROXY_FAULTY_RANGE).
 * See: https://github.com/kaitranntt/ccs/issues/269
 */
export declare const CLIPROXY_MAX_STABLE_VERSION = "9.9.999-0";
/**
 * Faulty version range - versions with known critical bugs
 * v81-88 have context cancellation bugs causing intermittent 500 errors
 * v89 confirmed stable
 */
export declare const CLIPROXY_FAULTY_RANGE: {
    min: string;
    max: string;
};
/** @deprecated Use CLIPROXY_FALLBACK_VERSION instead */
export declare const CLIPROXY_VERSION: "6.9.45";
export declare function mapNodeArchToReleaseArch(nodeArch: string): SupportedArch | undefined;
/**
 * Detect current platform and return binary info
 * @param version Optional version for binaryName (defaults to backend fallback)
 * @param backend Backend variant to use (defaults to DEFAULT_BACKEND)
 * @throws Error if platform is unsupported
 */
export declare function detectPlatform(version?: string, backend?: CLIProxyBackend): PlatformInfo;
/**
 * Get executable name based on platform
 * @param backend Backend variant to use (defaults to DEFAULT_BACKEND)
 * @returns Binary executable name (with .exe on Windows)
 */
export declare function getExecutableName(backend?: CLIProxyBackend): string;
/**
 * Get the name of the binary inside the archive
 * @param backend Backend variant to use (defaults to DEFAULT_BACKEND)
 * @returns Binary name as it appears in the tar.gz/zip
 */
export declare function getArchiveBinaryName(backend?: CLIProxyBackend): string;
/**
 * Get download URL for current platform
 * @param version Version to download (defaults to backend fallback version)
 * @param backend Backend variant to use (defaults to DEFAULT_BACKEND)
 * @returns Full GitHub release download URL
 */
export declare function getDownloadUrl(version?: string, backend?: CLIProxyBackend): string;
/**
 * Get checksums.txt URL for version
 * @param version Version to get checksums for (defaults to backend fallback version)
 * @param backend Backend variant to use (defaults to DEFAULT_BACKEND)
 * @returns Full URL to checksums.txt
 */
export declare function getChecksumsUrl(version?: string, backend?: CLIProxyBackend): string;
/**
 * Get fallback version for backend
 * @param backend Backend variant to use (defaults to DEFAULT_BACKEND)
 * @returns Fallback version string
 */
export declare function getFallbackVersion(backend?: CLIProxyBackend): string;
/**
 * Check if platform is supported
 * @returns true if current platform is supported
 */
export declare function isPlatformSupported(): boolean;
/**
 * Get human-readable platform description
 * @returns Description string (e.g., "macOS ARM64")
 */
export declare function getPlatformDescription(): string;
//# sourceMappingURL=platform-detector.d.ts.map