@biconomy/abstractjs
Version:
SDK for Biconomy integration with support for account abstraction, smart accounts, ERC-4337.
69 lines • 2.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.toGasTankAccount = toGasTankAccount;
const viem_1 = require("viem");
const accounts_1 = require("viem/accounts");
const _1 = require("./index.js");
const createMeeClient_1 = require("../clients/createMeeClient.js");
const deployGasTank_1 = require("./decorators/deployGasTank.js");
const getGasTankAddress_1 = require("./decorators/getGasTankAddress.js");
const getGasTankBalance_1 = require("./decorators/getGasTankBalance.js");
const getGasTankNonce_1 = require("./decorators/getGasTankNonce.js");
const sponsorSupertransaction_1 = require("./decorators/sponsorSupertransaction.js");
const withdrawFromGasTank_1 = require("./decorators/withdrawFromGasTank.js");
async function toGasTankAccount(params) {
const { chainConfiguration, privateKey, options } = params;
const { chain, transport } = chainConfiguration;
const mcNexus = await (0, _1.toMultichainNexusAccount)({
signer: (0, accounts_1.privateKeyToAccount)(privateKey),
chainConfigurations: [chainConfiguration]
});
const publicClient = (0, viem_1.createPublicClient)({
chain,
transport
});
const meeClient = await (0, createMeeClient_1.createMeeClient)({
account: mcNexus,
...(options?.mee?.url ? { url: options.mee.url } : {}),
...(options?.mee?.apiKey ? { apiKey: options.mee.apiKey } : {})
});
const getAddress = () => (0, getGasTankAddress_1.getGasTankAddress)(mcNexus, { chainId: chain.id });
const getBalance = (params) => (0, getGasTankBalance_1.getGasTankBalance)(mcNexus, {
chainId: chain.id,
tokenAddress: params.tokenAddress
});
const signSponsorship = (params) => (0, sponsorSupertransaction_1.sponsorSupertransaction)(mcNexus, {
chainId: chain.id,
quote: params.quote
});
const getNonce = () => (0, getGasTankNonce_1.getGasTankNonce)(mcNexus, { chainId: chain.id });
const isDeployed = () => {
return mcNexus.deploymentOn(chain.id, true).isDeployed();
};
const deploy = (params) => (0, deployGasTank_1.default)(mcNexus, {
meeClient,
chainId: chain.id,
tokenAddress: params.tokenAddress,
amount: params.amount,
confirmations: params.confirmations || 2
});
const withdraw = (params) => (0, withdrawFromGasTank_1.default)(mcNexus, {
meeClient,
chainId: chain.id,
tokenAddress: params.tokenAddress,
recipient: params.recipient,
amount: params.amount,
confirmations: params.confirmations || 2
});
return {
publicClient,
isDeployed,
getAddress,
getBalance,
getNonce,
signSponsorship,
deploy,
withdraw
};
}
//# sourceMappingURL=toGasTankAccount.js.map