UNPKG

navio-blsct

Version:

TypeScript bindings for the `libblsct` library used by the [Navio](https://nav.io/) blockchain to construct confidential transactions based on the BLS12-381 curve.

70 lines (69 loc) 2.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Address = exports.AddressEncoding = void 0; const blsct_1 = require("./blsct"); const doublePublicKey_1 = require("./keys/doublePublicKey"); /** * Represents the available address encoding formats. */ var AddressEncoding; (function (AddressEncoding) { /** Bech32 encoding as defined in BIP-173. */ AddressEncoding[AddressEncoding["Bech32"] = 0] = "Bech32"; /** Bech32m encoding as defined in BIP-350. */ AddressEncoding[AddressEncoding["Bech32M"] = 1] = "Bech32M"; })(AddressEncoding || (exports.AddressEncoding = AddressEncoding = {})); /** * Provides static utility methods for encoding and decoding addresses. * * This class is intended to be used as a static container and should not be instantiated. * * Examples: * ```ts * const { Address, DoublePublicKey, AddressEncoding } = require('navio-blsct') * const dpk = DoublePublicKey.random() * const addr = Address.encode(dpk, AddressEncoding.Bech32M) * addr * const decDpk = Address.decode(addr) * decDpk.serialize() === dpk.serialize() // true * ``` */ class Address { /** Encode a `DoublePublicKey` to an address string using the specified encoding * * @param addrDpk - The `DoublePublicKey` to encode. * @param encoding - The desired address encoding format (`Bech32` or `Bech32M`). * @return The encoded address as a string. */ static encode(addrDpk, encoding) { let blsctEncoding = encoding === AddressEncoding.Bech32 ? blsct_1.Bech32 : blsct_1.Bech32M; const dpk = (0, blsct_1.castToDpk)(addrDpk.value()); const rv = (0, blsct_1.encodeAddress)(dpk, blsctEncoding); if (rv.result !== 0) { const msg = `Failed to encode address. Error code = ${rv.result}`; (0, blsct_1.freeObj)(rv); throw new Error(msg); } const addrCStr = (0, blsct_1.getValueAsCStr)(rv); (0, blsct_1.freeObj)(rv); return addrCStr; } /** Decode an address string to a `DoublePublicKey`. * * @param addrStr - The address string to decode. * @return A `DoublePublicKey` instance representing the decoded address. * @throws Error if the decoding fails. */ static decode(addrStr) { const rv = (0, blsct_1.decodeAddress)(addrStr); if (rv.result !== 0) { const msg = `Failed to decode address. Error code = ${rv.result}`; (0, blsct_1.freeObj)(rv); throw new Error(msg); } const addrDpk = doublePublicKey_1.DoublePublicKey.fromObj(rv.value); (0, blsct_1.freeObj)(rv); return addrDpk; } } exports.Address = Address;