@kaiachain/viem-ext
Version:
viem extension for kaia blockchain
32 lines (31 loc) • 1.13 kB
JavaScript
import { getKaikasTxType, getRpcTxObject, isKlaytnTxType, } from '@kaiachain/js-ext-core';
import { parseAccount } from 'viem/accounts';
import { getValidRawRpcObj } from '../utils.js';
import { signTransaction } from './sign-transaction.js';
export const sendTransaction = async (client, tx) => {
if (!isKlaytnTxType(tx.type)) {
return client.sendTransaction(tx);
}
if (!tx.account && !client.account) {
throw new Error('Parameters for account missing!');
}
const thisAccount = parseAccount((tx.account ?? client.account));
// json-rpc account
if (thisAccount.type === 'json-rpc') {
return (await client.request({
method: 'klay_sendTransaction',
params: [
{
...getRpcTxObject(getValidRawRpcObj(tx)),
type: getKaikasTxType(tx.type),
},
],
}, { retryCount: 0 }));
}
// local account
const signedTx = await signTransaction(client, tx);
return (await client.request({
method: 'klay_sendRawTransaction',
params: [signedTx],
}));
};