UNPKG

@wormhole-foundation/sdk-algorand

Version:

SDK for Algorand, used in conjunction with @wormhole-foundation/sdk

75 lines 2.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AlgorandAddress = exports.AlgorandZeroAddress = void 0; const sdk_connect_1 = require("@wormhole-foundation/sdk-connect"); const algosdk_1 = require("algosdk"); const types_js_1 = require("./types.js"); exports.AlgorandZeroAddress = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5HFKQ"; // Note: for ASA/App IDs we encode them as 8 bytes at the start of // the 32 byte address bytes. class AlgorandAddress { static byteSize = 32; static platform = types_js_1._platform; type = "Native"; address; constructor(address) { if (AlgorandAddress.instanceof(address)) { this.address = address.address; } else if (sdk_connect_1.UniversalAddress.instanceof(address)) { this.address = address.toUint8Array(); } else if (address instanceof Uint8Array && address.byteLength === AlgorandAddress.byteSize) { this.address = address; } else if (typeof address === "string" && (0, algosdk_1.isValidAddress)(address)) { this.address = (0, algosdk_1.decodeAddress)(address).publicKey; } else if (typeof address === "string" && !isNaN(parseInt(address))) { this.address = sdk_connect_1.encoding.bytes.zpad(sdk_connect_1.encoding.bignum.toBytes(BigInt(address), 8), AlgorandAddress.byteSize); } else if (typeof address === "bigint") { this.address = sdk_connect_1.encoding.bytes.zpad(sdk_connect_1.encoding.bignum.toBytes(address, 8), AlgorandAddress.byteSize); } else if (address instanceof Uint8Array && address.byteLength === 8) { this.address = sdk_connect_1.encoding.bytes.zpad(address, AlgorandAddress.byteSize); } else throw new Error(`Invalid Algorand address or ASA ID: ${address}`); } unwrap() { return this.toString(); } toString() { return (0, algosdk_1.encodeAddress)(this.address); } toNative() { return this; } toUint8Array() { return this.address; } toUniversalAddress() { return new sdk_connect_1.UniversalAddress(this.toUint8Array()); } toBigInt() { return sdk_connect_1.encoding.bignum.decode(this.toUint8Array().slice(24, 32)); } toInt() { return (0, types_js_1.safeBigIntToNumber)(this.toBigInt()); } equals(other) { if (AlgorandAddress.instanceof(other)) { return other.address === this.address; } else { return this.toUniversalAddress().equals(other); } } static instanceof(address) { return address.constructor.platform === types_js_1._platform; } } exports.AlgorandAddress = AlgorandAddress; (0, sdk_connect_1.registerNative)(types_js_1._platform, AlgorandAddress); //# sourceMappingURL=address.js.map