@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
JavaScript
;
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