UNPKG

@okxweb3/coin-stellar

Version:

@okxweb3/coin-stellar is a Stellar SDK for building Web3 wallets and applications. It supports Stellar and PI blockchains, enabling private key management, address generation, transaction signing, trustline creation, and asset transfers

73 lines 2.62 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Address = void 0; const strkey_1 = require("./strkey"); const xdr_1 = __importDefault(require("./xdr")); class Address { constructor(address) { if (strkey_1.StrKey.isValidEd25519PublicKey(address)) { this._type = 'account'; this._key = strkey_1.StrKey.decodeEd25519PublicKey(address); } else if (strkey_1.StrKey.isValidContract(address)) { this._type = 'contract'; this._key = strkey_1.StrKey.decodeContract(address); } else { throw new Error(`Unsupported address type: ${address}`); } } static fromString(address) { return new Address(address); } static account(buffer) { return new Address(strkey_1.StrKey.encodeEd25519PublicKey(buffer)); } static contract(buffer) { return new Address(strkey_1.StrKey.encodeContract(buffer)); } static fromScVal(scVal) { return Address.fromScAddress(scVal.address()); } static fromScAddress(scAddress) { switch (scAddress.switch()) { case xdr_1.default.ScAddressType.scAddressTypeAccount(): return Address.account(scAddress.accountId().ed25519()); case xdr_1.default.ScAddressType.scAddressTypeContract(): return Address.contract(scAddress.contractId()); default: throw new Error('Unsupported address type'); } } toString() { switch (this._type) { case 'account': return strkey_1.StrKey.encodeEd25519PublicKey(this._key); case 'contract': return strkey_1.StrKey.encodeContract(this._key); default: throw new Error('Unsupported address type'); } } toScVal() { return xdr_1.default.ScVal.scvAddress(this.toScAddress()); } toScAddress() { switch (this._type) { case 'account': return xdr_1.default.ScAddress.scAddressTypeAccount(xdr_1.default.PublicKey.publicKeyTypeEd25519(this._key)); case 'contract': return xdr_1.default.ScAddress.scAddressTypeContract(this._key); default: throw new Error('Unsupported address type'); } } toBuffer() { return this._key; } } exports.Address = Address; //# sourceMappingURL=address.js.map