import { InjectionToken } from "@rxdi/core"; export declare type Callback = (error: Error, result?: T) => void; export interface IPFS { constructor(options: Options): any; types: Types; init(options: InitOptions, callback: Callback): void; init(callback: Callback): void; preStart(callback: Callback): void; start(callback?: Callback): void; stop(callback?: (error?: Error) => void): void; isOnline(): boolean; version(options: any, callback: (error: Error, version: Version) => void): void; version(options: any): Promise; version(callback: (error: Error, version: Version) => void): void; version(): Promise; id(options: any, callback: (error: Error, version: Id) => void): void; id(options: any): Promise; id(callback: (error: Error, version: Id) => void): void; id(): Promise; repo: RepoAPI; bootstrap: any; config: any; block: any; object: ObjectAPI; dag: DagAPI; libp2p: any; swarm: SwarmAPI; files: FilesAPI; bitswap: any; ping(callback: (error: Error) => void): void; ping(): Promise; pubsub: any; on(event: string, callback: (e: any) => void): void; } export interface ExperimentalFeatures { pubsub: true; } export declare class Options { init?: boolean; start?: boolean; EXPERIMENTAL?: ExperimentalFeatures; repo?: string; config?: { Addresses?: { API?: string; Announce?: Array; Gateway?: string; NoAnnounce?: Array; Swarm?: Array; }; }; } export declare class InitOptions { emptyRepo?: boolean; bits?: number; log?: Function; } export declare class Multiaddr { buffer: Uint8Array; } export declare type Multihash = any | string; export declare type CID = any; export declare class Types { Buffer: any; PeerId: any; PeerInfo: any; multiaddr: Multiaddr; multihash: Multihash; CID: CID; } export declare class Version { version: string; repo: string; commit: string; } export declare class Id { id: string; publicKey: string; addresses: Multiaddr[]; agentVersion: string; protocolVersion: string; } export interface RepoAPI { init(bits: number, empty: boolean, callback: Callback): void; version(options: any, callback: Callback): void; version(callback: Callback): void; gc(): void; path(): string; } export declare type FileContent = Object | Blob | string; export declare class IPFSFile { path: string; hash: string; size: number; content?: FileContent; } export interface FilesAPI { createAddStream(options: any, callback: Callback): void; createAddStream(callback: Callback): void; createPullStream(options: any): any; add(data: FileContent, options: any, callback: Callback): void; add(data: FileContent, options: any): Promise; add(data: FileContent, callback: Callback): void; add(data: FileContent): Promise; cat(hash: Multihash, callback: Callback): void; cat(hash: Multihash): Promise; get(hash: Multihash, callback: Callback): void; get(hash: Multihash): Promise; getPull(hash: Multihash, callback: Callback): void; } export declare class PeersOptions { v?: boolean; verbose?: boolean; } export declare type PeerId = any; export interface PeerInfo { id: PeerId; multiaddr: Multiaddr; multiaddrs: Multiaddr[]; distinctMultiaddr(): Multiaddr[]; } export declare class Peer { addr: Multiaddr; peer: PeerInfo; } export interface SwarmAPI { peers(options: PeersOptions, callback: Callback): void; peers(options: PeersOptions): Promise; peers(callback: Callback): void; peers(): Promise; addrs(callback: Callback): void; addrs(): Promise; localAddrs(callback: Callback): void; localAddrs(): Promise; connect(maddr: Multiaddr | string, callback: Callback): void; connect(maddr: Multiaddr | string): Promise; disconnect(maddr: Multiaddr | string, callback: Callback): void; disconnect(maddr: Multiaddr | string): Promise; filters(callback: Callback): never; } export declare type DAGNode = any; export declare type DAGLink = any; export declare type DAGLinkRef = DAGLink | any; export declare type Obj = BufferSource | Object; export declare class ObjectStat { Hash: Multihash; NumLinks: number; BlockSize: number; LinksSize: number; DataSize: number; CumulativeSize: number; } export declare class PutObjectOptions { enc?: any; } export declare class GetObjectOptions { enc?: any; } export interface ObjectPatchAPI { addLink(multihash: Multihash, link: DAGLink, options: GetObjectOptions, callback: Callback): void; addLink(multihash: Multihash, link: DAGLink, options: GetObjectOptions): Promise; addLink(multihash: Multihash, link: DAGLink, callback: Callback): void; addLink(multihash: Multihash, link: DAGLink): Promise; rmLink(multihash: Multihash, linkRef: DAGLinkRef, options: GetObjectOptions, callback: Callback): void; rmLink(multihash: Multihash, linkRef: DAGLinkRef, options: GetObjectOptions): Promise; rmLink(multihash: Multihash, linkRef: DAGLinkRef, callback: Callback): void; rmLink(multihash: Multihash, linkRef: DAGLinkRef): Promise; appendData(multihash: Multihash, data: any, options: GetObjectOptions, callback: Callback): void; appendData(multihash: Multihash, data: any, options: GetObjectOptions): Promise; appendData(multihash: Multihash, data: any, callback: Callback): void; appendData(multihash: Multihash, data: any): Promise; setData(multihash: Multihash, data: any, options: GetObjectOptions, callback: Callback): void; setData(multihash: Multihash, data: any, options: GetObjectOptions): Promise; setData(multihash: Multihash, data: any, callback: Callback): void; setData(multihash: Multihash, data: any): Promise; } export interface ObjectAPI { "new"(template: 'unixfs-dir', callback: Callback): void; "new"(callback: Callback): void; "new"(): Promise; put(obj: Obj, options: PutObjectOptions, callback: Callback): void; put(obj: Obj, options: PutObjectOptions): Promise; put(obj: Obj, callback: Callback): void; put(obj: Obj): Promise; get(multihash: Multihash, options: GetObjectOptions, callback: Callback): void; get(multihash: Multihash, options: GetObjectOptions): Promise; get(multihash: Multihash, callback: Callback): void; get(multihash: Multihash): Promise; data(multihash: Multihash, options: GetObjectOptions, callback: Callback): void; data(multihash: Multihash, options: GetObjectOptions): Promise; data(multihash: Multihash, callback: Callback): void; data(multihash: Multihash): Promise; links(multihash: Multihash, options: GetObjectOptions, callback: Callback): void; links(multihash: Multihash, options: GetObjectOptions): Promise; links(multihash: Multihash, callback: Callback): void; links(multihash: Multihash): Promise; stat(multihash: Multihash, options: GetObjectOptions, callback: Callback): void; stat(multihash: Multihash, options: GetObjectOptions): Promise; stat(multihash: Multihash, callback: Callback): void; stat(multihash: Multihash): Promise; patch: ObjectPatchAPI; } export interface DagAPI { put(dagNode: any, options: any, callback: Callback): void; put(dagNode: any, options: any): Promise; get(cid: string | CID, path: string, options: any, callback: Callback): void; get(cid: string | CID, path: string, options: any): Promise; get(cid: string | CID, path: string, callback: Callback): void; get(cid: string | CID, path: string): Promise; get(cid: string | CID, callback: Callback): void; get(cid: string | CID): Promise; tree(cid: string | CID, path: string, options: any, callback: Callback): void; tree(cid: string | CID, path: string, options: any): Promise; tree(cid: string | CID, path: string, callback: Callback): void; tree(cid: string | CID, path: string): Promise; tree(cid: string | CID, options: any, callback: Callback): void; tree(cid: string | CID, options: any): Promise; tree(cid: string | CID, callback: Callback): void; tree(cid: string | CID): Promise; } export declare const IPFS: InjectionToken; export declare const IPFS_NODE_READY: InjectionToken;