| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | 
							- /**
 
-  *  The [Base58 Encoding](link-base58) scheme allows a **numeric** value
 
-  *  to be encoded as a compact string using a radix of 58 using only
 
-  *  alpha-numeric characters. Confusingly similar characters are omitted
 
-  *  (i.e. ``"l0O"``).
 
-  *
 
-  *  Note that Base58 encodes a **numeric** value, not arbitrary bytes,
 
-  *  since any zero-bytes on the left would get removed. To mitigate this
 
-  *  issue most schemes that use Base58 choose specific high-order values
 
-  *  to ensure non-zero prefixes.
 
-  *
 
-  *  @_subsection: api/utils:Base58 Encoding [about-base58]
 
-  */
 
- import { getBytes } from "./data.js";
 
- import { assertArgument } from "./errors.js";
 
- import { toBigInt } from "./maths.js";
 
- import type { BytesLike } from "./index.js";
 
- const Alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
 
- let Lookup: null | Record<string, bigint> = null;
 
- function getAlpha(letter: string): bigint {
 
-     if (Lookup == null) {
 
-         Lookup = { };
 
-         for (let i = 0; i < Alphabet.length; i++) {
 
-             Lookup[Alphabet[i]] = BigInt(i);
 
-         }
 
-     }
 
-     const result = Lookup[letter];
 
-     assertArgument(result != null, `invalid base58 value`, "letter", letter);
 
-     return result;
 
- }
 
- const BN_0 = BigInt(0);
 
- const BN_58 = BigInt(58);
 
- /**
 
-  *  Encode %%value%% as a Base58-encoded string.
 
-  */
 
- export function encodeBase58(_value: BytesLike): string {
 
-     const bytes = getBytes(_value);
 
-     let value = toBigInt(bytes);
 
-     let result = "";
 
-     while (value) {
 
-         result = Alphabet[Number(value % BN_58)] + result;
 
-         value /= BN_58;
 
-     }
 
-     // Account for leading padding zeros
 
-     for (let i = 0; i < bytes.length; i++) {
 
-         if (bytes[i]) { break; }
 
-         result = Alphabet[0] + result;
 
-     }
 
-     return result;
 
- }
 
- /**
 
-  *  Decode the Base58-encoded %%value%%.
 
-  */
 
- export function decodeBase58(value: string): bigint {
 
-     let result = BN_0;
 
-     for (let i = 0; i < value.length; i++) {
 
-         result *= BN_58;
 
-         result += getAlpha(value[i]);
 
-     }
 
-     return result;
 
- }
 
 
  |