/** * Copyright (c) 2025 Elara AI Pty Ltd * Licensed under BSL 1.1. See LICENSE for details. */ import type { PackageObject } from '@elaraai/e3-types'; import type { StorageBackend } from './storage/interfaces.js'; /** * Result of importing a package */ export interface PackageImportResult { name: string; version: string; packageHash: string; objectCount: number; } /** * Options for package import */ export interface PackageImportOptions { /** Called after each object is written. Can be used for progress reporting. */ onProgress?: (progress: { objectsProcessed: number; }) => Promise; } /** * Import a package from a .zip file into the repository. * * Extracts objects to `objects/`, creates ref at `packages//`. * * @param storage - Storage backend * @param repo - Repository identifier * @param zipPath - Path to the .zip package file * @param options - Optional import options (e.g. progress callback) * @returns Import result with package name, version, and stats */ export declare function packageImport(storage: StorageBackend, repo: string, zipPath: string, options?: PackageImportOptions): Promise; /** * Remove a package ref from the repository. * * Objects remain until gc is run. * * @param storage - Storage backend * @param repo - Repository identifier * @param name - Package name * @param version - Package version * @throws {PackageNotFoundError} If package doesn't exist */ export declare function packageRemove(storage: StorageBackend, repo: string, name: string, version: string): Promise; /** * List all installed packages. * * @param storage - Storage backend * @param repo - Repository identifier * @returns Array of (name, version) pairs */ export declare function packageList(storage: StorageBackend, repo: string): Promise>; /** * Get the latest version of a package. * * @param storage - Storage backend * @param repo - Repository identifier * @param name - Package name * @returns Latest version string, or undefined if package not found */ export declare function packageGetLatestVersion(storage: StorageBackend, repo: string, name: string): Promise; /** * Resolve a package to its PackageObject hash. * * @param storage - Storage backend * @param repo - Repository identifier * @param name - Package name * @param version - Package version * @returns PackageObject hash * @throws {PackageNotFoundError} If package doesn't exist */ export declare function packageResolve(storage: StorageBackend, repo: string, name: string, version: string): Promise; /** * Read and parse a PackageObject. * * @param storage - Storage backend * @param repo - Repository identifier * @param name - Package name * @param version - Package version * @returns Parsed PackageObject * @throws {PackageNotFoundError} If package doesn't exist */ export declare function packageRead(storage: StorageBackend, repo: string, name: string, version: string): Promise; /** * Result of exporting a package */ export interface PackageExportResult { packageHash: string; objectCount: number; } /** * Options for package export */ export interface PackageExportOptions { /** Called after each object is added. Can be used for progress reporting. */ onProgress?: (progress: { objectsProcessed: number; }) => Promise; } /** * Export a package to a .zip file. * * Collects the package object and all transitively referenced objects. * * @param storage - Storage backend * @param repo - Repository identifier * @param name - Package name * @param version - Package version * @param zipPath - Path to write the .zip file * @returns Export result with package hash and object count */ export declare function packageExport(storage: StorageBackend, repo: string, name: string, version: string, zipPath: string, options?: PackageExportOptions): Promise; //# sourceMappingURL=packages.d.ts.map