/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
import { IncomingMessage } from 'http';
import { Readable, Writable } from 'stream';
import { ZlibOptions } from 'zlib';
import { InstanceOptions, RequestTracingConfig } from '../../HttpClient';
import { AppFilesList, AppManifest } from '../../responses';
import { IOContext } from '../../service/worker/runtime/typings';
import { InfraClient } from './InfraClient';
export declare class Apps extends InfraClient {
    private _routes;
    private diskCache;
    private memoryCache;
    private get routes();
    constructor(context: IOContext, options?: InstanceOptions);
    installApp: (descriptor: string, tracingConfig?: RequestTracingConfig) => Promise<void> | Promise<AppInstallResponse>;
    uninstallApp: (app: string, tracingConfig?: RequestTracingConfig) => Promise<import("../..").IOResponse<void>>;
    acknowledgeApp: (app: string, service: string, tracingConfig?: RequestTracingConfig) => Promise<void>;
    link: (app: string, files: Change[], { zlib }?: ZipOptions, tracingConfig?: RequestTracingConfig) => Promise<import("../..").AppBundleResponse & {
        bundleSize?: number | undefined;
    }>;
    patch: (app: string, changes: Change[], { zlib }?: ZipOptions, tracingConfig?: RequestTracingConfig) => Promise<void>;
    unlink: (app: string, tracingConfig?: RequestTracingConfig) => Promise<import("../..").IOResponse<void>>;
    unlinkAll: (tracingConfig?: RequestTracingConfig) => Promise<import("../..").IOResponse<void>>;
    saveAppSettings: (app: string, settings: any, tracingConfig?: RequestTracingConfig) => Promise<void>;
    listApps: ({ oldVersion, since, service }?: ListAppsOptions, tracingConfig?: RequestTracingConfig) => Promise<AppsList>;
    listAppFiles: (app: string, { prefix, nextMarker }?: ListFilesOptions, tracingConfig?: RequestTracingConfig) => Promise<AppFilesList>;
    listLinks: (tracingConfig?: RequestTracingConfig) => Promise<string[]>;
    getAppFile: (app: string, path: string, staleIfError?: boolean, tracingConfig?: RequestTracingConfig) => Promise<{
        data: Buffer;
        headers: any;
    }>;
    getAppJSON: <T extends object | null>(app: string, path: string, nullIfNotFound?: boolean, tracingConfig?: RequestTracingConfig) => Promise<T>;
    getFileFromApps: <T extends object | null>(app: string, path: string, nullIfNotFound?: boolean, tracingConfig?: RequestTracingConfig) => Promise<T>;
    getAppFileStream: (app: string, path: string, tracingConfig?: RequestTracingConfig) => Promise<IncomingMessage>;
    getApp: (app: string, tracingConfig?: RequestTracingConfig) => Promise<AppManifest>;
    getAppSettings: (app: string, tracingConfig?: RequestTracingConfig) => Promise<any>;
    getAllAppsSettings: (listAppsOptions?: ListAppsOptions, tracingConfig?: RequestTracingConfig) => Promise<AppsSettings>;
    getAppBundle: (app: string, bundlePath: string, generatePackageJson: boolean, tracingConfig?: RequestTracingConfig) => Promise<Readable>;
    unpackAppBundle: (app: string, bundlePath: string, unpackPath: string, generatePackageJson: boolean, tracingConfig?: RequestTracingConfig) => Promise<Writable>;
    getAppsMetaInfos: (filter?: string, staleWhileRevalidate?: boolean, tracingConfig?: RequestTracingConfig) => Promise<AppMetaInfo[]>;
    getDependencies: (filter?: string, tracingConfig?: RequestTracingConfig) => Promise<Record<string, string[]>>;
    updateDependencies: (tracingConfig?: RequestTracingConfig) => Promise<Record<string, string[]>>;
    updateDependency: (name: string, version: string, registry: string, tracingConfig?: RequestTracingConfig) => Promise<void>;
    resolveDependencies: (apps: string[], registries: string[], filter?: string, tracingConfig?: RequestTracingConfig) => Promise<any>;
    resolveDependenciesWithManifest: (manifest: AppManifest, filter?: string, tracingConfig?: RequestTracingConfig) => Promise<Record<string, string[]>>;
    private installRuntime;
}
interface ZipOptions {
    zlib?: ZlibOptions;
}
export interface AppMetaInfo {
    id: string;
    settingsSchema?: Record<string, any>;
    _resolvedDependencies: Record<string, string>;
    _isRoot: boolean;
    _buildFeatures: Record<string, string[]>;
}
export interface WorkspaceMetaInfo {
    apps: AppMetaInfo[];
}
export interface AppsListItem {
    app: string;
    id: string;
    location: string;
}
export interface AppsList {
    data: AppsListItem[];
}
export interface Change {
    path: string;
    content: string | Readable | Buffer;
}
export interface ListAppsOptions {
    oldVersion?: string;
    context?: string[];
    since?: string;
    service?: string;
}
export interface ListFilesOptions {
    prefix?: string;
    context?: string[];
    nextMarker?: string;
}
export interface AppsSettings {
    [app: string]: any;
}
export interface AppInstallResponse {
    message: string;
}
export {};
