import * as Bytes from '../Bytes.js';
import * as Hex from '../Hex.js';
/** @internal */
export const integerToAlphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
/** @internal */
export const alphabetToInteger = /* __PURE__ */ Object.freeze({
    1: 0n,
    2: 1n,
    3: 2n,
    4: 3n,
    5: 4n,
    6: 5n,
    7: 6n,
    8: 7n,
    9: 8n,
    A: 9n,
    B: 10n,
    C: 11n,
    D: 12n,
    E: 13n,
    F: 14n,
    G: 15n,
    H: 16n,
    J: 17n,
    K: 18n,
    L: 19n,
    M: 20n,
    N: 21n,
    P: 22n,
    Q: 23n,
    R: 24n,
    S: 25n,
    T: 26n,
    U: 27n,
    V: 28n,
    W: 29n,
    X: 30n,
    Y: 31n,
    Z: 32n,
    a: 33n,
    b: 34n,
    c: 35n,
    d: 36n,
    e: 37n,
    f: 38n,
    g: 39n,
    h: 40n,
    i: 41n,
    j: 42n,
    k: 43n,
    m: 44n,
    n: 45n,
    o: 46n,
    p: 47n,
    q: 48n,
    r: 49n,
    s: 50n,
    t: 51n,
    u: 52n,
    v: 53n,
    w: 54n,
    x: 55n,
    y: 56n,
    z: 57n,
});
/** @internal */
export function from(value) {
    let bytes = Bytes.from(value);
    let integer = (() => {
        let hex = value;
        if (value instanceof Uint8Array)
            hex = Hex.fromBytes(bytes);
        return BigInt(hex);
    })();
    let result = '';
    while (integer > 0n) {
        const remainder = Number(integer % 58n);
        integer = integer / 58n;
        result = integerToAlphabet[remainder] + result;
    }
    while (bytes.length > 1 && bytes[0] === 0) {
        result = '1' + result;
        bytes = bytes.slice(1);
    }
    return result;
}
/** @internal */
//# sourceMappingURL=base58.js.map