UNPKG

@enjin-protos/snap

Version:

MetaMask snap for interacting with Enjin dApps

36 lines (29 loc) 1.07 kB
import type { ApiPromise } from '@polkadot/api'; import type { Transaction, TxPayload } from '@enjin-protos/metamask-enjin-types'; import { saveTxToState } from '../polkadot/tx'; import { getAddress } from './getAddress'; export async function send( api: ApiPromise, signature: Uint8Array | `0x${string}`, txPayload: TxPayload ): Promise<Transaction> { const sender = await getAddress(); const destination = txPayload.payload.address; const extrinsic = api.createType('Extrinsic', txPayload.tx); extrinsic.addSignature(sender, signature, txPayload.payload); const amount = extrinsic.args[1].toJSON(); const paymentInfo = await api.tx.balances .transferKeepAlive(destination, String(amount)) .paymentInfo(sender); const txHash = await api.rpc.author.submitExtrinsic(extrinsic); const tx = { amount: amount, block: txHash.toHex(), destination: destination, fee: String(paymentInfo.partialFee.toJSON()), hash: extrinsic.hash.toHex(), sender: sender } as Transaction; await saveTxToState(tx); return tx; }