import { InstanceOptions, RequestTracingConfig } from '../../HttpClient';
import { IOContext } from '../../service/worker/runtime/typings';
import { InfraClient } from './InfraClient';
export declare class Router extends InfraClient {
    constructor(ioContext: IOContext, opts?: InstanceOptions);
    listAvailableIoVersions: (tracingConfig?: RequestTracingConfig) => Promise<AvaiableIO[]>;
    getInstalledIoVersion: (tracingConfig?: RequestTracingConfig) => Promise<AvaiableIO>;
    installIo: (version: string, tracingConfig?: RequestTracingConfig) => Promise<void>;
    listAvailableServices: (tracingConfig?: RequestTracingConfig) => Promise<AvailableServices>;
    getAvailableVersions: (name: string, tracingConfig?: RequestTracingConfig) => Promise<AvailableServiceVersions>;
    listInstalledServices: (tracingConfig?: RequestTracingConfig) => Promise<InstalledService[]>;
    installService: (name: string, version: string, tracingConfig?: RequestTracingConfig) => Promise<void>;
}
export interface AvaiableIO {
    version: string;
    tested: boolean;
    services: {
        [service: string]: string;
    };
}
export type InstalledIO = AvaiableIO;
export interface AvailableServiceVersions {
    versions: {
        [region: string]: string[];
    };
}
export interface AvailableServices {
    [service: string]: AvailableServiceVersions;
}
export interface InstalledService {
    name: string;
    version: string;
    serviceIsolation: number;
}
