UNPKG

@kaiachain/viem-ext

Version:
37 lines (36 loc) 1.47 kB
import { KlaytnTxFactory, isFeePayerSigTxType, isKlaytnTxType, } from '@kaiachain/js-ext-core'; import { serializeTransaction as serializeTransactionDefault } from 'viem'; import { convertSignatureToKaiaFormat } from './utils.js'; // move this to helper export const serializers = { transaction: serializeTransaction, }; export function serializeTransaction(transaction, signature) { return serializeTransactionKaia(transaction, signature); } export function serializeTransactionKaia(transaction, signature) { if (!isKlaytnTxType(transaction.type)) { return serializeTransactionDefault(transaction, signature); } const klaytnTx = KlaytnTxFactory.fromObject(transaction); if (!signature) { return klaytnTx.sigRLP(); } klaytnTx.addSenderSig(convertSignatureToKaiaFormat(signature, Number(transaction.chainId))); if (isFeePayerSigTxType(klaytnTx.type)) { return klaytnTx.senderTxHashRLP(); } return klaytnTx.txHashRLP(); } export function serializeTransactionForFeePayerKaia(expectedFeePayer) { return (transaction, signature) => { const txObj = { ...transaction }; txObj.feePayer = expectedFeePayer; const klaytnTx = KlaytnTxFactory.fromObject(txObj); if (!signature) { return klaytnTx.sigFeePayerRLP(); } klaytnTx.addFeePayerSig(convertSignatureToKaiaFormat(signature, Number(txObj.chainId))); return klaytnTx.txHashRLP(); }; }