import type { BitswapAPI } from './bitswap/index.js'; import type { BlockAPI } from './block/index.js'; import type { BootstrapAPI } from './bootstrap/index.js'; import type { ConfigAPI } from './config/index.js'; import type { DAGAPI } from './dag/index.js'; import type { DHTAPI } from './dht/index.js'; import type { DiagAPI } from './diag/index.js'; import type { FilesAPI } from './files/index.js'; import type { KeyAPI } from './key/index.js'; import type { HTTPOptions } from './lib/http.js'; import type { LoadBaseFn } from './lib/multibases.js'; import type { LoadCodecFn } from './lib/multicodecs.js'; import type { LoadHasherFn } from './lib/multihashes.js'; import type { LogAPI } from './log/index.js'; import type { NameAPI } from './name/index.js'; import type { ObjectAPI } from './object/index.js'; import type { PinAPI } from './pin/index.js'; import type { ProvideAPI } from './provide/index.js'; import type { PubSubAPI } from './pubsub/index.js'; import type { RefsAPI } from './refs/index.js'; import type { RepoAPI } from './repo/index.js'; import type { RoutingAPI } from './routing/index.js'; import type { StatsAPI } from './stats/index.js'; import type { SwarmAPI } from './swarm/index.js'; import type { AbortOptions, PeerId } from '@libp2p/interface'; import type { Multiaddr } from '@multiformats/multiaddr'; import type { Mtime, MtimeLike } from 'ipfs-unixfs'; import type { MultibaseCodec } from 'multiformats/bases/interface'; import type { CID, Version } from 'multiformats/cid'; import type { BlockCodec } from 'multiformats/codecs/interface'; import type { MultihashHasher } from 'multiformats/hashes/interface'; import type { Agent as HttpAgent } from 'node:http'; import type { Agent as HttpsAgent } from 'node:https'; export type Await = T | Promise; export type AwaitIterable = Iterable | AsyncIterable; export interface HTTPRPCOptions extends AbortOptions { headers?: Headers | Record; searchParams?: URLSearchParams; timeout?: number | string; verbose?: boolean; } export interface Bases { getBase(code: string): Promise>; listBases(): Array>; } export interface Codecs { getCodec(code: number | string): Promise>; listCodecs(): Array>; } export interface Hashers { getHasher(code: number | string): Promise; listHashers(): MultihashHasher[]; } /** * Tracks progress status as a file is transformed into a DAG */ export interface AddProgressFn { (bytes: number, path?: string): void; } interface ProgressStatus { total: number; loaded: number; lengthComputable: boolean; } /** * Tracks progress status as a file is uploaded to the RPC server */ export interface UploadProgressFn { (status: ProgressStatus): void; } export interface EndpointConfig { host: string; port: string; protocol: string; pathname: string; 'api-path': string; } export interface IPFSEntry { readonly type: 'dir' | 'file'; readonly cid: CID; readonly name: string; readonly path: string; mode?: number; mtime?: Mtime; size: number; } export interface AddOptions extends HTTPRPCOptions { /** * Chunking algorithm used to build ipfs DAGs. (defaults to 'size-262144') */ chunker?: string; /** * The CID version to use when storing the data */ cidVersion?: Version; /** * Multihash hashing algorithm to use. (Defaults to 'sha2-256') */ hashAlg?: string; /** * If true, will not add blocks to the blockstore. (Defaults to `false`) */ onlyHash?: boolean; /** * Pin this object when adding. (Defaults to `true`) */ pin?: boolean; /** * A function that will be called with the number of bytes added as a file is * added to ipfs and the path of the file being added. * * **Note** It will not be called for directory entries. */ progress?: AddProgressFn; /** * If true, DAG leaves will contain raw file data and not be wrapped in a * protobuf. (Defaults to `false`) */ rawLeaves?: boolean; /** * If true will use the * [trickle DAG](https://godoc.org/github.com/ipsn/go-ipfs/gxlibs/github.com/ipfs/go-unixfs/importer/trickle) * format for DAG generation. (Defaults to `false`). */ trickle?: boolean; /** * Adds a wrapping node around the content. (Defaults to `false`) */ wrapWithDirectory?: boolean; /** * Whether to preload all blocks created during this operation */ preload?: boolean; /** * How many blocks from a file to write concurrently */ blockWriteConcurrency?: number; } export interface AddAllOptions extends AddOptions { /** * Allows to create directories with an unlimited number of entries currently * size of unixfs directories is limited by the maximum block size. * ** Note ** that this is an experimental feature. (Defaults to `false`) */ enableShardingExperiment?: boolean; /** * Directories with more than this number of files will be created as HAMT - * sharded directories. (Defaults to 1000) */ shardSplitThreshold?: number; /** * How many files to write concurrently */ fileImportConcurrency?: number; } export interface AddResult { cid: CID; size: number; path: string; mode?: number; mtime?: Mtime; } export interface ShardingOptions { sharding?: boolean; } export interface CatOptions extends HTTPRPCOptions { /** * An offset to start reading the file from */ offset?: number; /** * An optional max length to read from the file */ length?: number; } export interface GetOptions extends HTTPRPCOptions { archive?: boolean; compress?: boolean; compressionLevel?: -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9; } export interface ListOptions extends HTTPRPCOptions { } export interface IDOptions extends HTTPRPCOptions { peerId?: PeerId; } export interface IDResult { id: PeerId; publicKey: string; addresses: Multiaddr[]; agentVersion: string; protocolVersion: string; protocols: string[]; } /** * An object with the version information for the implementation, * the commit and the Repo. `js-ipfs` instances will also return * the version of `interface-ipfs-core` and `ipfs-http-client` * supported by this node */ export interface VersionResult { version: string; commit?: string; repo?: string; system?: string; golang?: string; 'ipfs-core'?: string; 'interface-ipfs-core'?: string; 'ipfs-http-client'?: string; } export interface PingOptions extends HTTPRPCOptions { count?: number; } export interface PingResult { success: boolean; time: number; text: string; } export interface ResolveOptions extends HTTPRPCOptions { recursive?: boolean; cidBase?: string; } export interface MountOptions extends HTTPRPCOptions { ipfsPath?: string; ipnsPath?: string; } export interface MountResult { fuseAllowOther?: boolean; ipfs?: string; ipns?: string; } export type ImportCandidateStream = AwaitIterable | ReadableStream; export type ImportCandidate = ToFile | ToDirectory | ToContent; export interface ToFile extends ToFileMetadata { path?: string; content: ToContent; } export interface ToDirectory extends ToFileMetadata { path: string; content?: undefined; } export interface ToFileMetadata { mode?: ToMode; mtime?: MtimeLike; } /** * An IPFS path or CID */ export type IPFSPath = CID | string; /** * File content in arbitrary (supported) representation. It is used in input * positions and is usually normalized to `Blob` in browser contexts and * `AsyncIterable` in node. */ export type ToContent = string | InstanceType | ArrayBufferView | ArrayBuffer | Blob | AwaitIterable | ReadableStream; export type ToMode = string | number; export interface KuboRPCClient { bases: Bases; codecs: Codecs; hashers: Hashers; bitswap: BitswapAPI; block: BlockAPI; bootstrap: BootstrapAPI; config: ConfigAPI; dag: DAGAPI; dht: DHTAPI; diag: DiagAPI; files: FilesAPI; key: KeyAPI; log: LogAPI; name: NameAPI; object: ObjectAPI; pin: PinAPI; pubsub: PubSubAPI; refs: RefsAPI; repo: RepoAPI; routing: RoutingAPI; stats: StatsAPI; swarm: SwarmAPI; provide: ProvideAPI; /** * Import a file or data into IPFS */ add(entry: ImportCandidate, options?: AddOptions): Promise; /** * Import multiple files and data into IPFS */ addAll(source: ImportCandidateStream, options?: AddAllOptions): AsyncIterable; /** * Returns content of the file addressed by a valid IPFS Path or CID */ cat(ipfsPath: IPFSPath, options?: CatOptions): AsyncIterable; /** * Fetch a file or an entire directory tree from IPFS that is addressed by a * valid IPFS Path */ get(ipfsPath: IPFSPath, options?: GetOptions): AsyncIterable; /** * Lists a directory from IPFS that is addressed by a valid IPFS Path */ ls(ipfsPath: IPFSPath, options?: ListOptions): AsyncIterable; /** * Returns the identity of the Peer * * @example * ```js * const identity = await ipfs.id() * console.log(identity) * ``` */ id(options?: IDOptions): Promise; /** * Returns the implementation version * * @example * ```js * const version = await ipfs.version() * console.log(version) * ``` */ version(options?: HTTPRPCOptions): Promise; /** * Stop the node */ stop(options?: HTTPRPCOptions): Promise; /** * Send echo request packets to IPFS hosts. * * @example * ```js * for await (const res of ipfs.ping('Qmhash')) { * if (res.time) { * console.log(`Pong received: time=${res.time} ms`) * } else { * console.log(res.text) * } * } * ``` */ ping(peerId: PeerId | string, options?: PingOptions): AsyncIterable; /** * Resolve the value of names to IPFS * * There are a number of mutable name protocols that can link among themselves * and into IPNS. For example IPNS references can (currently) point at an IPFS * object, and DNS links can point at other DNS links, IPNS entries, or IPFS * objects. This command accepts any of these identifiers and resolves them * to the referenced item. * * @example * ```js * // Resolve the value of your identity: * const name = '/ipns/QmatmE9msSfkKxoffpHwNLNKgwZG8eT9Bud6YoPab52vpy' * * const res = await ipfs.resolve(name) * console.log(res) * // Logs: /ipfs/Qmcqtw8FfrVSBaRmbWwHxt3AuySBhJLcvmFYi3Lbc4xnwj * * // Resolve the value of another name recursively: * const name = '/ipns/QmbCMUZw6JFeZ7Wp9jkzbye3Fzp2GGcPgC3nmeUjfVF87n' * * // Where: * // /ipns/QmbCMUZw6JFeZ7Wp9jkzbye3Fzp2GGcPgC3nmeUjfVF87n * // ...resolves to: * // /ipns/QmatmE9msSfkKxoffpHwNLNKgwZG8eT9Bud6YoPab52vpy * // ...which in turn resolves to: * // /ipfs/Qmcqtw8FfrVSBaRmbWwHxt3AuySBhJLcvmFYi3Lbc4xnwj * * const res = await ipfs.resolve(name, { recursive: true }) * console.log(res) * // Logs: /ipfs/Qmcqtw8FfrVSBaRmbWwHxt3AuySBhJLcvmFYi3Lbc4xnwj * * // Resolve the value of an IPFS path: * const name = '/ipfs/QmeZy1fGbwgVSrqbfh9fKQrAWgeyRnj7h8fsHS1oy3k99x/beep/boop' * const res = await ipfs.resolve(name) * console.log(res) * // Logs: /ipfs/QmYRMjyvAiHKN9UTi8Bzt1HUspmSRD8T8DwxfSMzLgBon1 * ``` */ resolve(name: string, options?: ResolveOptions): Promise; /** * Returns a list of available commands */ commands(options?: HTTPRPCOptions): Promise; mount(options?: MountOptions): Promise; /** * Returns true if this IPFS node is online - that is, it's listening on network addresses * for incoming connections */ isOnline(): Promise; getEndpointConfig(): EndpointConfig; } export interface Options { host?: string; port?: number | string; protocol?: string; headers?: Headers | Record; timeout?: number | string; apiPath?: string; url?: URL | string | Multiaddr; ipld?: Partial; agent?: HttpAgent | HttpsAgent; } export interface IPLDOptions { loadBase: LoadBaseFn; loadCodec: LoadCodecFn; loadHasher: LoadHasherFn; bases: Array>; codecs: Array>; hashers: MultihashHasher[]; } export declare function create(options?: string | Multiaddr | URL | Options): KuboRPCClient; export { create as createKuboRPCClient }; export { CID } from 'multiformats/cid'; export { multiaddr } from '@multiformats/multiaddr'; export * from './lib/glob-source.js'; export interface UrlSourceEntry { path: string; content?: AsyncIterable; } export declare function urlSource(url: string, options?: HTTPOptions): UrlSourceEntry; export declare function readURLContent(url: string, options?: HTTPOptions): AsyncIterable; export * from './bitswap/index.js'; export * from './block/index.js'; export * from './bootstrap/index.js'; export * from './config/index.js'; export * from './dag/index.js'; export * from './dht/index.js'; export * from './diag/index.js'; export * from './files/index.js'; export * from './key/index.js'; export * from './log/index.js'; export * from './name/index.js'; export * from './object/index.js'; export * from './pin/index.js'; export * from './pubsub/index.js'; export * from './refs/index.js'; export * from './repo/index.js'; export * from './routing/index.js'; export * from './stats/index.js'; export * from './swarm/index.js'; export * from './provide/index.js'; //# sourceMappingURL=index.d.ts.map