UNPKG

@kaiachain/viem-ext

Version:
32 lines (31 loc) 1.13 kB
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], })); };