UNPKG

multiformats

Version:

Interface for multihash, multicodec, multibase and CID

36 lines 1.8 kB
import type { MultibaseEncoder, MultibaseDecoder, Multibase } from '../bases/interface.js'; import type { Phantom, ByteView } from '../block/interface.js'; import type { MultihashDigest } from '../hashes/interface.js'; export type { MultihashDigest, MultibaseEncoder, MultibaseDecoder }; export type Version = 0 | 1; export type DAG_PB = 0x70; export type SHA_256 = 0x12; /** * Represents an IPLD link to a specific data of type `T`. * * @template T - Logical type of the data being linked to. * @template C - multicodec code corresponding to a codec linked data is encoded with * @template A - multicodec code corresponding to the hashing algorithm of the CID * @template V - CID version */ export interface Link<Data extends unknown = unknown, Format extends number = number, Alg extends number = number, V extends Version = 1> extends Phantom<Data> { readonly version: V; readonly code: Format; readonly multihash: MultihashDigest<Alg>; readonly byteOffset: number; readonly byteLength: number; readonly bytes: ByteView<Link<Data, Format, Alg, V>>; equals: (other: unknown) => other is Link<Data, Format, Alg, Version>; toString: <Prefix extends string>(base?: MultibaseEncoder<Prefix>) => ToString<Link<Data, Format, Alg, Version>, Prefix>; link: () => Link<Data, Format, Alg, V>; toV1: () => Link<Data, Format, Alg, 1>; } export interface LinkJSON<T extends UnknownLink = UnknownLink> { '/': ToString<T>; } export interface LegacyLink<T extends unknown = unknown> extends Link<T, DAG_PB, SHA_256, 0> { } export type UnknownLink = LegacyLink<unknown> | Link<unknown, number, number, Version>; export type ToString<T, Prefix extends string = string> = Multibase<Prefix> & Phantom<T>; export type { ByteView }; //# sourceMappingURL=interface.d.ts.map