// Generated by dts-bundle v0.7.3 // Dependencies for this module: // ../io-ts // ../url declare module 'ethpm' { /** * @module "ethpm" */ import * as config from "ethpm/config"; import * as session from "ethpm/session"; /** * This module provides the external interface for configuring an EthPM * session object. * * Usage: * ```javascript * import EthPM from "ethpm"; * * ``` */ export namespace EthPM { /** * Configure EthPM with specified Node modules to load for various * services * * Example Usage: * ```javascript * import EthPM from "ethpm"; * const builder = EthPM.configure({ * manifests: "ethpm/manifests/v3", * storage: "ethpm/storage/ipfs", * registries: "ethpm/registries/web3" * }) * ``` * * EthPM.js will `require()` the specified modules from your project's * `node_modules/` folder. */ function configure(config: config.RawConfig): session.Builder; } } declare module 'ethpm/config' { /** * @module "ethpm/config" */ export * from 'ethpm/config/config'; export * from 'ethpm/config/loader'; } declare module 'ethpm/session' { /** * @module "ethpm/session" */ export * from 'ethpm/session/session'; export * from 'ethpm/session/query'; } declare module 'ethpm/config/config' { /** * @module "ethpm/config" */ import * as t from 'io-ts'; import * as manifests from "ethpm/manifests/service"; import * as storage from "ethpm/storage/service"; import * as registries from "ethpm/registries/service"; import * as installer from "ethpm/installer/service"; export type ConfigValue = string | (() => Connector) | ({ default: () => Connector; }); export type HasManifests = { manifests: any; }; export type HasStorage = { storage: any; }; export type HasRegistries = { registries: any; }; export type HasInstaller = { installer: any; }; export 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 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 type RawConfig = { [K in keyof T]: ConfigValue[K]>; } & { [k: string]: ConfigValue; }; export abstract class Connector { abstract optionsType: any; abstract init(...args: any[]): Promise; connect(options: t.mixed): Promise; } export 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 type Connectors = { [K in keyof Workspace]: Connector[K]>; } & { [k: string]: Connector; }; } declare module 'ethpm/config/loader' { /** * @module "ethpm/config" */ import * as config from 'ethpm/config/config'; export function load(plugin: config.ConfigValue): config.Connector; } declare module 'ethpm/session/session' { /** * @module "ethpm/session" */ import * as config from "ethpm/config"; import { Config, HasInstaller, HasManifests, HasStorage, HasRegistries } from "ethpm/config"; import * as pkg from "ethpm/package"; import { Query } from 'ethpm/session/query'; export class Builder { constructor(config_: config.RawConfig); connect(options?: any): Promise>; } export class Session { constructor(workspace: config.Workspace); query(package_: pkg.Package): Query; get manifests(): config.Workspace['manifests'] | never; get storage(): config.Workspace['storage'] | never; get installer(): config.Workspace['installer'] | never; get registries(): config.Workspace['registries'] | never; } } declare module 'ethpm/session/query' { /** * @module "ethpm/session" */ import * as config from "ethpm/config"; import * as pkg from "ethpm/package"; export class Query { package: pkg.Package; constructor(options: { package: pkg.Package; workspace: config.Workspace; }); scope(dependencyName: pkg.PackageName): Promise>; contractType(ref: pkg.ContractTypeReference): Promise; contractInstance(chain: pkg.ChainURI, name: pkg.ContractInstanceName): Promise; buildDependency(name: pkg.PackageName): Promise | never; } } declare module 'ethpm/manifests/service' { /** * @module "ethpm/manifests" */ import { Package } from "ethpm/package"; export interface Service { read(json: string): Promise; write(pkg: Package): Promise; } } declare module 'ethpm/storage/service' { /** * @module "ethpm/storage" */ import { Maybe } from "ethpm/types"; import { URL } from 'url'; export interface Service { read(uri: URL): Promise>; hash(content: string): Promise; predictUri(content: string): Promise; write(content: string): Promise; } } declare module 'ethpm/registries/service' { /** * @module "ethpm/registries" */ import { URL } from 'url'; import * as pkg from "ethpm/package"; export interface Service { /** * List all packages */ packages(): Promise; /** * Query a particular package */ package(packageName: pkg.PackageName): { /** * List all releases */ releases(): Promise; /** * Retrieve manifest URI for specific version */ release(version: pkg.Version): Promise; }; /** * Publish a release */ publish(packageName: pkg.PackageName, version: pkg.Version, manifest: URL): Promise; } } declare module 'ethpm/installer/service' { /** * @module "ethpm/installer" */ import { URL } from "url"; export interface Service { install(contentURI: URL, registryAddress: string): Promise; } } declare module 'ethpm/package' { /** * @module "ethpm/package" */ export * from 'ethpm/package/package'; export * from 'ethpm/package/link'; export * from 'ethpm/package/meta'; } declare module 'ethpm/types' { /** * @module "ethpm/types" */ export type Maybe = T | undefined; export function maybe(t: T | undefined): Maybe; export function lift(func: (t: T) => U): (t: Maybe) => U | undefined; export function lift2(func: (t: T, u: U) => V): (t: Maybe, u: Maybe) => V | undefined; } declare module 'ethpm/package/package' { /** * @module "ethpm/package" */ import { URL } from 'url'; import { Maybe } from "ethpm/types"; import { Meta } from 'ethpm/package/meta'; import { Link } from 'ethpm/package/link'; export type Address = string; export type TransactionHash = string; export type BlockHash = string; export type PackageName = string; export type Manifest = string; export type Version = string; export type RelativePath = string; export type ChainURI = URL; export type ContentURI = URL; export type SourceString = string; export type ContractAlias = string; export type ContractName = string; export type ContractTypeReference = string; export type ContractInstanceName = string; export type bytecode = string; export type CompilerName = string; export type CompilerVersion = string; export type CompilerSettings = any; export type ABI = Array; export type Devdoc = object; export type Userdoc = object; export interface Compiler { name: CompilerName; version: CompilerVersion; settings?: CompilerSettings; contractTypes?: Array; } export interface Bytecode { bytecode: bytecode; linkReferences: Array; linkDependencies: Array; } export interface ContractType { contractName: ContractName; deploymentBytecode: Maybe; runtimeBytecode: Maybe; abi: Maybe; devdoc: Maybe; userdoc: Maybe; sourceId: Maybe; } export interface ContractInstance { contractType: ContractTypeReference; address: Address; transaction: Maybe; block: Maybe; runtimeBytecode: Maybe; } export type SourceId = string; export interface SourceWithUrls { type: Maybe; installPath: Maybe; urls: Array; } export interface SourceWithContent { type: Maybe; installPath: Maybe; content: SourceString; } export type Sources = Record | Record; export type ContractTypes = Record; export type Compilers = Array; export type Deployment = Record; export type Deployments = Map; export type BuildDependencies = Record; export interface Package { packageName: Maybe; version: Maybe; manifest: Manifest; meta: Meta.PackageMeta; sources: Sources; compilers: Compilers; contractTypes: ContractTypes; deployments: Deployments; buildDependencies: BuildDependencies; } } declare module 'ethpm/package/link' { /** * @module "ethpm/package" */ export namespace Link { type Offset = number; type Length = number; type Name = string; interface Literal { type: 'literal'; value: string; } interface InstanceReference { type: 'reference'; value: string; } interface Reference { offsets: Array; length: Length; name: Name; } interface Value { offsets: Array; value: Literal | InstanceReference; } } } declare module 'ethpm/package/meta' { /** * @module "ethpm/package" */ export namespace Meta { type Author = string; type License = string; type Description = string; type Keyword = string; interface PackageMetaLink { resource: string; uri: string; } interface PackageMeta { authors?: Array; license?: License; description?: Description; keywords?: Array; links?: Array; } } }