import type { BaseCodec, BaseDecoder, BaseEncoder, CombobaseDecoder, Multibase, MultibaseCodec, MultibaseDecoder, MultibaseEncoder, UnibaseDecoder } from './interface.js'; interface EncodeFn { (bytes: Uint8Array): string; } interface DecodeFn { (text: string): Uint8Array; } /** * Class represents both BaseEncoder and MultibaseEncoder meaning it * can be used to encode to multibase or base encode without multibase * prefix. */ declare class Encoder implements MultibaseEncoder, BaseEncoder { readonly name: Base; readonly prefix: Prefix; readonly baseEncode: EncodeFn; constructor(name: Base, prefix: Prefix, baseEncode: EncodeFn); encode(bytes: Uint8Array): Multibase; } /** * 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. */ declare class Decoder implements MultibaseDecoder, UnibaseDecoder, BaseDecoder { readonly name: Base; readonly prefix: Prefix; readonly baseDecode: DecodeFn; private readonly prefixCodePoint; constructor(name: Base, prefix: Prefix, baseDecode: DecodeFn); decode(text: string): Uint8Array; or(decoder: UnibaseDecoder | ComposedDecoder): ComposedDecoder; } type Decoders = Record>; declare class ComposedDecoder implements MultibaseDecoder, CombobaseDecoder { readonly decoders: Decoders; constructor(decoders: Decoders); or(decoder: UnibaseDecoder | ComposedDecoder): ComposedDecoder; decode(input: string): Uint8Array; } export declare function or(left: UnibaseDecoder | CombobaseDecoder, right: UnibaseDecoder | CombobaseDecoder): ComposedDecoder; export declare class Codec implements MultibaseCodec, MultibaseEncoder, MultibaseDecoder, BaseCodec, BaseEncoder, BaseDecoder { readonly name: Base; readonly prefix: Prefix; readonly baseEncode: EncodeFn; readonly baseDecode: DecodeFn; readonly encoder: Encoder; readonly decoder: Decoder; constructor(name: Base, prefix: Prefix, baseEncode: EncodeFn, baseDecode: DecodeFn); encode(input: Uint8Array): string; decode(input: string): Uint8Array; } export declare function from({ name, prefix, encode, decode }: { name: Base; prefix: Prefix; encode: EncodeFn; decode: DecodeFn; }): Codec; export declare function baseX({ name, prefix, alphabet }: { name: Base; prefix: Prefix; alphabet: string; }): Codec; /** * RFC4648 Factory */ export declare function rfc4648({ name, prefix, bitsPerChar, alphabet }: { name: Base; prefix: Prefix; bitsPerChar: number; alphabet: string; }): Codec; export {}; //# sourceMappingURL=base.d.ts.map