/**
 * Onebox Registry Manager
 *
 * Manages the local Docker registry using:
 * - @push.rocks/smartstorage (S3-compatible server with filesystem storage)
 * - @push.rocks/smartregistry (OCI-compliant Docker registry)
 */
export declare class RegistryManager {
    private options;
    private s3Server;
    private registry;
    private jwtSecret;
    private baseUrl;
    private isInitialized;
    constructor(options?: {
        dataDir?: string;
        port?: number;
        baseUrl?: string;
    });
    /**
     * Initialize the registry (start smartstorage and smartregistry)
     */
    init(): Promise<void>;
    /**
     * Handle incoming HTTP requests to the registry
     */
    handleRequest(req: Request): Promise<Response>;
    /**
     * Get all tags for a repository
     */
    getImageTags(repository: string): Promise<string[]>;
    /**
     * Get the manifest digest for a specific image tag
     */
    getImageDigest(repository: string, tag: string): Promise<string | null>;
    /**
     * Delete an image by tag
     */
    deleteImage(repository: string, tag: string): Promise<void>;
    private getRegistryStorage;
    private getOciTagsPath;
    private normalizeOciDigest;
    private getSha256HashFromDigest;
    private getOciManifestObjectPath;
    private getOciBlobObjectPath;
    private decodeStorageObject;
    private readOciTags;
    private writeOciTags;
    private readOciManifest;
    private getDescriptorDigest;
    private collectOciManifestReferences;
    private collectReferencedOciObjects;
    private collectTaggedOciObjectsOutsideRepository;
    private mergeOciObjects;
    private deleteObjectIfExists;
    private deleteOciManifestByDigest;
    private deleteOciBlobByDigest;
    /**
     * Get or generate the JWT secret for token signing
     */
    private getJwtSecret;
    /**
     * Get the auth manager from the registry
     */
    getAuthManager(): any;
    /**
     * Create an OCI token for Docker authentication
     * @param repository - Repository name (e.g., 'hello-world') or '*' for all
     * @param actions - Actions to allow: 'push', 'pull', or both
     * @param expiresIn - Token expiry in seconds (default: 3600)
     */
    createOciToken(repository?: string, actions?: ('push' | 'pull')[], expiresIn?: number): Promise<string>;
    /**
     * Get the registry status
     */
    getStatus(): {
        running: boolean;
        port: number;
    };
    /**
     * Get the registry base URL
     */
    getBaseUrl(): string;
    /**
     * Get the full image name for a service
     */
    getImageName(serviceName: string, tag?: string): string;
    /**
     * Stop the registry and smartstorage server
     */
    stop(): Promise<void>;
}
