UNPKG

multiformats

Version:

Interface for multihash, multicodec, multibase and CID

183 lines 6.92 kB
/** * @template T * @typedef {import('./interface').MultibaseCodec<T>} MultibaseCodec */ /** * @class * @template {string} Base * @template {string} Prefix * @implements {MultibaseCodec<Prefix>} * @implements {MultibaseEncoder<Prefix>} * @implements {MultibaseDecoder<Prefix>} * @implements {BaseCodec} * @implements {BaseEncoder} * @implements {BaseDecoder} */ export class Codec<Base extends string, Prefix extends string> implements MultibaseCodec<Prefix>, MultibaseEncoder<Prefix>, MultibaseDecoder<Prefix>, BaseCodec, BaseEncoder, BaseDecoder { /** * @param {Base} name * @param {Prefix} prefix * @param {(bytes:Uint8Array) => string} baseEncode * @param {(text:string) => Uint8Array} baseDecode */ constructor(name: Base, prefix: Prefix, baseEncode: (bytes: Uint8Array) => string, baseDecode: (text: string) => Uint8Array); name: Base; prefix: Prefix; baseEncode: (bytes: Uint8Array) => string; baseDecode: (text: string) => Uint8Array; encoder: Encoder<Base, Prefix>; decoder: Decoder<Base, Prefix>; /** * @param {Uint8Array} input */ encode(input: Uint8Array): Multibase<Prefix>; /** * @param {string} input */ decode(input: string): Uint8Array; } export function withAlphabet<Base extends string, Prefix extends string>({ name, prefix, encode, decode, alphabet }: { name: Base; prefix: Prefix; alphabet: string; encode: (input: Uint8Array, alphabet: string) => string; decode: (input: string, alphabet: string) => Uint8Array; }): Codec<Base, Prefix>; export function withSettings<Base extends string, Prefix extends string, Settings>({ name, prefix, settings, encode, decode }: { name: Base; prefix: Prefix; settings: Settings; encode: (input: Uint8Array, settings: Settings) => string; decode: (input: string, settings: Settings) => Uint8Array; }): Codec<Base, Prefix>; export function from<Base extends string, Prefix extends string>({ name, prefix, encode, decode }: { name: Base; prefix: Prefix; encode: (bytes: Uint8Array) => string; decode: (input: string) => Uint8Array; }): Codec<Base, Prefix>; export type BaseEncoder = import('./interface').BaseEncoder; export type BaseDecoder = import('./interface').BaseDecoder; export type BaseCodec = import('./interface').BaseCodec; export type Multibase<T extends string> = import('./interface').Multibase<T>; export type MultibaseEncoder<T extends string> = import('./interface').MultibaseEncoder<T>; export type MultibaseDecoder<Prefix extends string> = import('./interface').MultibaseDecoder<Prefix>; export type UnibaseDecoder<Prefix extends string> = import('./interface').UnibaseDecoder<Prefix>; export type CombobaseDecoder<Prefix extends string> = import('./interface').CombobaseDecoder<Prefix>; export type Decoders<Prefix extends string> = Record<Prefix, UnibaseDecoder<Prefix>>; export type MultibaseCodec<T> = import('./interface').MultibaseCodec<T>; /** * @typedef {import('./interface').BaseEncoder} BaseEncoder * @typedef {import('./interface').BaseDecoder} BaseDecoder * @typedef {import('./interface').BaseCodec} BaseCodec */ /** * @template {string} T * @typedef {import('./interface').Multibase<T>} Multibase */ /** * @template {string} T * @typedef {import('./interface').MultibaseEncoder<T>} MultibaseEncoder */ /** * Class represents both BaseEncoder and MultibaseEncoder meaning it * can be used to encode to multibase or base encode without multibase * prefix. * @class * @template {string} Base * @template {string} Prefix * @implements {MultibaseEncoder<Prefix>} * @implements {BaseEncoder} */ declare class Encoder<Base extends string, Prefix extends string> implements MultibaseEncoder<Prefix>, BaseEncoder { /** * @param {Base} name * @param {Prefix} prefix * @param {(bytes:Uint8Array) => string} baseEncode */ constructor(name: Base, prefix: Prefix, baseEncode: (bytes: Uint8Array) => string); name: Base; prefix: Prefix; baseEncode: (bytes: Uint8Array) => string; /** * @param {Uint8Array} bytes * @returns {Multibase<Prefix>} */ encode(bytes: Uint8Array): Multibase<Prefix>; } /** * @template {string} Prefix * @typedef {import('./interface').MultibaseDecoder<Prefix>} MultibaseDecoder */ /** * @template {string} Prefix * @typedef {import('./interface').UnibaseDecoder<Prefix>} UnibaseDecoder */ /** * @template {string} Prefix */ /** * Class represents both BaseDecoder and MultibaseDecoder so it could be used * to decode multibases (with matching prefix) or just base decode strings * with corresponding base encoding. * @class * @template {string} Base * @template {string} Prefix * @implements {MultibaseDecoder<Prefix>} * @implements {UnibaseDecoder<Prefix>} * @implements {BaseDecoder} */ declare class Decoder<Base extends string, Prefix extends string> implements MultibaseDecoder<Prefix>, UnibaseDecoder<Prefix>, BaseDecoder { /** * @param {Base} name * @param {Prefix} prefix * @param {(text:string) => Uint8Array} baseDecode */ constructor(name: Base, prefix: Prefix, baseDecode: (text: string) => Uint8Array); name: Base; prefix: Prefix; baseDecode: (text: string) => Uint8Array; /** * @param {string} text */ decode(text: string): Uint8Array; /** * @template {string} OtherPrefix * @param {UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder * @returns {ComposedDecoder<Prefix|OtherPrefix>} */ or<OtherPrefix extends string>(decoder: import("./interface").UnibaseDecoder<OtherPrefix> | ComposedDecoder<OtherPrefix>): ComposedDecoder<Prefix | OtherPrefix>; } /** * @template {string} Prefix * @typedef {import('./interface').CombobaseDecoder<Prefix>} CombobaseDecoder */ /** * @template {string} Prefix * @typedef {Record<Prefix, UnibaseDecoder<Prefix>>} Decoders */ /** * @template {string} Prefix * @implements {MultibaseDecoder<Prefix>} * @implements {CombobaseDecoder<Prefix>} */ declare class ComposedDecoder<Prefix extends string> implements MultibaseDecoder<Prefix>, CombobaseDecoder<Prefix> { /** * @param {Record<Prefix, UnibaseDecoder<Prefix>>} decoders */ constructor(decoders: Record<Prefix, UnibaseDecoder<Prefix>>); decoders: Record<Prefix, import("./interface").UnibaseDecoder<Prefix>>; /** * @template {string} OtherPrefix * @param {UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder * @returns {ComposedDecoder<Prefix|OtherPrefix>} */ or<OtherPrefix extends string>(decoder: import("./interface").UnibaseDecoder<OtherPrefix> | ComposedDecoder<OtherPrefix>): ComposedDecoder<Prefix | OtherPrefix>; /** * @param {string} input * @returns {Uint8Array} */ decode(input: string): Uint8Array; } export {}; //# sourceMappingURL=base.d.ts.map