@0xfutbol/id
Version:
React component library with shared providers for 0xFutbol ID
52 lines (51 loc) • 2.52 kB
JavaScript
;var index=require('./index-DwkZmKdT.js');require('react'),require('react/jsx-runtime'),require('@0xfutbol/id-sign'),require('react-use'),require('@0xfutbol/constants'),require('thirdweb'),require('@matchain/matchid-sdk-react'),require('@tanstack/react-query'),require('@matchain/matchid-sdk-react/index.css'),require('react-dom');async function sendGaslessTransaction({ account, transaction, serializableTransaction, gasless, }) {
// TODO: handle special case for mutlicall transactions!
// Steps:
// 1. check if the method is `multicall` by comparing the 4bytes data with the `multicall` selector
// 2. split the rest of the data into its "parts"
// 3. solidityPack the parts with the part data + the `account.address`
// see v4: `core/classes/transactions.ts>Transaction>prepareGasless:L551`
if (serializableTransaction.value && serializableTransaction.value > 0n) {
throw new Error("Gasless transactions cannot have a value");
}
// TODO: multiply gas by 2 for some reason(?) - we do in v4, *should* we?
let result;
// biconomy
if (gasless.provider === "biconomy") {
const { relayBiconomyTransaction } = await Promise.resolve().then(function(){return require('./biconomy-B8ihXSv-.js')});
result = await relayBiconomyTransaction({
account,
transaction,
serializableTransaction,
gasless,
});
}
// openzeppelin
if (gasless.provider === "openzeppelin") {
const { relayOpenZeppelinTransaction } = await Promise.resolve().then(function(){return require('./openzeppelin-B_Yqkc36.js')});
result = await relayOpenZeppelinTransaction({
account,
transaction,
serializableTransaction,
gasless,
});
}
if (gasless.provider === "engine") {
const { relayEngineTransaction } = await Promise.resolve().then(function(){return require('./engine-DSZjB9NO.js')});
result = await relayEngineTransaction({
account,
transaction,
serializableTransaction,
gasless,
});
}
if (!result) {
throw new Error("Unsupported gasless provider");
}
index.bk({
address: account.address,
transactionHash: result.transactionHash,
chainId: transaction.chain.id,
});
return result;
}exports.sendGaslessTransaction=sendGaslessTransaction;//# sourceMappingURL=send-gasless-transaction-C9eMXr3g.js.map