UNPKG

@okxweb3/coin-kaspa

Version:

A Kaspa SDK for building Web3 wallets and applications.

87 lines 3.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.KaspaWallet = void 0; const coin_base_1 = require("@okxweb3/coin-base"); const address_1 = require("./address"); const transaction_1 = require("./transaction"); class KaspaWallet extends coin_base_1.BaseWallet { async getDerivedPath(param) { return `m/44'/111111'/0'/0/${param.index}`; } async getNewAddress(param) { return Promise.resolve({ address: (0, address_1.addressFromPrvKey)(param.privateKey), publicKey: (0, address_1.pubKeyFromPrvKey)(param.privateKey), }); } async validPrivateKey(param) { let isValid = (0, address_1.checkPrvKey)(param.privateKey); const data = { isValid: isValid, privateKey: param.privateKey, }; return Promise.resolve(data); } async validAddress(param) { return Promise.resolve({ isValid: (0, address_1.validateAddress)(param.address), address: param.address, }); } async signTransaction(param) { try { if (!param.privateKey) { return Promise.reject(coin_base_1.InvalidPrivateKeyError); } const txData = param.data; for (const output of txData.outputs) { const outputValidation = await this.validAddress({ address: output.address, }); if (!outputValidation.isValid) { return Promise.reject(coin_base_1.ValidAddressError); } } const changeValidation = await this.validAddress({ address: txData.address, }); if (!changeValidation.isValid) { return Promise.reject(coin_base_1.ValidAddressError); } return Promise.resolve((0, transaction_1.transfer)(param.data, param.privateKey)); } catch (e) { return Promise.reject(coin_base_1.SignTxError); } } async calcTxHash(param) { try { if (typeof param.data === 'string') { return Promise.resolve((0, transaction_1.calcTxHash)(JSON.parse(param.data).transaction)); } return Promise.resolve((0, transaction_1.calcTxHash)(param.data.transaction)); } catch (e) { return Promise.reject(coin_base_1.CalcTxHashError); } } async signMessage(param) { if (!param.privateKey) { return Promise.reject(`${coin_base_1.InvalidPrivateKeyError}: cannot be empty`); } const { isValid } = await this.validPrivateKey({ privateKey: param.privateKey, }); if (!isValid) { return Promise.reject(`${coin_base_1.InvalidPrivateKeyError}: not valid private key`); } try { return Promise.resolve((0, transaction_1.signMessage)(param.data.message, param.privateKey)); } catch (e) { return Promise.reject(coin_base_1.SignTxError); } } } exports.KaspaWallet = KaspaWallet; //# sourceMappingURL=KaspaWallet.js.map