/** * @module "ethpm/config" */ import * as t from 'io-ts'; import * as manifests from "../manifests/service"; import * as storage from "../storage/service"; import * as registries from "../registries/service"; import * as installer from "../installer/service"; export declare type ConfigValue = string | (() => Connector) | ({ default: () => Connector; }); export declare type HasManifests = { manifests: any; }; export declare type HasStorage = { storage: any; }; export declare type HasRegistries = { registries: any; }; export declare type HasInstaller = { installer: any; }; export declare type Complete = HasManifests & HasStorage & HasRegistries & HasInstaller; /** * Polymorphic type alias for any object that exposes keys for any or all * available services, i.e. `manifests`, `registries`, `storage`, `installer` */ export declare type Config = HasManifests | HasStorage | HasRegistries | HasInstaller | HasManifests & HasStorage | HasManifests & HasRegistries | HasManifests & HasInstaller | HasStorage & HasRegistries | HasStorage & HasInstaller | HasRegistries & HasInstaller | HasManifests & HasStorage & HasRegistries | HasManifests & HasStorage & HasInstaller | HasManifests & HasRegistries & HasInstaller | HasStorage & HasRegistries & HasInstaller | HasManifests & HasStorage & HasRegistries & HasInstaller; export declare type RawConfig = { [K in keyof T]: ConfigValue[K]>; } & { [k: string]: ConfigValue; }; export declare abstract class Connector { abstract optionsType: any; abstract init(...args: any[]): Promise; connect(options: t.mixed): Promise; } export declare type Workspace = { [K in keyof T]: K extends 'manifests' ? manifests.Service : K extends 'storage' ? storage.Service : K extends 'registries' ? registries.Service : K extends 'installer' ? installer.Service : never; }; export declare type Connectors = { [K in keyof Workspace]: Connector[K]>; } & { [k: string]: Connector; };