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